NP_cles()

123456789101112131415161718192021222324252627282930

エディタに機能ボタン追加 (FireFox対応)

 
投稿者:hsur 投稿日時:2006-02-12 - 22:45
カテゴリー:Nucleus Tips - / - トラックバック(3)- Views: 291

Nucleusのエディタにボタンを追加する方法については、これまでにまみおさんや、ネケトさんが紹介されている(参考を参照)のですが、紹介されているとおりに改造した場合Firefoxではうまく動作しません

最近、僕のブラウザはすっかりFirefoxがデフォルトになっているのでこのjavascriptをFirefox対応に書き直してみたいと思います。Javascriptはちょっと苦手なんですががんばってみます。

今回のミッション

Nucleusのエディタに以下の2つのボタンを追加する
「特殊文字変換(<、>、&を&lt;、&gt;、&amp;、"を&quot;、'を&#039;に変換)」するボタン
選択範囲を<blockquote>で囲むボタン

ソースをみたところ、mozilla系のブラウザ(含Firefox)でtextareaの内容を書き換えたり、選択した部分のテキストを取得したりするにはmozHogehoge()*1を使わなければいけないようなので、スクリプトをこれらを使うように書き換えてみました。

編集が必要なファイルは以下の3つ

nucleus/javascript/edit.js nucleus/libs/PAGEFACTORY.php nucleus/language/japanese-utf8.php(UTF-8の場合)

完成するとこんな感じになります

編集画面 - エディタに機能ボタン追加 (FireFox対応)

改造のポイント

1.nucleus/javascript/edit.js (110行目付近)

function italicThis() { insertAroundCaret('<i>','</i>'); }

このような部分があるので下記のようになるように書き換える

function italicThis() { insertAroundCaret('<i>','</i>'); } // cles::blog core hack function blockquoteThis() { insertAroundCaret('<blockquote>','</blockquote>'); } function entitiesThis() { entitiesCaret(); } // cles::blog core hack

2.nucleus/javascript/edit.js (292行目付近)

/* some methods to get things working in Mozilla as well */

このような部分があるので下記のようになるように書き換える

// cles::blog core hack function entitiesCaret () { var textEl = lastSelected; if (textEl && textEl.createTextRange && lastCaretPos) { var caretPos = lastCaretPos; caretPos.text = caretPos.text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;').replace(/'/g, '&#039;'); } else if (!document.all && document.getElementById) { newText = mozSelectedText().replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;').replace(/'/g, '&#039;'); mozReplace(document.getElementById('input' + nonie_FormType), newText); } updAllPreviews(); } // cles::blog core hack /* some methods to get things working in Mozilla as well */

3.nucleus/libs/PAGEFACTORY.php(302行目付近)

$this->_jsbutton('paste','pasteThis()',_ADD_PASTE_TT . " (Ctrl + V)");

このような部分があるので下記のようになるように書き換える

$this->_jsbutton('paste','pasteThis()',_ADD_PASTE_TT . " (Ctrl + V)"); // cles::blog core hack $this->_jsbutton('blockquote',"blockquoteThis()",_ADD_BLOCKQUOTE_TT); $this->_jsbutton('entities',"entitiesThis()",_ADD_ENTITIES_TT); // cles::blog core hack

4.nucleus/libs/PAGEFACTORY.php(339行目付近)

$this->_jsbutton('link',"ahrefThis()",'');

このような部分があるので下記のようになるように書き換える

$this->_jsbutton('link',"ahrefThis()",''); // cles::blog core hack $this->_jsbutton('blockquote',"blockquoteThis()",_ADD_BLOCKQUOTE_TT); $this->_jsbutton('entities',"entitiesThis()",_ADD_ENTITIES_TT); // cles::blog core hack

5.nucleus/language/japanese-utf8.php(493行目付近)

define('_ADD_PASTE_TT', 'ペースト');

このような部分があるので下記のようになるように書き換える

define('_ADD_PASTE_TT', 'ペースト'); // cles::blog core hack define('_ADD_ENTITIES_TT', '特殊文字変換'); define('_ADD_BLOCKQUOTE_TT', '引用'); // cles::blog core hack

6.画像の追加

以下の2つの画像をnucleus/imagesに追加

参考

Nucleusのエディタにボタン追加 - Reichsarchiv ~世界帝王事典~
[18] エディタに機能ボタン追加 @ nakahara21

  • *1: mozHogehoge自体はedit.jsであらかじめ定義されています

このエントリは役に立ちましたか?

  

トラックバックについて [policy]

Trackback URL:
Trackbacks
こちらの記事を参考に、このブログでもネタバレボタンが使えるようにしましたー。 ここにネタばれが表示されまーす こんな感じになります:01: 本当はこちらの記事を参考にエディタにボタンを追加したかっ...
DIARY (2008/07/30 13:01)
ローカルでトラックバックできてないようです。 まだ仕組みを完全に理解したわけじゃないので、なんとも・・。 FuncyURLにしたせいか、action.phpが自動広告機能ひっかかってるか・・ ↓結果: うはwwww...
カエルの一生 (2006/05/06 05:05)
このブログですが、コメントスパムを大量にくらいました。 本日の午前2時あたりから約700件ほどスパムを撃たれまくりだったようです。 前の記事を書いて再構築したら、どうもおかしな表示になっていたので気づ...
days (2006/03/07 15:03)

Comments [policy]

No comments yet

Add Comments

コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。

OpenID を使ってログインすることができます。

Identity URL: Yahoo! JAPAN IDでログイン