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

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

編集

簡易投票フォームを表示します。

[vote form]

編集
[[#vote]]

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

test1
77
test2
17
test3
15
[[#vote:へぇ〜]]
[[#vote:へぇ〜(20)]]
こんなこともできます。
64
最大値の指定も可能です。
20
[[#vote:(10)]]
最大値指定のみ
10

関連するカスタマイズ

編集

resource.txtへの追加

編集
votebuttonvote

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()内の変更

編集
    # 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()内の変更

編集

編集後に編集していたセクションに飛ぶを適用している場合のみ。

        # 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

03258