CentOS51でバックアップサーバ/(8)pukiwikiのカスタマイズ のバックアップ(No.1)



  • ezm-BOXとしてwikiを公開した話は、(6)pukiwikiのverupで書いたとおり。ただ、今のところは、SNSからリンクしてないので、ロボットも一般来訪者もきていないと思う。
  • で、あれこれ前から気になっていたカスタマイズに挑戦していた。
  • (1) 一つは、編集等の規制
  • もともとオープンさが身上のwikiに規制をかけるのはおかしいかもしれないが、ホームページ代わりに使うという前提なので、そこは許していただきたい。
  • 一応パスワードはかけてあるが、も少ししっかりガードする方法だ。
  • (2)画像のオーバーレイ表示
  • 画像と言えば、lightboxでオーバーレイ表示が手放せない関係になっているが、wikiに関しては未挑戦。何とか実現してみたい。

と言うわけで、悪戦苦闘した記録である。(2008/07/23記)

pukiwikiの編集規制

  • 一応パスワードがかけてあるので、編集はできないようになっている。ところが、新規作成はできてしまうと言うわけで。本格的な編集規制に着手した。

参考にしたサイト

  • pukiwikiの質問箱で、それらしい要望を発見したが、没になっている。ただ、「PKWK_READONLY」というキーワードが見つかった。
  • これをキーにGoogleで検索すると、pukiwiki関係のメモと題して、2つの情報が見つかった。
    • リードオンリー・モードにする
    • 閲覧用と管理用のページを分ける

リードオンリー・モード

  • 「PKWK_READONLY」というのは、リードオンリー・フラグのことで、最初からpukiwikiが持っている機能だった!
    pukiwiki.ini.phpの26行目辺り
    ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
    // PKWK_READONLY - Prohibits editing and maintain via WWW
    //   NOTE: Counter-related functions will work now 
    //                           (counter, attach count, etc)
    if (! defined('PKWK_READONLY'))
    	define('PKWK_READONLY', 0); // 0 or 1  ★
    ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
  • これをセット、つまり1に変更すればよいのだ!
  • 結果は一発、OKだった!! 編集だけでなく、新規作成のアイコンも消えるし、直接コマンドを入れてもはじかれた!

管理用のページを分ける

  • ただ、これで機能的にはOKなのだが、実際上は問題がある。自分が編集する際にも、いちいちサーバに接続して設定ファイルを書き直さなくてはいけない。
  • そこで、公開画面とは別に、管理用(編集用)ページを分ける作成する方法が紹介されている。
  • 作業としては、4つのファイルを、別名でコピーして、一部修正するもの。
  • 該当ファイルは4つある
    1. index.php
    2. pukiwiki.ini.php
    3. lib/pukiwiki.php
    4. lib/init.php
  • 実際に変更方法は以下のとおり
    (1)まず、ファイルをコピー 「admin」に変更する場合
    [root@kuraric51 ezm]# cp -arp index.php admin.php
    [root@kuraric51 ezm]# cp -arp pukiwiki.ini.php pukiwiki.ini.admin.php
    [root@kuraric51 ezm]# cd lib/
    [root@kuraric51 lib]# cp -arp pukiwiki.php pukiwiki.admin.php
    [root@kuraric51 lib]# cp -arp init.php init.admin.php
(2)管理者用ファイルを修正する 各ファイルのリンク関係を調整
[root@kuraric51 ezm]# vi admin.php
====== 各ファイルのリンク関係を調整
// require(LIB_DIR . 'pukiwiki.php');
require(LIB_DIR . 'pukiwiki.admin.php');  ★
?>

[root@kuraric51 ezm]# vi lib/pukiwiki.admin.php
========
// Load *.ini.php files and init PukiWiki
// require(LIB_DIR . 'init.php');
require(LIB_DIR . 'init.admin.php');  ★

[root@kuraric51 ezm]# vi lib/init.admin.php
=======
/////////////////////////////////////////////////
// Require INI_FILE
// define('INI_FILE',  DATA_HOME . 'pukiwiki.ini.php');
define('INI_FILE',  DATA_HOME . 'pukiwiki.ini.admin.php');  ★

[root@kuraric51 ezm]# vi pukiwiki.ini.ilove45.php
======== 管理者用は編集可能に!
if (! defined('PKWK_READONLY'))
        define('PKWK_READONLY', 0); // 0:editable or 1:read_only  ★

試験はOK!

  • 管理者で接続するときのURLは、以下のとおり (ただし、これはダミーです^^;)
    http://kurarinet.com/ezm/admin.php
  • 問題なく表示する、当然か。編集しようとすると、凍結が効いている。凍結解除すれば、編集可能になる。
  • ただ、凍結を解除して編集状態でも、従来のアクセス画面(index.php)からでは、編集不可のままとなる!!

さらに、アクセス規制も

  • PukiWikiのメモという同じような記事が見つかった。
  • こちらは、アクセス規制の設定が参考になった。要するに、入り口を分けても、万一URLが知られれば同じことになる。したがって、IPアドレスでアクセス規制を架けてしまえば、万全という話である。
  • 早速、記事を参考にやってみたが、結果的にうまく行かなかった(^^;) そもそもBasic認証の技術なので、できないわけはないのだが、なぜか挫折・・・(宿題ということで。)

写真のオーバーレイ表示

  • wikiの記事ではそれほど画像類は多い訳ではない。ただ、画面にイメージがほとんどなので、そのままアップすると、かなりスペースを占めている。
  • いつものように、サムネールをクリックするとオーバーレイ表示ができないかと挑戦した。

lightboxとの連携

  • オーバーレイと言えば、定番の「lightbox」
  • 調べてみれば、既に先人の挑戦が成功しており、解説記事が多数見つかった。
  • 喜び勇んで片っ端から挑戦したのだが、実は、ほとんどが失敗した。約1週間悶々とした。
  • その詳細は割愛するが、どうも、lightbox のver が関係しているようだ。最新のlightbox2.04をベースにしたものではだめだった。
  • 今回、最終的に落ち着いたのは、こちらの記事。備忘録/Pukiwiki:lightboxを使う
  • 基本的にこのとおりだが、「lightbox_plus」を使っているようだ!(jsファイルの構成の違いで気がついた)

インストール手順

pukiwiki.ini.php
=============
// PKWK_ALLOW_JAVASCRIPT - Allow / Prohibit using JavaScript
define( 'PKWK_ALLOW_JAVASCRIPT' , 1 ); // 0 : Prohibit、1:Allow
  • ①lightbox関係ファイルの配置
  • ezm/skin/lb 配下に、lightbox_plus(OpenPNE10.1で使ったもの)を全部コピーする
[root@kuraric51 www]# cd _OpenPNE2.10.1_20080622/public_html/
[root@kuraric51 public_html]# ls js/
blank.gif   lightbox.css      next.gif     prototype.js   spica.js
close.gif   lightbox_old.js   overlay.png  sample.css     zzoop.gif
expand.gif  lightbox_plus.js  pne.js       show_flash.js
jojo.css    loading.gif       prev.gif     shrink.gif

[root@kuraric51 js]# mkdir /var/www/html/ezm/skin/lb
[root@kuraric51 js]# cp -arp *.* /var/www/html/ezm/skin/lb
  • ②skinファイルの修正
  • lightbox_plus.jsを追加指定する
[root@kuraric51 js]# cd /var/www/html/ezm/skin/
[root@kuraric51 skin]# vi irid/pukiwiki.skin.php
==== <head> の最後に 2行追加 =====
<!-- 2008/07/18 lightbox  -->
<script type="text/javascript" src="skin/lb/spica.js"></script>
<script type="text/javascript" src="skin/lb/lightbox_plus.js"></script>
</head>
  • ③cssの追加
  • cssを丸ごとインポートする(もともと、import文だけだった!)毎度のことながら、パスの記述が悩ましい(cloudwalk.css が起点!!)
[root@kuraric51 skin]# vi irid/cloudwalk/cloudwalk.css
====== 最後に追加 ========
@import url("../../lb/lightbox.css");
  • ④プラグインplugin/ref.ini.php の修正 「rel="lightbox"」を挿入する
[root@kuraric51 skin]# vi ../plugin/ref.inc.php
======
// --- 2008/07/18  lightbox ---------
//   $params['_body'] = "<a href=\"$url2\" title=\"$title\">{$params['_body']}</a>";
      $params['_body'] = "<a href=\"$url2\" title=\"$title\" rel=\"lightbox\">{$params['_body']}</a>";
  • ⑤画像ファイルのパスを調整
  • いつもの調整 毎度ながら悩ましい、 skin/lib を追加(こちらは index.php が起点!!
[root@kuraric51 skin]# vi lb/lightbox_plus.js
=======
Event.register(window,"load",function() {
        var lightbox = new LightBox({
                loadingimg:'skin/lb/loading.gif',
                expandimg:'skin/lb/expand.gif',
                shrinkimg:'skin/lb/shrink.gif',
                previmg:'skin/lb/prev.gif',
                nextimg:'skin/lb/next.gif',
                effectimg:'skin/lb/zzoop.gif',
                effectpos:{x:-40,y:-20},
                effectclass:'effectable',
                closeimg:'skin/lb/close.gif',
                resizable:true

サムネールはどうしよう?

  • 一応、画像のオーバレー表示は解決した。ただし、同じ画像を使うだけ。元の画像がオーバレイでポップするだけで、これではなんとも(^^;)
  • purkiwikiってのは、そもそも各記事や添付写真をphpで作成したプログラムで管理し、html文を書き出して端末に表示させています。添付写真の管理も単純ではなく、lightboxの連携もphpのソースに絡み合って、とてもフォローできないのです。
  • 実は同時に試した、プラグイン形式のlightboxもあって、testページでは、イロイロ表示していました。何やかやと、約1週間悶々としましたが、 結論的にいうと、実は単純な話でした。
  • pukiwikiで添付画像を表示する機能は、標準のプラグイン「ref.inc.php」で実現されているのですが、このプラグイン自体に表示サイズを調整する機能があったのでした。
  • 少し長いですが、公式マニュアルサイトから引用します。
    ■書式 
     #ref(ファイル名,ページ,パラメータ,タイトル])
     &ref(ファイル名,ページ,パラメータ,タイトル]);
    ■概要 
     '#attach'でページに添付されたファイルを指定位置に展開します。
    ■引数 
     ・ファイル名 
      ページに添付したファイル名を指定します(省略時はエラーとなります)。
      別ページ名/添付ファイル名とする事で別ページの添付ファイルも指定できます。
     ★パラメータ 
      ファイルの展開方法を指定できます。
     left|center|right - 表示時の位置を指定します。省略時はleft(変更可)です。 
     wrap|nowrap - テーブルタグで囲む/囲まないの指定を行います。省略時はnowrap(変更可)です。 
     around - テキストの回り込みを可能とします。省略時は回り込みを行いません。 
     noicon - ファイルが画像以外の場合に表示されるアイコンを表示しません。省略時は表示します。 
     noimg - ファイルが画像の場合に画像を展開しないようにします。省略時は展開します。 
     nolink - 元ファイルへのリンクを張らないようにします。省略時はリンクします。 
     zoom - 縦横比を保持します。省略時はサイズ指定に従います。 
    ★999x999 - サイズを指定します(幅x高さ)。省略時は拡大率あるいは対象画像のサイズに従います。 
    ★999% - サイズを指定(拡大率)します。省略時は100%です、 
     上記以外 - 上記以外のパラメータは画像の代替文字列、リンクのタイトル属性として使用されます。
     ページ名やパラメータに見える文字列を使用するときは、#ref(hoge.png,,zoom)のようにタイトルの前に
     カンマを余分に入れます。

サイズ指定で格好がついた!

  • サイズ指定をしてみたが、OK。ただ、元サイズの確認が面倒なので、%しての方が楽!
  • その前の「,」追加を忘れずに
    &ref(gogaku.jpg,,50%,gogaku);
    &ref(gogaku.jpg,,30%,gogaku);
  • となると、ファイル管理も楽なので、こちらに決定
  • あとは複数の画像のリンク表示ができれば最高なのだが! ぜいたくか!?
  • これにて、一件落着ということで(^^)

トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS   リンク元