[Pmwiki-users] Help with DTIndex
Patrick R. Michaud
pmichaud
Tue Oct 19 13:24:52 CDT 2004
Philippe-
Take a look at http://www.pmwiki.org/pmwiki2/pmwiki.php/Cookbook/DictIndex
(just added) and see if it's along the lines of what you want.
Pm
On Tue, Oct 19, 2004 at 08:16:33PM +0200, Philippe Krait wrote:
> Hello,
>
> As advised, have made the move to pmwiki 2. Everything works fine,
> except for one Cookbook recipe that I used extensively before, the
> DTIndex one.
>
> It did not work at all, so I had to do heavy customisation (with my
> rather poor php skills) to make it do "sort of" what I want (I have
> also, I think, simplified it a bit by using a pmwiki function for
> lisiting pages, although how the $pat works in the ls function is beyond
> me :).
>
> In the end, it does not look too bad, expect for one thing: It pops at
> the top of a menu instead at at the place where I have put the markup
> (which I have modified to give it a Pmwiki 2 look).
>
> It probably has to do with the priority for the markup, but frankly I am
> at my wit's end here.
>
> In case someone feels like helpinh, here is the page, I would like the
> list of pages to be at the bottom of the menu bar on the left, instead
> of at the top:
> http://newgallo.dnsalias.net/pmwiki/pmwiki.php/Adventures/HomePage
>
> And here is the code for the DTIndex, after heavy modification:
>
> <?php
>
> /*
> Copyright 2003 Darren Turland.
>
> This script provides an Index of pages for PmWiki. Similar to $search
> without any arguments. Layout is different.
>
> A B C D E .... X Y Z
> A
> AllPages.. (PmWiki)
> B
> C
> D
> DarrenPage (Darren)
> etc..
>
> include_once("local/DTIndex.php"); in local.php
>
> then add [[$Index]] where-ever you require Index of all pages.
>
> */
>
> Markup('Indexgroup','links', '/\\[:Indexgroup:\\]/e',
> "DTIndexAll('group')");
> Markup('Index', 'links', '/\\[:Index:\\]/e', "DTIndexAll('')");
>
>
>
> # SDV($InlineReplacements['/\\[\\[\\$Indexgroup\\]\\]/e'],
> "DTIndexAll('group')");
> # SDV($InlineReplacements['/\\[\\[\\$Index\\]\\]/e'], "DTIndexAll('')");
>
> function DTIndexAll($group)
> {
> global $WikiLibDirs;
> $ignore_pages = array('GroupAttributes','GroupHeader','GroupFooter',
> 'StartPagina','RecentChanges','Index','Log',
> 'PageFooter','PageHeader','SearchWiki',
> 'AttachementsLoaded','RecentUploads');
>
> if ( $group ) {
> global $pagename;
> $group=FmtPageName('$Group', $pagename);
> }
>
> #Remove the comments if you want all characters in the index
> #for($l_loop=65;$l_loop<65+26;$l_loop++)
> # $DTIndexArray[chr($l_loop)] = "";
>
> $List = ListPages();
> foreach ($List as $pagefile) {
> # echo $pagefile."\n";
> $d1=FmtPageName('$Group',$pagefile);
> if ($d1 && ! ($group && ($group != $d1))) {
> $l_title = FmtPageName('$Title',$pagefile);
> if ( !in_array( $l_title, $ignore_pages ) ) {
> $l_key = substr($l_title,0, 1);
> $pagef = array();
> # $pagef['Title'] = FmtPageName('$Titlespaced',$pagefile);
> $pagef['Title'] = FmtPageName('$Title',$pagefile);
> if ( ! $group ) {
> $pagef['Group'] = FmtPageName('$Group',$pagefile);
> }
> $pagef['Url'] = FmtPageName('$PageUrl',$pagefile);
> $DTIndexArray[$l_key][] = $pagef;
> }
> }
> }
> DTIndexShow($DTIndexArray);
> }
>
> function DTIndexShow($DTIndexArray)
> {
> if (!$DTIndexArray) return;
> print "<table width=90%><tr><th colspan=3>";
> # print "<font size='+1'>";
> ksort($DTIndexArray,SORT_STRING );
> # foreach(array_keys($DTIndexArray) as $fred) {
> # print "<a href=\"#$fred\" >$fred</a> ";
> # }
> # print "</font>";
> print "<tr>";
> # $length=ceil(count($DTIndexArray)/3);
> $length=ceil(count($DTIndexArray));
> $row=$length;
> foreach(array_keys($DTIndexArray) as $fred) {
> if ( $row >= $length ) {
> print "<td valign=top>";
> $row=0;
> }
> $row++;
> if (is_array($DTIndexArray[$fred])) {
> print "<br /><a name=\"$fred\" id=\"$fred\"></a>";
> print "<strong><font size='+1'>$fred</font></strong>";
> sort($DTIndexArray[$fred['Title']]);
> foreach($DTIndexArray[$fred] as $item) {
> print "<br /> " ;
> print "<a href=\"";
> print $item['Url'];
> print "\" >";
> print $item['Title'];
> print "</a>";
> # if ($item['Group']) {
> # print " ( ";
> # print $item['Group'];
> # print " )";
> # }
> }
> }
> }
> print "</table>";
> }
>
> ?>
>
> Thanks in advance,
>
> Philippe
>
>
> --
> Pmwiki-users mailing list
> Pmwiki-users at pmichaud.com
> http://pmichaud.com/mailman/listinfo/pmwiki-users_pmichaud.com
More information about the pmwiki-users
mailing list