[ 新規 ] [ 検索 | 一覧 | FrontPage ] [ 履歴 (RSS) | 差分履歴 (RSS) ] [ ログイン ]
【PR】Amazon | SL-C3000 | SL-C1000(3/18発売!) | SL-C860 | SL-6000W | SL-6000L | SL-6000N

WalWiki/カスタマイズ/エイリアス定義

差分表示


編集前の状態に戻します。
*[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で定義されたエイリアスへのエイリアスを可能に。[[こんな感じ rica]]です。
- 2004-04-23 (Fri) 20:34:24 エイリアスリンクでもセクションへのリンクを可能に。
** 関連するカスタマイズ

-[[WalWiki/カスタマイズ/汎用サブルーチン]] の 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(&armor_name($name . " " . $aliaslink{$chunk}) . $part);                 # yakty add [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&amp;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(&quot;<span title="%s">%s</a>&quot;), &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


03539