//CentOS51でバックアップサーバ/(8)pukiwikiのカスタマイズ
#navi(CentOS51でバックアップサーバ)
- 「ezm-BOX」としてwikiを公開した話は、[[CentOS51でバックアップサーバ/(6)pukiwikiのverup]]で書いたとおり。ただ、今のところは、SNSからのリンクしかないので、ロボットも一般来訪者もきていないと思う。
- で、あれこれ前から気になっていたカスタマイズに挑戦していた。
-一つは、編集等の規制
-- もともとオープンさが身上のwikiに規制をかけるのはおかしいかもしれないが、ホームページ代わりに使うという前提なので、そこは許していただきたい。
-- 一応パスワードはかけてあるが、も少ししっかりガードしたい。
- もう一つは、画像のオーバーレイ表示
-- 画像と言えば、lightboxを使ったオーバーレイ表示が手放せない関係になっているが、wikiに関しては未挑戦。何とか実現してみたい。
と言うわけで、悪戦苦闘した記録である。(2008/07/23記)
#contents
* pukiwikiの編集規制 [#xd68760c]
- 一応パスワードがかけて「編集」できないようになっている。ところが、「新規作成」はできてしまうと言うわけで。本格的な編集規制に着手した。
** 参考にしたサイト [#s1e35330]
- [[pukiwikiの質問箱>http://pukiwiki.sourceforge.jp/?%E8%B3%AA%E5%95%8F%E7%AE%B14%2F20]]で、それらしい要望を発見したが、没になっている。ただ、「PKWK_READONLY」というキーワードが見つかった。
- これをキーにGoogleで検索すると、[[pukiwiki関係のメモ>http://56rian.dip.jp/Top/?%A5%D1%A5%BD%A5%B3%A5%F3%2Fpukiwiki]]と題して、2つの設定方法が見つかった。
-- リードオンリー・モードにする
-- 閲覧用と管理用のページを分ける
** リードオンリー・モード [#xaea9e17]
- 「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だった!! 編集だけでなく、新規作成のアイコンも消えるし、アドレス欄に直接コマンドを入れてもはじかれた!
** 管理用のページを分ける [#ubac1487]
- ただ、これで機能的には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! [#y6442519]
- 管理者で接続するときのURLは、以下のとおり (ただし、あくまでダミーですからね ^^;)
http://kurarinet.com/ezm/admin.php
- 問題なく表示する、当然か。編集しようとすると、凍結が効いている。凍結解除すれば、編集可能になる。
- ただ、凍結を解除して編集状態でも、従来のアクセス画面(index.php)からでは、編集不可のままとなる!!
** さらに、アクセス規制も [#u6dbfc5c]
- [[PukiWikiのメモ>http://akademeia.info/index.php?PukiWiki%A4%CE%A5%E1%A5%E2]]という同じような記事が見つかった。
- こちらでは、アクセス規制の設定が参考になった。要するに、入り口を分けても、万一名前(admin.php)が知られれば同じことになる。したがって、IPアドレスでアクセス規制をかけておけば万全という話である。
- 早速、記事を参考にやってみたが、結果的にうまく行かなかった(^^;) そもそもBasic認証の技術なので、できないわけはないのだが、なぜか挫折・・・(宿題ということでお願いします。)
★というわけで、先輩に相談したら、原因が判明。 問題点は2つあった
++ 上記のサイトの解説記事では、.htaccess に記述する方法が紹介されているが、実は、それだけでは有効にならない。httpd.conf 側の設定を替える必要があるのだ。(以下のコメントを参照)
## Access control by Order/Allow/Deny directives
## needs 'AllowOverride Limit' at httpd.conf
++ 一方、httpd.conf に直接記述する方法もあるが、自分でやったときはファイルの指定方法が間違っていたようだ。フルパスで記述したのだが、それが間違い。単に、ファイル名だけでよかった、という話。
- 昔、同じようなことで悩んだ記憶がよみがえった。⇒ [[CentOS5で新サーバ構築/(3)WWWサーバのチューニング]]の『ユーザ認証の変更』の項。この時は原因が分からず、httpd.conf に直接記述する方法を探し出してきてクリアしたのだった。(多分、OSを変更したため、httpd.conf は上書きが効かず、設定の細かな違いにも気がつかなかったのだろう ^^;)
- 今回も、最終的には httpd.conf に直接記述する方法で対応した。以下のように追記してOKに。なお、変更後は、httpd の restart の実行を忘れずに!
<Files ~ "admin.php">
Order deny,allow
Deny from all
Allow from 192.168.1.0/24
</Files>
(★追記 2008/08/10)
* 写真のオーバーレイ表示 [#nd788c49]
- wikiの記事ではそれほど画像類が多いわけではない。ただ、画面のハードコピーがほとんどなので、文字が読めるようにすると画像サイズが大きくなる。そのままアップすると、かなりスペースを占めてしまう。
- いつものように、サムネールをクリックするとオーバーレイ表示ができないかと挑戦した。
** lightboxとの連携 [#g05dd18c]
- オーバーレイと言えば、定番の「lightbox」。調べてみれば、既に先人の挑戦が成功しており、解説記事が多数見つかった。
- 喜び勇んで片っ端から挑戦したのだが、実は、ほとんどが失敗した。その詳細は割愛するが、どうも、lightbox のver が関係しているようだ。最新のlightbox2.04をベースにしたものでは、ことごとくだめだった。
- 今回、最終的に落ち着いたのは、こちらの記事。備忘録/Pukiwiki:[[lightboxを使う>http://masa-ya.jp/index.php?%C8%F7%CB%BA%CF%BF%2FPukiwiki]]
- 「lightbox_plus」を使っていた。(jsファイルの構成の違いで気がついた)
** インストール手順 [#kcea7547]
- 『pukiwikiのデフォルトの設定ではJavaScriptは禁止』という情報があった。[[「lightboxというプラグインを適当に入れてみる。」>http://newcamel.logos.ic.i.u-tokyo.ac.jp/~s1s5/pukiwiki/index.php?pukiwiki%2Fplugin#notefoot_1]]を参考に、一応、解除しておく。
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
** サムネールはどうしよう? [#a74ebd0b]
- 一応、画像のオーバレー表示は解決した。ただし、同じ画像を使うだけなので、元の画像がオーバレイでポップするだけ。これではなんとも面白くない(^^;)
- ここで行き詰ってしまった。サムネール画像を自動作成させたりして、リンクできないかと思ったが、そもそもpurkiwikiってのは、記事や添付写真をphpプログラムで管理しており、ソースを追ってみたものの、とてもフォローできないかった。
- ここで行き詰ってしまった。サムネール画像を自動作成させたりして、リンクできないかと思ったが、そもそもpukiwikiってのは、記事や添付写真を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)
のようにタイトルの前にカンマを余分に入れます。
** サイズ指定で格好がついた! [#e18051a6]
- いっぱいパラメータが合ったのだ。そのうちのサイズ指定を利用したらOK!「%」指定の方が楽。
- いっぱいパラメータがあったのだ。そのうちのサイズ指定を利用したらOK!「%」指定の方が楽。
- その前の「,」追加を忘れずに
【左】50%表示
&ref(gogaku.jpg,,50%,gogaku);
【右】30%表示
&ref(gogaku.jpg,,30%,gogaku);
&ref(gogaku.jpg,,50%,gogaku);
&ref(gogaku.jpg,,30%,gogaku);
- これに統一して、これまでの画像ページを修正を行った。
- あとは同一ページの複数の画像がリンク表示ができれば最高なのだが! これは、ぜいたくか!?
- これにて、一件落着ということで(^^)
#navi(CentOS51でバックアップサーバ)