本日公開したばかりで、早速の不具合ですいません。
ビジュアルリッチエディタにテーブル編集用のボタンを追加するプラグイン
上記のプラグインを適用すると既存のアドバンストツールバーが消えてしまうという不具合がありました。
うっかりミスです。すいません。
早速修正しておきましたので、もしすでにご利用中の方はすいませんがインストールしなおしてください。
修正前
既存のアドバンストツールバーがない!

修正後
アドバンストツールバーの下段にtable関連のボタンが追加される。

本日公開したばかりで、早速の不具合ですいません。
ビジュアルリッチエディタにテーブル編集用のボタンを追加するプラグイン
上記のプラグインを適用すると既存のアドバンストツールバーが消えてしまうという不具合がありました。
うっかりミスです。すいません。
早速修正しておきましたので、もしすでにご利用中の方はすいませんがインストールしなおしてください。
既存のアドバンストツールバーがない!

アドバンストツールバーの下段にtable関連のボタンが追加される。

WordPress のビジュアルリッチエディターにテーブルを編集するためのボタンを追加するプラグインを作った。
ビジュアルリッチエディタにテーブル編集用のボタンを追加するプラグイン

最近、WordPress サイトばかりつくっていて、プラグインやらテーマやらを量産しているので、しばらくこういうコネタのプラグインの公開が続くと思います。
以上は、この数日中ではないかと。。。
特定の日時までのカウントダウンをリアルタイムに表示する JavaScript のクラスを作った。
<div id="countdown">
<div><span id="time">2011/01/01</span> まで</div>
<div id="timer"></div>
</div><!--end #countdown-->
--中略--
<script type="text/javascript">
var datetime = document.getElementById('time').childNodes[0].nodeValue;
var cd = new countDown(datetime);
cd.message = 'あけおめ!';
cd.display('timer');
</script>
countDown クラスのソースは以下のとおり。 (ダウンロードはこちら)
適当にカスタマイズしてご利用下さい。
function countDown(time) {
var day = new Date(time);
this.period = day.getTime();
}
countDown.prototype.message = '終了しました!';
countDown.prototype.display = function(ele){
this.obj = document.getElementById(ele);
this._getCounter(this);
}
countDown.prototype._getCounter = function(_this){
var timer = setTimeout(function(){_this._getCounter(_this);}, 1000);
var now = new Date();
var total = parseInt((this.period - now.getTime()) / 1000);
if (0 >= parseInt(total)) {
_this.obj.innerHTML = _this.message;
clearTimeout(timer);
return;
}
var sec = total % 60;
var min = ((total - sec) % 3600) / 60;
var hour = (total - min * 60 - sec) / 3600;
_this.obj.innerHTML = '';
var data = {
'時間': hour,
'分': min,
'秒': sec
};
for (var i in data) {
var node = document.createElement('span');
node.className = 'counter';
var value = document.createTextNode(data[i]);
node.appendChild(value);
_this.obj.appendChild(node);
_this.obj.appendChild(document.createTextNode(i));
}
}
setTImeout() のあたりが、いまいちエレガントじゃない気がする。ていうかよくわからん。
昨日、公開した WordPress プラグイン “mce_preformatted” は、整形済みテキストを本文に挿入するために、 textarea 内に入力されたテキストの HTML エスケープを行っている。
通常、HTML のエスケープには正規表現を使用するが、このプラグインでは違うアプローチで HTML をエスケープしている。
以下は正規表現を使用した方法。
function htmlEscape(s){
s=s.replace(/&/g,'&');
s=s.replace(/>/g,'>');
s=s.replace(/</g,'<');
return s;
}
obj.innerText (Firefox では obj.textContent)を使用した方法。
function htmlEscape(s){
var obj = document.createElement('pre');
if (typeof obj.textContent != 'undefined') {
obj.textContent = s;
} else {
obj.innerText = s;
}
return obj.innerHTML;
}
結果は全く同じ。
たいした根拠はないのだが、正規表現よりもエコな気がするんだけど、どうなんだろう?
以下のようにすると、さらにエレガントかもしれない。
String.prototype.htmlEscape = function(){
var obj = document.createElement('pre');
if (typeof obj.textContent != 'undefined') {
obj.textContent = this;
} else {
obj.innerText = this;
}
return obj.innerHTML;
}
こうしておくと、以下のように書けるので、ちょっとだけかっこいい。
var str = '<strong>Cool!</strong>'; alert(str.htmlEscape());
WordPress のビジュアルリッチエディター(tinyMCE)に独自のボタンを追加する機会が多いので、それを容易にするためのクラスをつくった。
このクラスは WordPress プラグインではなく、WordPress プラグインを制作するときに使用するためのクラスです。
WordPress のビジュアルリッチエディターでは、tinyMCE というJavaScript のライブラリを使用しているが、本家の tinyMCE では WordPress に実装されている機能よりはるかに多くの機能がプラグインとして配布されている。
これらの全てを実装することは、サポートや使い勝手の面でベターとは思わないが、いくつかの機能を追加したいと感じることは多い。
そこで、これらの tinyMCE プラグインを追加しやすくするためのクラスをつくった。
WordPress の tinyMCE にプラグインを追加するには、WordPress 側のプラグインで以下のアクションフィルターを使用する。
このクラスでは、最大5つのパラメータをコンストラクタの引数に渡すことで、これらのアクションフィルターを定義する。
以下のような感じで使用する。
new mcePlugins(......)
引数には以下の項目を設定する。
上記の個々の項目の詳細については、ご自身で調べまくってください。
このサイト上でも、今後、すこしずつご紹介していきます。
JavaScript で任意の日付をUTCとみなして、ローカル時間に変換するメソッドを作った。(ってほどでもないけど。。。)
せっかくなので、Date オブジェクトのメソッドとしてコール可能なようにした。
以下のソースを適当にコピペしてご利用下さい。
Date.prototype.utc2local = function()
{
this.setTime(
this.getTime()-(this.getTimezoneOffset()*60*1000)
);
}
以下のような感じで。
Date.utc2local() を実行した後は、Date オブジェクトにセットされている時間が UTC になります。
var d = new Date('2010/9/1 00:00:00'); // UTCの日時
d.utc2local();
alert(d.getHours()); // ローカルな時間
こんなものは、たくさんあると思うのですが。。。
表示されているページにリンクを貼るためのHTMLを取得するためのブックマークレット。
上記のリンクをブックマークバーあるいは右クリックでお気に入りに追加しておけば、任意のページへリンクを貼るためのHTMLが入力されたTEXTAREAがページの右上に表示される。
ちなみにブックマークレットのソースは以下。
こういう方法もある。
追記: 8/10 09:00頃だと思いますが、解消されたようですね。
追記:8/10 07:00ごろにbit.lyからまもなく問題を解消するよとメールがあったので、以下の問題は近日中に解消されると思います。
書こうか迷ったのですが、bit.lyにセキュリティホールがあるようです。
いろいろと検索した結果、すでにいくつかのソースが公開されているようなので、あえてここでもご紹介します。
こういうことが可能である旨は私からもbit.lyのサポートに報告済みです。
crossdomain.xmlが非常にゆるい制限になっているため、Flashを使用した悪意のあるページに、bit.lyにログインしたままアクセスすると、メールアドレスやAPIキーを取得されます。
Flashには、crossdomain.xmlというファイルで許可されているコンテンツは別のドメインからでも取得可能にするという、独自の仕組みがあります。
bit.lyは、このcrossdomain.xmlが非常にゆるい制約になっているため、別のサーバーにあるHTMLコンテンツから、bit.lyのコンテンツを取得可能になっています。
bit.lyにログインしたまま、以下のURLにアクセスするとメールアドレスが取得されているのが、おわかりかと思います。
http://firegoby.theta.ne.jp/labo/bitly/
実際には、どこにも保存しておりませんので、ご安心下さい。
bit.lyはログインしたままにしないで、こまめにログアウトするよう心がけることを、強くご推奨します。
前回までの記事で何度かご紹介したが、ようやくWotrdPressのリンクをオンラインブックマークふうに使用するためのプラグインができた。
WordPressのリンクをブックマークとして共有するプラグイン
これを使用すると、いちいち同期作業みたいなことをしなくても、ほぼ全てのブラウザでブックマークの共有が可能になる。
なんとiPhone版のSafariでも!
というわけで、ぜひお試しください。
以前の記事で、WordPressのリンクをブックマークのように使用できないか?ということで、ごちゃごちゃ書いた。
で、あの後、致命的に設計不良があることに気がついた。
前回の記事ではXBELをWordPressのプラグインで出力して、それをブックマークレットからごちゃごちゃみたいなことを計画していたのだが、クロスドメイン制約にひっかかることを完全に忘れてた!
というわけで、結局JSONを使用することで解決して、ほぼ出来上がった。
とりあえず、デモンストレーション。
以下のリンクを、ブックマークバーにドラッグ&ドロップするか右クリックでお気に入りに登録してから使用する。
とりあえず、現在はテスト中。
まもなく配ります。
今回制作したプラグインにはブックマークレットがついている。
これを使用するには、以下のようにリンクの部分をドラッグ&ドロップする。
ブックマークを実際に使用するには、さきほど登録したブックマークレットをクリックする。
ブックマークの下の方に “Add Bookmark Here…” というリンクがあるのでそれをクリックすると、WordPressのリンクの追加画面に移動する。
リンク先のURLやタイトルは自動的に入力されるので、必要に応じてカテゴリー等を登録すればブックマークレット側に反映される。
ちなみに、リンクの登録を行うためのインターフェースはログインユーザー以外には表示されない。