/[pub]/suikawiki/script/misc/plugins/link/map.wp2
Suika

Diff of /suikawiki/script/misc/plugins/link/map.wp2

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by wakaba, Sun Feb 8 08:46:47 2004 UTC revision 1.11 by wakaba, Sat Mar 20 04:08:11 2004 UTC
# Line 6  Plugin: Line 6  Plugin:
6      @@@:      @@@:
7        Visualization of page to page relatinships        Visualization of page to page relatinships
8      @@lang:en      @@lang:en
9    @License: %%GPL%%    @License: %%Perl%%
10    @Author:    @Author:
11      @@Name:      @@Name:
12        @@@@: Wakaba        @@@@: Wakaba
# Line 76  FormattingRule: Line 76  FormattingRule:
76      __ATTRTEXT:%mode__;      __ATTRTEXT:%mode__;
77      for (sort {$b->[1] <=> $a->[1]}      for (sort {$b->[1] <=> $a->[1]}
78           map  { try { [$_, $o->{wiki}->{db}->get (lastmodified => $_)] }           map  { try { [$_, $o->{wiki}->{db}->get (lastmodified => $_)] }
79                  catch SuikaWiki::DB::Util::Error with {[$_, undef]} }                  catch SuikaWiki::DB::Util::Error with {
80                      my $err = shift;
81                      $err->throw if $err->{-type} eq 'ERROR_REPORTED';
82                      [$_, undef]} }
83           $o->{wiki}->{db}->keys ('content',           $o->{wiki}->{db}->keys ('content',
84                                   -ns => $ns,                                   -ns => $ns,
85                                   -type => 'key',                                   -type => 'key',
# Line 84  FormattingRule: Line 87  FormattingRule:
87        next unless $_->[0];        next unless $_->[0];
88        last if $i++ == $p->{n};        last if $i++ == $p->{n};
89                
       my $li = $list->append_new_node  
                         (type => '#element',  
                          namespace_uri => $NS_XHTML1,  
                          local_name => 'li');  
90        $WIKILINKING->to_wikipage_in_html ({        $WIKILINKING->to_wikipage_in_html ({
91          label => $p->{template},          label => $p->{template},
92        } => {        } => {
# Line 98  FormattingRule: Line 97  FormattingRule:
97          page_lastmodified => $_->[1],          page_lastmodified => $_->[1],
98        }, {        }, {
99          o => $o,          o => $o,
100          parent => $li,          parent => $list->append_new_node
101                            (type => '#element',
102                             namespace_uri => $NS_XHTML1,
103                             local_name => 'li'),
104        });        });
105      }      }
106    
# Line 136  FormattingRule: Line 138  FormattingRule:
138      $p->{template} ||= $WIKIRESOURCE->get      $p->{template} ||= $WIKIRESOURCE->get
139          (name => 'Link:toWikiPage:SourceLabelLong:PageList',          (name => 'Link:toWikiPage:SourceLabelLong:PageList',
140           wiki => $o->{wiki}, o => $o);           wiki => $o->{wiki}, o => $o);
141        __ATTRTEXT:%match__; ## WARNING: This parameter might be dangerous!
142        my $reg = $p->{match} ? qr/$p->{match}/ : qr/./;
143      __ATTRTEXT:%mode__;      __ATTRTEXT:%mode__;
144      try {      try {
145        for (sort {$a->[1] cmp $b->[1]}        for (sort {$a->[1] cmp $b->[1]}
146               grep {$_->[1] =~ /$reg/}
147             map {[$_, join '//', @{$_}]} # make sort key             map {[$_, join '//', @{$_}]} # make sort key
148             $o->{wiki}->{db}->keys ('content',             $o->{wiki}->{db}->keys ('content',
149                                     -ns => $ns,                                     -ns => $ns,
# Line 146  FormattingRule: Line 151  FormattingRule:
151                                     -recursive => $p->{recursive})) {                                     -recursive => $p->{recursive})) {
152          last if $i++ == $p->{n};          last if $i++ == $p->{n};
153                    
         my $li = $list->append_new_node  
                           (type => '#element',  
                            namespace_uri => $NS_XHTML1,  
                            local_name => 'li');  
154          $WIKILINKING->to_wikipage_in_html ({          $WIKILINKING->to_wikipage_in_html ({
155            label => $p->{template},            label => $p->{template},
156          } => {          } => {
# Line 158  FormattingRule: Line 159  FormattingRule:
159            wiki_mode => $p->{mode},            wiki_mode => $p->{mode},
160          }, {          }, {
161            o => $o,            o => $o,
162            parent => $li,            parent => $list->append_new_node
163                              (type => '#element',
164                               namespace_uri => $NS_XHTML1,
165                               local_name => 'li'),
166          });          });
167        }        }
168      } catch SuikaWiki::DB::Util::Error with {      } catch SuikaWiki::DB::Util::Error with {
169        #        my $err = shift;
170          $err->throw if $err->{-type} eq 'ERROR_REPORTED';
171      };      };
172      $p->{-parent}->remove_child_node ($list) unless $list->count;      $p->{-parent}->remove_child_node ($list) unless $list->count;
173    
174  FormattingRule:  FormattingRule:
175    @Category[list]:    @Category[list]:
     form-input  
     view  
     view-resource  
   @Name: search-result  
   @Formatting:  
     __ATTRTEXT:%key__;  
     $p->{key} ||= $o->{wiki}->{var}->{page}->stringify (wiki => $o->{wiki});  
     __ATTRTEXT:%case_sensible__;  
     my $word = $p->{case_sensible} ? $p->{key} : lc $p->{key};  
     my @r;  
     my $sr = $o->{wiki}->{db}->get (m__search_result => [$word]);  
     unless ($sr) {  
       for my $page ($o->{wiki}->{db}->keys ('content')) {  
         my $content;  
         try {  
           $content = $o->{wiki}->{db}->get (content => $page);  
         } catch SuikaWiki::DB::Util::Error with {  
           $content = undef;  
         };  
         $content = $p->{case_sensible} ? $content : lc $content;  
         $content =~ s/^[^\x0A\x0D]+[\x0D\x0A]+//s;  
         $page = $o->{wiki}->name ($page);  
         my $n_page = $page->stringify (wiki => $o->{wiki});  
         $n_page = lc $n_page unless $p->{case_sensible};  
         if (index ($n_page, $word) > -1) {  
                my $c = $content =~ s/\Q$word\E//g;  
                 push @r, [$page, $c+20];  
               } elsif (index ($word, $n_page) > -1) {  
                 my $c = $content =~ s/\Q$word\E//g;  
                 push @r, [$page, $c+10];  
               } elsif (my $c = $content =~ s/\Q$word\E//g) {  
                 push @r, [$page, $c];  
               }  
       }  
       @r = sort {$b->[1] <=> $a->[1] || $a->[0] cmp $b->[0]} @r;  
       $sr = join "\x1E",  
             map {$_->[0]->stringify (wiki => $o->{wiki}, delimiter => "\x1D")  
                  ."\x1F".$_->[1]} @r;  
       $o->{wiki}->{db}->set (m__search_result => [$word] => $sr);  
 ## TODO: Cache & case-sensibility  
     } else {  
       @r = map {[$o->{wiki}->name ($_->[0], delimiter_reg => qr/\x1D/), $_->[1]]}  
            map {[split /\x1F/, $_, 2]} split /\x1E/, $sr;  
     }  
       return unless @r;  
       my $list = $p->{-parent}->append_new_node  
                                 (type => '#element',  
                                  namespace_uri => $NS_XHTML1,  
                                  local_name => 'ol');  
       __ATTRTEXT:%template__;  
       $p->{template} ||= $WIKIRESOURCE->get  
           (name => 'Link:toWikiPage:SourceLabelLong:SearchResult',  
            wiki => $o->{wiki}, o => $o);  
       for (@r) {  
         my $li = $list->append_new_node  
                           (type => '#element',  
                            namespace_uri => $NS_XHTML1,  
                            local_name => 'li');  
         $WIKILINKING->to_wikipage_in_html ({  
           label => $p->{template},  
         } => {  
           base => $o->{wiki}->{var}->{page},  
           page_name_relative => $_->[0],  
           wiki_mode => $p->{mode},  
         }, {  
           o => $o,  
           parent => $li,  
           -m__weight => $_->[1],  
         });  
       }  
   
 FormattingRule:  
   @Category[list]:  
176      page-link      page-link
177    @Name: m--link-weight    @Name: m--link-weight
178    @Formatting:    @Formatting:
# Line 249  FormattingRule: Line 181  FormattingRule:
181  ViewFragment:  ViewFragment:
182    @Name: ws--post-content    @Name: ws--post-content
183    @Description:    @Description:
184      @@@: After content body -- navigation bar      @@@: After content body -- children and backward links
185      @@lang:en      @@lang:en
186    @Order: 100    @Order: 100
187    @Formatting:    @Formatting:
# Line 262  ViewFragment: Line 194  ViewFragment:
194                       template => {%resource-as-plain-text (name => {Children:Item});}p,                       template => {%resource-as-plain-text (name => {Children:Item});}p,
195                     );}p,                     );}p,
196      );      );
197          %section (  
198            id => see-also,  ## TODO: Make recent-changes page name customizable
199            title => {%res(name=>SeeAlso);}p, heading,  ViewFragment:
200            content => {%search-result;}p,    @Name: navbar
201          );    @Order: 21
202          %section (    @Formatting:
203            id => referer,      %link-to-wikipage (
204            title => {%res(name=>Referer);}p, heading,        page => {RecentChanges},
205            content => {%referer-list;}p,        label => {%link-to-it (
206          );          label => {%res (name => GoToRecentChanges);}p,
207            description => {%res (name => GoToRecentChangesLong);}p,
208          );},
209          rel => news,
210        );
211    
212    ## TODO:
213    ViewFragment:
214      @Name: links
215      @Formatting:
216        %link-to-wikipage (
217          page => {RecentChanges},
218          rel => news,
219          label => {%html-link (
220                      description => {%res(name=>GoToRecentChangesLink);}p,
221                    );},
222        );
223    
224  Resource:  Resource:
225    @Children:Title:    @Children:Title:
# Line 299  Resource: Line 247  Resource:
247        description=>{%page-name(absolute);}p,        description=>{%page-name(absolute);}p,
248      );      );
249      %span(class=>headline,content=>{%page-headline;}p);      %span(class=>headline,content=>{%page-headline;}p);
   
 ## TODO:  
 ViewFragment:  
   @Name: navbar  
   @Order: 21  
   @Formatting:  
     %link-to-wikipage (  
       page => {RecentChanges},  
       label => {%link-to-it (  
                  label=>"%res(name=>GoToRecentChanges);"p,  
                  description=>"%res(name=>GoToRecentChangesLong);"p,  
       );},  
       rel => news,  
     );  
   
 ## TODO:  
 ViewFragment:  
   @Name: links  
   @Formatting:  
     %link-to-wikipage (  
       page => {RecentChanges},  
       rel => news,  
       label => {%html-link (  
                   description => {%res(name=>GoToRecentChangesLink);}p,  
                 );},  
     );  
250      @GoToRecentChanges:
251        @@@: Recent
252        @@lang: en
253      @GoToRecentChangesLink:
254        @@@: Recently modified WikiPages list
255        @@lang: en
256      @GoToRecentChangesLong:
257        @@@: Review recently modified WikiPages list
258        @@lang: en

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.11

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24