From: Marc L. <ma...@ma...> - 2012-08-16 21:05:05
|
: seems quite good for namespaces What do you think? On Thu, Jul 26, 2012 at 4:46 PM, <lph...@us...> wrote: > Revision: 42488 > http://tikiwiki.svn.sourceforge.net/tikiwiki/?rev=42488&view=rev > Author: lphuberdeau > Date: 2012-07-26 20:46:16 +0000 (Thu, 26 Jul 2012) > Log Message: > ----------- > [MOD] Using _ (which also happens to be used for profiles) for namespace and making sure they render a little better > > Modified Paths: > -------------- > trunk/lib/core/WikiParser/OutputLink.php > trunk/lib/prefs/namespace.php > trunk/lib/test/core/WikiParser/OutputLinkTest.php > trunk/lib/tikilib.php > trunk/lib/wiki/wikilib.php > trunk/styles/layout/design.css > > Modified: trunk/lib/core/WikiParser/OutputLink.php > =================================================================== > --- trunk/lib/core/WikiParser/OutputLink.php 2012-07-26 20:05:49 UTC (rev 42487) > +++ trunk/lib/core/WikiParser/OutputLink.php 2012-07-26 20:46:16 UTC (rev 42488) > @@ -94,16 +94,12 @@ > if (!empty($info['pageName'])) { > $page = $info['pageName']; > } > - $title = $page; > - if (!empty($info['description'])) { > - $title = $info['description']; > - } > > return $this->outputLink( > $description, > array( > 'href' => call_user_func($this->wikiBuilder, $page) . $this->anchor, > - 'title' => $title, > + 'title' => $this->getTitle($info), > 'class' => 'wiki wiki_page', > ) > ); > @@ -111,16 +107,16 @@ > if (!empty($info['pageName'])) { > $page = $info['pageName']; > } > - $title = $page; > - if (!empty($info['description'])) { > - $title = $info['description']; > + > + if ($description == $info['pageName']) { > + $description = $this->renderPageName($info); > } > > return $this->outputLink( > $description, > array( > 'href' => call_user_func($this->wikiBuilder, $page) . $this->anchor, > - 'title' => $title, > + 'title' => $this->getTitle($info), > 'class' => 'wiki wiki_page', > ) > ); > @@ -186,6 +182,29 @@ > } > } > > + private function renderPageName($info) > + { > + if (! isset($info['namespace_parts'])) { > + return $info['pageName']; > + } > + > + $out = ''; > + > + $last = count($info['namespace_parts']) - 1; > + foreach ($info['namespace_parts'] as $key => $part) { > + $class = 'namespace'; > + if ($key === 0) { > + $class .= ' first'; > + } > + if ($key === $last) { > + $class .= ' last'; > + } > + $out .= "<span class=\"$class\">$part</span>"; > + } > + > + return $out . $info['baseName']; > + } > + > private function findWikiPage( $page ) > { > if (! $this->wikiLookup) { > @@ -228,5 +247,16 @@ > return $page; > } > } > + > + private function getTitle($info) > + { > + if (!empty($info['description'])) { > + return $info['description']; > + } elseif (! empty($info['prettyName'])) { > + return $info['prettyName']; > + } else { > + return $info['pageName']; > + } > + } > } > > > Modified: trunk/lib/prefs/namespace.php > =================================================================== > --- trunk/lib/prefs/namespace.php 2012-07-26 20:05:49 UTC (rev 42487) > +++ trunk/lib/prefs/namespace.php 2012-07-26 20:46:16 UTC (rev 42488) > @@ -18,7 +18,7 @@ > 'name' => tr('Namespace separator'), > 'size' => 5, > 'type' => 'text', > - 'default' => '::', > + 'default' => '_', > ), > ); > } > > Modified: trunk/lib/test/core/WikiParser/OutputLinkTest.php > =================================================================== > --- trunk/lib/test/core/WikiParser/OutputLinkTest.php 2012-07-26 20:05:49 UTC (rev 42487) > +++ trunk/lib/test/core/WikiParser/OutputLinkTest.php 2012-07-26 20:46:16 UTC (rev 42488) > @@ -163,16 +163,20 @@ > { > // ((Test)) within a page in HelloWorld namespace > $link = new WikiParser_OutputLink; > - $link->setNamespace('HelloWorld', '::'); > + $link->setNamespace('HelloWorld', '_'); > $link->setIdentifier('Test'); > > - $this->assertLinkIs('Test<a href="tiki-editpage.php?page=HelloWorld%3A%3ATest" title="Create page: HelloWorld::Test" class="wiki wikinew">?</a>', $link->getHtml()); > + $this->assertLinkIs('Test<a href="tiki-editpage.php?page=HelloWorld_Test" title="Create page: HelloWorld_Test" class="wiki wikinew">?</a>', $link->getHtml()); > } > > function testRenderLinkWithinSameNamespace() > { > - $this->info['HelloWorld::Test'] = array( > - 'pageName' => 'HelloWorld::Test', > + $this->info['HelloWorld_Test'] = array( > + 'pageName' => 'HelloWorld_Test', > + 'prettyName' => 'HelloWorld / Test', > + 'namespace' => 'HelloWorld', > + 'namespace_parts' => array('HelloWorld'), > + 'baseName' => 'Test', > 'description' => '', > 'lastModif' => 1234567890, > ); > @@ -180,12 +184,54 @@ > // ((Test)) within a page in HelloWorld namespace > $link = new WikiParser_OutputLink; > $link->setWikiLookup(array($this, 'getPageInfo')); > - $link->setNamespace('HelloWorld', '::'); > + $link->setNamespace('HelloWorld', '_'); > $link->setIdentifier('Test'); > > - $this->assertLinkIs('<a href="HelloWorld::Test" title="HelloWorld::Test" class="wiki wiki_page">Test</a>', $link->getHtml()); > + $this->assertLinkIs('<a href="HelloWorld_Test" title="HelloWorld / Test" class="wiki wiki_page">Test</a>', $link->getHtml()); > } > > + function testRenderFromDifferentNamespace() > + { > + $this->info['HelloWorld_Test'] = array( > + 'pageName' => 'HelloWorld_Test', > + 'prettyName' => 'HelloWorld / Test', > + 'namespace' => 'HelloWorld', > + 'namespace_parts' => array('HelloWorld'), > + 'baseName' => 'Test', > + 'description' => '', > + 'lastModif' => 1234567890, > + ); > + > + // ((Test)) within a page in HelloWorld namespace > + $link = new WikiParser_OutputLink; > + $link->setWikiLookup(array($this, 'getPageInfo')); > + $link->setNamespace('Foobar', '_'); > + $link->setIdentifier('HelloWorld_Test'); > + > + $this->assertLinkIs('<a href="HelloWorld_Test" title="HelloWorld / Test" class="wiki wiki_page"><span class="namespace first last">HelloWorld</span>Test</a>', $link->getHtml()); > + } > + > + function testRenderFromDifferentNamespaceWithMultipleParts() > + { > + $this->info['Abc_Def_HelloWorld_Test'] = array( > + 'pageName' => 'Abc_Def_HelloWorld_Test', > + 'prettyName' => 'Abc / Def / HelloWorld / Test', > + 'namespace' => 'Abc_Def_HelloWorld', > + 'namespace_parts' => array('Abc', 'Def', 'HelloWorld'), > + 'baseName' => 'Test', > + 'description' => '', > + 'lastModif' => 1234567890, > + ); > + > + // ((Test)) within a page in HelloWorld namespace > + $link = new WikiParser_OutputLink; > + $link->setWikiLookup(array($this, 'getPageInfo')); > + $link->setNamespace('Foobar', '_'); > + $link->setIdentifier('Abc_Def_HelloWorld_Test'); > + > + $this->assertLinkIs('<a href="Abc_Def_HelloWorld_Test" title="Abc / Def / HelloWorld / Test" class="wiki wiki_page"><span class="namespace first">Abc</span><span class="namespace">Def</span><span class="namespace last">HelloWorld</span>Test</a>', $link->getHtml()); > + } > + > function getPageInfo($page) > { > if (isset($this->info[$page])) { > > Modified: trunk/lib/tikilib.php > =================================================================== > --- trunk/lib/tikilib.php 2012-07-26 20:05:49 UTC (rev 42487) > +++ trunk/lib/tikilib.php 2012-07-26 20:46:16 UTC (rev 42488) > @@ -3809,6 +3809,10 @@ > return false; > } else { > $row = $result->fetchRow(); > + $row['baseName'] = TikiLib::lib('wiki')->get_without_namespace($row['pageName']); > + $row['prettyName'] = TikiLib::lib('wiki')->get_readable($row['pageName']); > + $row['namespace'] = TikiLib::lib('wiki')->get_namespace($row['pageName']); > + $row['namespace_parts'] = TikiLib::lib('wiki')->get_namespace_parts($row['pageName']); > > // Be sure to have the correct character case (because DB is caseinsensitive) > $pageNameEncode = urlencode($row['pageName']); > > Modified: trunk/lib/wiki/wikilib.php > =================================================================== > --- trunk/lib/wiki/wikilib.php 2012-07-26 20:05:49 UTC (rev 42487) > +++ trunk/lib/wiki/wikilib.php 2012-07-26 20:46:16 UTC (rev 42488) > @@ -421,7 +421,7 @@ > $parse_options = array( > 'is_html' => $info['is_html'], > 'language' => $info['lang'], > - 'namespace' => $this->get_namespace($page), > + 'namespace' => $info['namespace'], > ); > > if ($suppress_icons || (!empty($info['lockedby']) && $info['lockedby'] != $user)) { > @@ -1243,6 +1243,28 @@ > > return false; > } > + > + function get_readable($pageName) > + { > + global $prefs; > + > + if ($pageName && $prefs['namespace_enabled'] == 'y' && $prefs['namespace_separator']) { > + return str_replace($prefs['namespace_separator'], ' / ', $pageName); > + } > + > + return false; > + } > + > + function get_namespace_parts($pageName) > + { > + global $prefs; > + > + if ($namespace = $this->get_namespace($pageName)) { > + return explode($prefs['namespace_separator'], $namespace); > + } > + > + return array(); > + } > } > > global $wikilib; > > Modified: trunk/styles/layout/design.css > =================================================================== > --- trunk/styles/layout/design.css 2012-07-26 20:05:49 UTC (rev 42487) > +++ trunk/styles/layout/design.css 2012-07-26 20:46:16 UTC (rev 42488) > @@ -1713,4 +1713,28 @@ > padding-bottom: 8px; > } > > +/* Namespace styling */ > + > +.wiki .namespace { > + margin: 1px; > + padding: 1px; > + border-radius: 5px; > + -moz-border-radius: 5px; > + background: #eee; > + max-width: 30px; > + white-space: nowrap; > + overflow: hidden; > + text-overflow: ellipsis; > + display: inline-block; > + vertical-align: bottom; > +} > + > +.wiki .namespace.first { > + max-width: 130px; > +} > + > +.wiki .namespace.last { > + max-width: 130px; > +} > + > /* End of file */ > > This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. > > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > _______________________________________________ > Tikiwiki-cvs mailing list > Tik...@li... > https://lists.sourceforge.net/lists/listinfo/tikiwiki-cvs -- Marc Laporte http://MarcLaporte.com http://Tiki.org/MarcLaporte http://AvanTech.net |