管理 | 差分 || 新規作成 || カテゴリ一覧 | ページ一覧 | 更新履歴 | 差分履歴 || アンテナ || PUT || more≫ ≫omit
shortcut: FrontPage || WikiLab | StoreRoom/最新 | 日々の泡 | むず痒いパソコン日記/最新 || HelpPage ||[edit]
category: GuestPage/yakty

GuestPage/yakty - LinuZauToolBox

LastModified : Wed Mar 26 04:24:33 2008
[管理]

出張WalWikiカスタマイズ。

  • このページはこの状態 で見ることを推奨します(^ー^)。

差分履歴と外部へのリンク。

妄想の世界から移動させましたが、名前を大文字にしてしまいました。もし不都合ならページ名変えます(…そもそもページ名に付けたら嫌ですか? 他に適当な名前を思いつかなかったのです…)。- rica 2003/07/10(Thu) 06:41:55

うわぁっ!!!ページ名になってる…(;_;)出来れば変えて欲しいなぁ…恥ずかしい(>_<)じゃあこうしろってのも思いつかないんですが…(笑) - yakty 2003/07/10(Thu) 09:01:44

いや、それは代替案を示して頂かないと(笑)。一応、私は新規作成画面で 5分くらい悩みました(自慢げ)。ん〜、じゃあ「WikiLab/WorkReport/出張LinuZau」とか…? - rica 2003/07/10(Thu) 09:34:24

うーん…考えるの面倒なんでWikiLab/WorkReport/yaktyで良いです。あんまり変わってない?(笑) - yakty 2003/07/10(Thu) 10:09:49

変えました。あんまりっていうか、ほとんどっていうか、9割9分変わってない…(笑)。- rica 2003/07/10(Thu) 10:52:11

  • …yakty さんがやるらしいお仕事。 RecentDiffs から見出しへのリンク。

外部と内部のリンク表示。_

どこかに要望としてあった気がするけど、外部へのリンクと内部のリンクと、表示を変えられるといいよね。

まぁ、ツールチップが表示される/されない で判断はつくけど。…AliasLinkName がなければ、http で始まったら外部、とか判断できた気はするけど、今だとどうやって判断するんでしょうね。まぁ、出来なくてもいいからいいけど。

あ、思い出した。どこかにあった要望は、外部へのリンクなら target="_blank" になるといい、という話だった気がした。 2003/07/09(Wed) 16:36:49

これはかんたーん♪っていうか私もやりたかったのでやっちゃいました。make_link()をちょこっといじるだけ。 - yakty 2003/07/09(Wed) 16:44:24

    # Walrus add [alias link] start
    if ($chunk =~ /^(http|https|ftp|mailto):/) {
        return qq(<a href="$escapedchunk" target="_blank">$escapedname</a>);
    # Walrus add [alias link] end

ついでにclass指定でも入れておけばスタイルシートで表示も変えられそうですね。

♪付きでかんたーんって言われてしまいました…(´・_・`)…。 私はどっちかっていうと、開く前に外部へのリンクっていうのが解るようにしたかったので class 属性で CSS を指定し〜よおっと♪ <♪返しっ。…でも色が決まらない…(´・_・`)…。- rica 2003/07/09(Wed) 18:18:31

っていうか、そうか、http って入ってるかどうかは関係なかったのか。

…あ、InterWiki を使った内部のリンクも class 属性が付いてしまうことに気付いてしまった…。- rica 2003/07/09(Wed) 18:25:55

…あ、InterWiki ってココ通るんでしたっけ… - yakty 2003/07/09(Wed) 18:34:45

    # Walrus add [alias link] start
    if ($chunk =~ /^(http|https|ftp|mailto):/) {
       if($chunk =~ /^\Q$ENV{'SCRIPT_URI'}\E/){
           return qq(<a href="$escapedchunk">$escapedname</a>);
       } else {
           return qq(<a href="$escapedchunk" target="_blank">$escapedname</a>);
       }
    # Walrus add [alias link] end

ってことはこんな感じにすればきっとOKですね。 - yakty 2003/07/09(Wed) 22:51:36

う〜ん、外部へのリンクも class 属性が付かなくなってしまいました…。- rica 2003/07/10(Thu) 05:41:02

環境変数SCRIPT_URIが無いんでしょうか…もしかしたらサーバによって無かったりするかもしれないんですよね… - yakty 2003/07/10(Thu) 09:16:23

借りてるサーバーのサイトに行って確認しました。$ENV{'REMOTE_HOST'} は使えないっていうのしか書いてませんでしたが、出来ないってことは使えないってことなんでしょうねぇ…。残念。- rica 2003/07/10(Thu) 09:34:24

#! /usr/local/bin/perl
print qq(Content-type: text/html\n\n);
print qq(<html><pre>\n);

foreach (sort(keys %ENV)){
    print qq(\$ENV{'$_'} = $ENV{$_} \n);
}

print qq(</pre></html>);

↑こんな感じのスクリプトを動かしてみると分かります。 - yakty 2003/07/10(Thu) 10:37:33

おおおお。なんかスゴイ(笑)。やっぱりないみたいです。で、すごくあてずっぽうに(!!)、$ENV{'REQUEST_URI'} とか $ENV{'SCRIPT_FILENAME'} ってしてみたんですけど、InterWiki のリンクに class 属性が付いちゃいました(笑)。- rica 2003/07/10(Thu) 10:52:11

ちなみにウチではこの辺に設置してあるんですけど、ricaさんはどの辺に設置しました?見せてもらえると何か分かるかも〜? - yakty 2003/07/10(Thu) 11:00:36

あー、yaktyさんちはいっぱいある(笑)。http://jm.vis.ne.jp/sbox/test.cgi ここです。- rica 2003/07/10(Thu) 11:12:25

    # Walrus add [alias link] start
    if ($chunk =~ /^(http|https|ftp|mailto):/) {
       my $script_uri;
       if(exists $ENV{'SCRIPT_URI'}){
           $script_uri = $ENV{'SCRIPT_URI'};
       } else {
           #$script_uri = "http://" . $ENV{'SERVER_NAME'} . $ENV{'REQUEST_URI'};
           #$script_uri =~ s/\?.*$//;
           $script_uri = "http://" . $ENV{'SERVER_NAME'} . $ENV{'SCRIPT_NAME'};
       }
       if($chunk =~ /^\Q$script_uri\E/){
           return qq(<a href="$escapedchunk">$escapedname</a>);
       } else {
           return qq(<a href="$escapedchunk" target="_blank">$escapedname</a>);
       }
    # Walrus add [alias link] end

これでどうだっ!ちなみに動かしてません…ハイ…手抜きです… - yakty 2003/07/10(Thu) 11:20:53

隊長!出来た気配です!! テスト:category:WikiLab/WorkReport
例えばですけど、sbox/ 以下は class 属性をつけない、とかはできます…? - rica 2003/07/10(Thu) 11:43:01

    # Walrus add [alias link] start
    if ($chunk =~ /^(http|https|ftp|mailto):/) {
       my $mysite = "http://" . $ENV{'SERVER_NAME'} . "/sbox";
       if($chunk =~ /^\Q$mysite\E/){
           return qq(<a href="$escapedchunk">$escapedname</a>);
       } else {
           return qq(<a href="$escapedchunk" target="_blank">$escapedname</a>);
       }
    # Walrus add [alias link] end

汎用的には多分出来ませんけど、こうすればとりあえずはお望みのとおりに動きますよね。ついでに上のももうちょっと良い方法を思いついたので修正してみました。 - yakty 2003/07/10(Thu) 12:02:45

ありがとうございます。できました(^-^)。テスト:
WalRack に Wiki のフリをさせているのがバレないほうがいいかなぁと思ったので(…いえ、元からバレバレなんですが…)。- rica 2003/07/10(Thu) 12:28:56

これは LinuZau:WalWiki/カスタマイズ に書かないんですか? WikiLab/BeginnerGuidance に追加したいんですが。- rica 2003/07/10(Thu) 12:54:26

書いておいて下さい(爆)ってのは冗談で…書きます〜。 - yakty 2003/07/10(Thu) 13:02:56

Wiki なのでそれはアリなのかもしれませんが、ここは お願いします〜(笑)。
ところでちょっと思ったんですけど、Wiki.cgi を置いてあるディレクトリ以下だと、

my $modifier_url  = 'http://jm.vis.ne.jp/sbox/'; # Your web page.

が使えたりはしませんか? - rica 2003/07/10(Thu) 13:09:11

…あ、違った…。ウチがたまたまそうなだけだった…(笑)。- rica 2003/07/10(Thu) 13:13:31

結局色を変えるのは止めて、矢印アイコンにしてみました。色を変えるより、ちょっとは解りやすいかな…。- rica 2003/07/10(Thu) 13:32:31

あ、これかわいくていいですね〜。私もとりあえずclass指定は入れてみたんですけどその後どうするかが思いつかず…(^_^;) - yakty 2003/07/10(Thu) 13:42:42

もしよろしかったら、よいのが思いつくまでの場つなぎにどうぞ(笑)。- rica 2003/07/10(Thu) 14:05:48
一応お道具セット(笑)。
←右クリックからどうぞ(って、ショートカットファイルのアレですが(笑))。

a.external { background-image:url("external.png");
    background-repeat:no-repeat;
    background-position:right;
    padding:0 12px 0 0;
}

わ〜い♪いただきました〜。多分場つなぎではなくずっとこのままになると思う… - yakty 2003/07/10(Thu) 14:54:11

初めてかなりちょっとだけ役に立てた瞬間…(;_;)。- rica 2003/07/10(Thu) 15:36:28

差分履歴ページ by yakty _

私も差分がいまいち有効に機能しないなあと常々思っていたので、変更部分だけ抜き出した差分履歴ページを自動的に作成するようにしてみました。
誤字脱字等の修正も全て残ってしまうのですが(笑)このページだけ見れば変更部分が分かるから私的には満足かな。

LinuZau:RecentDiffsみたいなページが出来ます。
変更部分はLinuZau:WalWiki/カスタマイズを参照して下さい。

2003/07/09(Wed) 18:26:09

まとめて1箇所で見れるのはいいですねぇ。これって何代まで残っていくんでしょう? 普通のページみたいに編集可能にしておいて…………差分ページの掃除の履歴も残る…(・o・)!? - rica 2003/07/09(Wed) 18:36:54

とりあえず手抜きで(笑)$maxrecent個までです。編集可能にしちゃうと改竄可能ですよ?(笑)っていうかどうなるんだ??おかしくなりそうな予感… - yakty

まぁ、そこまで改竄したいなら仕方がないと言うか…私が…改竄したいので…。いえ、本当に始終細かく修正してて、何かで過去に書いたのを参照すると、絶対に 2・3箇所は直す感じで(笑)。 普通の差分ファイルと整合性がなくなるとマズいとか、そんな感じのことでしょうか(と、あれがどんな仕組みなのかもわからず言ってみる(笑))。 - rica 2003/07/09(Wed) 18:52:03

最初は管理者のみ改竄(笑)可能にしようかと思ってたんですよね〜。でも自分で消すのは面倒だなと…(爆) - yakty

まぁ、一々改竄してたらキリがない くらい修正しますからねぇ(笑)。 あ、でも、一箇所で見られるということは、これまでのようなコッソリチャレンジシリーズ(笑)もバレてしまう…!!- rica 2003/07/09(Wed) 19:18:33

あ、「タイムスタンプを更新しない」ときは、差分を残さない、とかはできないのかなぁ…。あ、でもそれは危ないか。…それを言うなら、現状の一世代だって充分危ないしなぁ。また何がしたいのか解らなくなってきた…。- rica 2003/07/09(Wed) 19:25:55

Round2_

思案中案件:sage 書き込み対策に差分履歴ページをつけるべきか否か。- rica 2003/07/11(Fri) 09:46:03

でも、私も sage でコッソリチャレンジシリーズは続けたいのぉ。

一つアイディア。sageの場合は追加部分は差分履歴に残さないってのはどうでしょうか?
一応壊れても復活できるってのも目的の一つなんで、削除された部分は履歴に残した方が良いと思うんですけど。 - yakty 2003/07/11(Fri) 10:16:44

色々考えてると、「何もそうまでしてコソコソしなくてもいいよなぁ」という気にはなってきますね…。

何でコッソリチャレンジをわざわざ公開用 Wiki に書くかというと、コッソリの部分と公開してもいい部分を明確には分けられないからで…と考えると、「非公開ページ」を作るほうが話は簡単(技術的には判りませんが、考え方として)な気もするし、もっと根本的に「運用の仕方」を考えるべきという気もしたり…。 でも一方では、コッソリチャレンジが発覚するのも、それはそれで面白かったりするし…。

解った!! メニューに差分履歴へのリンクを入れない。よっ利己主義管理者。- rica 2003/07/11(Fri) 11:21:32

↑それ私も考えてたけどナイショにしてたのに…(笑)だって人んちでもどこが更新されたのかすぐ見れたら便利だし〜 - yakty 2003/07/11(Fri) 11:27:30

差分履歴ページの在処をコッソリ教えてくれればそれでもいいんですけど(笑)

いや、yakty さんにこそ、コッソリチャレンジは見つかっちゃ困るんですってば(笑)。 「自分でやらなくちゃいけないよなぁ」「でも絶対自力では無理だよなぁ」という狭間で、差分履歴と非公開ページとを考えているので、とても複雑な話になっていくのです(違)。 実際私も、差分履歴を付けながら秘匿してる Wiki サイトを発見したら、力いっぱい けち〜 って思いますもんねぇ(笑)。

でも、履歴に残ると不用意な書き込みをしない安全弁になるかも…。 実は日記で「書いたけどやっぱり消す!!」って数十秒で消す事が…(笑)。 さっきは Round2 の移動に、細かい修正で両方のページを 4・5回ずつは保存し直したな…。- rica 2003/07/11(Fri) 11:53:27

凍結ページを、更新しないで修正したら、履歴に残さない」はできますか? これだと、むかーし の日々の泡を、いまだにちょっとずつ直しているのはバレずに済む(笑)。凍結ページはある意味管理者用ページなので、なんとなく理屈にも合ってるような…。- rica 2003/07/11(Fri) 21:57:50

多分できますよん。&get_info($form{mypage}, $info_IsFrozen)と、$form{mytouch}を使えばOKかな。ricaさんやってみます? - yakty 2003/07/11(Fri) 22:25:58

明後日以降、とりあえず一ぺん眺めてみます(明日は例のお面の日なので)。- rica 2003/07/11(Fri) 22:37:37

rica's WorkReport

  • 凍結ページを、更新しないで修正したら、履歴に残さない。test2:TestRecentDiff

本日の成果。目的は達した。でも、1行でも済むらしいのに、rica版は5行追加+1行修正。

return if (&get_info($form{mypage}, $info_IsFrozen) and not $form{mytouch});

こんなのとか(適当に書いたら、更新しないで保存したときに Internal Server Error が出ちゃったらしい…)、

&update_recent_diffs($diffmsg) if(&get_info($form{mypage}, $info_IsFrozen) and not $form{mytouch});

こんなのとか(適当に書いたら、履歴に残らないどころか、同じものが2つずつ残るようになったらしい…)。 ただ、コレをどこに書くのか判らない…。

2003/07/14(Mon) 20:19:46

ちょこっと疑問。

ここの Wiki には {{pause:任意文字列}} っていうルールがあって、<p class="pause">任意文字列</p>という風に整形される(本当は div にしたかったんだけど、入れ子が変になるのを修正できなかったのだった。それはさておき)。

で、RecentDiffs でこれが整形されて表示されるのは何ででしょう? 他の{{id:}} とかは平気なのに。 2003/07/26(Sat) 21:09:48

なぜでしょう…?そのルールってどこで展開してるんですか? - yakty 2003/07/26(Sat) 23:06:41

text_to_html() ですが…。もう一つ、{{end:任意文字列}}っていうのもあって、これもやっぱり整形されて表示されますねぇ。id は inline() のほうですが。RecentDiffs - rica 2003/07/27(Sun) 07:15:20

***
―― 終了 ――

ソースを見たら、{{pause:}} って、行頭じゃなくても展開されるようになってるので、そのせいかな? (この辺はすごく最初の頃の改造なので、あんまりよく考えてないのでした。最初は inline の方に書こうとして、id なんかと同じ記法になってるんだったような) この際、ルール変えて、行頭に{{pause:}} で、<div class="pause"> で括るように変えてみようかな…。- rica 2003/07/27(Sun) 07:24:30

やっぱり私のルールが間違っていたみたいです。通常のページでも、行頭の半角スペースを無視して {{pause:}}が展開されてしまう…。というわけで、修正しました。 でも、通常の差分ページでは、展開されなかったんですよね…。- rica 2003/07/27(Sun) 07:54:32

  • 通常の差分ページは確かtext_to_html()は通さないですからね。 - yakty 2003/07/27(Sun) 09:20:21

あら。p をそのまま div にしても、別に入れ子が不正にならない…。確か入れ子が不正になるので仕方なく p を使ってたはずなんだけど…。- rica 2003/07/27(Sun) 08:07:16

単語の展開ならinline()に書いた方が良さそうな気がします。行頭になんらかの文字があった場合にそれ以降の文章をタグでくくるみたいなルールはtext_to_html()で、ある決まった文字列をタグで括ってみたいな感じのはinline()ってした方が良いような…。 - yakty 2003/07/27(Sun) 09:20:21

HTML 的に、ブロックレベル要素は text_to_html() のほうがいいのかなと思ったりしたんですが。 本当は、{{}} で括るというルールのほうを変えたいんですけど、沢山使ってしまったのでデータの書替えが面倒…という…。- rica 2003/07/27(Sun) 11:08:13

新機能

またまた新機能付けてみました♪とりあえずLinuZau:WalWiki/雑談に何か書いてみて下さい〜。書けばどんな機能か分かるはず。 - yakty 2003/07/11(Fri) 17:54:55

WalWiki/カスタマイズ に書いてくださぁい(笑)。- rica 2003/07/11(Fri) 22:02:44
↑あんまり繰り返し書くので、登録しました。 便利でしょ?クッキー使ってみました♪
っていうか実はこれ非公開ページへの布石だったりもします。私の脳内ではもうできあがってるんですが…(笑)思考の流れ。非公開ページはパスワードかければいいんだよなー。→でも毎回パスワード入れるなんて面倒だよなぁ…。→ってことはクッキーで保存するしかないか。→よし!まずはクッキー実装! - yakty 2003/07/11(Fri) 22:21:13

おおっ。早々と「新機能」の見出しを「クッキー」に書き換えなくてよかった(笑)。 凍結ページが多いので、パスワードをクッキーに保存したいとは思ってたんですよ。 その辺は名前のやり方を見て自習しようと思いましたが。- rica 2003/07/11(Fri) 22:31:49

もう気付かれてるかもしれませんが、パスワードもすでにクッキーで保存してます。(^-^) - yakty 2003/07/12(Sat) 11:39:50

気付いてましたが、↑これには気付いてませんでした。そして BeginnerGuidance も修正し忘れてました…。sage- rica 2003/07/14(Mon) 19:58:41

kobito ちょっとしたうっかりで、色々やっていたら↑の部分を壊してしまったので修復しました。これで合ってるかな… 2003/07/27(Sun) 07:45:00

あ、さっきは RecentDiffs で上の部分が丸ごと削除になってたのに、修復したら壊した痕跡がなくなっている。 という事はちゃんと修復できたということなわけで、修復の確認が簡単にできるらしい(15分以内なら)。- rica 2003/07/27(Sun) 07:51:08

非公開ページ _

とりあえず脳内でできあがっているものをまとめてみました。作ってみたらなんだか大作だぞ…
多分絶対どっちだよ!動かないと思います(笑)まずは忘れないうちに妄想を書き出しておこうかと… - yakty 2003/07/12(Sat) 01:00:35

まさに、「出張LinuZau:WalWiki/カスタマイズ」(笑)。- rica 2003/07/12(Sat) 06:35:03

とりあえずてすとぺーじを設置してみました。なんとなくな感じで動いてます(笑)どうぞお試しあれ〜 - yakty 2003/07/16(Wed) 17:43:23

ただいまぁ。やっぱり「ろぐいんぼたん」はかっこいいなぁ(*^-^*)(そんな感想か)。- rica 2003/07/16(Wed) 20:27:55

カッコイイでしょ?(笑)ちなみに下のソースとは結構違う実装になりました(笑) - yakty 2003/07/16(Wed) 21:07:11

お待たせしましたぁ!ついに公開!!!っていうかそろそろ変更点で公開するのが辛くなってきた…別物としてしまった方が楽かも…(滝汗) - yakty 2003/07/31(Thu) 00:12:57

お疲れ様でしたぁっ!! ついに YakWiki 公開…? でも、ここはここでまたちょっと違うから…WalWiki を改造するのと、YalWiki を改造してさらに一部削ったりするのと、どっちが楽か微妙…(笑)。

…でも、大作なので、今日はちょっと取り込んでる時間がないかも…。
ココロ静かに取り掛からないと、また「動きません!!」を連発する事に…(笑)。

そのまんまのソースも見れるようにしておこうかなぁ…。wiki.txtとかでシンボリックリンク張っておけば良いだけだからそうしても良いんですけどね。その方が「動きません!!」攻撃を食らう可能性も下がる?(笑) - yakty 2003/07/31(Thu) 09:20:51

  • 主な機能
    • 管理者のみ閲覧可能(パスワードが必要)
    • 履歴、差分履歴 非公開ページは履歴、および差分履歴に残さない
    • 一覧表示 通常は公開ページのみ、ログイン時にはすべてのページを表示
    • 検索 通常時には公開ページのみ、ログイン時にはすべてのページを検索
    • 検索にもヒットしない
    • 一覧、履歴には表示されない
  • TODO
    • でばっぐ(笑)誰か(ricaさん?)やって〜(爆) 私に出来るのは「今あるものを跡形もなく消し去る」だけだと思います…rica
    • 非公開ページ一覧の作成
    • 非公開ページ内の検索
    • カテゴリ一覧から非公開ページを除く 余計な一手間をおかけして申し訳ありません… -rica
  • 質問
    • 非公開ページだけでの検索はできないんですか?
      • はぅ…すっかり忘れてました…って事でTODOに追加〜。やっぱり、公開ページのみ、非公開ページのみ、両方一緒にの3パターンの検索範囲が必要ですか? - yakty 2003/07/12(Sat) 10:03:49
      • ええと、管理者が、ですよね。両方一緒にだけでもいいです。と言うと、閲覧者が検索して、ヒットはするけど見られないだけ、とかになるんですか(よく解ってないらしい…)? - rica 2003/07/12(Sat) 10:52:20
      • それだと一部が見えちゃいますけどそれでもいいですか?(笑)それなら簡単なんですが。今は非公開ページを検索対象から外してるんでそれをやらなければいいだけなんで。でもそれはいまいちな気がするんで、管理者ログインボタンを作って管理者でログインしておくと、検索画面のセレクトボックスが追加されて、上の3通りの検索方法が選べるってのがカッコイイ気がするんですけど。 - yakty 2003/07/12(Sat) 11:47:26
      • もちろんそれは カッコイイけど、やっぱり大変なのかなぁ、と思ってちょっと遠慮してみました(笑)。カッコイイ に越したことはありません。- rica 2003/07/13(Sun) 00:08:49
      • プログラムの基本はかっこよくですよ(笑)本職の私が言うんだから間違いない? - yakty 2003/07/13(Sun) 10:03:04
      • すみません、私の基本は、「何かしら動きゃいいんだよ」でした…。- rica 2003/07/13(Sun) 10:34:34
      • めんどくさくなったんで3パターンはやめちゃいました(笑)わざわざ区別する必要もないのかなぁーと思ったので。 - yakty 2003/07/16(Wed) 22:22:33
      • はい、まとめてできれば十分だと思います。- rica 2003/07/16(Wed) 22:37:52

resource.txt に追加

viewbutton表示
adminonly非公開にする

グローバル変数定義

my $info_AdminOnly = 'AdminOnly';                       # yakty add [adminonly page]

is_adminonly_page()追加

# yakty add [adminonly page] start
sub is_adminonly_page {
    my ($page) = @_;
    $page = &unarmor_name(&armor_name($page));
    return &get_info($page, $info_AdminOnly);
}
# yakty add [adminonly page] end 

print_adminonlyform()追加

# yakty add [adminonly page] start
sub print_adminonlyform {
    print <<"EOD";
<form action="$url_cgi" method="post">
    <input type="hidden" name="mycmd" value="read">
    $resource{frozenpassword} <input type="password" name="password" size="10"><br>
    <input type="submit" value="$resource{viewbutton}"><br>
</form>
EOD
}
# yakty add [adminonly page] end

adminonly_reject()追加

# yakty add [adminonly page] start
sub adminonly_reject() {
    my ($isadminonly) = &is_adminonly_page($form{mypage});
    my ($willbeadminonly) = $form{myadminonly};
    if(not $isadminonly and not $willbeadminonly){
        return 0;
    } elsif(&valid_password($form{mypassword})){
        return 0;
    } else {
        &print_error($resource{passworderror});
        return 1;
    }
}
# yakty add [adminonly page] end

print_header()内の変更

    #if (&is_frozen($page) and $form{mycmd} =~ /^(read|write)$/) {         # yakty del [adminonly page]
    # yakty add [adminonly page] start
    if (&is_adminonly_page($form{mypage}) and $form{mycmd} =~ /^(read|write)$/) {
        $editable = 0;
        $admineditable = 1;
        $bodyclass = "adminonly";
    } elsif (&is_frozen($page) and $form{mycmd} =~ /^(read|write)$/) {
    # yakty add adminonly page] end

do_write()内の変更

sub do_write {
    # yakty add [adminonly page] start
    if (&adminonly_reject()) {
        return;
    }
    # yakty add [adminonly page] end
    if (&frozen_reject()) {
        return;
    }
    &set_info($form{mypage}, $info_IsFrozen, 0 + $form{myfrozen});
    &set_info($form{mypage}, $info_AdminOnly, 0 + $form{myadminonly});        # yakty add [adminonly page]

update_recent_changes()内の変更

    #if (&is_exist_page($form{mypage})) {                                             # yakty del [adminonly page]
    if (&is_exist_page($form{mypage}) and not &is_adminonly_page($form{mypage})) {    # yakty add [adminonly page]
        unshift(@updates, $update);
    }

do_read()内の変更

sub do_read {
    &print_header($form{mypage});
    #&print_content($database{$form{mypage}});           # yakty del [adminonly page]
    # yakty add [adminonly page] start
    if(&is_adminonly_page($form{mypage}) and not &valid_password($form{mypassword})){
        &print_message($resource{passwordneeded});
        &print_adminonlyform;
    } else {
        &print_content($database{$form{mypage}});
    }
    # yakty add [adminonly page] end
    &print_content($database{$form{mypage}});
    &print_footer($form{mypage});
}

do_search()内の変更

        foreach my $page (@pages) {
            next if (&is_adminonly_page($page));         # yakty add [adminonly page]
            next if ($page eq $RecentChanges);
            my $cooked_page = &encode($page);

do_index()内の変更

    foreach my $page (@pages) {                                                                          # Walrus add [sort case sense]
#   foreach my $page (sort keys %database) {                                                             # Walrus del [sort case sense]
        #if (&is_editable($page)) {                                       # yakty del [adminonly page]
        if (&is_editable($page) and not &is_adminonly_page($page)) {      # yakty add [adminonly page]

print_editform()内の変更

<!-- yakty add [adminonly page] start -->
@{[
    $mode{admin} ?
    qq(
        <input type="checkbox" name="myadminonly" value="on" @{[&is_adminonly_page($form{mypage}) ? qq(checked="checked") : ""]}>$resource{adminonly}<br>
        <input type="submit" name="mypreview_$edit" value="$resource{previewbutton}">
        <input type="submit" name="mypreview_write" value="$resource{savebutton}"><br>
    )
    : ""
]}
<!-- yakty add [adminonly page] end -->
@{[
    $mode{conflict} ? "" :
    qq(
        <input type="checkbox" name="mytouch" value="on" checked="checked">$resource{touch}<br>
        <input type="submit" name="mypreview_$edit" value="$resource{previewbutton}">
        <input type="submit" name="mypreview_write" value="$resource{savebutton}"><br>
    )
]}

ページ内のリンク先一覧を表示。_

ricaさんの妄想を実現してみたが採用されなかった機能。

rica より、お詫びのお米券。

ページ内で使用されたリンクのリストをフッターに表示します。 コメントアウトされている<marquee>タグを復活させると楽しいです。

sub print_footer {
    my ($page) = @_;
    # Walrus add [modify footer] start
    $walrus_log = &make_log;            # Walrus add [for debug]
    my $mod_info = $modifier_name ? qq(Modified by <a href="$modifier_url">$modifier_name</a>.) : '';
    # yakty add [print linklist] start
    my %linklist;
    foreach (keys %link_cache){
        #next if(exists($aliaslink{&unarmor_name($_)}));
        next if($link_cache{$_} !~ /^<a.+\/a>$/);
        if(/^\[\[(\S+) (\S+)\]\]$/){
            my $name = $2;
            my $link = $link_cache{$_};
            $link =~ s|(<a.*?>)(.+)(</a>)|$1$name$3|;
            $linklist{$link} = 1;
        } else {
            $linklist{$link_cache{$_}} = 1;
        }
    }
    my $links = join(' | ', keys %linklist);
    # yakty add [print linklist] end
    print <<"EOD";
<hr /><!-- yakty add [print linklist] -->
<!--marquee-->$links<!--/marquee--><!-- yakty add [print linklist] -->
<hr />

エイリアスを使ったリンクもそのまま表示したいような場合はこう。

sub print_footer {
    my ($page) = @_;
    # Walrus add [modify footer] start
    $walrus_log = &make_log;            # Walrus add [for debug]
    my $mod_info = $modifier_name ? qq(Modified by <a href="$modifier_url">$modifier_name</a>.) : '';
    # yakty add [print linklist] start
    my $links = join(' | ', values %link_cache);
    # yakty add [print linklist] end
    print <<"EOD";
<hr /><!-- yakty add [print linklist] -->
<marquee>$links</marquee><!-- yakty add [print linklist] -->
<hr />

他のページの yakty さんお仕事リンク。

shortcut: FrontPage || WikiLab | StoreRoom/最新 | 日々の泡 | むず痒いパソコン日記/最新 || HelpPage || [edit]
select css: default | sakura | mono | greenheck | snow | NN4.x用(多分) || LinuZau!! | VikiWiki!? || others |

管理 | 差分 || 新規作成 || カテゴリ一覧 | ページ一覧 | 更新履歴 | 差分履歴 || PUT