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

WalWiki/カスタマイズ/簡易投票フォーム

差分表示


編集前の状態に戻します。
簡易投票フォームを表示します。

* [vote form]

 [[#vote]]

上記のように記述すると簡易投票フォームを表示することが出来ます。

,test1, [[#vote(75)]]
,test1, [[#vote(77)]]
,test2, [[#vote(17)]]
,test3, [[#vote(15)]]

 [[#vote:へぇ〜]]
 [[#vote:へぇ〜(20)]]

,こんなこともできます。, [[#vote(64):へぇ〜]]
,最大値の指定も可能です。, [[#vote(20):へぇ〜(20)]]

 [[#vote:(10)]]

,最大値指定のみ, [[#vote(10):(10)]]
** 関連するカスタマイズ

- [[WalWiki/カスタマイズ/汎用サブルーチン]] の make_cachedlink()
- [[WalWiki/カスタマイズ/編集後に編集していたセクションに飛ぶ]]

** resource.txtへの追加

,votebutton,vote

** CSSへの追加

 form.vote {
     margin: 1px;
 }
** グローバル変数定義

 my $embed_vote = '\[\[#vote(\((\d+)\))?(:(\S*?)(\((\d+)\))?)?\]\]';             # yakty add [vote form]

 my $vote_no = -1;                                                               # yakty add [vote form]

** %command_doへの追加

 my %command_do = (
     read => \&do_read,
     edit => \&do_edit,
     adminedit => \&do_adminedit,
     adminchangepasswordform => \&do_adminchangepasswordform,
     adminchangepassword => \&do_adminchangepassword,
     write => \&do_write,
     index => \&do_index,
     searchform => \&do_searchform,
     search => \&do_search,
     create => \&do_create,
     createresult => \&do_createresult,
     FrontPage => \&do_FrontPage,
     comment => \&do_comment,
     rss => \&do_rss,
     diff => \&do_diff,
     interwikibox => \&do_interwiki_box, # Walrus add [InterWikiBox]
     vote => \&do_vote,                                      # yakty add [vote form]
 );

** embedded_to_html()内の変更

- 2003-12-15 (Mon) 09:21:56 <a name="#v%d">を<a name="v%d">に修正。

     # yakty add [vote form] start
     } elsif ($embedded =~ /$embed_vote/) {
         my $votes = 0 + $2;
         my $votevalue = (length($4) > 0) ? $4 : $resource{votebutton};
         my $lastmodified = &get_info($form{mypage}, $info_LastModified);
         $vote_no++;
         return <<"EOD";
 <form action="$url_xcg" method="post" class="vote">
     @{[sprintf(qq(<a name="v%d">%d </a>), $vote_no, $votes)]}
     <input type="submit" value="$votevalue">
     <input type="hidden" name="mycmd" value="vote">
     <input type="hidden" name="mypage" value="$escapedmypage">
     <input type="hidden" name="myLastModified" value="$lastmodified">
     <input type="hidden" name="myvoteno" value="$vote_no">
 </form>
 EOD
     # yakty add [vote form] end
     } else {
         return $embedded;
     }
 }

** do_vote()追加

 # yakty add [vote form] start
 sub do_vote {
     my ($content) = $database{$form{mypage}};
     my $voteno = 0 + $form{myvoteno};
     my $i=0;
     my @contents = split(/\n/, $content);
     #foreach my $line (@contents){
     for(my $lineno=0; $lineno<@contents; $lineno++){
         my $line = @contents[$lineno];
         next if($line =~ /^\s/);
         while($line =~ /($embed_vote)/g){
             if($i == $voteno){
                 my $votes = $3 + 1;
                 my $votemax = 0 + $7;
                 if($votemax > 0 and $votes > $votemax){
                     $votes = $votemax;
                 }
                 my $matchlen = length($1);
                 my $endpos = pos $line;
                 substr(@contents[$lineno], $endpos-$matchlen, $matchlen, sprintf("[[#vote(%d)%s]]", $votes, $4));
             }
             $i++;
         }
         last if($i > $voteno);
     }
     $form{mymsg} = join("\n", @contents);
     $form{myfrozen} = &get_info($form{mypage}, $info_IsFrozen);
     &do_write;
 }
 # yakty add [vote form] end

** frozen_reject()内の変更

     # yakty add [vote form] start
     } elsif ($form{mycmd} eq 'vote'){
         return 0;
     # yakty add [vote form] end
     } else {
         &print_error($resource{passworderror});
         return 1;
     }
 }

** 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]
             and $page !~ $embed_vote){          # yakty add [vote form]
         $link_cache{$page} = $link;
     }
     return $link;
 }
 # yakty add [make cached link] end


** do_write()内の変更

[[WalWiki/カスタマイズ/編集後に編集していたセクションに飛ぶ]]を適用している場合のみ。

         # yakty add [jump to part] start
         my $part = sprintf("#i%d", $form{mypart} - 2) if ($form{mypart} >= 2);
         $part = sprintf("#c%d", $form{mycmtno}) if($form{mycmd} eq 'comment');   # yakty add [jump to part]
         $part = sprintf("#v%d", $form{myvoteno}) if($form{mycmd} eq 'vote');     # yakty add [jump to part] [vote form]
         my $linkurl = &armor_name($form{mypage} . $part);
         return if ($skip_succeed_page and &redirect_to($linkurl)); # Walrus add [skip succeed page] start
         # yakty add [jump to part] end


03656