bootstrap を使ってリニューアル のバックアップソース(No.1)

更新

[[FrontPage]]

#contents

* まずは開発用環境を一式整える [#n21779a4]

* php をインストール [#i6f4a7d3]

一緒に unzip も。

 LANG: console
 $ sudo aptitude install libapache2-mod-php5 unzip

* パーミッションの調整 [#i5f22d0a]

自分が www-data グループに入っていることを確認した上で、
/var/www 以下を www-data グループの人間が自由にいじれるようにする

 LANG: console
 $ groups
  osamu ... www-data ...
 $ cd /var/www
 $ sudo chgrp -R www-data .
 $ sudo chmod -R g+r .
 $ sudo find . -type d -exec chmod g+wx {} \;

* ファイルを展開 [#f948038b]

 LANG: console
 $ cd /var/www/html
 $ unzip ~/pukiwiki-1_5_0_utf8.zip
 $ mv pukiwiki-1_5_0_utf8 pukiwiki
 $ cd pukiwiki
 $ chgrp -R www-data .
 $ chmod -R o-rwx .

ここまでで http://localhost/pukiwiki へアクセス可能

* git を導入 [#b1f3a1e2]

 LANG: console
 $ git init
 $ cat > .gitignore
  *~
  *.BAK
  
  .gitignore
  
  attach
  backup
  cache
  counter
  diff
  image
  trackback
  wiki
  ^D
 $ 

* 古いデータを UTF-8 に変換する [#lda1e9c7]

古い wiki のデータは EUC で保存されていたので、
これを UTF-8 に変換する必要がありました。

古い wiki のディレクトリで以下のスクリプトを走らせて、
do.sh というファイルを作成して、source コマンドでシェルに食べさせれば良いようでした。

convert.php
 LANG:php(linenumber)
 <?php
 
 # 与えられた名前のディレクトリの $pattern にマッチする
 # ファイルのファイル名(hex2bin でエンコード済み)を 
 # EUC-JP から UTF-8 に変換してコールバック関数を呼び出す
 function convert_dir(
     $dir_name, 
     $callback,    # function($src, $dest) { ... }
     $pattern = "/ (?!\.)([0-9A-F][0-9A-F]|_)*(\..*)?$/")
 {
   $file_names = files_in_dir($dir_name, $pattern);
   
   print "mkdir ${dir_name}_utf8\n";
   foreach ($file_names as $index => $file_name) {
     $src = $dir_name . "/" . $file_name;
     $dest = $dir_name . "_utf8/" . convert_filename($file_name);
     $callback($src, $dest);
   }
 }
 
 # 与えられた名前のディレクトリの $pattern にマッチする
 # ファイルを列挙した配列を返す
 function files_in_dir($dir_name, $pattern)
 {
   $file_names = [];
   
   $h_dir = opendir( $dir_name );
   while ( $file_name = readdir( $h_dir ) ) {
     if ( ! preg_match($pattern, $file_name) )
       continue;
   	$file_names[] = $file_name;
   }
   closedir( $h_dir );
   
   return $file_names;
 }
 
 # EUC-JP をエンコードしたファイル名を受け取って
 # UTF-8 をエンコードしたファイル名にして返す
 # ファイル名はエンコードされていない拡張子や "_" を
 # 含んでいる場合があるため、それら以外の部分を変換する
 function convert_filename($file_name)
 {
 	preg_match("/ ([ \.]*?)(\..*|)$/", $file_name, $matches); # 必ずマッチする
 	$base_name = $matches[1];
 	$extention = $matches[2];
 	return implode("_", array_map("convert_code", explode("_", $base_name))) . $extention;
 }
 
 # EUC-JP をエンコードした文字列を受け取って
 # UTF-8 をエンコードした文字列にして返す
 function convert_code($s)
 {
   return strtoupper( bin2hex( mb_convert_encoding( hex2bin($s), "UTF-8", "EUC-JP" ) ) );
 }
 
 #
 # 変換処理のバリエーション
 #
 
 function adjust_time_stamp($s, $d) 
 {
   print "touch -r $s $d\n";
 }
 
 function simple_copy($s, $d) 
 {
   print "cp $s $d\n";
   adjust_time_stamp($s, $d);
 }
 
 function simple_convert($s, $d) 
 {
   print "nkf -w $s > $d\n";
   adjust_time_stamp($s, $d);
 }
 
 function gzip_convert($s, $d) 
 {
   print "gunzip -c $s | nkf -w | gzip > $d\n";
   adjust_time_stamp($s, $d);
 }
 
 #
 # 各ディレクトリに対して必要な処理を標準出力に表示する
 #
 
 convert_dir("attach", simple_copy);
 
 convert_dir("backup", gzip_convert);
 
 convert_dir("cache", simple_convert);
 simple_convert("cache/recent.dat", "cache_utf8/recent.dat");
 
 convert_dir("counter", simple_copy);
 
 convert_dir("diff", simple_convert);
 
 convert_dir("wiki", simple_convert);
 
 ?>

 LANG:console
 $ php convert.php > do.sh
 $ less do.sh
 $ source do.sh

あとは ????_utf8/* を新しい wiki の対応するフォルダにコピーすればOKでした。

* スキンをいじる [#fc6de793]

 $ ls skin/
  index.html       pukiwiki.css.php   tdiary.css.php
  keitai.skin.php  pukiwiki.skin.php  tdiary.skin.php
 $ grep \\.skin\\. *
  INSTALL.txt:      ※スキン(外見の骨組み)に関する設定項目は skin/スキン名.skin.php の先頭に
  default.ini.php:        define('SKIN_FILE', DATA_HOME . SKIN_DIR . 'tdiary.skin.php');
  default.ini.php:        define('SKIN_FILE', DATA_HOME . SKIN_DIR . 'pukiwiki.skin.php');
  keitai.ini.php:define('SKIN_FILE', DATA_HOME . SKIN_DIR . 'keitai.skin.php');
  pukiwiki.ini.php:// Skin files (SKIN_DIR/*.skin.php) are needed at
 $ jed default.ini.php
 $ git diff default.ini.php
  diff --git a/default.ini.php b/default.ini.php
  index 2f5259a..3a0b3ac 100644
  --- a/default.ini.php
  +++ b/default.ini.php
  @@ -11,11 +11,7 @@
   /////////////////////////////////////////////////
   // Skin file
  
  -if (defined('TDIARY_THEME')) {
  -       define('SKIN_FILE', DATA_HOME . SKIN_DIR . 'tdiary.skin.php');
  -} else {
  -       define('SKIN_FILE', DATA_HOME . SKIN_DIR . 'pukiwiki.skin.php');
  -}
  +define('SKIN_FILE', DATA_HOME . SKIN_DIR . 'bootstrap.skin.php');
  
   /////////////////////////////////////////////////
   // 雛形とするページの読み込みを可能にする

* bootstrap の theme を落としてくる [#c938c183]

http://www.bootbundle.com/ から良さそうなのを探して・・・

これとかどうかしら?

http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/pages/index.html
  
 $ cd skin/
 $ wget https://github.com/IronSummitMedia/startbootstrap-sb-admin-2/archive/v1.0.5.zip
 $ unzip v1.0.5.zip
 $ mv startbootstrap-sb-admin-2-1.0.5/index.html sb-admin2.html
 $ mv startbootstrap-sb-admin-2-1.0.5/* .
 $ rm -r startbootstrap-sb-admin-2-1.0.5/ v1.0.5.zip
 $ rm LICENSE README.md
 $ cp pukiwiki.skin.php bootstrap.skin.php
 $ cd ..
 $ git add .
 $ git commit -m "sb-admin-2 added"

http://localhost/pukiwiki/skin/sb-admin2.html で sb-admin2 のテーマを表示できるようになりました。

* [#mfc597c4]

pukiwiki.skin.php の

 // ------------------------------------------------------------
 // Output
 
以降に sb-admin2.html の内容を移していきます。

** [#cd528615]

Counter: 8506 (from 2010/06/03), today: 1, yesterday: 3