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

WalWiki/カスタマイズ/ログイン・ログアウト機能

差分表示


編集前の状態に戻します。

- 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&amp;mypage=$formatpage&amp;mypart=%d">$resource{editbutton}</a>); }
     #elsif ($admineditable) { $resource{'parteditlinkformat'} = qq(<a class="partedit" title="$resource{admineditthispart}" href="$url_cgi?mycmd=adminedit&amp;mypage=$formatpage&amp;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&amp;mypage=$formatpage&amp;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&amp;mypage=$cookedpage">$resource{editbutton}</a> | )
         : qq()
     ]}
     @{[ ($admineditable and $authorized) # yakty mod [login/logout]
         ? qq(<a title="$resource{admineditthispage}" href="$url_cgi?mycmd=adminedit&amp;mypage=$cookedpage">$resource{admineditbutton}</a> | )
         : qq()
     ]}
     @{[ $admineditable
         ? qq(<a href="$url_cgi?mycmd=diff&amp;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&amp;mypage=$cookedpage" title="Logout(admin)">$resource{logoutbutton}</a>)
         : qq( | <a href="$url_cgi?mycmd=login&amp;mypage=$cookedpage" title="Login(admin)">$resource{loginbutton}</a>)
     ]}
     <!-- yakty add [login/logout] end -->


03132