PukiWiki/1.4/ちょっと便利に

Category:Design

MENUその他の無いページ表示機能 -- Saito?

はじめましてSaitoと申します。

BugTrack/110および212で印刷用出力ということでCSSの切替というお答えでしたが、CSSの切替よりはやはりPukiWiki側で表示してしまうのはどうかと考えました。

というのも、IEで表示し、「ファイル」→「送信」→「ページを電子メールで」から、Outlook Expressでの新規のHTMLメールとしてのページ流し込み、といった使い方においてはMENUは邪魔なので、メニュー表示無しのページを作ろうと考えたからです。(IEとOutlook ExpressでHTMLメールを作るなどというのが世の中では、『行儀の悪い作法』と呼ばれていることは承知しておりますが。。。。)

pukiwiki.php

ページを表示するルーチン(html.phpのcatbody()関数呼出し)を回避してメニュー無しスキンに出力する関数呼出し(html.phpにmenuoff()関数を新規追加)

 // Command action
 else if (!empty($vars['cmd'])) {
     if (!exist_plugin_action($vars['cmd'])) {
   
         if($vars['cmd'] == 'nomenu') {
             $base = $vars['page'];
             $title = htmlspecialchars(strip_bracket($base));
             $page = $base;
             $body = convert_html(get_source($base));
             menuoff($title,$page,$body);
             $retvars = FALSE;
         }
  
         else {
             $s_cmd = htmlspecialchars($vars['cmd']);
             $msg = "cmd=$s_cmd is not implemented.";
             $retvars = array('msg'=>$msg,'body'=>$msg);
         }
     }
     else {
         $retvars = do_plugin_action($vars['cmd']);
         $base = $vars['page'];
     }
 }

html.php

最初はcatbody()関数内でスキンの切替を考えたが、内部ロジックを切り分けるのが面倒なのと、本家の改作があった場合、メンテ不能となる恐れがあるので、catbody()関数のほぼまる写しの新規関数menuoff()を追加

 //MENU無し表示
 function menuoff($title,$page,$body)
 {
 中略
 
     require('nomenu.php');
 }

pukiwiki.skin.ja.php

ページ上部のメニューバー項目にMENUOFFというコマンドを追加した改作。 なお、これとは別に<!DOCTYPEをXMLからHTMLに変更。というのも、IEから「送信」→「ページを電子メールで送信」として、Outlook Express新規メールに流し込む場合、DOCTYPEがXMLだと、添付ファイルの形になってしまい、本文欄にHTML文を流し込めないことが判明したことによる。

  • Outlook ExpressでHTMLメールの表示ONにしていること自体が危険。デフォルト値では表示OFF。 -- 2003-05-09 (金) 00:05:11

などを改作した上で、

  • XHTMLからHTMLに変更する場合、DOCTYPEの変更のほか、xmlns属性の削除、xml:lang属性をlang属性に変更、rubyに関するタグを無効にする処理が必要となります。-- reimy 2003-05-10 (土) 18:41:23

nomenu.php

pukiwiki.skin.ja.jpをベースに余分な部分を除去しただけ。

といった具合です。


  • $vars['prn']を新たに設定して、ページ表示時のURLに &prn=on を付加した場合にフラグを立てて、スキンの中で
    <?php if ($vars['prn'] != 'on'){ ?>
        印刷・メール送信時に表示しないブロック
    <?php } ?>

    という形で処理するほうが簡単だと思う。改造する部分もわずかで済む。-- reimy 2003-05-10 (土) 18:20:21

  • 茶々じゃなく真面目な話で、印刷表示用のアイコンも欲しい。Footerの並び等に。 -- morikawa 2003-05-11 (日) 00:58:49
    • 印刷表示用アイコン fileprint.png -- reimy 2003-05-11 (日) 12:12:04
      <a href="<?php echo "$script?cmd=read&page=$r_page&prn=on"?>"><img
       src="./image/print.png" width="20" height="20" alt="印刷表示"
       title="印刷表示" /></a>
  • reimyさん、アドバイスありがとうございます。全体がよくわかっていない人間には$vars[ ]に何か変数を追加するのは気が引けていました。 -- Saito? 2003-05-11 (日) 10:53:26
    • いえいえ、わたしはアイデアだけですから(笑い)。コーディングはプログラム担当の人たちにおまかせ(^^;;。BugTrack/329で要望しておきました。 -- reimy 2003-05-11 (日) 11:52:06
    • 実現すれば、DOCTYPEやxmlns、xml:lang属性の変更はスキン上でフラグによって振り分ければ対応可能。rubyについては、rubyプラグイン内で振り分ければ対応できますね。 -- reimy 2003-05-11 (日) 11:55:59
  • PukiWiki 1.4のSourceはPluginも含めてきれいで読み易いのでPHPの勉強にはとても良い材料だと思います。私は、IEだのOutlookだのと言ってることからお分かりかと思いますが、Basic育ちの素人中年です。正直言って連想配列は苦手なので、『汚いスクリプト』を恥ずかしげもなくUPしてしまいましたが、できれば、なんらかの機能反映をしていただければと思い。書き込んでみました。 -- Saito? 2003-05-11 (日) 20:42:29

添付ファイル: fileprint.png 2739件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-04-17 (木) 11:01:32
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.292 sec.

OSDN