ブックマーク携帯対応
ブックマークをscuttleのDBから取得するように設定していて、
scuttle側でxoopsとタグ付けすれば表示される。
好みで『target=_blank』を設定しているが、
携帯でアクセスするとxpwikiへのリンクにおいて
ログイン状態を引き継いでくれない。
$wizmobile.ismobile変数を利用して、
携帯端末とそれ以外で属性の出し分けを行う。
※URLをダブルクオートで括らないと携帯では動かなかった。
ブックマークをscuttleのDBから取得するように設定していて、
scuttle側でxoopsとタグ付けすれば表示される。
好みで『target=_blank』を設定しているが、
携帯でアクセスするとxpwikiへのリンクにおいて
ログイン状態を引き継いでくれない。
$wizmobile.ismobile変数を利用して、
携帯端末とそれ以外で属性の出し分けを行う。
※URLをダブルクオートで括らないと携帯では動かなかった。
basename( dirname( __FILE__ ) ) ;
この関数が値を取得出来ない問題が未だに続く。
他のLAMPツールでもクエリーストリングが欠落したり、
データが空になったりしている事に気付く。
apacheのスレッドを従来のプロセスモデルに戻したり、
バージョンアップなども試してみたが改善せず。
思い当たるところ殆ど最新化したが状況変わらないので、
あとはカーネルのバージョンアップを試す。
結果的にこの対応で問題は一応収束したように見える。
今から考えると、単にOS再起動が効いただけかもしれない。
カーネルを戻せば確認出来るが、それはまた後日。
xpwikiでも以下のエラーが出ている。
原因はinvalid dirnameと同一だろう。
Runtime error
Error message :
File is not found. (INI_FILE)
またpiCalでも以下のエラーが起きるようになった。
Couldn’t open template ‘${XOOPS_HOME}/piCal/images//monthly.tmpl.html’ for reading.
xpwikiはXOOPS_TRUST側の以下のファイル。
${XOOPS_TRUST}/modules/xpwiki/class/xpwiki.phpの32行目
function XpWiki ($mydirname, $moddir=’modules/’) {
if(empty($mydirname)) $mydirname="xpwiki”;
piCalは以下のファイルを再修正。
${XOOPS_TRUST}/modules/piCal/index.htmlの51行目
if(empty($skin_folder)) $skin_folder="default”;
cal->images_url = “$mod_url/images/$skin_folder” ;
cal->images_path = “$mod_path/images/$skin_folder” ;
相変わらずpiCalやwordpressでinvalid dirnameというエラーが続く。
以前も報告したが、以下の関数が値を取得できないためだ。
basename( dirname( __FILE__ ) ) ;
phpのバージョンアップも試したが意味なし。
さすがにストレスなので個別に手を打つことにする。
piCalは${XOOPS_HOME}/modules/piCal/index.phpの11行目
piCalは${XOOPS_HOME}/modules/piCal/xoops_version.phpの33行目
$mydirname = basename( dirname( __FILE__ ) ) ;
if(empty($mydirname)) $mydirname="piCal”;
wordpressは以下の2ファイル。
${XOOPS_HOME}/modules/wordpress/wp-config.phpの38行目
${XOOPS_HOME}/modules/wordpress/xoops_version.phpの5行目
$_wp_my_dirname = basename( dirname( __FILE__ ) ) ;
if(empty($_wp_my_dirname)) $_wp_my_dirname="wordpress”;
一旦、これで様子見。
piCalのイベントについて場所と詳細が一覧しづらい。
週表示のビューを修正して見えるようにする。
該当箇所を生成しているのはclass/piCal.php。
line1293のSQLにlocationとdescription追加。
$ars = mysql_query( “SELECT start,end,summary,id,allday,admission,uid,location,description FROM $this->table WHERE admission>0 AND ($w hr_term) AND ($whr_categories) AND ($whr_class) ORDER BY start” , $this->conn ) ;
line1340行辺りにサニタイズする為の変数追加。
$location = $this->text_sanitizer_for_show( $event->location ) ;
$description = $this->text_sanitizer_for_show( $event->description ) ;
更にdescriptionについてはURLをリンクに変換する。
$description=preg_replace("/(https?:\/\/[a-zA-Z0-9;\/?:@&=\+$,\-_\.!~*’\(\)%#]+)/”,”\\0”,$description);
line1366の表示部分にlocationとdescriptionを追加。
<font size=’2′><a href=’?cid=$this->now_cid&smode=Weekly&action=View&event_id=$event->id& ;caldate=$this->caldate’ class=’$summary_class’>$summary</a>($location) $description</font>
前回に続き、piCalの横幅調整。
月表示だけでなく年表示や週表示、日表示も修正する。
640pxと書かれているテンプレートをあらかた修正。
修正したファイルは以下。
しかし、予定一覧表示のコントローラ部分だけ直らず。
後日、詳細調査予定。
先日のバージョンアップでfrontpageの問題は解消。
しかし、以下の問題がまだ残っている。
前者はまたもやprotectorの問題らしい。
携帯環境のようにソースIPが頻繁に変わると
管理者グループは弾かれる設定になっている。
使用ユーザーを管理者グループから除くか
IP変動を禁止するグループを別のグループに
設定する必要がある。
後者はxpwikiの問題かと思ったが、
単にリンクのさせ方がまずかっただけ。
target=_blankになっていると
セッションが引き継がれないのかもしれない。
リンクからこの属性をなくしたら改善した。
引き続いて本来の目的であった、
xpwikiとwizmobileのバージョンアップ。
どちらもそれぞれのサイトから
DLして展開し、上書きコピーするだけ。
あとは同様に管理者メニューの互換モジュール管理で、
以下のモジュールをアップグレード。
※wizmobileは細かいバージョンアップを繰り返す模様。
これで携帯でxpwikiのfrontpageを見た際に
guid=onの編集画面になる不具合が改善。
携帯経由の表示において気になる不具合があったので、
xoops cubeコアのバージョンアップにトライ。
方法は以下を参照。
http://xoopscube.jp/package/release/31
普通にDLして展開。
installディレクトリとmainfile.phpを削除して、
バックアップ後に本体へ上書きコピー。
管理者メニューの互換モジュールにて
以下のモジュールをアップデート。
PHPのカスタムブロックである
最近更新したmediawiki表示モジュールで
mediawikiの記事内容サマリーを表示する。
対象のフィールドはpage.old_text。
冒頭にカテゴリ・リンクを入れているので
以下の問い合わせで文字列のみを取得。
CONCAT(SUBSTR(REPLACE(REPLACE(REPLACE(REPLACE(
SUBSTRING(old_text,INSTR(old_text,’]]’)),
‘==’,'’),’[[’,'’),’]]’,'’),char(10),'’),1,30),’…’)
piCalの横幅が640pxで固定的に設定されている。
テーマの関係でメインエリアが570px固定なので、
全体が収まるように微調整する。
設定箇所は多岐に渡り、何度か挫折したが今回は成功。
修正箇所は以下。
トップページの予定ブロックにURLが含まれ始めたので
自動的にリンクになるように修正する。
MySQLのクエリーレベルで置換しようと思ったが、
正規表現が使えないようなのでPHPで置換する。
以下のような表現で期待通りに置換できた。
$description=preg_replace("/(https?:\/\/[a-zA-Z0-9;\/?:@&=\+$,\-_\.!~*’\(\)%#]+)/”,”<a href=\"\\0\” target=\"_blank\”>\\0</a>”,$description);
確認作業中にF5連打で更新しまくると真っ白な画面が表示され、
しばらくその状態が続く事が何度かあった。
これはprotectorモジュールによるガード機能の模様。
作業効率が悪い場合はモジュールのコンフィグレーションにて
一時的にパラメータを調整する事。
invalid dirnameというエラーが頻繁に起きる。
特にwordpressモジュールやpiCalモジュールで作業中。
タイミングによってはこの文字だけの画面になってしまう。
軽くソースを覗いてみると以下の処理が問題の模様。
basename( dirname( __FILE__ ) ) ;
この関数が値を取得出来てない事が原因。
発生頻度が毎回ではない事を考えるとPHPのバグか。
ウェブサーバを再起動してみたところ発生しなくなった。
再現したら次回は詳しく調査してみよう。
公開されているテーマを自分好みに改造して使っていた。
普段はfirefoxなので気付いていなかったが、
IEで見るとブラウザ幅によってデザインが崩れる。
やはりデフォルトのデザインの方が格好いいので
一旦元に戻して再修正する事にした。
以下、備忘録。
ニュースチェック用のツールをサーバサイド
RSSリーダーの『Tiny Tiny RSS』に切り替えたので、
ヘッドラインモジュールをxhldから、ttrssのDBを
参照するカスタムPHPブロックに変更。
これで当初予定した専用ツール化への移行が完了。
wordpressモジュールのデフォルト表示順が古い順になっている。
ググってみると別サイトのフォーラムでも迷宮入りしている。
原因はmysql-5.0.51の問題らしい(うちもこのバージョン)。
発行クエリーを抽出し調べてみると、
正しくソート命令はされているものの古い順になっている。
無意味にPKでグループ集計されているのが気になったので、
試しに外してみると正しくソートされた。
この内容を実装するには以下のコードをコメントアウト。
${XOOPS_HOME}/modules/wordpress/wp-blog-header.php
line 371
$_criteria->setGroupBy(wp_table(’posts’).’.ID’);
↓
#sortBug $_criteria->setGroupBy(wp_table(’posts’).’.ID’);
別の環境にあったmysql-5.0.67だと、この問題はなさそう。
ログイン情報で出し分けるカスタムブロックを作成。
piCalのイベント情報をユーザーごとに出し分ける。
ちょっぴりはまったが、以下の方法で実現可能。
global $xoopsUser;
#ログイン状態ユーザー用処理
if(is_object($xoopsUser)){
#ユーザーID取得
$uid =$xoopsUser->getVar(’uid’);
:
:
}
カスタムブロックを使って諸々追加。特にPHPブロックは便利。
以前はインターフェースが気に入らないと、
しこしこテンプレートを編集していた。
カスタムPHPブロックを使って、
好みのDBアクセス&出力に作り変える方が遥かに楽。
同一DBであれば別のシステムの情報にもアクセスできる。
試しに外部wordpressと連携させてみた。
開発ドメインからオープン用ドメインに切り替えて、サイトを公開状態にした。
PVの内訳をしっかり分析していないけど意外とカウンター伸びるねw
ロボットをカウントしているのかもしれないけど…。
wikiのURL体系が以前と変わった為、404 NOT FOUNDが多発。
ご迷惑おかけしますが、wikiのトップにリダイレクトするので、ページを探し直してくれると幸いです。
過去のリソース移行を視野にwikiモジュールを選定。
結局、移行については良い方法が見つからず。
旧バージョンで使用していたpukiwikimodの後継(?)であるxpWikiに決定。
手動コピペでコツコツ移行かな。。。
開発サイトで大分ノウハウが貯まったので、4年振りのメジャー更新。
個人的にマストな以下のモジュールをインストール。
57 queries. 0.097 sec.
Powered by WordPress Module based on WordPress ME & WordPress