MODx0.9.5付属のFCKEditorのアップローダ(manager/media/brwoser/mcpuk)でマルチバイト文字列を名前に持つファイルをアップロードすると、色々と面倒なことになります。
削除も出来なくなってしまうことがあるので、アップロード・選択・削除が可能になるパッチを書いてみました。(編集やファイル名変更はできません)
実用上殆ど役には立たないでしょうが、間違えてUPしてしまった物を消すくらいには使えます。
2回rawurlencodeしています。
はやくMODx 2.0でないかなあ
MODx0.9.5付属のFCKEditorのアップローダ(manager/media/brwoser/mcpuk)でマルチバイト文字列を名前に持つファイルをアップロードすると、色々と面倒なことになります。
削除も出来なくなってしまうことがあるので、アップロード・選択・削除が可能になるパッチを書いてみました。(編集やファイル名変更はできません)
実用上殆ど役には立たないでしょうが、間違えてUPしてしまった物を消すくらいには使えます。
2回rawurlencodeしています。
MODx CMSにWordPressを埋め込むMODxのプラグイン+スニペット、WordPress Integratorのバージョン1.0.0を公開しました。
Love WordPressだけど固定ページの扱いに不満がある方、MODxファンだけどblog機能の貧弱さに嘆いている方にお勧め。
続きを読む…
MODx 0.9.2までは、フレンドリーURL改良で書いたような変更を施せば、エイリアスパス(ドキュメントの階層構造をURLに含める)がOFFの状態でもエイリアスパス様のURLを生成できました。
0.9.5からはcleanDocumentIdentifierという関数が変更され、エイリアスパスOFF状態では上記エイリアスパス様のURLは受け付けなくなくなりましたが、以下のパッチを当てることで再び使用できるようになります。
続きを読む…
ValueDomainユーザはXREAでCore2 T7200 2.00GHz x 2サーバ(s248-250)が取れるようになっていたので、今使っているPentium M 2.00GHzサーバからの乗換えを視野にアカウント取得し、ついでに最近バージョンアップしたMODxの0.9.5をインストールしてみました。
管理画面やデフォルトテンプレート(実際に使うときはこれは関係ありませんが)の美しさに感動してしまいます。0.9.2.1のあの微妙なカラーリングを思えば夢のようです。
ドキュメントのテンプレートやテンプレート変数を一括で変更できるDoc Managerという便利そうなモジュールもデフォルトで入っています。
やはりというかなんというか、沸いた頭で作った現7bitのテンプレートも嫌になってきたので乗り換えて色々遊んでみようと思います。
最近掲示板のスパムが激増してきたので、ものすごく今更感はあるものの、少しは耐性のある掲示板スクリプトをと思って書きました。7bit 掲示板
名前は安直に111chにしてみました。勿論二進数表記。
これをMODxに埋め込もうと拙作DirectPHPスニペットを使ったりしましたが、どうもMODxだと生のPHPを呼び出すのには苦労します。「このIDが接頭辞になるURLでは直接サーバのファイルを呼び出す」ような設定が欲しい。(http://nanabit.net/bbs/*.phpで/assets/cgi/bbs/*.phpの結果を埋め込んで表示)
近々別サイトをMODxで作成予定なので、最新版をチェックしてそういう機能がなかったら作ってみるかもしれません。
MODx0.9.2.1のmanagerではpluginの引数を保存するときに=や;などの特定の文字が消えるバグがあります。
それらの特殊文字をURLエンコードすることでバグを回避するパッチを書きました。
伴って、サイト外部へのリンクに文字列を付加するプラグイン、ForeignLinks 1.0.1を公開。
既にこのサイトでは使用していますが、外部へのリンク(例えばgoogle.com)に自動的に特定の文字列を付加(この場合imgタグ)するMODxのpluginを書いています。その引数を指定していて気づいたのですが、
といった状況。HTMLのタグには危ない文字が多いので取りあえずBase64でお茶を濁していますが、考えてみれば末尾に=が入る可能性も。これはMODx自体に手を加える必要がありそうです。折角本家フォーラムのIDも取ったのでコミットしてみようか…
完成したら移動しますが、取りあえずBase64利用版を載せてみます。
/*<?/**/
/********************************************************************
* ForeignLink v1.0.0 MODx plugin
* by uglydog, http://nanabit.net/, uglydog.7bit[a]gmail.com
*
* What is it:
* add prefix/suffix to foreign links.
*
* Config:
* &p_out_a=Prefix before a-tag;string; &p_in_a=Prefix in a-tag;string; &s_in_a=Suffix in a-tag;string; &s_out_a=Suffix after a-tag;string; &domain=The domain of this site;string;
*
* note: prefix/suffix should be encoded in base 64.
*
* History:
* v1.0.0 20060711 released
*******************************************************************/
//decode base64
list($p_in_a, $p_out_a, $s_in_a, $s_out_a) = array_map(base64_decode, array($p_in_a, $p_out_a, $s_in_a, $s_out_a));
$e = &$modx->event;
switch($e->name){
case "OnWebPagePrerender":
$o = &$modx->documentOutput; // get a reference of the output
function process_links($match, $p_in_a, $p_out_a, $s_in_a, $s_out_a, $domain){
$url = parse_url($match[2]);
if( $url['scheme'] && $url['host']
&& $domain != substr($match[2], 0, strlen($domain)) )
return $p_out_a.$match[1].$p_in_a.$match[3].$s_in_a.$match[4].$s_out_a;
return $match[0];
}
$o = preg_replace_callback('|(<a[^>]*hrefs*=s*"([^">]*)"[^>]*>)([^>]*?)(</a>)|i', create_function('$matched', "return process_links($matched, '$p_in_a', '$p_out_a', '$s_in_a', '$s_out_a', '$domain');"), $o);
break;
default:
return; // stop here - this is very important.
}
/*?>*/
やっとMODx blog環境(NewsPublisher+Ditto)でカテゴリをまともに扱えるようになりました。先日のNewsPublisherTaggingに加え、Dittoの改造を含めてスニペットCategoryTagsを配布開始。やたら導入が面倒ですが…
無理な姿勢でキーボードを叩いていたためか手首痛い。やはり可動アームレストを買うしか…