PukiWiki改造 その1(基本)
 

概要:

HPとして公開する場合デフォルトに対して表示、機能追加、運用上のため改造する

1.認証によるページの閲覧制限

FAQ/41参照
方針:閲覧は誰でも自由に、編集だけ制限する。
設定するには、pukiwiki.ini.phpの中の以下の部分を書き換える。

$edit_auth = 0;
      
$edit_auth = 1;

2.一括凍結機能追加(freeze2)

編集可能ページを編集できないように一括して凍結するためのプラグインfreeze2を導入し、凍結忘れをしないようにする。
「欲しいプラグイン/154複数ページ一括凍結」参照。

  1. ) 上記HPより最新のファイルをPC上にダウンロードする。
  2. ) 解凍するとfreeze2.inc.php、messages.txtができる。
    注:凍結解除は個々に行うのでunfreeze2.inc.phpは対象としない。
  3. ) 上記HPでは、messages.txtを/var/www/pukiwiki/ja.lng.phpに追加するように記述されているが、バージョンアップなどで、追加が外れる恐れがあるので、freeze2.inc.phpとmessages.txtを修正して対応する。
    また、ページ一覧に凍結されているページが表示され、凍結されているページを凍結しようとするとエラーとなるので、ページ一覧には凍結されていないページのみを表示するようにする。
    • freeze2.inc.phpの修正
            :
            :
      function plugin_freeze2_action()
      {
          global $_attach_messages,$_freeze2_messages;
          global $vars,$script;
          require_once(PLUGIN_DIR.'freeze2.lng.php'); ← 追加する。
          //ページとバックアップ用正規表現
          $pattern = array('/^<ul>/m',
                           '/(<li>)(<a href=.*>)(.*)(<\/a>.*<\/li>$)/m',
                           '/^<\/ul>/m');
            :
            :
                      $body = preg_replace($pattern,$replace,
      page_list(get_existpages(DATA_DIR)));
                       ↓ exclude_freezed_pages関数を挿入する。
                      $body = preg_replace($pattern,$replace,
      page_list(exclude_freezed_pages(get_existpages(DATA_DIR))));
            :
            :
      ------- exclude_freezed_pages関数を最後に追加する -------
      function exclude_freezed_pages($pages )
      {
              $aryret = array();
      
              foreach($pages as $page) {
                      if (!is_freeze($page)) {
                              $aryret[] = $page;
                      }
              }
      
              return $aryret;
      }
      ?>
      
      filefreeze2.inc.php
    • messages.txtの修正
      ファイルのエンコードが変換できるエディターを使用し、ファイルの初めと終わりに以下のようなPHPタグを追加しメッセージを囲む。
      <?php
            :
            :
            :
      ?>
      
      エンコードをEUCからUTF-8に変換してファイル名freeze2.lng.phpとして保存する。 filefreeze2.lng.php
  4. ) /var/www/pukiwiki/plugin/にコピーする。
  5. ) 所有者と権限を変更する。
    # cd /var/www/pukiwiki/plugin/
    # chmod 644 freeze2.inc.php
    # chmod 644 freeze2.lng.php
    # chown apache. freeze2.inc.php
    # chown apache. freeze2.lng.php
    
  6. ) 使用方法
    1.  ブラウザーで次のURLにアクセスする。http://ホスト名/pukiwiki/?plugin=freeze2
    2.  「複数ページ一括凍結プラグイン」ページ
      wikiを選択し、パスワードを入力し、「検索」を押下する。
    3.  「ページの一覧」ページ
      凍結するページをチェックし「確認」を押下する。
    4.  「選択された一覧」ページ
      「凍結」を押下する。
    5.  「ページを一括凍結しました」ページが表示される。

3. 複数行のプラグイン引数を可能

プラグインを使用するときに引数が複数行になっても処理を可能にする。特に複数行の文書に対する処理には必須である。
複数行のプラグイン引数を可能に」参照。

/var/www/pukiwiki/pukiwiki.ini.phpの56行目を以下のように編集する。

define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', 1); // 1 = Disabled
                        
define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', 0); // 1 = Disabled

4. 文字背景色の指定(code)

コンソール画面などで文字を白字、背景を黒で表示できるようにする。文書の一部の文字の色と背景色を指定して表示するのはcolorプラグインで可能であるが、複数行には対応していない。複数行に亘る文書を単純に文字色と背景色を指定して表示するプラグインとしてpreプラグインを導入する。preプラグインはcodeプラグインの付属プラグイン(同梱されている)なので、codeプラグインを導入する。
また、今回は使用しないが、Codeプラグインも使用できるようになる。
Pukiwiki Plugin DevelopmentのHPを参照。
前提:

  1. ) 上記HPを辿って最新のソース(今回はcode_0_6_0_pr3i.tar.bz2.tgz)をダウンロードする。ソースが正規の場所から無くなったようで、ソフト一覧にある場所から入手した。
  2. ) ファイルを解凍する。
  3. ) ファイルをコピーする。
  4. ) /var/www/pukiwiki/skin/pukiwiki.css.phpの33行目に次の1行を追加する。
  5. ) @import "./code.css";
    if ($media != 'print') $media = 'screen';
    
    // Output CSS ----
    ?>
    @charset "<?php echo $charset ?>";
    @import "./code.css";        ← 追加する。
    
    pre, dl, ol, p, blockquote { line-height:130%; }
    
    blockquote { margin-left:32px; }
    
    body,td {
    
  6. ) 使用方法
    書式:
    #pre[([color[, background-color]] [,number|,nonumber] [,soft|,hard] 
    [,icon|,noicon] [,begin-end|,begin...end] [,ファイル名])]{{
    整形済文章
    }}
    
    color文字の色
    background-color背景色
    number | nonumber行番号の表示・非表示
    soft | hardインライン展開をするかそのまま表示するか
    icon | noiconicon表示するかしないか
    begin-end | begin...end表示範囲の開始行と最終行。表示方法が2つある
    ファイル名表示するファイル名
    例:
    #pre(white,black,nonumber,soft,icon){{
    文章     
    文章
    }}
    
    注意:以下のように空のパラメータを指定すると背景のパラメータの値が空になるので、修正後のように空のパラメータを除く。
    #pre(white,black,,soft){{
    #pre(white,black,nonumber,soft,){{
     
    修正後:
    #pre(white,black,soft){{
    #pre(white,black,nonumber,soft){{
    

5. コメント入力後の「ページ名」の防止

セキュリティーの観点からコメントへの投稿者に既存ページへのアクセスや新規ページ作成が出来ないようにする。

  1. ) コメント入力後に名前の後の「?」を付けない。 comment.inc.phpの42行目をコメントアウトする。
    //     $_name = ($_name == ) ?  : str_replace('$name', $_name, PLUGIN_COMMENT_FORMAT_NAME);
    
  2. ) コメント入力の"[["と"]]"(半角大括弧)を"[["と"]]"(全角大括弧)に変換する。
    コメント入力時に書き込まれた「名前」と「コメント」の中に含まれる"[["と"]]"(半角大括弧)を"[["と"]]"(全角大括弧)に変換し、ページ名になるのを防ぐ。
    comment.inc.phpの47行目の後に以下を追加する。
    $_name = ($_name == ) ?  : str_replace('[[', '[[', $_name);
    $_name = ($_name == ) ?  : str_replace(']]', ']]', $_name);
    $comment = str_replace('[[', '[[', $comment);
    $comment = str_replace(']]', ']]', $comment);
    

6. YouTubeなどの動画を表示させる(netvideos)

自作プラグイン/netvideos.inc.phpより"netvideos.inc.php"をダウンロードし、ファイルのエンコードをエディターなどでEUCからUTF-8に変換し、/var/www/pukiwiki/plugin/に保存する。
ファイルの権限・所有者を変更する。

# cd /var/www/pukiwiki/plugin
# chmod 644 netvideos.inc.php
# chown apache. netvideos.inc.php

表示したいところに以下のように#netvideosを記述する。

#netvideos("ID",WIDTH,HEIGHT,align,サービス名);
  • 説明:
    ID       : 動画のID
    WIDTH    : 動画表示の幅
    HEIGHT   : 動画表示の高さ
    align     : center | left | right
    サービス名 : youtube | googlevideo

  • #netvideos("3rn3E0T20Ro",600,500,center,youtube);

7. ディレクトリー内画像ファイル表示(imgfolder)

  1. ) 概要
    画像を表示する場合、ページに添付を行わずに、サーバーのディレクトリーに保存した画像ファイルを表示する。サーバー側での画像ファイルの管理が容易になる。
  2. ) インストール
    吉野情報技研/imgfolder.inc.php (Pukiwikiプラグイン)より"imgfolder.inc.zip"をダウンロードし解凍し、ファイルのエンコードをエディターなどでEUCからUTF-8に変換し、/var/www/pukiwiki/plugin/に保存する。
    ファイルの権限・所有者を変更する。
    # cd /var/www/pukiwiki/plugin
    # chmod 644 imgfolder.inc.php
    # chown apache. imgfolder.inc.php
    
  3. ) 設定
    基準となるフォルダを指定する。(デフォルトで、Pukiwikiのimage/フォルダになっている。)
    define("DEF_IMG_FOLDER" , IMAGE_DIR ); 
  4. ) 書式:
  • 原寸表示
    &imgfolder(画像ファイル名, [タイトル(alt属性)]){};
  • パーセント指定表示、(クリックすると原寸表示するリンク付き)
    &imgfolder(画像ファイル名, 80%, [タイトル(alt属性)] ){};
  • 幅と高さを指定して表示
    &imgfolder(画像ファイル名, 幅, 高さ, [タイトル(alt属性)] ){};
    • タイトル(alt属性)は必須ではなく、省略した場合、ファイル名がalt属性に付きます。

8. HTML文直取り込み(htmlinsert)

  1. ) 概要
    Wikiの機能だけではどうしても表現が制限されます。そこで直接HTML文をWiki文内に取り込んで表示させ表現内容を豊富にします。
  2. ) インストール
    Sonots' PukiWiki プラグインより"htmlinsert.inc.php"をダウンロードし、/var/www/pukiwiki/plugin/に保存します。
    ファイルの権限・所有者を変更する。
    # cd /var/www/pukiwiki/plugin
    # chmod 644 htmlinsert.inc.php
    # chown apache. htmlinsert.inc.php
    
    html文のファイルを保存するDirectoryを作成します。
    # cd /var/www/pukiwiki/plugin
    # mkdir htmlinsert
    # chown apache. htmlinsert
    
  3. ) 設定
    特になし。
  4. ) 書式:
    #htmlinsert(ファイル名);
  5. ) 使用方法
    使用方法の詳細はダウンロードページを参照下さい。
    テーブルをInsertする場合は、以下のようdivタグでtableタグを囲みます。
    <div class="ie5">
    <table class="xxx" style="font-size: 1.5em;" cellspacing="0" border="0"><tbody><tr>
    <td >列1</td>
    <td ><img width="100" height="100" alt="" src="img/img.jpg"></td>
    <td >列3</td>
    </tr></tbody></table></div>
    

添付ファイル: filefreeze2.lng.php 1156件 [詳細] filefreeze2.inc.php 1209件 [詳細]

最終更新のRSS
Last-modified: 2014-03-11 (火) 01:59:57 (1989d)