CentOS51でバックアップサーバ/(8)pukiwikiのカスタマイズ のバックアップ(No.4)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- CentOS51でバックアップサーバ/(8)pukiwikiのカスタマイズ へ行く。
- 「ezm-BOX」としてwikiを公開した話は、CentOS51でバックアップサーバ/(6)pukiwikiのverupで書いたとおり。ただ、今のところは、SNSからのリンクしかないので、ロボットも一般来訪者もきていないと思う。
- で、あれこれ前から気になっていたカスタマイズに挑戦していた。
- 一つは、編集等の規制
- もともとオープンさが身上のwikiに規制をかけるのはおかしいかもしれないが、ホームページ代わりに使うという前提なので、そこは許していただきたい。
- 一応パスワードはかけてあるが、も少ししっかりガードしたい。
- もう一つは、画像のオーバーレイ表示
- 画像と言えば、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つ。
- index.php
- pukiwiki.ini.php
- lib/pukiwiki.php
- 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のメモという同じような記事が見つかった。
- こちらでは、アクセス規制の設定が参考になった。要するに、入り口を分けても、万一名前が知られれば同じことになる。したがって、IPアドレスでアクセス規制をかけておけば、万全という話である。
- 早速、記事を参考にやってみたが、結果的にうまく行かなかった(^^;) そもそもBasic認証の技術なので、できないわけはないのだが、なぜか挫折・・・(宿題ということでお願いします。)
★というわけで、先輩に相談したら、原因が判明。 問題点は2つあった
- 上記のサイトの解説記事では、.htaccess に記述する方法が紹介されているが、そこに書き加えるだけでは有効にならない。httpd.conf 側の設定を替える必要がある。(以下のコメント欄を参照)
# AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride None
- 一方、httpd.conf に直接記述する方法もあるが、自分でやったときはファイルの指定方法が間違っていたようだ。フルパスで記述したのだが、それが間違い。単に、ファイル名だけでよかった、というわけ。
- 最終的に以下のように httpd.conf に直接記述する方法でOKになった。変更後は、忘れずに restart を!
<Files ~ "admin.php"> Order deny,allow Deny from all Allow from 192.168.1.0/24 </Files>
(★追記 2008/08/10)
写真のオーバーレイ表示 †
- wikiの記事ではそれほど画像類が多いわけではない。ただ、画面のハードコピーがほとんどなので、文字が読めるようにすると画像サイズが大きくなる。そのままアップすると、かなりスペースを占めてしまう。
- いつものように、サムネールをクリックするとオーバーレイ表示ができないかと挑戦した。
lightboxとの連携 †
- オーバーレイと言えば、定番の「lightbox」。調べてみれば、既に先人の挑戦が成功しており、解説記事が多数見つかった。
- 喜び勇んで片っ端から挑戦したのだが、実は、ほとんどが失敗した。その詳細は割愛するが、どうも、lightbox のver が関係しているようだ。最新のlightbox2.04をベースにしたものでは、ことごとくだめだった。
- 今回、最終的に落ち着いたのは、こちらの記事。備忘録/Pukiwiki:lightboxを使う
- 「lightbox_plus」を使っていた。(jsファイルの構成の違いで気がついた)
インストール手順 †
- 『pukiwikiのデフォルトの設定ではJavaScriptは禁止』という情報があった。「lightboxというプラグインを適当に入れてみる。」を参考に、一応、解除しておく。
pukiwiki.ini.php ============= Javascriptの動作許可 // PKWK_ALLOW_JAVASCRIPT - Allow / Prohibit using JavaScript define( 'PKWK_ALLOW_JAVASCRIPT' , 1 ); // 0 : Prohibit、1:Allow
- ①lightbox関係ファイルの配置
- ezm/skin/lb 配下に、lightbox_plus(OpenPNE2.10.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を丸ごとインポートする。使っているskinファイルは、もともと 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>";
- ⑤ lightboxで使用する画像ファイルのパスを調整
- この調整も毎度ながら悩ましい。「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プログラムで管理しており、ソースを追ってみたものの、とてもフォローできないかった。
- 別に、プラグイン形式のlightboxも見つけて、testページでは、イロイロ表示してみたが、これも中途半端。何やかやと、約1週間悶々としましたが、 結論的にいうと、実は単純な話だった。
- pukiwikiで添付画像を表示する機能は、標準のプラグイン「ref.inc.php」で実現されているのだが、このプラグイン自体に表示サイズを調整する機能があったのだ。
- 少し長いが、公式マニュアルサイトからポイントを引用すると、
■書式 &ref(ファイル名,ページ,パラメータ,タイトル]); ■概要 '#attach'でページに添付されたファイルを指定位置に展開します。 ■引数 ・ファイル名 ページに添付したファイル名を指定します(省略時はエラーとなります)。 別ページ名/添付ファイル名とする事で別ページの添付ファイルも指定できます。 ・パラメータ ファイルの展開方法を指定できます。 left|center|right - 表示時の位置を指定します。省略時はleft(変更可) wrap|nowrap - テーブルタグで囲む/囲まないの指定を行います。省略時はnowrap(変更可)です。 around - テキストの回り込みを可能とします。省略時は回り込みを行いません。 noimg - ファイルが画像の場合に画像を展開しないようにします。省略時は展開 nolink - 元ファイルへのリンクを張らないようにします。省略時はリンク zoom - 縦横比を保持します。省略時はサイズ指定に従います。 999x999 - サイズを指定します(幅x高さ)。 ★ 省略時は拡大率あるいは対象画像のサイズに従います。 999% - サイズを指定(拡大率)します。省略時は100%です。 ★ ページ名やパラメータに見える文字列を使用するときは、#ref(hoge.png,,zoom) のようにタイトルの前にカンマを余分に入れます。
サイズ指定で格好がついた! †
- いっぱいパラメータが合ったのだ。そのうちのサイズ指定を利用したらOK!「%」指定の方が楽。
- その前の「,」追加を忘れずに
【左】50%表示 &ref(gogaku.jpg,,50%,gogaku); 【右】30%表示 &ref(gogaku.jpg,,30%,gogaku);
- これに統一して、これまでの画像ページを修正を行った。
- あとは同一ページの複数の画像がリンク表示ができれば最高なのだが! これは、ぜいたくか!?
- これにて、一件落着ということで(^^)