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

WikiLab/WorkReport/Category - カテゴリ管理のお仕事レポート。

LastModified : Mon Jun 9 10:24:08 2003
[管理]

カテゴリ管理のお仕事レポート。

検索会議。[済] 2003-01-06 (Mon) 22:08:47

[TOP↑] [管理]

とりあえず、大文字小文字の区別をしないようにした。

if (not exists $form{onlyname} and $database{$page} =~ /\Q$form{mymsg}\E/i or $page =~ /\Q$form{mymsg}\E/i) {

ページ名の<H1>

<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))]}
   <a href="$url_cgi?mycmd=search&mymsg=$cookedpage&onlyname=1">category</a></span> #この行追加
   </h1>

ここで問題です。

category をクリックして、ページ名で検索させたいわけですが、現状 [WikiLab/memo] から [WikiLab] や [WikiLab/ざれごと] はヒットしません。とっても意味がないです。 [WikiLab] を含む文字列を全てヒットさせるには、~ /\Q$form{mymsg}\E/i をどう書き換えればいいのでしょうか。どう書き換えればいいのでしょうかってば

あ〜あたまがこんがらかる。すーがくてきあたまじゃないなぁ、ほんとに。

テスト。 関連ページ:どうでもよい 関連ページ:WikiLab/

2003-01-06 (Mon) 15:59:17

もう一つの考え方としては、リンク文字列に [category] ではなく [WikiLab] を表示させるというのがある。 これだと、[[ 関連ページ: ]] で階層が指定できなくなるという心配はないな。

うん、そのほうがかっちょよい気がしてきた。[category:WikiLab]っていうのを、 <h1>の中じゃなくて、ナビバーの下辺りに表示させるとかっちょよいぞぉ。

でもそれだと、単一ページのときに意味不明でマヌケだぞぉ。

2003-01-06 (Mon) 16:39:44

文字列を分割する会議。

[TOP↑] [管理]

文字列を分割する。

分割された文字列対象 = split [区切りパターン,[分割対象文字列[,分割数]]]

分割された数 = split [区切りパターン,[分割対象文字列[,分割数]]]

split/\//,$page…? わっからーん。
$form{mymsg} はテキストボックスに入力された文字。
そもそも
(not exists $form{onlyname} and $database{$page} =~ /\Q$form{mymsg}\E/i or $page =~ /\Q$form{mymsg}\E/i)
がよく解ってないのか。
変更前。
($database{$page} =~ /\Q$form{mymsg}\E/ or $page =~ /\Q$form{mymsg}\E/) 
変更後。
(not exists $form{onlyname} and $database{$page} =~ /\Q$form{mymsg}\E/i or $page =~ /\Q$form{mymsg}\E/i)
<h1>
<a href="$url_cgi?mycmd=search&amp;mymsg=$cookedpage">
    @{[&escape($page)]} # これがページの名前。
</a>
<span class="head-add">
@{[&escape(&get_subjectline($page))]} # これは本文1行目。
category:
<a href="$url_cgi?mycmd=search&mymsg=$cookedpage&onlyname=1">
    # ってことはここになんて書けばよいの?
</a>
</span>
</h1>

@ ってなんだ。& ってなんだ。

@ スカラーの配列 スカラーデータに順序を付けて並べた集合

サブルーチンはサブルーチンの名前の前に「&」を付けるか、do 関数を用いて実行させます。

そんな説明じゃ、わっからーん。すからーってなんださぶるーちんてなんだ。

なんてことを言いながら「やりたいことだけ」やりたがるから、こんなことも出来ないんだわ…。 とは思うけど、基本をやってやりたいことに辿り着くのと、あてずっぽうにやってやりたいことに辿り着くのと、 時間的には大差がないと思ったり。 いや、「使いこなせるようになる!」なら前者のほうが早いけど、「やりたいことがあったらそこんとこだけ出来ればいい」だと、毎回ごちゃごちゃいじりまわしても、たいしたロスじゃないわよ。そうよそうよ。

あれ、$cookedpage って何? ちょっと勘違い? あ、違う違う。いいのか。

2003-01-06 (Mon) 20:43:06

解決編。2003-01-06 (Mon) 22:19:08

[TOP↑] [管理]

split/\//,$page…? わっからーん。

いやね、なんか間違うと恥ずかしいから、「もうちょっとよく考えてから」とか言って試さなかったんだけど、コレでよかったらしいよ。

そんなわけで、<h1>の [category:***] の *** のリンクをクリックすると、[/]の前の文字列でページ名検索するようになりました。う〜ん、個人的にとても便利。 変更箇所は WikiLab/WorkReport を参照。

問題発覚。2003-01-06 (Mon) 23:22:29

[TOP↑] [管理]

[むず痒いパソコン日記]をカテゴリリンクから検索させようとしたら[むず痒いパソコン・E・ size=]になっちゃったのよ〜ん。

リンクはこうなってるんだけど。

<h1 class="header"><a
   title="このページを検索"
   href="wiki.cgi?mycmd=search&amp;mymsg=%A4%E0%A4%BA%E1%DA%A4%A4%A5%D1%A5%BD%A5%B3%A5%F3%C6%FC%B5%AD%2F%CC%DC%BC%A1"
   name="head">むず痒いパソコン日記/目次</a><span class="head-add"> - むず痒い パソコン日記。もくじ。
   category:<a href="wiki.cgi?mycmd=search&mymsg=むず痒いパソコン日記&onlyname=1">むず痒いパソコン日記</a></span>
   </h1>

日本語は、なんか特定の文字で化けちゃうのかなぁ。
やっぱり [日記] っていうページをつくたら [・E・ size=] になっちゃった。
[日]だと [・Eonlyname=1] だってさ。

href="$url_cgi?mycmd=search&amp;mymsg=$cookedpage" #これがページ名のリンク先。
href="$url_cgi?mycmd=search&amp;mymsg=$categoryname&amp;onlyname=1" #これがカテゴリ名のリンク先。
my $cookedpage = &encode($page);
my $escapedpage = &escape($page);
my $categoryname = &escape(split /\//,$page);  #この行追加

どうやったらページ名のリンク先みたいなアホアホの文字列に変換されるんだろう。 っていうか、どうしてカテゴリ名は変換されないのかな。
ところで、&escape って何?

再び解決編。2003-01-07 (Tue) 00:17:59

[TOP↑] [管理]

…あうっ…。

ところで、&escape って何?

ぢゃないわよ。 escape ぢゃないぢゃん。encode ぢゃん。 ニッポン人だもんだから、「ひまつぶし」と「ひつまぶし」くらい似て見えちゃったわ。最初と最後の e と 途中の c しか合ってないけど、「贈収賄で逮捕」を「同性愛で逮捕」に聞き間違えるしな、私は。

修正。


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

…で? ここの @{[&escape ってなに?

category_カテゴリ一覧表示計画 [済] 2003-01-12 (Sun) 16:46:49

[TOP↑] [管理]

[category/目次]というページを作ってみたけど、 なんとか category のリストを自動生成するようには出来ないものでしょうか。 新しい特殊ページを作らなくてはいけないからむりかなぁ。 手動で作ると内容で分類できるので、いいといえばいいんだけど。 2003-01-07 (Tue) 16:39:12

2003-01-12 (Sun) 01:32:54

[TOP↑] [管理]

とうとう無謀なことをやり始めたぞ。

my $CategoryPage = 'CategoryPage';
my %fixedpage = (
   $CategoryPage => 1,
my %page_command = (
   $CategoryPage => 'category',
my %command_do = (
   category => \&do_category,
sub do_category {             #CategoryPage
   &print_header($CategoryPage);
   print qq(<ol>);
   foreach my $page (sort keys %database) {
       if (&is_editable($page)) {
           print qq(<li><a href="$url_cgi?mycmd=search&amp;mymsg=@{[&escape(split /\//,$page)]}&amp;onlyname=1">@{[&escape(split /\//,$page)]}</a>@{[&escape(&get_subjectline($page))]}</li>);
           # print qq(<li>@{[&get_info($page, $info_IsFrozen)]}</li>);
           # print qq(<li>@{[0 + &is_frozen($page)]}</li>);
       }
   }
   print qq(</ol>);
   &print_footer($CategoryPage);
}

2003-01-12 (Sun) 16:44:34

[TOP↑] [管理]
sub do_category {             #CategoryPage
   &print_header($CategoryPage);
   print qq(<ul>);
   foreach my $page (sort keys %database) {
       if ($page =~ /\//){
           print qq();
       }
       elsif (&is_editable($page)) {
       my $categoryname = &encode(split /\//,$page);
           print qq(<li><a href="$url_cgi?mycmd=search&amp;mymsg=$categoryname&amp;onlyname=1" title="$resource{searchthiscategory}">@{[&escape(split /\//,$page)]}</a> - <a href="$url_cgi?@{[&encode($page)]}" title="$resource{categorytop}">top</a></li>);
       }
   }
   print qq(</ul>);
   &print_footer($CategoryPage);

}

カテゴリ以下の WikiName[済]2003-01-18 (Sat) 00:55:44

[TOP↑] [管理]

やっぱり、/ で区切られたページ名も自動でリンクさせたくなってきた。

[現在の WikiName 又は、現在の WikiName + / 以下] でマッチさせるようにするにはどうすればいいのでしょう。

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

これが現在の WikiName の正規表現。\b は「単語の境界にマッチする」だって。

\b([A-Z][a-z]+([A-Z][a-z]*)+)\b(/\S*)|\b([A-Z][a-z]+([A-Z][a-z]*)+)\b #スペース以外OK

とか

\b([A-Z][a-z]+([A-Z][a-z]*)+)\b(/([A-Z][a-z])*)|\b([A-Z][a-z]+([A-Z][a-z]*)+)\b #アルファベット

にしてみた。

2003-01-13 (Mon) 16:42:17

無知の悲しみ。そんなややこしいことしなくても、[a-z/] って書けるらしいよ。そんなわけで以下に変更。 ついでに数字も可にしてみた。

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

Antenna 壊れた?

[TOP↑] [管理]

ごやごちゃいじったのと関係あるのかないのか、「各地の更新情報」が

WalWiki ... Unable to get document: Bad file number

と表示されるようになってしまった…。自分のところだけは大丈夫なんだけど。

これは関係なかった。キャッシュが消えるのを待ってもう一度読み込んでみたら大丈夫だったよ。 2003-01-13 (Mon) 17:52:51

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

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