MediaWiki‐ノート:Vector.js

ページのコンテンツが他言語でサポートされていません。

強制プレビューの更新[編集]

mw:OOjs UI が入ったせいで未ログイン利用者に対する強制プレビューが画面上はクリック可能であるにも関わらず、実際の要素は "disabled" になっていて送信できない状態になっており、ユーザーエクスペリエンス上非常によろしくない事態になっています。更新の必要があります。console 上でざっくりと試したところ、有効化されているページ保存ボタンを無効化する場合 OO.ui.infuse( $( '#wpSaveWidget' ) ).setDisabled( true );で OOjs UI のボタン要素に対するボタンスタイルの更新を含む正しい無効化が行われるようです。OOjs UI への割り込みは、"data-ooui" 属性を持っている要素の ID を jQuery なり DOM (document.querySelector , document.getElementById 他) なりで渡してあげればいいようです。mw:OOjs_UI/Using_OOjs_UI_in_MediaWiki#Infusion 。 ただ、現状の強制プレビューは上の「なぜか保存できない」以外にも、次のような問題を抱えています。

  1. ヴィジュアルエディターからソース編集に切り替えた場合、アドレスが schema://FQDN/PATH/PAGENAME?action=edit&veswitched=1&oldid=NUM 形式であるため、現状のコードでは適用対象にならず、ボタンが disabled にならない
    関連として、mw:Extension:InputBox 経由の場合も現行コードでは適用されません(参考: Wikipedia:バグの報告#要望:調べもの案内で新規話題を空入力した場合の挙動について <固定版>)。
  2. ボタンが無効化されている理由が提示されていないため、編集を試みた利用者がプレビューを経ずに離脱してしまう可能性がある(マウスオーバー時に理由説明等が必要かもしれません)
  3. 本当の初心者であろうヴィジュアルエディター利用者には適用されないコードである ; ヴィジュアルエディター使用時の「変更を公開」 も存在しない「以上の記述」に対する同意を求める謎文言になっているのを、ついでに js でどうにかして直したい…

廃止してしまってもいいような気すらします。--rxy会話) 2017年12月8日 (金) 15:33 (UTC) 情報追記 --rxy会話2017年12月9日 (土) 05:45 (UTC)[返信]

quick hack 的には saveButton.disabled = true; 以下3行OO.ui.infuse( $( '#wpSaveWidget' ) ).setDisabled( true ); に置き換えればよさそうに見えますが、上記 3 点の問題は別途修正等対応が必要です。--rxy会話) 2017年12月9日 (土) 05:45 (UTC) 下線部追記 --rxy会話2017年12月9日 (土) 05:49 (UTC)[返信]
コメント MediaWikiのバージョンアップに伴う変更は、その都度行っていく必要があるものと思います。編集画面かどうかの判定は少々雑な部分があるとは思いますが、変更対象(この場合は投稿ボタンとプレビューボタン)があるかどうか、の判定を行うことで代替しても良いかと思います。機能不全を修正した後、必要な検討は別途行っても良いのではないでしょうか。--Frozen-mikan会話2017年12月9日 (土) 09:26 (UTC)[返信]
Wikipedia:バグの報告#要望:調べもの案内で新規話題を空入力した場合の挙動について を見る限り、機能していれば「完全に無用」とまでは言えないものなので、反対がなければ現行ユーザーの混乱を招きうる不具合を数日中にまず上記の quick hack を適用して、その後に現行仕様と想定漏れやその他 UX 上の問題に対応する方向で動こうと思いますが、如何でしょうか。--rxy会話2017年12月9日 (土) 09:45 (UTC)[返信]
コメント 暫定の対応に賛成します。それ以外の問題1,2,3についてコメントします。
  1. ライブプレビューがデフォルトで無効になっていますので、現状のようにURLで判定(&を取ればよさそう)でもいいでしょうし、wgActionでもいいと思います。ライブプレビューがデフォルトで有効になる可能性があるのであれば、#wikiPreviewの有無とstyle.displayでも判定できると思います。
  2. OO.ui.infuse('wpPreviewWidget').setFlags(['constructive','primary']);のように適当なフラグをつければなんとなくアフォーダンスになりそうです。
  3. ヴィジュアルエディターに実装するにはかなり強引になりそうです。汚いですがを書いてみたので使えるところがあればぜひ使っていただければと思います。
--Waiesu会話2017年12月10日 (日) 15:59 (UTC)[返信]
ひとまず応急処置を施しました。当初想定以上に書き換える羽目になりました。ドキュメント毎に書いてあることが違い(mw:OOjs_UI/Using_OOjs_UI_in_MediaWiki#Gadgets, mw:ResourceLoader/Core_modules#mw.loader.using, [1])、読み込み順序やサーバー側キャッシュにも翻弄されました。。。--rxy会話2017年12月18日 (月) 16:03 (UTC)[返信]
コメント ありがとうございます。お疲れ様でした。最近は「Wikipedia:カスタムJS」にて解説を追加してくださる方もいらっしゃいますが、mw.loader.using のモジュール名に何を入れたら良いのか、目安になるドキュメントが見つからないですね。--Frozen-mikan会話2017年12月20日 (水) 17:14 (UTC)[返信]
mw.loader.using,ドキュメントは見当たりませんでしたが、基準となるであろうソースコードは発見しましたので置いておきますね。っphab:source/mediawiki/browse/master/resources/Resources.php 95行目以降第一レベルインデント--rxy会話) 2017年12月25日 (月) 15:44 (UTC) 追記: phab:source/mediawiki/browse/master/resources/Resources.php$2722 2722 行以降(現時点のソースでは…)が ooui 系統で、何も考えずに 'oojs-ui' を読み込ませると ooui 系統は全部読み込むようです。--rxy会話2017年12月25日 (月) 15:47 (UTC)[返信]
ありがとうございます。大雑把に見当が付いている時には良さそうです。--Frozen-mikan会話2017年12月26日 (火) 05:16 (UTC)[返信]
返信 (Waiesuさん宛) 1 については確認していないので現時点でのコメントを避けます。2. UX 的に各種ヘルプ文書と画面等が食い違って不味い可能性があります。「なんとなく」ではダメです。そこは手を抜かずに disabled にしている理由をマウスオーバー時にでも表示すべきでしょう。 3. ご提案はありがたいのですが、検証する気力や他人にコードレビューをする気力が現時点ではないので気が向いたら見るかもしれませんし、必要だと思った誰かがやるかもしれません。。。--rxy会話2017年12月30日 (土) 14:01 (UTC)[返信]