/[pub]/suikawiki/script/misc/plugins/referer.wp2
Suika

Diff of /suikawiki/script/misc/plugins/referer.wp2

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

revision 1.1 by wakaba, Wed Mar 10 06:57:25 2004 UTC revision 1.7 by wakaba, Tue Mar 30 04:04:44 2004 UTC
# Line 62  FormattingRule: Line 62  FormattingRule:
62      } catch SuikaWiki::DB::Util::Error with {      } catch SuikaWiki::DB::Util::Error with {
63        #        #
64      };      };
65          
66      if (@list) {      if (@list) {
67        my $list = $p->{-parent}->append_new_node        my $list = $p->{-parent}->append_new_node
68                       (type => '#element',                       (type => '#element',
69                        namespace_uri => $NS_XHTML1,                        namespace_uri => $NS_XHTML1,
70                        local_name => 'ol');                        local_name => 'ol');
71        for (sort {$b->[1] <=> $a->[1] or $a->[0] cmp $b->[0]} @list) {  
72          local $o->{iwc__param}->{uri_reference} = URI->new ($_->[0]);        @list = sort {$b->[1] <=> $a->[1] or $a->[0] cmp $b->[0]} @list;
73          my $site = $INTERWIKICORE->get_site_entry_by_uri_reference_match  
74                       (o => $o,      my $start = length $p->{start} ? $p->{start} :
75                        page => $o->{wiki}->{config}->{page}->{InterWikiName});                  $o->{wiki}->{input}->parameter ('ref--range-start') || 0;
76          $WIKILINKING->to_resource_by_uri_in_html ({      $p->{number} = $o->{wiki}->{input}->parameter ('ref--range-number')
77            label => $WIKIRESOURCE->get                   unless length $p->{number};
78                        (name => 'Referer:RefererList:Label',      my $end = $p->{number} ? $start + $p->{number} - 1 : $start + 29;
79                         o => $o, wiki => $o->{wiki}),      $start = 0 if $start > $#list or $start < 0;
80            ref__label => (($site ?      $end = $#list if $end < $start or $end > $#list;
81                             $site->get_attribute_value ('URIReference2Label'):'')      $end = $start + 255 if $end > $start + 255;
82                          || $WIKIRESOURCE->get      local $o->{var}->{search__result} = {
83          min => 0,
84          max => $#list,
85          start => $start,
86          end => $end,
87          number => $p->{number} || 30,
88          param_prefix => 'ref',
89        };
90    
91          my $default_label = $WIKIRESOURCE->get
92                               (name => 'Referer:URIReference2Label',                               (name => 'Referer:URIReference2Label',
93                                o => $o, wiki => $o->{wiki})),                                o => $o, wiki => $o->{wiki});
94          my $li_label = $WIKIRESOURCE->get
95                                (name => 'Referer:RefererList:Label',
96                                 o => $o, wiki => $o->{wiki});
97    
98          for my $item (@list[$start..$end]) {
99            local $o->{iwc__param}->{uri_reference} = URI->new ($item->[0]);
100            my $label;
101            try {
102              $label = $o->{wiki}->{db}->get (ref__item_template => [$item->[0]])
103                or do {
104                    my $site = $INTERWIKICORE->get_site_entry_by_uri_reference_match
105                             (o => $o,
106                              page => $o->{wiki}->{config}->{page}->{InterWikiName});
107                    $label = $site ? $site->get_attribute_value
108                                       ('URIReference2Label') || $default_label
109                                   : $default_label;
110                    $o->{wiki}->{db}->set (ref__item_template => [$item->[0]]
111                                                              => $label);
112                };
113            } catch SuikaWiki::DB::Util::Error with {};
114            $WIKILINKING->to_resource_by_uri_in_html ({
115              label => $li_label,
116              ref__label => $label,
117          } => {          } => {
118            uri => $o->{iwc__param}->{uri_reference} = URI->new ($_->[0]),            uri => $o->{iwc__param}->{uri_reference},
119          }, {          }, {
120            o => $o,            o => $o,
121            parent => $list->append_new_node            parent => $list->append_new_node
122                       (type => '#element',                       (type => '#element',
123                        namespace_uri => $NS_XHTML1,                        namespace_uri => $NS_XHTML1,
124                        local_name => 'li'),                        local_name => 'li'),
125            ref__weight => $_->[1],            ref__weight => $item->[1],
126          });          });
127        }        }
128    
129          $list->set_attribute (start => $start + 1);
130          __ATTRNODE:%post_list->{$p->{-parent}}__;
131      }      }
132    
133  Function:  Function:
# Line 100  Function: Line 135  Function:
135    @Main:    @Main:
136      my (undef, %opt) = @_;      my (undef, %opt) = @_;
137      return unless $opt{wiki}->{db};      return unless $opt{wiki}->{db};
138        return unless $opt{uri};
139      $opt{page} ||= $opt{wiki}->{var}->{page};      $opt{page} ||= $opt{wiki}->{var}->{page};
140      my $o = $opt{o} || {wiki => $opt{wiki}};      my $o = $opt{o} || {wiki => $opt{wiki}};
141            
# Line 160  FormattingRule: Line 196  FormattingRule:
196  FormattingRule:  FormattingRule:
197    @Category[list]: link-to-resource    @Category[list]: link-to-resource
198    @Name: ref--referer-item-label    @Name: ref--referer-item-label
199      @Description:
200        @@@:
201          Label for referer list item, that is taken from InterWikiName database.
202        @@lang: en
203      @Formatting:
204        try {
205          $f->replace ($o->{link}->{src}->{ref__label},
206                       param => $o,
207                       -parent => $p->{-parent});
208        } catch Message::Util::Formatter::error with {
209          my $err = shift;
210          if ($err->{-object}->{-category_name} eq $f->{-category_name}) {
211            my $wiki = $err->{option}->{param}->{wiki};
212            SuikaWiki::Plugin->module_package ('Error')
213                             ->reporting_formatting_template_error
214                                 ($err, $wiki,
215                                  template => $o->{link}->{src}->{ref__label});
216            undef;
217          } else {
218            $err->throw;
219          }
220        };
221    
222    ViewFragment:
223      @Name: ws--post-content
224      @Description:
225        @@@: After content body -- referer lista
226        @@lang:en
227      @Order: 150
228    @Formatting:    @Formatting:
229      $f->replace ($o->{link}->{src}->{ref__label},          %section (
230                   param => $o,            id => referer,
231                   -parent => $p->{-parent});            title => {%res(name=>Referer);}p, heading,
232              content => {%referer-list (
233                number => 10,
234                post-list => {%search--result-navigation (
235                  fragment => referer,
236                );}p,
237              );}p,
238            );
239    
240  Resource:  Resource:
241    @Referer:RefererList:Label:    @Referer:RefererList:Label:

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.7

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24