[alias link definition]
セクションへのリンクを適用していた場合には今回修正した新しい実装にしないとこの機能がうまく動かないので注意して下さい。
- 2003-07-10 (Thu) 17:09:37 編集画面にAliasLinkの一覧を表示できる様に修正。$ALIASLINKLISTが展開されます。
- 2003-08-25 (Mon) 11:56:38 動作を WalWiki Experimental の AliasWikiName 互換に変更。
- 2004-04-23 (Fri) 18:36:01 AliasLinkNameで定義されたエイリアスへのエイリアスを可能に。こんな感じです。
- 2004-04-23 (Fri) 20:34:24 エイリアスリンクでもセクションへのリンクを可能に。
関連するカスタマイズ
- 汎用サブルーチン の make_cachedlink()
グローバル変数定義
my $AliasLinkName = 'AliasLinkName'; # yakty add [alias link definition]
my %aliaslink; # yakty add [alias link definition] my %alias_link_list; # yakty add [alias link definition]
main()内の変更
- 2003-08-25 (Mon) 11:52:46 処理の順番を変更。init_InterWikiName() -> init_AliasLink() -> init_form() の順番で処理をする必要があります。
sub main { open(LOG, ">>${modifier_dir_data}/log.txt") if ($walrus_debugging >= 2); # Walrus add [for debug] &init_resource; &check_modifiers; &open_db; &init_InterWikiName; # yakty add [alias link definition] &init_AntennaSite; # yakty add [alias link definition] &init_AliasLink; # yakty add [alias link definition] &init_form; #&init_InterWikiName; # yakty del [alias link definition] #&init_AntennaSite; # yakty del [alias link definition] if ($command_do{$form{mycmd}}) { &{$command_do{$form{mycmd}}}; } else { &do_FrontPage; } &close_db; close LOG if ($walrus_debugging >= 2); # Walrus add [for debug] }
init_form()内の変更
- 2003-08-28 (Thu) 13:31:15 WikiNameが有効な場合に、WikiNameなエイリアスが有効にならないのを修正
my $query = &decode($ENV{QUERY_STRING}); if ($page_command{$query}) { $form{mycmd} = $page_command{$query}; $form{mypage} = $query; # yakty del [alias link definition] start #} elsif ($query =~ /^($wiki_name)$/) { # $form{mycmd} = 'read'; # $form{mypage} = $1; # yakty del [alias link definition] end } elsif ($database{$query}) { $form{mycmd} = 'read'; $form{mypage} = $query; #} # yakty del [alias link definition] # yakty add [alias link definition] start } elsif ($aliaslink{$query} and $database{$aliaslink{$query}}) { $form{mycmd} = 'read'; $form{mypage} = $aliaslink{$query}; } # yakty add [alias link definition] end
make_link()内の変更
my $name = $chunk; my $escapedchunk = &escape($chunk); my $escapedname = &escape($name); my $cookedchunk = &encode($chunk); #if ($form{mypage} ne $InterWikiName and $chunk !~ /^$embedded_name$/) { # yakty del [alias link definition] if ($form{mypage} ne $InterWikiName and $chunk !~ /^$embedded_name$/ and $form{mypage} ne $AliasLinkName) { # yakty add [alias link definition] ($name, $chunk) = ($1, $2) if ($chunk =~ /^\[\[(\S+) (\S+)\]\]$/); ($name, $chunk) = (&unarmor_name($name), &unarmor_name($chunk));
- 2004-04-23 (Fri) 18:34:33 AliasLinkNameで定義したエイリアスへのエイリアスを可能にする。
- 2004-04-23 (Fri) 20:34:09 エイリアスリンクでもセクションへのリンクを可能に。
} elsif ($page_command{$chunk}) { return qq(<a title="$escapedchunk" href="$url_cgi?$cookedchunk$part">$escapedchunk</a>); # yakty add [link to part] #return qq(<a title="$escapedchunk" href="$url_cgi?$cookedchunk">$escapedchunk</a>); # yakty del [link to part] # yakty add [alias link definition] start } elsif (defined $aliaslink{$chunk}) { #return &make_link(&armor_name($name . " " . $aliaslink{$chunk})); # yakty del [link to part] return &make_link("[[$name $aliaslink{$chunk}$part]]"); # yakty add [link to part] # yakty add [alias link definition] end } else { return qq($escapedchunk<a title="$resource{editthispage}" href="$url_cgi?mycmd=edit&mypage=$cookedchunk">$editchar</a>); } } }
print_editform()内の変更
$content = &text_to_html($content, toc=>0); # Walrus add [additional edit info] $content =~ s/\$INTERWIKILIST/&make_interwiki_list()/ge; # Walrus add [additional edit info] $content =~ s/\$ANTENNASITELIST/&make_antennasite_list()/ge; # Walrus add [additional edit info] $content =~ s/\$ALIASLINKLIST/&make_aliaslink_list()/ge; # yakty add [alias link definition] print $content; # Walrus add [additional edit info]
init_AliasLink()追加
- 編集画面にAliasLinkの一覧を表示させる為に修正
- イメージへのリンクはイメージをインラインで表示できるように変更
- InterWikiも使用できるように変更
- 2004-04-27 (Tue) 18:32:11 WikiNameに対してはブラケット括りでも動作するように変更。
# yakty add [alias link definition] start sub init_AliasLink { my $content = $database{$AliasLinkName}; while ($content =~ /(\[\[(\S+) (\S+)\]\])/g) { my ($link, $name, $page) = ($1, $2, $3); next if(&is_exist_page($name)); $link = $page if($page =~ /^(https?|ftp):[^\?]+\.(gif|png|jpe?g)$/ and $use_autoimg); if($page =~ /^$interwiki_name$/ and $interwiki{$1}) { my ($remoteurl, $localname) = ($interwiki{$1}, $2); $remoteurl =~ s/\b(euc|sjis|ykwk|asis|isbn)\(\$1\)/&interwiki_convert($1, $localname)/e; $remoteurl = &decode($remoteurl); $link = $remoteurl if ($remoteurl =~ /^(https?|ftp):[^\?]+\.(gif|png|jpe?g)$/ and $use_autoimg); } $aliaslink{$name} = $page; $name = &armor_name($name); $alias_link_list{$name} = &make_link($link); $alias_link_list{"[[$name]]"} = $alias_link_list{$name} if($name ne "[[$name]]"); } } # yakty add [alias link definition] end
make_aliaslink_list()追加
# yakty add [alias link definition] start sub make_aliaslink_list { my @sites; foreach my $key (sort {uc($a) cmp uc($b)} (keys(%aliaslink))) { push(@sites, sprintf(qq("<span title="%s">%s</a>"), &escape($aliaslink{$key}), &escape($key))); } return join(', ', @sites); } # yakty add [alias link definition] end
inline()内の変更
! # &make_link($1) # Walrus del [link cache] # (defined($link_cache{$1})) ? $link_cache{$1} : (length($_ = &make_link($1)) < 1024) ? ($link_cache{$1} = $_) : $_ # Walrus add [link cache] # yakty del [make cached link] &make_cachedlink($1) # yakty add [make cached link] !gex;
make_cachedlink()内の変更
# yakty add [make cached link] start sub make_cachedlink { my ($page) = @_; my $link; if(defined($link_cache{$page})){ return $link_cache{$page}; # yakty add [alias link definition] start } elsif(&is_exist_page($page)){ $link = &make_link($page); } elsif(defined($alias_link_list{$page})) { $link = $alias_link_list{$page}; # yakty add [alias link definition] end # yakty add [auto link] start } elsif(defined($auto_link_list{$page})) { $link = $auto_link_list{$page}; # yakty add [auto link] end } else { $link = &make_link($page); } if(length($link) < 1024 and $page ne $embed_comment # yakty add [multi comment] and $page ne $embed_rcomment){ # yakty add [multi comment] $link_cache{$page} = $link; } return $link; } # yakty add [make cached link] end