ホーム > kilica

kilica

記事一覧 > 氷川 XOOPS Module 開発室

[XCL22] 速度改善

nobu さんが検討してくれたチューニングを取り込みました(^ ^)。

これは結構効いてるかも。

[XCL22] meta要素設定

OSC で suin さんに聞いたアイディアを元に、

XCube_Root::getSingleton()->mContext->getAttribute('headerScript')->setMeta('keywords', 'xoops,development,module')

で、html のメタ要素(この例では "keywords")を設定できるようにしました。

用途としては、ページによって robots の設定を変えたり(RSS拾って表示しているページとか)、rating 変えたりとかでしょうか。

[module] XCCK 日付項目改善など

XCCK も XCL2.2 で動作するよう修正。

あと、実は放ってあったことに気づいた日付項目の編集・表示をちゃんと動くよう修正。

[module] Xq テンプレート改善など

久しぶりに Xq を少し修正。最新の XCL 2.2 で動作するようにテンプレートを修正。

また、一覧ページのテンプレートを修正。

参考にしようと、Q&A のウェブサービスで絞ったら100以上あった(^ ^;。

[xoops][一般] OSC2010 Tokyo/Spring

OSC 2010 Tokyo/Spring に行ってきました。でもって XCL22 の新機能についての発表をしてまいりました。

プレゼン

XOOPS Cube Legacy 2.2 on Prezi


配布資料

gusagi さんがまとめてくれた当日のサマリ

また、(まだ日本にいる)minahitoさん、gusagi さん、suin さん、そして「たまたま?」日本に来ていた XCL2.2 Lead Developer, Gigamaster さんらといろいろお話しました。いや、たまには出かけたほうが良いよなと参加したのですが、大正解。実に楽しい、充実した一日でした。

Gigamaster さんには初めてお会いしたのですが、話に聞く以上のナイスガイ。ハンサムで、頭も良く、人格者という完璧超人。しかも膝を壊すまではサッカー選手としていくつかのクラブを渡り歩いていたんだそうな。OSC終了後、赤坂のホテルニューオータニで聞いた Gigamaster さんの素晴らしいお話は minahito さんがまとめています。

でもって久々に英語が半分位を占める一日を過ごしました。英語ネイティブな方ではないことと、我々日本人向けにゆっくりしゃべってくれたので、なんとか半分くらいは理解できました。しかし帰るときは英語脳になっていて、守衛の人に英語で挨拶しそうになった。

そして、今回の最大の収穫と言えるのは、Suin さんを XCL 開発にお誘いして快諾いただいたことでしょう。

XOOPS Cube 開発の Cheat-Sheet の配布, jQuery や デバグの preload など、精力的に活動されています。

XOOPS Cube Legacy が今後また大きく発展していくことは間違いありません。乞ご期待!

[XCL22] xoops_dhtmltarea

Smarty プラグインの xoops_dhtmltarea により、フォームのテキストエリアにBBコードのエディタが使えるようになります。

しかしこのエディタがどうにも使いづらく、XCL2.2では Delegate を使って簡単に差し替えられるようにしました。

ところで XCL2.2 には FCKエディタが(extrasにですが)付いています。

そこで、おなじく xoops_dhtmltarea で editor パラメタを指定することで BBコードの代わりに FCK エディタを使えるようにしました。デフォルトではFCKエディタですが、やはり Delegate で他のエディタに切り替え可能です。

たとえば、最初はFCKエディタを使っていたけど、ある日その後継の CKエディタに切り替えたくなった、というとき、テンプレートをいじることなく preload ファイルを置くことでガラッと切り替えることができます。

あるいは、ユーザID(やロール)をみてエディタを切り替える、といった preload もできるでしょう。

[XCL22][module] xtran

XOOPS モジュールの言語ファイル同期支援モジュールです。

モジュールを作っていて何が面倒くさいかというと、言語ファイルの整備、とりわけ、日本語以外の言語ファイルの整備です。

最初はいいのですが、そのうち「日本語の言語ファイルには追加したけど、英語には追加していない」言語定数がごろごろと増えてきます。そして、「どの言語定数がそろっていて、どの言語定数が足りないか」すぐにわからなくなります。

というわけで、急遽作ったのがこのモジュールです。比較したいモジュール、比較元と比較先の言語、タイプ(admin, blocks, main, modinfo)を指定すると、比較先に足りない言語定数の一覧が出てきます。

すーぱー手抜きなモジュールです。XCL2.2の言語ファイル整備のために2時間ほどで作りました。

http://xoops.trpg-labo.com/modules/wiki/?Menu/xtran

[XCL22][module] Leprogress

先日言っていた進捗管理のモジュールの解説。

セクション系やニュース系のモジュールで投稿が完了したら、

XCube_DelegateUtils::call('Legacy_Progress.AddItem' $title, $dirname, $target_name, $id);

で、投稿した記事を Leprogress の進捗管理に載せることができます。簡単ですね。

審査が完了したら、Leprogress から、

XCube_DelegateUtils::call('Legacy_Progress.UpdateStatus' new XCube_Res($result), $dirname, $target_name, $id, $status);

を発行しますので、モジュール側でこのデリゲートに対する処理(記事のステータスを公開にする、など)を書くことで、「審査が終わったら公開」などのモジュールを作ることができます。

f:id:kilica:20100131204244g:image

また、Leprogress が扱うデリゲートは XCL2.2 で追加される legacy/class/interface/AbstractProgressDelegate.class.php の Legacy_AbstractProgressDelegate を継承しています。もし、Leprogress とは別の進捗管理を実現したい場合、このクラスを継承したデリゲートを持つ進捗管理モジュールを作成すれば、進捗管理部分だけを差し替えることができます。

[module] XCCK

ニュージーランドの Dirk Derom さんが中心になって開発を進めようとしている XCL モジュールに XCCK というのがあって、ふんふんと見ていたのですが、いつの間にか Lead Developer に祭り上げられていました。どうしてこうなった。

CosmoDB の後継モジュールにあたり、フィールドを好きに定義できる「汎用データベースモジュール」のひとつになります。

細かい仕様が良くわからないのでとりあえずプロトタイプを作り始めました。

主として想定しているのが学術論文の掲載のようで、数名で査読後公開、という機能が必要らしいのですが、どうもこの機能は別モジュールに切り出した方が良さそうなので、簡易ワークフローとして汎用的に使える承認モジュールもついでに作る予定です。

[module] Q&A(Xq) モジュール

だいたい作りました。あとは JavaScript とテンプレート調整、言語ファイルの整備あたり。

カテゴリのデリゲートで返すのはオブジェクトがいいのか配列がいいのか、どっちかなあ。

[XCL22][module] Q&A モジュール

なぜか非常に問い合わせが多い CQA の後継モジュール XQ を作り始めました(ありがとうございます、wye さん m(__)m )。

XCL2.2以降に搭載予定のカテゴリモジュールの検証も兼ねています。そのため、XCL2.2以降、カテゴリモジュール(Lecat)必須となります。したがいまして、PHP4 サーバでは動作しません。

CQA は Cubookmarken の次に古いモジュールなので、いま見直すと恐ろしいコードになっています。

後継である XQ は、CQA の機能を概ね引き継いでいます。とはいえ、細かい仕様は覚えていませんので、デグレードとかありそうです。

とりあえずロジック部分は大体終わったので、テンプレートにとりかかっています。が、これがかなり面倒くさい。と、とりあえず CQA のコピペで乗り切ろう。

[Web]lingr 復活

9月ごろに Lingr が復活してやったー!と思ったものの、ユーザ登録ができずに指をくわえて待っていたのですが、ひみつの(でもないけど)登録方法を見つけて早速登録しました。

その記念に、lingr の更新状況を表示するモジュールを作成。

新生 lingr には標準で bot 作成機能があります。作ったボットをチャットルームに置いておくと、誰かが発言したときに特定のURLをリクエストする、という単純な仕組みです。この bot 機能を使って、Lingr での発言を XOOPS サイトで表示するというモジュールを作りました。

http://xoops.trpg-labo.com/modules/lingr/

の右サイドの「更新状況」というのがそれです。まだ最低限の機能しか実装していません(^ ^;。

発言が連続すると Protector に引っかかりますのでご注意を。

といっても、このモジュールは使う方がいるとは思えない・・・。

さて、このモジュールを作るときにひとつ引っかかった点がありました。ボットは URL をたたくときに一緒に発言者、発言内容などを JSON で送ってくれるのですが、これが $_POST に入ってきません。今まで $_POST 以外には使ったことがなかったし、あちこちの解説を見ても $_POST で取得のことしか書かれていないのでどういうことだろうと詰まっていたのですが、

file_get_contents('php://input')

で POST の生データを取得する、というのが正解でした(^ ^;。

XOOPS 用のチャットルームも作りましたので、よろしければ以下からどうぞ (^ ^)

http://lingr.com/user/signup?letmein=xoops

[Web] Mockingbird

百式で紹介されていたウェブサイトのモックアップ作成サービスです。ブラウザだけで手軽に作り始めることができます。使い勝手もかなり良い。

最初、flex かと思っていたのですが、html なんですね。Cappuccino という、javascript ベースのフレームワークを使っているようで、これ自体も面白そう、というかすげー。

[XCL22] PHP5.3対応

PHP5.3 では parse_ini_file() がエラーを引き起こし XCL2.1 が動作しないため、XCL2.2 では settings/ を XOOPS_TRUST_PATH に移動させ、 /* */ を取り除くことになりました。

ついでに、cache, templates_c, class/smarty も trust_path 側へ移動。

また、deprecate を引き起こす & new も、XCL2.2 では PHP4 非対応になるので & を取り除く予定にしております。

[XCL22] jQuery

jQueryを扱うためのオブジェクトを$root->mContext->mAttributes にセットしておくことにしました。

一通りできましたので、svnにアップしました(Package_Legacy/branches/r2_2_00-branch/)。

簡単なサンプルコードは、phpBB をご覧ください。

settings/site_custom.ini [jQuery]で幾つか設定が可能です。

library=google
"local"を指定することで、サーバなどに置いたjQueryファイルを読み込んで使うことができます。その場合、jQueryファイルを置いた場所(url)を、MainUrl=http://example.com/common/jquery/jquery.js などのように指定してください。
MainVersion=1
読み込むjQueryのバージョンです。"library=google" の場合のみ関係あります。
UIVersion=1
読み込むjQueryUIのバージョンです。"library=google" の場合のみ関係あります。
usePrototype=0
prototype.js を使うかどうかを指定します。0は使用しない、1は使用するです。使用しないことを強く推奨します。
#prototypeUrl=
prototype.jsを使う場合のライブラリの場所(url)を指定します。当然、usePrototype=1の場合のみ有効です。使う場合は、頭のコメントアウト記号(#)をとってください。
#funcNamePrefix=j
prototype.jsを使う場合、jQueryの$()関数の名前を指定します。ここで指定した文字+$が、jQueryの$()関数の名前になります。例えば、"j"が指定されていれば、j$()になります。当然、usePrototype=1の場合のみ有効です。使う場合は、頭のコメントアウト記号(#)をとってください。

[XCL22] jQuery

相変わらず困ってる(^ ^;

とりあえず、デリゲートでの登録部分だけ載せとくかなあ。

ちなみに、デリゲートでの登録は、

登録したスクリプトが、すべての画面で読み込まれてしまう。

というのが問題点。

本当は RenderSystem か Root 以下のどこかに持たせておきたいところなのですが。

[XCL22]タグモジュール

2.3以降に搭載予定のタグモジュールを作り始めました。

今後はPHP5を前提にするという方針がxoopserverさんから出ましたので、PHP5, trust_path 利用で。

ざっとデリゲート部分をコーディング。モジュール本体での表示を考えなければ、これだけでいいかも(^ ^;

でもこれ、dirname の取得に困りますね。

[XCL22][xoops] OSC2009名古屋

行って来ました。XOOPS Cube Legacy 2.2 の新機能と、今後の XCL についてしゃべってきました。

ご出席いただいた方は20人くらいかな。

[XCL22] RSS出力

> 例えば、現在、サイトのRSSを出力するモジュールとして、

とか昨日書いていましたが、昔のニュースモジュールで使われていた backend が拡張されているんですね。

しだだかった。

To Top