
Ubuntu日本語フォーラム

ログインしていません。
petitbootang さんの投稿 #6:
編集画面でドラッグしてボタンを押せば、自動的に引用貼付みたいな機能があれば良いかなぁ、なんて。
ubuntu-ja-post-number の改良版のアイデアが沸いたので実装してみました.
機能追加によって名称を ubuntu-ja-quick-quote に変えましたので,使う場合は ubuntu-ja-post-number はアンインストールして下さい.
投稿番号 #x を BBCode で置き換えた右隣に引用ボタンを付け,クイック投稿のメッセージ欄に引用を挿入する機能を追加しました.
「クイック投稿のプレビューボタン」と「1頁に表示する投稿数の制限(25)を無くす」機能と併用すると,複数投稿の引用がちょっと便利になります.
// ==UserScript==
// @name ubuntu-ja-quick-quote
// @namespace http://localhost/
// @description Hack for Ubuntu Japanese Forum: Add Quick Quote Buttons
// @include https://forums.ubuntulinux.jp/viewtopic.php?*
// ==/UserScript==
(function(){
var nbsp = String.fromCharCode(160);
var message = document.getElementsByName('req_message')[0];
function sliceQuote(html)
{
var b = html.indexOf(']', html.indexOf('name="req_message"')) + 1;
var e = html.indexOf('</textarea>', b) - 1;
return html.slice(b, e);
}
function quickQuote(conr)
{
function insertQuote()
{
var post = document.evaluate('div[@class="box"]/div[@class="inbox"]/div[@class="postfootright"]/ul/li[@class="postquote"]/a[starts-with(@href,"post.php")]',
conr.parentNode.parentNode.parentNode,
null,
XPathResult.FIRST_ORDERED_NODE_TYPE,
null).singleNodeValue;
var request =
{
method : 'GET',
url : post.href,
onload : function(detail)
{
message.value += '[quote]' + conr.textContent.slice(1, -1) + ':\n\n' + sliceQuote(detail.responseText) + '\n';
}
};
GM_xmlhttpRequest(request);
}
var button = document.createElement('input');
button.type = 'button';
button.value = 'Q';
button.addEventListener('click', insertQuote, false);
conr.appendChild(button);
}
var list = document.evaluate('id("punviewtopic")/div[starts-with(@class,"blockpost")]/h2/span/span[@class="conr"]',
document,
null,
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
null);
for (var i = 0; i < list.snapshotLength; ++ i)
{
var conr = list.snapshotItem(i);
var post = conr.textContent.slice(0, -1);
var href = conr.nextSibling.href;
var user = document.evaluate('div[@class="box"]/div[@class="inbox"]/div[@class="postleft"]/dl/dt/strong/a',
conr.parentNode.parentNode.parentNode,
null,
XPathResult.STRING_TYPE,
null).stringValue;
conr.textContent = nbsp + '[url=' + href + ']' + user + nbsp + 'さんの投稿' + nbsp + post + '[/url]' + nbsp;
conr.style.width = '70%';
if (message)
{
quickQuote(conr);
}
}
})();オフライン
ry さんの投稿 #52:
後、引用の際に投稿番号が入ると便利になりそうですが、どうも無理そうに思えます <ubuntu-ja-linked-quote
#51 の ubuntu-ja-quick-quote は投稿番号 #x も入ります.
オフライン
このトピックの質問に対する解決法としては、非常にいいアイデアだと思っていますが、回答者ごとに引用方法があまりにも多様化しすぎると、それはそれで多数の投稿者による引用を含めたやりとりがすごく見づらくなりそうな気もします。
引用方法に関しては、僕はデフォルトで十分という立場です。
※ ちなみに、引用方法を統一すべきと主張しているわけではありません。
オフライン
投稿番号は使って欲しくない、いずれ消す可能性もある、と言うお話が以前にありましたので、引用の際に投稿番号が入る機能は不要じゃないかと思います。
https://forums.ubuntulinux.jp/viewtopic.php?pid=54600#p54600
このあたりの経緯があって現在までの議論に至っているわけですので、そのあたりは踏襲すべきと思います。
kiyop さんの下記の記述が、やはり一番簡潔だと思います。
もっとも重要なのは投稿された内容であり、
その次に重要なのが、その投稿がどの段階(時点)でどのトピックでなされたのかであり、
投稿者のハンドルネームはあまり重要ではない
敬称についての問題は恐らく解決が付かないので、
quote= のあとにハンドルを表示する現在のやり方のままでいくなら、「さん」は付けないことに決めてしまう。
「さん」は本文中で付ければよいので、付けたい派ももう気にしないことにする。
CoC がどうとか言うのとは、もう別。
もしくは、
パーマリンクを使って引用元を参照する方式にするなら、単純に出典を明示するだけの表示にとどめるべきかと。
「○○さんの投稿 #x」 とかになっているのは、結局従前の問題に戻っているので、あまりよろしくないと思います。
リンクを開けば誰の投稿かは分かるので、単純に下記のようにリンクだけ張るか、引用元を参照のような簡潔なリンク名にするかにしないと、感情や表現の評価をめぐっての問題が燻り続けて解決しないでしょう。
https://forums.ubuntulinux.jp/viewtopic … 505#p55505 より引用
もっとも重要なのは投稿された内容であり、
その次に重要なのが、その投稿がどの段階(時点)でどのトピックでなされたのかであり、
投稿者のハンドルネームはあまり重要ではない
クリックして引用元を参照する
もっとも重要なのは投稿された内容であり、
その次に重要なのが、その投稿がどの段階(時点)でどのトピックでなされたのかであり、
投稿者のハンドルネームはあまり重要ではない
※kiyop さんを何度も引用して済みません。他意はありません。
ここのところ、一番良いと思っているもので。
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン
念のため断っておきますが,
投稿したスクリプトのリンクテキスト「何某さんの投稿 #0」は,「この書式が良い」と主張するためのものではありません.
「さん」は性格上どうしても落とせなかったので,「による」を「さんの」にして字数をオリジナルに合わせた以外は,
使う人に(無くなるかもしれない投稿番号も含め)カスタマイズの材料を提供するためほぼ機械的に詰め込んだものです.
vine_user さんの投稿 #54:
回答者ごとに引用方法があまりにも多様化しすぎると、それはそれで多数の投稿者による引用を含めたやりとりがすごく見づらくなりそうな気もします。
私もそう感じ始めています.カスタマイズ合戦になるのでは「良からぬ副作用」です.
// 私は,少なくともこのトピックでは,引用部分のリンクテキストはスクリプトが挿入するものから変えないことにしました.
最近は Googleドキュメント や FireFox アドオンの QuickNote で投稿文を編集してからメッセージ欄に貼り付けています.
投稿を引用する場合は,クイック引用[Q]ボタンでメッセージ欄に溜めてから,Googleドキュメントに一括コピー&ペースト&編集しています.
選択テキストの右クリックで QuickNote へ送り込むコンテキストメニューがでるので,
投稿へのリンクだけが欲しい場合は各投稿の右肩に置いた BBCode は当初の想像以上に役に立ってます.
パーマリンクのコピー&ペーストなら,確かに左肩の日付のリンクで十分なのですが,
他のエディタで編集してから投稿していると,「どのリンクが誰のどの投稿のものなのか」の手がかりがあると作業がしやすいので,
投稿番号は無くして欲しくないですね… // 無くなっても,greasemonkey スクリプトに投稿番号を計算するコードを追加すれば済むのですけど…
kiyop さんの投稿 #56:
1ページの投稿の表示数の上限(25)を撤回するスクリプトもいただけると有難いです。
「上限撤廃」と「クイック引用」は,ファイルを別にしていると,「クイック引用」が不完全にしか働かないので機能を統合する必要が有りました.
現在テスト中です.動作は問題無さげなのですが,投稿にはもう少し整理する時間を下さい.
オフライン
「敬称」の問題は読み手がどう受け取るかで「不愉快」な気分になることが有る。
だから「敬称は付けるべきだ」、「礼儀的な意味合いで付けるべき」「その様な事を強要すべきでない」「不愉快とは感じない」。
この辺から「気になる」と「気にしない」に分けると「気にしない」人は問題無し。
「気になる」人への対応として#1の
もっとも重要なのは投稿された内容であり、
その次に重要なのが、その投稿がどの段階(時点)でどのトピックでなされたのかであり、
投稿者のハンドルネームはあまり重要ではない
辺りを元に提案が出ているのですよね。
vine_userさんの#54の意見や、petitbootangさんの#55にある「敬称についての問題は恐らく解決が付かないので、」
私も似た様な感覚です。
ただ、私の場合は状況によって意見が変わる「その他大勢」な参加者ですが、、、
einundzwanzighundertsechsさんへ、
#50拝読しました。
今回の場で出た良材料をトピックに組み込んで進めると、問題を肥大化、複雑化するだけのようです。
#46の考えは今は変わりました。
「有効に利用できる手段であって、直ぐに問題に取り入れるには性急である」です。
オフライン
これについては、となりのトピックでもこんなかたちの話題があったように、「読み手は敬称の有無を気にしないようにしましょう」 という結論しかありえません
--------------------------------------------
----------------------(連続した改行で行間を空けられないための代用)
--------------------------------------------
ここでの議題は、「どのような引用がもっとも読みやすいと思われるか」だと思いっています
引用ができないフォーラムが非常に読みにくいだろうことは、想像に難くありません
引用文だけで引用元が明記されていない場合はどうでしょう (著作権的な部分はここでは無視します)
引用元の表記が発言者名 (ハンドル) だけではどう? (現状のフォーラムのしくみ)
引用元が発言番号だけだと?
発言番号+発言元へのリンクでは?
それぞれの場合に於おける、読みやすさと発言時の手間、仕組みを組み込む際の手間、これらのトレードオフがどこでバランスするかではないでしょうか
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン
kiyop さん,Wiki への記述,御苦労様でした.
「上限撤廃」は「クイック引用」をより便利にするサブ機能と位置づけて,ubuntu-ja-quick-quote のアップグレードの形式をとることにしました.
より正確な機能の説明は「26 以上の投稿を同一頁に読み込み・表示するボタンを付けた」です.
これらの機能はどちらもフォーラムと「裏」で通信することで実現しています.
セキュリティが気になる方は,(前バージョンの ubuntu-ja-quick-quote においても) GM_xmlhttpRequest に関数に渡される引数を精査下さい.
予め断っておきますが,それほど親切には作り込んでいません.// 「何故このボタンがこの名前なんだ?」と思う人もいるかも.
例えば,クイック引用では,カーソル位置に関係なくメッセージ欄の末尾に引用を追加します.
26 以上表示では,内部リンクのクリックでもページ遷移が起こり表示が25以下に戻ってしまいます.
それらを解決しようとするとあっという間にコードが膨れ上がり,フォーラムに貼り付けて公開するには憚られるサイズ(現状でもかなり大きい)になってしまいます.
// 私は,独りで書いたスクリプトは,多くの方々の目に触れる方法で公開するのが,より公明正大だと思っています.
// ダウンロードして解凍しないと内容が解らないのでは,何らかの仕掛けがされていると疑ってしかるべきです.
// ==UserScript==
// @name ubuntu-ja-quick-quote
// @namespace http://localhost/
// @description Hack for Ubuntu Japanese Forum: Add Quick Quote & Page Buttons
// @include https://forums.ubuntulinux.jp/viewtopic.php?*
// ==/UserScript==
(function(){
var nbsp = String.fromCharCode(160);
var message = document.getElementsByName('req_message')[0];
function sliceQuote(html)
{
var b = html.indexOf(']', html.indexOf('name="req_message"')) + 1;
var e = html.indexOf('</textarea>', b) - 1;
return html.slice(b, e);
}
function quickQuote(conr)
{
function appendQuote()
{
var post = document.evaluate('div[@class="box"]/div[@class="inbox"]/div[@class="postfootright"]/ul/li[@class="postquote"]/a[starts-with(@href,"post.php")]',
conr.parentNode.parentNode.parentNode,
null,
XPathResult.FIRST_ORDERED_NODE_TYPE,
null).singleNodeValue;
var request =
{
method : 'GET',
url : post.href,
onload : function(detail)
{
message.value += '[quote]' + conr.textContent.slice(1, -1) + ':\n\n' + sliceQuote(detail.responseText) + '\n';
}
};
GM_xmlhttpRequest(request);
}
var button = document.createElement('input');
button.type = 'button';
button.value = 'Q';
button.addEventListener('click', appendQuote, false);
conr.appendChild(button);
}
function replacePostNumber(node)
{
var list = document.evaluate('div[starts-with(@class,"blockpost")]/h2/span/span[@class="conr"]',
node,
null,
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
null);
for (var i = 0; i < list.snapshotLength; ++ i)
{
var conr = list.snapshotItem(i);
var post = conr.textContent.slice(0, -1);
var href = conr.nextSibling.href;
var user = document.evaluate('div[@class="box"]/div[@class="inbox"]/div[@class="postleft"]/dl/dt/strong/a',
conr.parentNode.parentNode.parentNode,
null,
XPathResult.STRING_TYPE,
null).stringValue;
conr.textContent = nbsp + '[url=' + href + ']' + user + nbsp + 'さんの投稿' + nbsp + post + '[/url]' + nbsp;
conr.style.width = '70%';
if (message)
{
quickQuote(conr);
}
}
}
var punviewtopic = document.getElementById('punviewtopic');
replacePostNumber(punviewtopic);
var pagelink = document.evaluate('div[@class="linkst"]/div[@class="inbox"]/p[@class="pagelink conl"]',
punviewtopic,
null,
XPathResult.FIRST_ORDERED_NODE_TYPE,
null).singleNodeValue;
var here = document.evaluate('strong',
pagelink,
null,
XPathResult.NUMBER_TYPE,
null).numberValue;
var last = document.evaluate('a[position()=last()][starts-with(@href,"viewtopic.php?id=")]',
pagelink,
null,
XPathResult.FIRST_ORDERED_NODE_TYPE,
null).singleNodeValue;
if (! last) return;
var path = last.href.replace(new RegExp('(&p=)(\\d+)$'), '$1');
last = last.textContent;
function slicePosts(html)
{
var b = html.lastIndexOf('<div', html.indexOf('class="blockpost'));
var e = html.lastIndexOf('<div', html.lastIndexOf('class="postlinksb"'));
return html.slice(b, e);
}
function insertPageBefore(nombre, before)
{
var div = document.createElement('div');
var inner = document.createElement('div');
var page = document.createElement('input');
var last = document.createElement('input');
function loadPage(detail)
{
div.innerHTML = slicePosts(detail.responseText);
replacePostNumber(div);
}
function goLast(detail)
{
loadPage(detail);
div.lastChild.previousSibling.scrollIntoView(true);
}
function request(func)
{
return { method: 'GET', url : path + nombre, onload : func };
}
inner.className = 'blockpost';
inner.align = 'center';
page.type = last.type = 'button';
page.value = 'ページ ' + nombre;
last.value = 'ラスト ' + nombre;
page.addEventListener('click',
function ()
{
GM_xmlhttpRequest(request(loadPage));
},
false);
last.addEventListener('click',
function ()
{
GM_xmlhttpRequest(request(goLast));
},
false);
punviewtopic.insertBefore(div, before);
div.appendChild(inner);
inner.appendChild(page);
inner.appendChild(last);
}
if (1 < here)
{
var top = document.evaluate('div[starts-with(@class,"blockpost")][1]',
punviewtopic,
null,
XPathResult.FIRST_ORDERED_NODE_TYPE,
null).singleNodeValue;
for (var i = 1; i < here; ++ i)
{
insertPageBefore(i, top);
}
}
if (here < last)
{
var postlinksb = document.evaluate('div[@class="postlinksb"]',
punviewtopic,
null,
XPathResult.FIRST_ORDERED_NODE_TYPE,
null).singleNodeValue;
for (var i = here + 1; i <= last; ++ i)
{
insertPageBefore(i, postlinksb);
}
}
})();本トピックへのスクリプトの投稿はこれまでとします.
greasemonkey のスクリプトの書き方等は -- もちろん本フォーラムに関連するスクリプト限定で -- 別のトピックを立てて下されば相談にのれるかも知れません.
greasemonkey によるカスタマイズの参考として,現在私が使用している比較的簡単な機能は
- スマイリーをデフォルトでオフにする
- 投稿に NG ワード(個人情報に関わるもの,私の場合はユーザ名=本名)が含まれる場合は投稿をブロックする
- NGワードを伏せ字に置き換えるボタン
等で,実装に取り組む予定なのは
- メッセージ欄に入力した文章をページ遷移に備えて一時保存する
- クイック引用的に,リンク付きの,トピックタイトル,投稿番号,ユーザ名,等を選んで挿入できる仕組み
等です.
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン