カテゴリー : Geeklog

このカテゴリーの登録数:3件 表示 : 1 - 3 / 3

Mar 08, 2009

テキストモードでのURL自動リンクの挙動

ポスト @ 20:55:11 | Geeklog

テキストモードでURLを記述すると、リンク文字列がサーバ名だけになる妙な現象

例えば、テキスト中に http://www.izumichan.com/goingout/tour.html と書くと、これが自動リンクに変換されるんですが、リンク文字列が www.izumichan.com とかになってしまうっていう非常にわけわからん現象。

これは lib-common.php の関数 COM_makeClickableLinks() の挙動です。
Geeklog では、編集した記事はそのままDBに保存されず、なぜかこの関数に通して、リンクを生成した状態で保存されてしまいます。それを再編集する場合、COM_undoClickableLinks() を通してこれを素のURLに戻してからフォームのテキストエリアに書き出されます。
後者は、単に<a>タグのhref属性を取り出すだけの仕様ですので、前者を直せばよいです。

//$text = preg_replace( $regex, '<a href="\\1\\5">\\6</a>', $text );
$text = preg_replace( $regex, '<a href="\\1\\5">\\0</a>', $text );
直前の正規表現の6番めのグループはまさに「ドメイン名」なので、それを「URLとしてマッチした全体」にすることで、元のURLが全部表示されるようにできます。
もちろん、既に保存されている記事にはこの規則は適用されないので、再度編集画面を開いて即保存、を繰り返さなければ修正はされません。

はてなダイアリーの記事へのリンクがおかしくなる

まさに前項の元になっている正規表現のミス。サブドメイン名が2文字以上ないとマッチしないので、d. の部分がURLとして認識されないっていうドタコミス。

//$regex = '/((ht|f)tp(s?)\:\/\/|~\/|\/)?([\w]+:\w+@)?(([a-zA-Z]{1}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5})?((\/?\w+\/)+|\/?)([\w\-%]+(\.[\w]{3,4})?)?((\?|&|&)[\w\-%]+=[\w\-%]+)*)/is';
$regex = '/((ht|f)tp(s?)\:\/\/|~\/|\/)?([\w]+:\w+@)?(([a-zA-Z]{1}([\w\-]*\.)+([\w]{2,5}))(:[\d]{1,5})?((\/?\w+\/)+|\/?)([\w\-%]+(\.[\w]{3,4})?)?((\?|&|&)[\w\-%]+=[\w\-%]+)*)/is';//yizumi 20090308 for hatena sub domain

Feb 02, 2009

テキスト編集のバグ・サーバ設定変更

ポスト @ 14:59:15 | Geeklog

テキストモードで画像を挿入すると、謎のエラー発生で再編集が不可能に

→バグです。画像を含んだ記事の編集でエラー

OP25B対策

→全然Geeklogには関係ありませんが、メールアカウントと込みでサイトを再販して、それで設定に引っかかりました。

  • tcpserverの設定を変更し、587ポートでの接続も受け付ける。
    • /usr/local/bin/tcpserver -H -R -l izumichan.com -v -x /usr/local/vpopmail/etc/tcp.smtp.cdb -u 10001 -g 10000 0 587 /var/qmail/bin/qmail-smtpd izumichan.com /usr/local/vpopmail/bin/vchkpw /bin/true 2>&1 | /var/qmail/bin/splogger smtpd 3 &
  • iptablesの設定を追加し、587ポートへの接続を受け付ける。
    • iptables -A INPUT -p tcp --dport 587 -j ACCEPT

Dec 12, 2008

Geeklog インストールメモ

単なるインストール時のメモです。

素のPlamo Linux環境でGeeklog日本語化版を入れると、月と曜日の表示が英語になる

→PlamoにはUTF-8の日本語ロケールが設定されていないから。

gunzip /usr/share/i18n/charmaps/UTF-8.gz
/usr/bin/localedef --charmap=/usr/share/i18n/charmaps/UTF-8 --inputfile=/usr/share/i18n/locales/ja_JP /usr/share/locale/ja_JP.utf8
gzip -f /usr/share/i18n/charmaps/UTF-8

記事をID順でソートさせたい

→index.phpにパッチが必要。Geeklog Wiki : 記事をID順にソートして表示する

カテゴリ別にブログ風の表示をしたい

→index.php?topic= で可能。URLリライトのハックをできるだけの脳の回転が現状ないので、Apacheの設定で /topic/ としてごまかした。