23 |
use Message::Util::Error; |
use Message::Util::Error; |
24 |
my $WIKILINKING; |
my $WIKILINKING; |
25 |
my $WIKIRESOURCE; |
my $WIKIRESOURCE; |
26 |
|
@Namespace: |
27 |
|
@@relrev: |
28 |
|
http://suika.fam.cx/~wakaba/archive/2004/7/25/html-relrev# |
29 |
|
|
30 |
PluginConst: |
PluginConst: |
31 |
@NS_XHTML1: |
@NS_XHTML1: |
44 |
{($WIKIRESOURCE ||= SuikaWiki::Plugin->module_package ('WikiResource'))} |
{($WIKIRESOURCE ||= SuikaWiki::Plugin->module_package ('WikiResource'))} |
45 |
|
|
46 |
FormattingRule: |
FormattingRule: |
47 |
|
@Category[list]: view |
48 |
|
@Name: m--html-link-navigation |
49 |
|
@Description: |
50 |
|
@@@: Navigation links (HTML link elements) made from content properties |
51 |
|
@@lang: en |
52 |
|
@Parameter: |
53 |
|
@@Name: page |
54 |
|
@@Type: WikiName |
55 |
|
@@Default: (current) |
56 |
|
@@Description: |
57 |
|
@@@lang: en |
58 |
|
@@@@: Target WikiPage |
59 |
|
@Formatting: |
60 |
|
my $page = $o->{wiki}->name ($p->{page} || $o->{wiki}->{var}->{page}); |
61 |
|
my $content_prop; |
62 |
|
try { |
63 |
|
$content_prop = $o->{wiki}->{db}->get (content_prop => $page); |
64 |
|
} catch SuikaWiki::DB::Util::Error with { |
65 |
|
my $err = shift; |
66 |
|
$err->throw if $err->{-type} eq 'ERROR_REPORTED'; |
67 |
|
} catch SuikaWiki::Format::Definition::error with { |
68 |
|
# |
69 |
|
}; |
70 |
|
|
71 |
|
if ($content_prop) { |
72 |
|
for my $rel ( |
73 |
|
{uri => <Q:relrev:prev>, html => 'prev'}, |
74 |
|
{uri => <Q:relrev:next>, html => 'next'}, |
75 |
|
{uri => <Q:relrev:contents>, html => 'contents'}, |
76 |
|
{uri => <Q:relrev:index>, html => 'index'}, |
77 |
|
{uri => <Q:relrev:up>, html => 'up'}, |
78 |
|
) { |
79 |
|
if (my $val = $content_prop->get_attribute ($rel->{uri})) { |
80 |
|
$val = $val->value; |
81 |
|
for (ref $val eq 'ARRAY' ? @$val : $val) { |
82 |
|
__FUNCPACK{WikiLinking}__->to_wikipage_in_html ( |
83 |
|
{ |
84 |
|
label => qq(%html-link ( |
85 |
|
description => {%res (name => {Map:LinkNav:$rel->{html}:Description});: %page-name;: %page-headline;}p, |
86 |
|
);\n), |
87 |
|
} => { |
88 |
|
base => $page, |
89 |
|
page_name_relative => $o->{wiki}->name ($_), |
90 |
|
}, { |
91 |
|
o => $o, |
92 |
|
parent => $p->{-parent}, |
93 |
|
-rel => $rel->{html}, |
94 |
|
}); |
95 |
|
} |
96 |
|
} |
97 |
|
} |
98 |
|
} |
99 |
|
|
100 |
|
FormattingRule: |
101 |
@Category[list]: |
@Category[list]: |
102 |
form-input |
form-input |
103 |
view |
view |
371 |
ViewFragment: |
ViewFragment: |
372 |
@Name: links |
@Name: links |
373 |
@Formatting: |
@Formatting: |
374 |
|
%m--html-link-navigation; |
375 |
|
|
376 |
%link-to-wikipage ( |
%link-to-wikipage ( |
377 |
page => {%ns--root-wikiname;}p, |
page => {%ns--root-wikiname;}p, |
378 |
rel => news, |
rel => news, |
446 |
@Map:Change:WebPageTitle: |
@Map:Change:WebPageTitle: |
447 |
@@@: Recent Changes (%page-name;) |
@@@: Recent Changes (%page-name;) |
448 |
@@lang: en |
@@lang: en |
449 |
|
@Map:LinkNav:prev:Description: |
450 |
|
@@lang: en |
451 |
|
@@@: Previous WikiPage |
452 |
|
@Map:LinkNav:next:Description: |
453 |
|
@@lang: en |
454 |
|
@@@: Next WikiPage |
455 |
|
@Map:LinkNav:contents:Description: |
456 |
|
@@lang: en |
457 |
|
@@@: Table of Contents |
458 |
|
@Map:LinkNav:index:Description: |
459 |
|
@@lang: en |
460 |
|
@@@: Index |
461 |
|
@Map:LinkNav:up:Description: |
462 |
|
@@lang: en |
463 |
|
@@@: Up |
464 |
|
|
465 |
|
|
466 |
|
|
467 |
|
|
468 |
|
|