まいにち@ぐだぐだ

明日と言わず、今日から…ぐだぐだ(^_^;

jotをサポートで使おう!?jot_ex.js

jotをサポートで使おう!?jot_ex.js

MEGUさんのサイトの掲示板が発端で作りました。

jotのタイトルに re[返信元のコメント番号]:返信元のタイトル と、自動で入力したり、コメント分を引用したり。
コメントでプレビューを追加したり、スニペットコードなどをコピペでそのまま貼れるようにしてみました。

実装方法は二通りあります。

SEO Strict URLsを利用している場合はコンテンツに起こして、テンプレートで呼び出します。
単独のテキストファイルにして物理的に呼び出すのも可能です。
コンテンツに起こしてSEO Strict URLsを利用していない場合は、拡張子が.js出来ないので機能しません。

その場合はもう一つの方法、テンプレートに直接埋め込むか、チャンクで展開させます。

※ここにあったjot_ex.jsのソースは削除しました。添付のファイルをダウンロードして確認してください。(2009/07/17追記) 

これがスクリプト本体になります。
ファイル名は jot_ex.js である必要はありません。

チャンクを新規で作ってこのまま貼り付けてテンプレートから{{jot_ex}}などとして、呼び出すのもありかもしれません。
この方法や、テンプレートに直接記述する場合は
<script language="javascript" type="text/javascript"><!--
ここにスクリプト本体を記述またはチャンクを呼び出すコード
//--></script>
という風に、HTMLのスクリプトタグで囲む必要があります。

次はJotのテンプレートへの細工です。
ファイルは2つです。

1つは chunk.form.inc.html 。
場所は75行目の前後にです。


    <div id="preview-subject[+jot.id+]"></div>
    <div id="preview[+jot.id+]" style="background-color: #EFEFEF;margin: 5px;padding: 5px;"></div>

    <div style="float:right;width: 100px;"></div>
    <input type="hidden" id="tmpStr[+jot.id+]">
    <input tabindex="[+jot.seed:math=`?+5`+]" id="submit[+jot.id+]" name="submit" type="submit" value="[+form.edit:is=`1`:then=`Save Comment`:else=`Post Comment`+]" />
    <input type="button" name="preview" value="preview" onclick="jotpreview('[+jot.id+]')">
    <input type="button" name="escost" value="escape submit" onclick="escapecomm('[+jot.id+]')">

 


赤文字の部分が追加された文字列です。style=や、ボタンの文字列(inputタグのvalue=)はお好みで変更しても問題ありません。

2つめはchunk.comment.inc.html 。
しかしながら、前回のカスタマイズと変わっていませんが…まあ、一応。
35行目から38行目にかけてです。


             <span class="jot-subject" id="jot-subject[+comment.postnumber+]">[+comment.title:limit:esc+]</span><form><input type="button" value="re[No]:" onclick="retitleno('[+comment.postnumber+]')"><input type="button" value="coments>" onclick="recontents('[+comment.postnumber+]')"></form><br />
             <span class="jot-poster"><b>Reply #[+comment.postnumber+] on :</b> [+comment.createdon:date=`%a %B %d, %Y, %H:%M:%S`+]</span>
             <hr />
             <div class="jot-message" id="jot-message[+comment.postnumber+]">[+comment.content:esc:nl2br+]</div>


赤文字の部分が追加された部分になります。

そして、最後に。
jot_ex.jsを使うコンテンツのテンプレート(デザインの)の<body>タグに onload="decodecomm()" を追加してください。
ページが表示されてからjot_ex.jsによる書き換えが発生しますので、端末の環境によっては表示が書き換えられるまでに時間がかかったり、エラーになる場合があります。

jotのテンプレートを既にカスタマイズされている場合には行数などが記述したソースとは違っている場合があります。オリジナルをカスタマイズする場合を例に挙げたモノですので、それぞれのカスタマイズファイルに合わせて読み替えてください。

jot_ex.jsでは書き換えの対象に追加しているid属性で囲まれているコンテンツを対象にしています。idを付加しているタグの内側にさらにタグが存在する場合はなどは考慮していません。

このカスタマイズは自己責任で適用してください。
どんな被害が出ても、おいらは一切の責任を負いません。

 


2009/07/15 コメント文を引用したときに<br>コードが除去されずに転記されていたのを改修しました。元々おまけ機能だったのであまり深く考慮せずに実装したのがそもそもの間違い…と言うことで<(_ _)> 添付されているファイルは差し替えてあります。ダウンロードしてそのまま入れ替えていただければおけーです。

 


javascript部分 jot_ex.js …HTMLタグを特殊文字に置き換えないバージョン
javascript部分 jot_ex2.js …HTMLタグを特殊文字に置き換えるバージョン(2009/07/17追記)
テンプレート chunk.form.inc.html
テンプレート chunk.comment.inc.html

javascript部分はHTMLタグの<>を特殊文字に置き換えているバージョンと何も手を加えていないバージョンがあります。ともに、ファイル名はjot_ex.jsである必要性はありません。(2009/07/17追記)
テンプレート2点は、最後の拡張子が txt になっています。 html に変更してから使ってください。
テンプレートはMODxに同梱のオリジナルに変更を行っています。
jotの文字化け対策のwordwrapパラメータを削除したテンプレートにてカスタマイズを行っています。

MODxのライセンスによりGPLライセンスにて公開します。


Write a comment

  • Required fields are marked with *.

First | Previous | Showing comments 21 to 23 of 23
hirahira
Posts: 11
Comment
re[2]:Re: jotをサポートで使おう!?jot_ex.js

Reply #3 on : Mon July 13, 2009, 23:47:28
MEGUさん、こんばんわ

ご迷惑をおかけしてます。
MODxのバージョン違いで差とか出るモノでしょうか?
うちにあるMODxに内包のしているjotのchunk.form.inc.htmlの67行目には、
<textarea tabindex="[<!---->+jot.seed:math=`?+4`+<!---->]" name="content" cols="50" rows="8" id="content[<!---->+jot.id+<!---->]">[<!---->+form.field.content:esc+<!---->]</textarea>
となっています。
プレビューは、このtextareaのid属性を検索しています。
MEGUさんの掲示板のソースを見たら
<dd><textarea tabindex="3" name="content" id="content" cols="50" rows="8"></textarea></dd>

となっていますから、id="content"の部分で、[<!---->+jot.id+<!---->]が入っていないのが原因ということになります。
MODxのバージョン違いで入っていなかったのなら、注意事項ですね。
一応、MODxの圧縮書庫を再解凍してオリジナルを確認したら、オリジナルにはid="content[<!---->+jot.id+<!---->]と言う記述がされていたので、おそらくバージョン違いなんだと思われます。
id="contentの後ろに[<!---->+jot.id+<!---->]記述してあげればおそらく大丈夫かと思います。
お忙しいと思いますが、お試ししていただけませんでしょうか?
お願いします。
MEGU
Posts: 12
Comment
Re: jotをサポートで使おう!?jot_ex.js

Reply #2 on : Mon July 13, 2009, 20:52:51
こんにちは~。。すみませんんんん。

Let's で実装しようと試みているのですが、previewだけエラーになってしまいました。

1.オリジナルのjotのテンプレートを丸コピーして、jotのフォーム用とコメント用のテンプレートを作った
2.jot_ex.js を読み込む行は、head~head の中に記述した
3.jot_ex.jsは、コンテンツではなく、実ファイルとして置いた
4.jot_ex.js は、こちらのページからダウンロードした
5.body タグに onload="decodecomm()"を追記した
6.chunk.form.inc.html と、chunk.commnet.inc.htmlは、該当箇所のみ、このページからコピペした。

結果
previewをクリックすると、以下のエラーが出るようです。
---*---*---*---*---*---
エラー: document.getElementById("content" + jotId) is null
ソースファイル: http://modx.liolion.net/assets/js/jot_ex/jot_ex.js
行: 45
---*---*---*---*---*---

お心当たりがありましたらお教え頂けると助かります。よろしくお願いします。
MEGU
Posts: 12
Comment
Re: jotをサポートで使おう!?jot_ex.js

Reply #1 on : Mon July 13, 2009, 15:52:13
こんにちは~。おおお~。プレビュー機能が!
なかなか、試す時間が取れなくてすみません。。

escape submitが、[<!---->+~+<!---->]などをかけるようにするコマンドですね。
First | Previous | Showing comments 21 to 23 of 23