- 2004-05-25 (Tue) 23:02:48 凍結したページの差分のリンクが表示されない問題を修正。
[login/logout]
- 未ログイン時にはeditボタンのみ表示、ログイン時にはadmineditボタンのみ表示。
- 凍結ページでは、未ログイン時に編集ボタンが全く表示されなくなります。
- ログイン時の新規作成はadmineditのページに飛ばす。
resource.txtへの追加
loginbutton | ログイン |
logoutbutton | ログアウト |
グローバル変数追加
スクリプト中で何度もvalid_password()を呼ぶ必要が無くなるようにグローバル変数でパスワード認証済みかどうかを保持します。
my $authorized = 0; # yakty add [login/logout]
%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] login => \&do_login, # yakty add [login/logout] logout => \&do_logout, # yakty add [login/logout] );
init_form()内の変更
パスワードが正しいかどうかを検証してグローバル変数に保持します。
$authorized = &valid_password($form{mypassword}); # yakty add [login/logout] }
do_login()追加
# yakty add [login/logout] start sub do_login { &print_header($form{mypage}); &print_message($resource{passwordneeded}); &print_loginform; &print_footer($form{mypage}); } # yakty add [login/logout] end
do_logout()追加
- 2004-06-08 (Tue) 19:25:17 ログアウト直後の表示がログアウト状態になっていなかったのを修正。
# yakty add [login/logout] start sub do_logout { #if(&valid_password($form{mypassword})){ if($authorized){ &set_cookie('mypassword', ''); $form{mypassword} = ""; $authorized = 0; } if($page_command{$form{mypage}}){ &{$command_do{$page_command{$form{mypage}}}}; } else { $form{mycmd} = 'read'; &do_read; } } # yakty add [login/logout] end
print_loginform()追加
# yakty add [login/logout] start sub print_loginform { if($page_command{$form{mypage}}){ $form{mycmd} = $page_command{$form{mypage}}; } else { $form{mycmd} = 'read'; } print <<"EOD"; <form action="$url_cgi" method="post"> <input type="hidden" name="mycmd" value="$form{mycmd}"> <input type="hidden" name="mypage" value="$form{mypage}"> $resource{frozenpassword} <input type="password" name="mypassword" size="10"> <input type="submit" value="$resource{loginbutton}"><br> </form> EOD } # yakty add [login/logout] end
do_create()内の変更
sub do_create { &print_header($CreatePage); print <<"EOD"; <form action="$url_cgi" method="post"> <!-- input type="hidden" name="mycmd" value="edit" --><!-- yakty del [login/logout] --> <input type="hidden" name="mycmd" value=@{[$authorized ? "adminedit" : "edit"]}><!-- yakty add [login/logout] --> <strong>$resource{newpagename}</strong><br> <input type="text" name="mypage" value="" size="80"> <input type="submit" value="$resource{createbutton}"><br> </form> EOD &print_footer($CreatePage); }
print_header()内の変更
未ログイン時には編集リンクのみ、ログイン後には管理者編集リンクのみを表示します。
また、未ログイン時には凍結ページの編集リンクを全く表示しません。
} else { $editable = 0; } # yakty add [login/logout] start if($authorized and $editable){ $editable = 0; $admineditable = 1; } # if(&valid_password($form{mypassword})){ # if($editable){ # $editable = 0; # $admineditable = 1; # } # } else { # $admineditable = 0; # } # yakty add [login/logout] end my $cookedpage = &encode($page); my $escapedpage = &escape($page);
if ($editable) { $resource{'parteditlinkformat'} = qq(<a class="partedit" title="$resource{editthispart}" href="$url_cgi?mycmd=edit&mypage=$formatpage&mypart=%d">$resource{editbutton}</a>); } #elsif ($admineditable) { $resource{'parteditlinkformat'} = qq(<a class="partedit" title="$resource{admineditthispart}" href="$url_cgi?mycmd=adminedit&mypage=$formatpage&mypart=%d">$resource{admineditbutton}</a>); } # yakty del [login/logout] elsif ($admineditable and $authorized) { $resource{'parteditlinkformat'} = qq(<a class="partedit" title="$resource{admineditthispart}" href="$url_cgi?mycmd=adminedit&mypage=$formatpage&mypart=%d">$resource{admineditbutton}</a>); } # yakty add [login/logout]
@{[ ($editable and $authorized == 0) # yakty mod [login/logout] ? qq(<a title="$resource{editthispage}" href="$url_cgi?mycmd=edit&mypage=$cookedpage">$resource{editbutton}</a> | ) : qq() ]} @{[ ($admineditable and $authorized) # yakty mod [login/logout] ? qq(<a title="$resource{admineditthispage}" href="$url_cgi?mycmd=adminedit&mypage=$cookedpage">$resource{admineditbutton}</a> | ) : qq() ]} @{[ $admineditable ? qq(<a href="$url_cgi?mycmd=diff&mypage=$cookedpage">$resource{diffbutton}</a> | ) : qq() ]}
<a href="$url_cgi?$SearchPage" title="Word Search">$resource{searchbutton}</a> | <a href="$url_cgi?$FrontPage" title="Top Page">$FrontPage</a> | <a href="$url_cgi?$IndexPage" title="Page List">$resource{indexbutton}</a> | <a href="$url_cgi?$RecentChanges" title="Change Log">$resource{recentchangesbutton}</a> | <a href="$url_cgi?$RecentDiffs" title="Change Log(diff)">$resource{recentdiffsbutton}</a> | <a href="$url_cgi?$RssPage" title="Change Log(RSS format)">$resource{rssbutton}</a> <!-- yakty add [login/logout] start --> @{[ $authorized ? qq( | <a href="$url_cgi?mycmd=logout&mypage=$cookedpage" title="Logout(admin)">$resource{logoutbutton}</a>) : qq( | <a href="$url_cgi?mycmd=login&mypage=$cookedpage" title="Login(admin)">$resource{loginbutton}</a>) ]} <!-- yakty add [login/logout] end -->