日別アーカイブ: 2010 . 6 / 9

joomlaでpreタグ内の改行がbrタグに自動的にに変換されてしまう件について

joomlaでeditorにJCEを使用し、記事にコードをのせるためにsyntax highlighterを使ったときに、せっかくコードをきれいに保存してくれるのにタイトルのような余計な機能のせいで、見苦しくなってしまう。こういった「余計な機能」はセキュリティーやユーザビリティの観点から「妥当な機能」なのだろうが、やっぱり柔軟性にかける。このような記事に対するユーザーへの制限はjoomlaに限らないが、javascriptがかけなかったり、tableがかけなかったりするのはつらい。。

今回はjoomlaのpreタグ内の改行がbrタグに変換されてしまうのを回避すべく、まさぐってみた。
ただし。コードを把握しているわけでなく、適当にいじったら出来たというメモ程度のものなので、まねしないほうがいいかもしれません。

/plugins/editors/jce/tiny_mce/tini_mce.jsを編集
1:「j=j.replace(/\r?\n|\r/g,” “);」の一文を削除(これをやるとpreタグに限らず全部のタグに改行が可能になる。)
2:「{pattern:/(<pre[^>]*>)(.*?)(<\/pre>)/g,encode:1},」の一文を削除(これをやるとpreタグ内の改行がbrタグに変換されなくなる。)

上記の方法では結局保存したときに元に戻ってしまう模様。コードと数時間格闘したが、結局わからずじまい。。。

途方にくれていたとき、ハッと発想の転換が。

「そうだ。Syntax Highlighter側でbrタグを改行であると認識させちゃえばいいんじゃね?」

というわけで、またまた力技だが
plugins/content/syntaxhighlighter/core/shCore.js を編集するのですが、
plugins/content/syntaxhighlighter/src/shCore.jsが元のファイルのようなので
予め、plugins/content/syntaxhighlighter/core/shCore.jsをそのファイルで上書きます。
そして、plugins/content/syntaxhighlighter/core/shCore.js を編集。

1081行目あたりにある for(var i = 0; i < elements.length; i++) というループの中で、
elements[i]がtargetという変数に代入される前に下記の2行を加えてelements[i]の内容を書き換えます。

elements[i].innerHTML = elements[i].innerHTML.replace(/\<br*\>/g,”\n”);
elements[i].innerHTML = elements[i].innerHTML.replace(/\<*code*\>/g,””);

2行目はjoomlaで編集してるとpreタグの中に入ってくるcodeタグもついでに消しています。

これでとりあえず解決(?)です。

光より速い通信技術

少し前に、事業仕分け騒動で「光より速い通信技術」という発言がインターネット上で話題になりました。この発言に疑問を持った方の言い分は「光より速いものなんてあるわけないじゃん」ということらしいのですが、結論からいえばそれは誤解でしょう。ここで言っている「光」とは「フレッツ光」とか「auひかり」とかのことを指しているわけで、つまり「それらのサービスより速い通信技術」というわけです。

そう、インターネットはまだまだ速くなる余地があります。最近IBMワトソン研究所がゲルマニウム半導体を用いた超高速光受信機の開発に成功したそうです。これにより従来の通信速度を4倍に上げることが出来るとのことです。つまり、光回線は様々な箇所でインプット・アウトプットを繰り返していて、それらを行っている通信機器の性能がボトムネックになっているので、性能を上げることによって速度を上げられることになります。

しかし実際には通信はたくさんの場所を経由しているのでどこかでボトムネックがあれば恩恵は感じられないかもしれませんね。