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

WikiLab/WorkReport - ここん家の wiki の変更作業履歴。

LastModified : Thu Jun 12 20:37:19 2003
[管理]

ここん家の wiki の変更作業履歴。

知人に「君ほどヒマな人はいないんだよ」と言われてしまいました。全くその通りです…。

[YukiWiki]見出し4追加。2002-11-03 (sun) 07:13:00

[TOP↑] [管理]

sub text_to_html(480行目辺り)

if (/^\*\*\*(.*)/) {	#この行から
    push(@toc, qq(--- <a href="#i$tocnum">@{[&escape($1)]}</a>\n));
    push(@result, splice(@saved), qq(<h4><a name="i$tocnum"> </a>) . &inline($1) . '</h4>');
    $tocnum++;	#この行までを挿入。
} elsif (/^\*\*(.*)/) {
    push(@toc, qq(-- <a href="#i$tocnum">@{[&escape($1)]}</a>\n));
    push(@result, splice(@saved), qq(<h3><a name="i$tocnum"> </a>) . &inline($1) . '</h3>');
    $tocnum++;
} elsif (/^\*(.*)/) {
    push(@toc, qq(- <a href="#i$tocnum">@{[&escape($1)]}</a>\n));
    push(@result, splice(@saved), qq(<h2><a name="i$tocnum"> </a>) . &inline($1) . '</h2>');
    $tocnum++;

任意位置で改行。2002-11-03 (Sun) 15:32:33

[TOP↑] [管理]

sub inline(650行目辺り)

$line =~ s|(__)|<br>|g;

番号つき箇条書き追加。2002-11-03 (Sun) 23:17:43

[TOP↑] [管理]
  1. 583行目あたり。
    1. 以下の記述を
      1. 追加したよん。
} elsif (/^(\+{1,3})(.*)/) {
&back_push('ol', length($1), \@saved, \@result);
push(@result, '<li>' . &inline($2) . '</li>');

テキストエリアのワードラップ。2002-11-04 (Mon) 08:27:39

[TOP↑] [管理]

wrap="soft" に変更。一応めも

ファイルアップCGI。2002-11-01 (fri) 06:00:00

[TOP↑] [管理]

WalWiki配布ページからファイルアップCGIをもらってきてリンク。

目くらまし。2002-11-06 (Wed) 07:03:45

[TOP↑] [管理]

HTML 部分に大幅に手を入れ CSS 対応に改造。「見かけ上だけ」シームレスにしてみる。

変更ではないけど、ファイルアップを InterWikiに登録。2003-01-08 (Wed) 23:54:44

[TOP↑] [管理]

[[ file:ファイル名 ]] でアップロードしたファイルへのリンクを書けます。

センタリング・右寄せ追加。2002-11-05 (Tus) 08:49:09

[TOP↑] [管理]

{{中カッコ二つで括るとせんたりんぐな〜のだ}} {{{中カッコ三つで括ると、右寄せなのだ}}}

p の中に p が入れ子になってしまうぞ…。

前後に終了タグと開始タグを入れて、p タグの 入れ子を防ぐ。

$line =~ s|\{\{\{([^\}]+?)\}\}\}|</p>\n<p class=\"right\">$1</p>\n<p>|g;  # right
$line =~ s|\{\{([^\}]+?)\}\}|</p>\n<p class=\"center\">$1</p>\n<p>|g;  # centering

text-align 要修正

[TOP↑] [管理]

よく考えたら(よく考えなくても)、これは sub inline じゃなくて、 sub text_to_html に書くべきだった…。 記法的にも「括る」んじゃなくて、「行頭になんかの記号」とすべきだったんだ。
…でもメンドクサイからしばらく放置。

text-align 修正 2002-11-09 (Sat) 02:06:30

[TOP↑] [管理]

行頭に[==c]または[==r]で改行、次の段落はそれぞれセンタリング、右寄せになるように修正。

} elsif (/^(==c+.*)$/) {
    push(@result, splice(@saved));
    unshift(@saved, "</p>");
    push(@result, "<p class=\"strong\">");
} elsif (/^(==r+.*)$/) {
    push(@result, splice(@saved));
    unshift(@saved, "</p>");
    push(@result, "<p class=\"add\">");

段落のインデント追加。2002-11-09 (Sat) 02:46:58

[TOP↑] [管理]

[==i]>改行で、次段落インデント。

} elsif (/^(==i+.*)$/) {
    push(@result, splice(@saved));
    unshift(@saved, "</p>");
    push(@result, "<p class=\"indent\">");

インライン要素に<q><code>タグ追加。2002-11-07 (Thu) 01:01:28

[TOP↑] [管理]
""引用。"" """コード。"""

引用。 コード。

小さな変更。テキストボックスのサイズ。2002-11-09 (Sat) 00:17:05

[TOP↑] [管理]

sbox 一行レスのテキストボックスの大きさを変更。

<input type="text" name="mymsg" value="" size="70">

11月19日 WalWiki2.0.5.wal.2

[TOP↑] [管理]

WalWiki2.0.5.wal.2をリリースだそうです。

海外で設置しても日本時間が出力されるようになりました。

デフォルトでは編集、差分などのページはrobotに対してnoindexを出力するようになりました。
WalWikMoreInformation

特に必要はないので見合わせ(色々いじってしまうとバージョンアップが面倒になってしまうなぁ)。

小さな変更。編集用のテキストエリアサイズ。 2002-12-24 (tue) 21:00:00

[TOP↑] [管理]

編集用テキストエリアに style="width:100%" 指定。

っていうか、ブラウザのテキストエリア、もう少し賢いといいなぁ。 ブラウザのテキストエリアのこと

現在時刻の挿入 2002-12-29 (Sun) 16:40:21

[TOP↑] [管理]

cafewiki から拝借。

sub do_writeif ($form{mymsg}) { 行の直下の行(330行目辺り)に

my $datestr = &get_now;
$form{mymsg} =~ s|\[\[#date\]\]|$datestr|g;

を追加。

追加。2003/01/23(Thu) 22:20:33

[TOP↑] [管理]

get_date 関数をつくり、[[ #date ]] で日付、[[ #now ]] で日時の挿入。

見出しにページ先頭 index へのリンク追加。2003-01-01 (Wed) 07:41:06

[TOP↑] [管理]
#482行目辺り
<h1 class="header"><a
   title="$resource{searchthispage}"
   href="$url_cgi?mycmd=search&amp;mymsg=$cookedpage"
   name="head">@{[&escape($page)]}</a>@{[&escape(&get_subjectline($page))]}</h1>
#574行目辺り
} elsif (/^\*\*(.*)/) {
   push(@toc, qq(-- <a href="#i$tocnum">@{[&escape($1)]}</a>\n));
   push(@result, splice(@saved), qq(<h3><a name="i$tocnum"> </a>) . &inline($1) . '<span class="to-top"><a href="#head">$resource{totop}</a></span></h3>');
   $tocnum++;
} elsif (/^\*(.*)/) {
   push(@toc, qq(- <a href="#i$tocnum">@{[&escape($1)]}</a>\n));
   push(@result, splice(@saved), qq(<h2><a name="i$tocnum"> </a>) . &inline($1) . '<span class="to-top"><a href="#head">$resource{totop}</a></span></h2>');
   $tocnum++;

<strong>追加。2003-01-01 (Wed) 15:46:46

[TOP↑] [管理]

どうも長い文章を書き始めると色とりどりにしたくなってしまうなぁ(笑)。 というわけで<strong>タグも追加。

'''strong'''

strong

以前シングルクォート3つだった<small>はシングルクォート4つに変更。

ちょっと困ったなぁ。他の wiki と統一が取れなくなってしまう。 個人用のはいいけど、他の人と共用してるのは気軽には変えにくいし、混乱しそう。

smallタグ廃止。2003-01-15 (Wed) 05:26:18

[TOP↑] [管理]

small を廃止、em にクラス属性。

どうでもいいが、理論タグで「小声で言うけど」的なタグがないのは不便だ。 いや「小声で言う」くらいなら最初から言うな、というなら「付記」みたいな意味でいいけど。

footer にも navi 追加。2003-01-02 (Thu) 21:51:00

[TOP↑] [管理]

sub print_footer {のトコロ 488行目あたり。

sub print_footer {
   my ($page) = @_;
   my $bodyclass = "normal";
   my $editable = 0;
   my $admineditable = 0;
   if (&is_frozen($page) and $form{mycmd} =~ /^(read|write)$/) {
       $editable = 0;
       $admineditable = 1;
       $bodyclass = "frozen";
   } elsif (&is_editable($page) and $form{mycmd} =~ /^(read|write)$/) {
       $admineditable = 1;
       $editable = 1;
   } else {
       $editable = 0;
   }
   my $cookedpage = &encode($page);
   my $escapedpage = &escape($page);

とリンク文字列。

editchar 変更。2003-01-03 (Fri) 12:46:29

[TOP↑] [管理]

WikiName に付加される[?]。素で語尾上げで読んでしまったりして鬱陶しいので[*]に変更(語尾上げで読まないまでも、一番最初に見たときは用語の説明へのリンクかと思ったりして、ちょっと混乱したし)。

設定部
my $editchar = '*';

ページ名検索 2003-01-05 (Sun) 18:45:07

[TOP↑] [管理]

YukiWiki:カテゴリ機能からページ名検索拝借。

sub print_searchform {
   my ($word) = @_;
   my $onlyname = (exists $form{onlyname})?' checked="checked"':'';	#ページ名検索用追加
   print <<"EOD";
<form action="$url_cgi" method="get">
   <input type="hidden" name="mycmd" value="search">
   <input type="text" name="mymsg" value="$word" size="20">
   <input type="submit" value="$resource{searchbutton}">
   ($resource{wikinameonly} <input type="checkbox" name="onlyname" value="1"$onlyname>) #ページ名検索用追加
</form>
EOD
}

resource.txt に

wikinameonly=ページ名で検索
sub do_search {
   my $word = &escape($form{mymsg});
   &print_header($SearchPage);
   &print_searchform($word);
   my $counter = 0;
   foreach my $page (sort keys %database) {
       next if $page =~ /^$RecentChanges$/;
       #if ($database{$page} =~ /\Q$form{mymsg}\E/ or $page =~ /\Q$form{mymsg}\E/) {	#この行を下の行に差し替え
       if (not exists $form{onlyname} and $database{$page} =~ /\Q$form{mymsg}\E/ or $page =~ /\Q$form{mymsg}\E/) {	#ページ名検索用追加
           if ($counter == 0) {
               print qq|<ul>|;
           }
           print qq(<li><a href ="$url_cgi?@{[&encode($page)]}">@{[&escape($page)]}</a>@{[&escape(&get_subjectline($page))]}</li>);
           $counter++;
       }
   }

すごーい。べんりー。…やっぱりアタマのいい人はいいなぁ…。

InterWikiName の登録

[[関連ページ http://***/wiki.cgi?mycmd=search&mymsg=euc($1)&onlyname=1]] 

clear:left 2003-01-06 (Mon) 14:10:36

[TOP↑] [管理]

大きな画像を表示した時用、回り込み解除改行を追加。 アンダーバー3つで、<br style="clear:left;">

検索ちょっと改造。2003-01-06 (Mon) 16:25:26

[TOP↑] [管理]
if (not exists $form{onlyname} and $database{$page} =~ /\Q$form{mymsg}\E/i or $page =~ /\Q$form{mymsg}\E/i) {

カテゴリ管理

[TOP↑] [管理]

カテゴリリンク。2003-01-06 (Mon) 22:08:47

[TOP↑] [管理]

428行目あたり sub print_header {

   my $cookedpage = &encode($page);
   my $escapedpage = &escape($page);
   my $categoryname = &escape(split /\//,$page);  #この行追加
<h1 class="header"><a
   title="$resource{searchthispage}"
   href="$url_cgi?mycmd=search&amp;mymsg=$cookedpage"
   name="head">@{[&escape($page)]}</a><span class="head-add">@{[&escape(&get_subjectline($page))]}
   category:<a href="$url_cgi?mycmd=search&mymsg=$categoryname&onlyname=1">$categoryname</a></span>
   </h1>

どうよ、これ。初めて改造らしい改造したじゃないの。

訂正。2003-01-07 (Tue) 00:27:32

[TOP↑] [管理]

得意満面のところアレだけど、アホミス発覚。

my $categoryname = &encode(split /\//,$page);
category:<a href="$url_cgi?mycmd=search&amp;mymsg=$categoryname&amp;onlyname=1">@{[&escape(split /\//,$page)]}</a></span>

に訂正。

カテゴリ一覧表示。2003-01-12 (Sun) 16:54:27

[TOP↑] [管理]

ナビゲーションバーに「カテゴリ一覧」追加。 カテゴリ一覧のページから、カテゴリ内のページを検索、カテゴリトップページにジャンプできるようにした。

WikiName 変更。2003-01-18 (Sat) 00:48:40

[TOP↑] [管理]

ページ名に / と数字を含んでいても WikiName になるように変更。

my $wiki_name   = '\b([A-Z][a-z]+([A-Z][a-z0-9/]*)+)\b';

ページ一覧を番号付リストに。2003-01-08 (Wed) 00:57:58

[TOP↑] [管理]

ページ数把握のため。

FrontPageの特別視をやめる。2003-01-08 (Wed) 19:29:19

[TOP↑] [管理]

FTP で修正ファイルを上げるのが面倒なので。

以下2行コメントアウト。

my %fixedpage = (
#    $FrontPage => 1,
);
my %page_command = (
#    $FrontPage => 'FrontPage',
);

ErrorPage 対策。2003-01-22 (Wed) 16:13:51

[TOP↑] [管理]

存在しないページ名をアドレスバーに打ち込むと、 WikiName の場合はそのページ名の空っぽのページが表示される。 それ以外のページでは、FrontPage.txt が表示される。 FrontPage.txt はもう要らないわけなので削除してしまったら、 (./data/frontpage.txt) という ErrorPage が表示されてしまった。 2003-01-09 (Thu) 20:03:12

SearchPage に飛ぶと親切だと思ったんだけど、挫折。 ErrorPageに検索ページへのリンクを張って応急手当。 2003-01-22 (Wed) 16:13:51

記法 2点。2003-01-09 (Thu) 15:50:46

[TOP↑] [管理]

また記法を増やしてしまった。コメント追加。

[TOP↑] [管理]

[[ #com:コメント ]]で <!--コメント-->。まあ、何かと使いたいことがあるんだよ。

$line =~ s|\[\[#com:([^\[]+?)\]\]|<!--"$1"-->|g;

用語集の記法変更。

[TOP↑] [管理]

用語の記法にコロン[:]が使われてるもんだから、用語に URL や InterWikiName が使えない。 何かと不便なので、セミコロン[;]に変えてみた。

ページ内の任意の位置にリンク。

[TOP↑] [管理]

リンク先。2003-01-07 (Tue) 02:15:45

[TOP↑] [管理]

リンク元。2003-01-10 (Fri) 19:56:16

[TOP↑] [管理]

コードの変更は WikiLab/WorkReport/Flag 参照。

リンク先の記法追加。2003-01-17 (Fri) 01:01:37

[TOP↑] [管理]

も OK にした。

タグの変更。2003/02/23(Sun) 15:44:30

[TOP↑] [管理]

[[ #name: ]] で挿入されるタグを <a name:="">文字列</a><a href="url#*">_</a> にしてみた。 URL を取得してもあんまり意味がないんだけど(ページ名を#以下付きで取得できればいいんだけど)。

エイリアス無しでもリンクになるように変更。2003/06/12(Thu) 14:48:48

[TOP↑] [管理]

…っていうか、書いてない細かい修正が沢山あるかも。記法とか変わってるし、変換されるタグも変えた気がする…。

id スタンプルール追加。2003/06/14(Sat) 10:16:59

[TOP↑] [管理]
      $form{mymsg} =~ s|{{id ([^}:\s]+?)}}|{{id :$idstr;$1}}|g;

ページ上部に最終更新日表示。2003-01-12 (Sun) 23:40:40

[TOP↑] [管理]

但し表示の形式が Sun Jan 12 18:04:55 2003 なのを、 2003-01-12 (Sun) 23:40:40 この形式で表示する方法がわからない。

print_header

@{[ $admineditable
       ? qq(<div class="lastupdate">LastModified : $lastupdate</div>)
       : qq()
]}

怒涛のオマケの記法追加(あくまでもオマケ)。2003-01-13 (Mon) 02:00:00

[TOP↑] [管理]

pause と end は本当は div にしたいんだけど、タグの入れ子がおかしくなりそうなのでやめ。 date も、span じゃなくてブロック要素に放り込みたいところだけど、色々面倒なのでやめ。 以上、ぜんぶ好みというか、だたのお遊びなのでヘルプに記載なし。 スタイルシートの指定に至っては、私も多分使わない…。

どうでもいいがよくないが、記法はちょっと悩むな。 style なんかは、HTML に慣れていると [[ #style:style属性の値;hoge ]] と書くのが自然だが、 [:] のあとにブラウザ上で表示される文字列というほうが、他の記法と違和感がない。 まあ、使わないからいいけど

修正 2003/04/05(Sat) 16:56:46

[TOP↑] [管理]

修正 2003/04/07(Mon) 11:57:15

[TOP↑] [管理]

HTML の細かい修正。

[TOP↑] [管理]

ページ一覧の HTML を改行

[TOP↑] [管理]

ページ一覧とカテゴリ一覧、<ul> タグ内の HTML に改行がなかったのを、</li>の後に \n を挿入し改行するようにした。

head に metta 追加

[TOP↑] [管理]
<meta http-equiv="Content-Style-Type" content="text/css">

InterWikiName 画像のインライン表示。2003-01-17 (Fri) 15:58:30

[TOP↑] [管理]
if ($remoteurl) {
   $remoteurl =~ s/\b(euc|sjis|ykwk|asis|isbn)\(\$1\)/&interwiki_convert($1, $localname)/e;
   return qq(<a href="$remoteurl$part">$escapedchunk</a>);                                 
if ($localname =~ /.*(gif|png|jpe?g)/){
   $remoteurl =~ s/\b(euc|sjis|ykwk|asis|isbn)\(\$1\)/&interwiki_convert($1, $localname)/e;
   return qq(<a href="$remoteurl$part"><img src="$remoteurl$part"></a>);
}elsif ($remoteurl) {
   $remoteurl =~ s/\b(euc|sjis|ykwk|asis|isbn)\(\$1\)/&interwiki_convert($1, $localname)/e;
   return qq(<a href="$remoteurl$part">$escapedchunk</a>);                                 

としてみたが、こんなことをしていいのか?

修正。2003-01-18 (Sat) 03:08:51

[TOP↑] [管理]

やっぱり、画像のインラインとファイル名と両方欲しいのでちょっと変更。 ついでにリンクさせる意味はないような気がするので、a 要素削除。

if ($intername =~ /img.*/){                                                                 
   $remoteurl =~ s/\b(euc|sjis|ykwk|asis|isbn)\(\$1\)/&interwiki_convert($1, $localname)/e;
   return qq(<img src="$remoteurl$part">);                                                 

さらに修正。2003-01-20 (Mon) 06:30:20

[TOP↑] [管理]

「img*でInterWikiNameに登録 + 画像ファイル」のみ、画像のインライン表示。 画像以外のファイルにリンクを貼った場合は通常の InterWiki の動作になるようにした。

if ($localname =~ /.*(gif|png|jpe?g)/){                                                         
   if ($intername =~ /img.*/){                                                                 
       $remoteurl =~ s/\b(euc|sjis|ykwk|asis|isbn)\(\$1\)/&interwiki_convert($1, $localname)/e;
       return qq(<img src="$remoteurl$part">);                                                 
   }

さらにさらに修正。2003-01-20 (Mon) 08:26:15

[TOP↑] [管理]

上のだと、img なし+画像ファイルのリンク[[ file:***jpg ]]などで「何も表示されない」ことになるらしい。

if ($intername =~ /img.*/){                                                                     
    if ($localname =~ /.*(gif|png|jpe?g)/){                                                     
        $remoteurl =~ s/\b(euc|sjis|ykwk|asis|isbn)\(\$1\)/&interwiki_convert($1, $localname)/e;
        return qq(<img src="$remoteurl$part">);                                                 
    } else {
        $remoteurl =~ s/\b(euc|sjis|ykwk|asis|isbn)\(\$1\)/&interwiki_convert($1, $localname)/e;
        return qq(<a href="$remoteurl$part">$escapedchunk</a>);                                 
    }

ページ内検索フォーム。2003-01-18 (Sat) 18:52:23

[TOP↑] [管理]
sub print_header {
   my ($page) = @_;
   my $bodyclass = "normal";
   my $editable = 0;
   my $admineditable = 0;
+  my $searchform = 0;        #for search
   if (&is_frozen($page) and $form{mycmd} =~ /^(read|write)$/) {
       $editable = 0;
       $admineditable = 1;
       $bodyclass = "frozen";
+      $searchform = 1;       #for search
   } elsif (&is_editable($page) and $form{mycmd} =~ /^(read|write)$/) {
       $admineditable = 1;
       $editable = 1;
+      $searchform = 1;        #for search
+   my $onlyname = (exists $form{onlyname})?' checked="checked"':'';	#for Search
<form action="$url_cgi" method="get" class="search">
   @{[ $searchform
       ? qq(<div class="tools"
       > <input type="hidden" name="mycmd" value="search"
       > <input type="text" name="mymsg" value="" size="20"
       > <input type="submit" value="$resource{searchbutton}"
       > $resource{wikinameonly} <input type="checkbox" name="onlyname" value="1"$onlyname>)
       : qq()
   ]}
</form>

ページ先頭にインデックスされない見出し追加。2003-01-19 (Sun) 01:49:12

[TOP↑] [管理]

日々の泡」あたり、返ってインデックスが鬱陶しいので、先頭に @ 追加でインデックスをエスケープ。

インデックスされない見出しにも a 要素の name属性を付加。2003/01/30(Thu) 06:51:07

[TOP↑] [管理]
} elsif (/^@\*\*\*(.*)/) {
    push(@result, splice(@saved), qq(<h4><a name="i$tocnum"> </a>) . &inline($1) . '</h4>');
    $tocnum++;
} elsif (/^@\*\*(.*)/) {
    push(@result, splice(@saved), qq(<h3><a name="i$tocnum"> </a>) . &inline($1) . "<span class=\"head-add\"><a href=\"#tool\">$resource{totop}</a></span></h3>");
    $tocnum++;
} elsif (/^@\*(.*)/) {
    push(@result, splice(@saved), qq(<h2><a name="i$tocnum"> </a>) . &inline($1) . "<span class=\"head-add\"><a href=\"#tool\">$resource{totop}</a></span></h2>");
    $tocnum++;

画像のフロート。URL版。2003-01-20 (mon) 04:10:10

[TOP↑] [管理]

URL で指定した画像のみ

if ($use_autoimg and $chunk =~ /\.(gif|png|jpeg|jpg)$/) {
   if ($name =~ /floatl(.*)/) {                                         
       return qq(<a href="$chunk"><img src="$chunk" class="left"></a>); 
   } elsif ($name =~ /floatr(.*)/) {                                    
       return qq(<a href="$chunk"><img src="$chunk" class="right"></a>);

書式は

…おかしいなぁ。URL は「行きがけの駄賃」だったのになぁ。
…おかしいなぁ。予定では InterWiki のエイリアスでやるんだったのになぁ。
…おかしいなぁ。これができたら InterWiki もサクっとできるかと思ったのになぁ。
…おかしいなぁ。どこに InterWiki のエイリアスの処理が書いてあるか判らないよ。
…おかしいなぁ。何で判らないんだろう。InterWiki で出来ないと意味ないのに。

画像のフロート。InterWiki 版。2003-01-21 (Tue) 09:22:42

[TOP↑] [管理]

あてずっぽうで数時間。やっとできた。

昨日は InterWiki のエイリアスリンクの処理の場所がわからなくて断念。 今日は、処理の場所はわかったんだけど、そこに分岐処理を追加しても巧く行かない。 2・3時間? あてずっぽうにいじりまわして、やっと巧く行かない規則性が判った。 条件を緩めてやると、テキストファイルへのリンクや、InterWikiName に img を含まないものは、 思った通りの動作をする(つまり class 属性付きの img タグを吐く)。 肝心の「img で jpg(gif・png)」だけが、全く動作が変わらない。

「どこかで既に動作が決められてしまっている感じ」。

どこかと言えば、「InterWikiName に img が付いたらこのタグ」と書いたところだろう。それはやっぱり。 というわけで、どうやら「分けて別の場所」に書くんではなく、同じ場所に書いてしまうんだったらしい。

if ($intername =~ /img.*/){
    if ($localname =~ /.*(gif|png|jpe?g)/){
        if ($name =~ /floatr/) {
            $remoteurl =~ s/\b(euc|sjis|ykwk|asis|isbn)\(\$1\)/&interwiki_convert($1, $localname)/e;
            return qq(<img src="$remoteurl" class="right">);
        } elsif ($name =~ /floatl/) {
            $remoteurl =~ s/\b(euc|sjis|ykwk|asis|isbn)\(\$1\)/&interwiki_convert($1, $localname)/e;
            return qq(<img src="$remoteurl" class="left">);
        } else {
            $remoteurl =~ s/\b(euc|sjis|ykwk|asis|isbn)\(\$1\)/&interwiki_convert($1, $localname)/e;
            return qq(<img src="$remoteurl$part">);
        }
    } else {
        $remoteurl =~ s/\b(euc|sjis|ykwk|asis|isbn)\(\$1\)/&interwiki_convert($1, $localname)/e;
        return qq(<a href="$remoteurl$part">$escapedchunk</a>);
    }
}elsif ($remoteurl) {
    $remoteurl =~ s/\b(euc|sjis|ykwk|asis|isbn)\(\$1\)/&interwiki_convert($1, $localname)/e;
    return qq(<a href="$remoteurl$part">$escapedchunk</a>);

書式は

ところで、最初 リンク先を $chank にして file:*.jpg というファイル名にされてしまった。 正解は $remoteurl。

ページ一覧・検索のリストに「編集可」マークの追加。2003-01-20 (Mon) 23:09:21

[TOP↑] [管理]
# if (&is_editable($page)) {                       #del
if (&is_frozen($page)){
    print qq(<li><a href="$url_cgi?@{[&encode($page)]}">@{[&escape($page)]}</a>@{[&escape(&get_subjectline($page))]}</li>\n);
} else {
    print qq(<li><a href="$url_cgi?@{[&encode($page)]}">@{[&escape($page)]}</a>@{[&escape(&get_subjectline($page))]} <span class="editable">$resource{editable}</span></li>\n);
}

修正。2003/02/21(Fri) 09:37:56

[TOP↑] [管理]

大分前から気付いてて放ってあった、[ページ一覧] で RecentChanges が [編集可] になってる問題。 そもそも一覧に表示されてるのがヘンだった。

elseelsif (&is_editable($page)) に修正。

日付の形式。2003/01/23(Thu) 22:05:00

[TOP↑] [管理]

メモ。

[TOP↑] [管理]

ところで、$year/$mon/$day($weekday) $hour:$min:$sec$year/$mon/$day($weekday) を <span class="date"> で括ろうと思ったら問題発覚。 普通に

$line =~ s|(\d\d\d\d/\d\d/\d\d\(\w\w\w\)  \d\d:\d\d:\d\d|<span class="date">$1<\/span>|g;
$line =~ s|(\d\d\d\d/\d\d/\d\d\(\w\w\w\))|<span class="date">$1</span>|g;

としたら、日時を挿入すると、日付の部分が二重に span で括られてしまう。…言われてみればそりゃそうか。 「A または B の場合」というのは WikiName に[/]を含めようとしたときに調べた覚えがある。 確か[|]を使うんだけど、[s| | | |] となってしまうのは OK なの? …やっぱりエラーらしい。

でも、WikiName をイタズラしたとき、[|] を使ってリンク文字列を作ること自体は成功していたんだから…。

それ以前に、リファレンスで「置換」を引いたら [s/ / /] となっていて、[|]と[/]と何が違うんだろうと思った記憶がある。 試しにまたまたあてずっぽうに [s/A|B/ /] としてみる。

$line =~ s/(\d\d\d\d\/\d\d\/\d\d\(\w\w\w\) \d\d:\d\d:\d\d|\d\d\d\d\/\d\d\/\d\d\(\w\w\w\))/<span class="date">$1<\/span>/g;

どうやらこれで動いたらしい。しかし、[|]と[/]は、本来どうやって使い分けるのであろうか。

更新履歴の日付も変更。2003/01/23(Thu) 22:30:24

[TOP↑] [管理]

めんどくさいので更新履歴のほうは放っておいたら(更新履歴はいまひとつ「どうなっているのか」が解らないので、いじらないほうがいいと思ったり)、一番新しく更新したページが先頭で入れ替わるだけで(日付の形式は 2003/01/23(wed) 00:00:00)、2番目以降はそのまま。

というわけで、[sub update_recent_changes] の

foreach (@oldupdates) {
    /^\- \d\d\d\d\-\d\d\-\d\d\ (...\) \d\d:\d\d:\d\d (\S+)/;    # date format.

foreach (@oldupdates) {
    /^\- \d\d\d\d\/\d\d\/\d\d\(...\) \d\d:\d\d:\d\d (\S+)/;    # date format.

に変更。あーびっくりした。変更前の履歴が全部消えた。

検索キーワード。2003/01/24(Fri) 19:51:58

[TOP↑] [管理]

次バージョンで、検索に見出しが出るようになるというのを聞いて、見出しにキーワードを入れておけば、日記から特定の話題を抜き出したり、逆に分類してあるページから同一の日に書いた個所を抜き出したり、データベース的に使えるんじゃないかと思った。

[ key:*** ] で key:*** の文字列を検索するリンク。表示上は [***]。

$line =~ s|\[key:([^\]]+?)\]|<span class="key"><a href="$url_cgi?mycmd=search&amp;mymsg=key:@{[&encode($1)]}" title="$resource{keyword}">[$1]</a></span>|g;

ついでに悪乗り。おまけ機能。[ icon: ] で、theme 内の画像呼び出し。 「手書き HTML で普通にやっていたことをやりたい」という方針がお留守だ。 一体今までに誰がアイコンなんぞ使ったかね?

…しかし、アイコンの調達が容易ではないね。{{icon:sad}}

今日の日付で検索。2003/02/12(Wed) 14:04:03

[TOP↑] [管理]
$line =~ s|\[key:today\]|<a href="$url_cgi?mycmd=search&amp;mymsg=@{[&encode($tdaystr)]}" title="$resource{keyword}">[Today:$tdaystr]</a>|g;

日付検索カレンダーを作ろうとして、あえなくザセツ。 本のカレンダーのサンプルを元にしようと思ったんだけど、「思わぬトコロ」でエラーが出る。 全然解らないところで出るエラーなら仕方がないけど、「私には」何の問題もないと思えるトコロで出るエラーなので、納得いかない。納得いかなくても、エラーは出る。

new マークの検索。2003/06/07(Sat) 10:30:08

[TOP↑] [管理]

またどうでもいいルールを追加する…。 {{key :new}} で 「new!!」マークの表示 & 「new!!」マークの検索へのリンク。

new マークに自動的に日付をつける。 2003/06/12(Thu) 20:37:19

[TOP↑] [管理]

さらにどうでもいいルール。{{ new }} と書くと、new マークの後ろに書き込み日付が入る(「日付の挿入」については WikiLab/BeginnerGuidance/FunctionAdd こちら)。これで古い new マークを消し忘れても安心 (↓は諸事情により {{ の内側に半角空きがありますが、実際は空けてないです)。

…今気が付いたけど、$tdaystr の t って何だ?
もしかして本当は $daystr って書きたかったんじゃないのかな…?

判った。time と書いて、一文字消し忘れて、day った書いた。じゃないかな

凍結ページでもコメント追加可能。2003/01/29(Wed) 19:48:07

[TOP↑] [管理]
sub frozen_reject {
   my ($isfrozen) = &get_info($form{mypage}, $info_IsFrozen);
   my ($willbefrozen) = $form{myfrozen};
   if (not $isfrozen and not $willbefrozen) {
       # You need no check.
       return 0;
# memn0ck add start
} elsif ($isfrozen and $form{mycmd} eq 'comment') {
	# keep frozen
	$form{myfrozen} = 1;
	# Comment is always allowed.
	return 0;
# memn0ck add end
   } elsif (valid_password($form{mypassword})) {
       # You are admin.
       return 0;
   } else {
       &print_error($resource{passworderror});
       return 1;
   }
}

なんとなく検索したら、すぐに見つかっちゃった。丸ごとコピー。

保存後、直接ページ飛ぶ。2003/01/29(Wed) 20:00:54

[TOP↑] [管理]

一応メモ。

ついでにコレも貰ってしまおうかと思いましたが、 「どうしてワンクッションおくようにしてあるのか」というのは前から疑問だったわけで、 「どうして」かと言うと、書き込んだ後にリロードすると「情報の再送信」ということになるからでした。 そんなわけで、保留。

掲示板なんかでも、書き込み後のリロードでこうなることはよくある。 前に使っていた掲示板は二重書き込みになり、 korobo は再送信してもただリロードされるだけ(のように見える動作)。 wiki では、編集画面が開いて更新が衝突した旨のメッセージが出る。 korobo のような動作になればいいけど、そこまで執念燃やさなくてもいいか。

sub do_write

#        &print_header($CompletedSuccessfully);
#        &print_message($resource{saved});
#        &print_content("$resource{continuereading} @{[&armor_name($form{mypage})]}");
#        &print_footer($CompletedSuccessfully);
         &print_header($form{mypage});
         &print_content($database{$form{mypage}});
         &print_footer($form{mypage});

PukiWiki の動作メモ。

[TOP↑] [管理]

もしかして、PukiWiki に [リロード] のメニューがあるのは、 書き込み後にワンクッションおかずにページが表示されるからなのかしら。 と思って書き込みテスト。やっぱりページにそのまま飛ぶ。

でも、動作確認のために、メニューの[リロード] ではなくて、 ブラウザからリロードすると、普通にリロードされて「編集画面が出る」ということはなかった。 う〜ん、痒いところに手が届く PukiWiki

脚注機能。2003/01/31(Fri) 13:57:02

[TOP↑] [管理]

WalWikiでSubjectLineを出力しない」というのが書いてあったところで、脚注機能も見っけ。 最初に PukiWiki で見たときは欲しかった機能だけど、現在にいたるまで、実際に使いたいと思ったことはない。 どうしようかなぁと思ったのが、2003/01/30(Thu) 18:13:09

そして、やっぱり「だってちゃんと動くのを見たかったんだもん」という理由で追加。

実は、昨日の夕方から FTP 接続が出来なくなって、CGI いじりが「できないと思うとしたくなる」のの発露だったりもする。詳細:むず痒いパソコン日記

コードはこちらのサイト。

検索周りの新機能に伴う修正。2003/02/08(Sat) 17:02:28

[TOP↑] [管理]

@で始まる文字列も見出しとして検索。

[TOP↑] [管理]
- my ($top, @part) = ($search_in_page) ? ($database{$page}) : (split(/[\r\n]+\*+/, $database{$page}));
+ my ($top, @part) = ($search_in_page) ? ($database{$page}) : (split(/[\r\n]+\*+|[\r\n]+\@+/, $database

修正。2003/02/22(Sat) 06:32:26

[TOP↑] [管理]

[\r\n]+\@+[\r\n]+\@\* に。
でないと、見出しと関係ない行頭の @ も拾ってしまう。

ページ名検索周り。

[TOP↑] [管理]
if (not exists $form{onlyname} and $database{$page} =~ /\Q$form{mymsg}\E/i or $page =~ /\Q$form{mymsg}\E/i) {
}

で括る。

の下に

if ($form{onlyname}) {
    print qq();
    $page_counter++;
}

ただしこれ、激しくタグが不正。どうしようか。

ツールチップなどの新機能、整形表示に伴う修正。2003/02/08(Sat) 18:32:30

[TOP↑] [管理]

ページ先頭のインデックスも整形表示。

-push(@toc, qq(--- <a href="#i$tocnum">@{[&escape($1)]}</a>\n));
+push(@toc, qq(--- <a href="#i$tocnum">@{[&get_plaintext(&inline($1))]}</a>\n));

[Walrus File Rack] ファイル名で検索。2003/02/20(Thu) 01:01:32

[TOP↑] [管理]

Walrus File Rack のファイルリストに「ファイル名で検索」のリンクを追加。
sub file_listup

# $list .= "\t\t\t\t<li><input type='checkbox' name='unlink' value='" . $file{$_}->{'path'} . "' /> ";
$list .= "\t\t\t\t<li><input type='checkbox' name='unlink' value='" . $file{$_}->{'path'} . "' /><a href='../wiki.cgi?mycmd=search&amp;mymsg=" . $file{$_}->{'name'} . "' title='このファイルを参照しているページを検索'> <img src='search.gif'></a> ";

ページ先頭のインデックスをブロック要素で括る。2003/02/27(Thu)

[TOP↑] [管理]
  my (@tocsaved, @tocresult);
+ print qq(<div class=\"toc\">);
  foreach (@toc) {
      if (/^(-{1,3})(.*)/) {
          &back_push('ul', length($1), \@tocsaved, \@tocresult);
          push(@tocresult, '<li>' . $2 . '</li>');
      }
  }
  push(@tocresult, splice(@tocsaved));
+ push(@tocresult, '</div>');
  return join("\n", @tocresult, @result);

インデックスのないページにも空コンテナが出来てしまうなぁ。

[ fragments:FrontPage ] AutomaticLink 2003/03/03(Mon)

[TOP↑] [管理]

前に組み込もうとして失敗した、CafeWiki の AutomaticLink。 YukiWiki:AutomaticLinkPatchForYukiWiki ここに発見。

修正。2003/03/20(Thu) 18:27:08

[TOP↑] [管理]

[/]を含む日本語のページ名を、エイリアスでリンクさせようとしたら、うまくリンクできないことが発覚。 例えば、[[ テキスト整形のサンプル HelpPage/テキスト整形のサンプル ]] と書くと、

テキスト整形のサンプル*/テキスト整形のサンプル]] (* は編集へのリンク)

となってしまう。[*]からページを新規作成しようとすると、[[テキスト整形のサンプル というページ名が出来る。 よくわかんないけど、

# $txt =~ s|(?<![\[\[])(\Q$pagename\E)(?![\]\]])|[[$1]]|g;
$txt =~ s|(?<![\[\[\/])(\Q$pagename\E)(?![\]\]\/])|[[$1]]|g;

としたらエイリアスのリンクができるようになりました。

<cite>タグ追加。2003/03/24(Mon) 16:48:25

[TOP↑] [管理]
$line =~ s|\[cite:(.*)\]|<cite>$1</cite>|g;

引用文

[cite:WalWiki:Walrus,Digit.]

こんな感じ。ブラケットで括った InterWikiName でも大丈夫らしい。
もう、絶対、これ以上記法は増やさない。…つもり…。

修正 2003/04/07(Mon) 11:57:15

[TOP↑] [管理]
$line =~ s|{{cite:([^}]+?)}}|<cite>$1</cite>|g;

複数の1行コメントの設置2003/05/22(Thu) 12:49:31

[TOP↑] [管理]

編集画面に、閲覧画面へのリンクを追加。2003/06/08(Sun) 14:22:08

[TOP↑] [管理]

随分前に、検索から他の Wiki の編集画面に飛んでしまうことがよくあって、編集画面に閲覧用の通常ページに飛ぶリンクがあればいいのに、と思ったんだけど、どうやればいいのか解らなかったのよ。 その後 WalWiki では編集ページにロボット除けがついたし、大体、そのリンクは他所様の Wiki に欲しいんであって、自分のところにあっても自分が便利になるわけじゃないので、放っておいたのよ。

でも、部分編集ができるようになって、部分編集中に当該ページの他のセクションを参照したいことが結構出てきて、そうなると、「自分にとって便利」な機能になるわけで、ついでに、「そのくらいの改造は、そろそろサクっとできるんじゃないの?」ってことで、やってみた。

sub print_editform のトコロ。

<form action="$url_cgi" method="post">
    $resource{backpage} <a href="$url_cgi?@{[&encode($form{mypage})]}">$escapedmypage</a><br />

差分画面にも閲覧画面へのリンクを追加。2003/06/12(Thu) 17:29:23

[TOP↑] [管理]
   my $title = $form{mypage};
   my $escapedmypage = &escape($form{mypage});    # rica add [back page]
   &print_header($title);
   $_ = &escape($diffbase{$form{mypage}});
   &close_diff;
   print qq(<h3>$resource{difftitle}</h3>);
   print qq($resource{diffnotice});
   print qq(<p>$resource{backpage} <a href="$url_cgi?@{[&encode($form{mypage})]}">$escapedmypage</a></p>);    # rica add [back page]
   print qq(<pre class="diff">);

ページ先頭に index しない見出しを $header_level に対応。2003/06/11(Wed) 04:33:38

[TOP↑] [管理]

これが古いやつ。

        } elsif (/^@\*\*\*(.*)/) {
            push(@result, splice(@saved), qq(<h4><a name="i$tocnum"> </a>) . &inline($1) . '</h4>');
            push(@result, sprintf(qq(<div class="partinfo"><a href="#tool">$resource{totop}</a> $resource{'parteditlinkformat'}</div>), $tocnum + 2)) if ($option{'partinfo'});  # Walrus add [part edit]
            $tocnum++;
        } elsif (/^@\*\*(.*)/) {
            push(@result, splice(@saved), qq(<h3><a name="i$tocnum"> </a>) . &inline($1) . '</h3>');
            push(@result, sprintf(qq(<div class="partinfo"><a href="#tool">$resource{totop}</a> $resource{'parteditlinkformat'}</div>), $tocnum + 2)) if ($option{'partinfo'});  # Walrus add [part edit]
            $tocnum++;
        } elsif (/^@\*(.*)/) {
            push(@result, splice(@saved), qq(<h2><a name="i$tocnum"> </a>) . &inline($1) . '</h2>');
            push(@result, sprintf(qq(<div class="partinfo"><a href="#tool">$resource{totop}</a> $resource{'parteditlinkformat'}</div>), $tocnum + 2)) if ($option{'partinfo'});  # Walrus add [part edit]
            $tocnum++;

こっちが new ver.

        } elsif (/^(@\*{1,$header_level})(.*)/) {
            push(@result, splice(@saved), sprintf('<h%d><a name="i%d"> </a>%s</h%d>', length($1) + 0, $tocnum, &inline($2), length($1) + 0));
            push(@result, sprintf(qq(<div class="partinfo"><a href="#tool">$resource{totop}</a> $resource{'parteditlinkformat'}</div>), $tocnum + 2)) if ($option{'partinfo'});       # Walrus add [part edit] # rica add [totop]
            $tocnum++;

例によって意味が判らないままやっております。普通の見出しが

            push(@result, splice(@saved), sprintf('<h%d><a name="i%d"> </a>%s</h%d>', length($1) + 1, $tocnum, &inline($2), length($1) + 1));

なのですが、length($1) + 1, $tocnum, &inline($2), length($1) + 1length($1) + 0, $tocnum, &inline($2), length($1) + 1 にしたら巧くいったんですけどね、length($1) + 0 って何さ!?

ついでに。$header_level で設定したより小さな見出しを書こうとすると(例えば $header_level = 3 と設定しておいて、行頭に **** と書くと)、部分編集したときに、テキストエリアに読み込まれる位置が一つずれる。****と書いた一つ上の見出し部分から編集しようとすると、****以下まで読み込まれ、****の部分を編集しようとすると、その下の見出し部分が読み込まれ、以下、一つずつ後ろにずれる。

でも、なぜか、@**** では大丈夫なの。逆に、@**** が何か間違ってるのかな?

一行コメント欄 sage機能 2003/06/11(Wed) 09:18:40 _

[TOP↑] [管理]
    if ($form{mymsg}) {
        $form{mymsg} = $content;
#        $form{mytouch} = 'on';    # rica del [no ercent]
        &do_write;
    } else {
        $form{mycmd} = 'read';
        $form{mytouch} = 'on';     # rica add [no ercent]
        &do_read;
    }
<form action="$url_cgi" method="post">
    <input type="hidden" name="mycmd" value="comment">
    <input type="hidden" name="mypage" value="$escapedmypage">
    <input type="hidden" name="myLastModified" value="$lastmodified">
    <!-- <input type="hidden" name="mytouch" value="on"> rica del [no recent]-->
    <input type="hidden" name="mycmtno" value="$comment_no"> <!-- # yakty add [multi comment] マルチコメント用。sage機能には関係ありません。-->
    $resource{yourname}
    <input type="text" name="myname" value="" size="10">
    <input type="checkbox" name="mytouch" value="on" checked="checked"><small>$resource{touch} </small><br> <!-- rica add [no recent]-->
    <input type="text" name="mymsg" value="" size="70">
    <input type="submit" value="$resource{commentbutton}">
</form>

<blockquote>内を<p>で括る。2003/06/11(Wed) 13:29:07

[TOP↑] [管理]

行頭に > がある行ごとに<p>くくり。 注意。> の行を不用意に改行し、次行の行頭に > がない場合は<p>から放り出され、<blockquote>内テキスト直置きになります。

部分編集保存後、編集したセクションに戻る。2003/06/12(Thu) 14:46:59

[TOP↑] [管理]

コメント欄からの書き込み後も、コメント欄に戻る。2003/06/12(Thu) 17:04:17

[TOP↑] [管理]

何となく貼ってしまえ。

何を血迷ったか、↓の行に

        my $part = sprintf("#i%d", $form{mypart} - 2) if ($form{mypart} >= 2);

↓の行を上書きしてしまい、「$part ってなんだよ」と怒られたらしいです…。

        $part = sprintf("#c%d", $form{mycmtno}) if($form{mycmd} eq 'comment');   # yakty add [link to part(comment)]
shortcut: FrontPage || WikiLab | StoreRoom/最新 | 日々の泡 | むず痒いパソコン日記/最新 || HelpPage || [edit]
select css: default | sakura | mono | greenheck | snow | NN4.x用(多分) || LinuZau!! | VikiWiki!? || others |

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