差分表示
- 最後の更新で追加された行はこのように表示します。
- 最後の更新で削除された行はこのように表示します。
簡易投票フォームを表示します。
* [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
03693