人気ブログランキング |
2012年 11月 26日 ( 2 )
PukiWikiのページをGUIで編集できるようにするguieditプラグイン
PukiWikiで情報共有サイトを作っても、エンドユーザには独特のWiki記法がネックになってしまうケースが多々あります。

ということで、WYSIWYG でページを編集できるものがないか探したところ、guieditというプラグインがありました。
(こちらのデモサイトで動作を確認できます。)
このプラグインは、オープンソースHTMLエディタである、FCKeditor をPukiwikiでも使えるようにしたもののようです。

ダウンロードは公式サイトから可能です。

インストール方法も上記サイトに書いてますが、一応メモしておきます。

まず、guiedit をダウンロードし、解凍します。
解凍後に、plugin\guiedit.inc.php を PukiWiki の plugin ディレクトリに配置します。
また、skin\guiedit ディレクトリを PukiWiki の skin ディレクトリに配置します。


FCKeditor を公式サイトからダウロードします。
解凍後に、fckeditor を Pukiwiki の skin ディレクトリに配置します。

skin/pukiwiki.skin.php の

<?php _navigator('edit') ?> |

の次行に以下を追加します。

<?php echo '<a href="' . $script . '?cmd=guiedit&page=' . $r_page . '">' .
$lang['guiedit'] . '</a>' ?> |



ja.lng.php の
$_LANG['skin']['edit']      = '編集';

の次行に以下を追加します。
$_LANG['skin']['guiedit']   = '編集(GUI)';



pukiwiki.ini.php でPKWK_ALLOW_JAVASCRIPT を 1 にし、JavaScriptを有効にします。
define('PKWK_ALLOW_JAVASCRIPT', 1);



$pkwk_dtd を PKWK_DTD_XHTML_1_0_TRANSITIONAL か PKWK_DTD_HTML_4_01_TRANSITIONAL にします。
(PKWK_DTD_XHTML_1_0_TRANSITIONALにした場合)

//$pkwk_dtd = PKWK_DTD_XHTML_1_1; // Default
//$pkwk_dtd = PKWK_DTD_XHTML_1_0_STRICT;
$pkwk_dtd = PKWK_DTD_XHTML_1_0_TRANSITIONAL;
//$pkwk_dtd = PKWK_DTD_HTML_4_01_STRICT;
//$pkwk_dtd = PKWK_DTD_HTML_4_01_TRANSITIONAL;



lib/convert_html.php の
$anchor = ' &aname(' . $id . ',super,full){' . $_symbol_anchor . '};';

の次行に以下を追加します。

$fixed_heading_anchor = 1;
$fixed_heading_anchor_edit = 1;




ツールバーにリンクを追加するために、以下の設定を行います。

ja.lng.php の
$_LANG['skin']['edit']      = '編集';

の次行に以下を追加します。
$_LANG['skin']['guiedit']   = '編集(GUI)';



lib/html.php の
$_LINK['edit']     = "$script?cmd=edit&page=$r_page";

の次行に以下を追加します。
$_LINK['guiedit']  = "$script?cmd=guiedit&page=$r_page";



skin/pukiwiki.skin.php の
$_IMAGE['skin']['edit']     = 'edit.png';

の次行に以下を追加します。
$_IMAGE['skin']['guiedit']  = 'edit.png';



skin/pukiwiki.skin.php の
<?php _toolbar('edit') ?>

の次行に以下を追加します。
<?php _toolbar('guiedit') ?>





guieditを導入して気になったのが、編集画面の縦が小さいことです。
どうやら既定値は300pxのようです。これではちょっと不便なので、もっと縦を長くとってみました。


skin/guiedit/guiedit.js ファイルの
var oFCKeditor = new FCKeditor('msg', '100%', 300, 'Normal');

の 300 の所を任意の値にすると高さが変わるようです。


文章入力時に普通に改行すると、違う段落になってしまうようです。
同じ段落内での改行は Shift+Enter で改行しないといけないようですね。


リンクを張る場合、リンクを張る文字列を選択し、「リンク挿入/編集」ボタンを押します。URL へのリンクを張る場合はリンクタイプ:URL,プロトコル:httpを選びURLを、Wiki ページ名へのリンクを張る場合は、リンクタイプ:URL,プロトコルから<その他>を選択しURL欄にページ名を入力するようです。
by Jehoshaphat | 2012-11-26 23:00 | PHP開発
(Linux)PXEサーバ(Ubuntu系)を立ててネットワークブートでCentOS6をインストールしてみた
今回、光学ドライブがなくUSBブートもできない端末に、RedHatEnterpriseLinux6.0のクローンである CentOS6.0 をインストーすることになりました。
この端末は幸いにも、ネットワークブート(PXE)に対応してしたので、そこからのインストールを試みてみました。


PXEサーバは Ubuntu10.04 をベースにしている EcoLinux10.04 を使うこととしました。
PXEサーバに必要なのは、DHCPサーバ、TFTPサーバ、HTTPサーバとなるので、これらをまずインストールします。

●TFTPサーバ
当初、xinetdスーパーサーバを介して、tftpd を使おうかと思ってました。
しかし、いざtftpdで環境構築するとネットワークブートしたクライアント側で「TFTP server does not support the tsize option 」というエラーが出てブートに失敗します。
これは Debian 系のTFTPDは tsize オプションをサポートしてないためのようです。
(Ubuntu系で tftp をインストーするには、 apt-get install tftpd でできます)

それで、TFTPサーバとしては tftpd-hpa を使うことにしました。
まず、インストールです。

apt-get install tftpd-hpa


公開するディレクトリを作成後、設定ファイルを修正します。

mkdir /tftpd

vi /etc/default/tftpd-hpa

TFTPD_DIRECTORY="/tftpd" ←公開するディレクトリ
RUN_DEAMON="yes" ←追記

service tftpd-hpa start ←サービス開始

ちゃんと動いているかどうかは、netstatでポートを確認するといいかもしれません。

netstat -an | grep 69

また、ダミーファイルを公開ディレクトリに配置し、WindowsPCのコマンドプロンプトでダウンロードできるか確認もできます。

tftp サーバIP get a.txt



●DHCPサーバ
PXEクライアントは起動時にDHCPサーバからIPを取得する必要がありますが、ルータ等のDHCP機能では細かいオプションが指定できないため、自前で立てる必要があります。
既にDHCPサーバがLAN内にある場合は運用に気を付けないとおかしなことになります。
なので、PXEブートするときだけ別LANにして、DHCPサーバを起動するような方法をとったほうが良いかもしれません。

インストールは以下のようにします。

apt-get install dhcp3-server

DHCPサーバの設定ファイルを変更します。

vi /etc/dhcpd.conf


subnet 192.168.0.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option time-offset -18000;
filename "/linux-install/pxelinu.0" ←ロードするファイル名
next-server 192.168.0.2 ←TFTPサーバのIP(TFTP,DHCPサーバが同一マシンなら、自身のIPでもOK)
range dynamic-bootp 192.168.0.100 192.168.0.100; ←割り当てるIP範囲
default-lease-time 21600;
max-lease-time 43200;

}


設定が終われば、DHCPサーバを起動します。

service dhcp3-server start


なお、このままだとPC起動時にもDHCPサーバが立ち上がってしまうので、自動起動しないようにしておきます。

update-rc.d dhcp3-server disable


●Apache
CentOS自体のインストールはHTTPを使って行います。(FTPでもいいのですが)
EcoLinuxにはWEBサーバが入ってないので、インストールします。

apt-get install apache2

service apache2 start


●PXEブートローダ配置
PXEブートローダは syslinux パッケージに入っているようです。
EcoLinuxではデフォルトで入っていました。

PXEブートローダファイルを、TFTPの公開ディレクトリに配置します。
また、CentOSのISOファイルを、Apache公開ディレクトリにマウントし、ブートイメージをTFTP公開に配置します。

cp /usr/lib/syslinux/pxelinux.0 /tftpboot/linux_install/

mkdir /var/www/centos6
mount -t iso9660 -o loop /home/hoge/CentOS-6.0-i386-bin-DVD.iso /var/www/centos6

cp /var/www/centos6/images/pxeboot/vmlinuz /tftpboot/linux-install
cp /var/www/centos6/images/pxeboot/initrd.img /tftpboot/linux-install


PXEブートの設定ファイルを作成します。

mkdir /tftpboot/linux-install/pxelinux.cfg
vi /tftpboot/linux-install/pxelinux.cfg/default

↓ファイルの中身
default centos6
label dentos6
kernel vmlinuz
append load initrd=initrd.img devfs=nomount


●クライアントにて実行
後は、クライアントでネットワークブートを実施します。
(場合によってはBIOSでネットワークブートの優先度を上げる必要があるかもしれません。PCによってはBIOS起動の画面でファンクションキー押せばネットワークブートするのもあるようです)

DHCPよりIPが割り振られて、TFTP経由でPXEブートローダが読み込まれ、インストーラが起動します。

言語設定と、キーボード設定を行い、インストール元で URL を選択します。
URL欄で、ウェブサーバのCentOSをマウントしているディレクトリ( http://svip/centos6 )を入力します。
すると、Anacondaが立ちがありいつものインストール画面となります。(PCのグラフィックスペックが低い場合はテキストインストールになってしまいますが。。。)


ちょっとサーバを立てるのが手間ですが、非常に便利ですね。


参考:
Ubuntu Weekly Recipe:第47回 Ubuntuのネットワークインストールとapt-mirrorの活用|gihyo.jp … 技術評論社
きままなひとりごと Ubuntu 11.04 PXEブート環境の構築
第1回 ネットワーク経由でCentOSを導入する - 旧型ノートPCで本格サーバーを作ろう:ITpro
@IT:PXEネットワークブート用サーバを構築するには RedHat系でPXEサーバとする例です。
PXEネットワークブートでCentOSをインストール/kickstartによるインストール自動化 - Layer8 Reference RedHat系でPXEサーバとする例です。

Windows XP のネットワークインストール (Windows PE 3.0 使用) - regerege メモ帳 PXEでWindowsをインストールする例ですが、Windowsはちょっと面倒くさそうです。
by Jehoshaphat | 2012-11-26 01:11 | Linux