「MediaWiki:Common.js」の版間の差分

提供: 小樽のじかん事典
編集の要約なし
編集の要約なし
1行目: 1行目:
/**
/**
  * アカウント作成画面のラベル強制書き換えおよびバリデーション
  * アカウント作成画面のラベル強制書き換えおよびバリデーション
* MediaWiki 1.44.3 対応版
  */
  */
(function() {
(function() {
6行目: 7行目:
     if (mw.config.get('wgCanonicalSpecialPageName') === 'CreateAccount') {
     if (mw.config.get('wgCanonicalSpecialPageName') === 'CreateAccount') {
          
          
        // ページ読み込み完了時と、少し遅れて(動的生成対策)実行
         var customizeAccountForm = function() {
         var customizeAccountForm = function() {
             // 1. メールアドレスのラベル変更
             // 1. メールアドレスのラベル変更(省略可能を削除)
             var emailLabel = $('label[for="wpEmail"]');
            // 複数のセレクタを用いて、確実に要素を特定します
             if (emailLabel.length) {
             var $emailLabel = $('label[for="wpEmail"], #mw-createaccount-join-form label:contains("メールアドレス")');
                 emailLabel.text('メールアドレス');
             if ($emailLabel.length) {
                 $emailLabel.text('メールアドレス');
             }
             }
              
              
             // 2. 本名のラベルを「HN(省略可能)」に変更
             // 2. 本名のラベルを「HN(省略可能)」に変更
             var realNameLabel = $('label[for="wpRealName"]');
             var $realNameLabel = $('label[for="wpRealName"], #mw-createaccount-join-form label:contains("本名")');
             if (realNameLabel.length) {
             if ($realNameLabel.length) {
                 realNameLabel.text('HN(省略可能)');
                 $realNameLabel.text('HN(省略可能)');
             }
             }
              
              
             // 3. メールアドレスをHTML5レベルで「必須」にする
             // 3. メールアドレス入力をブラウザレベルで必須にする
             var emailInput = $('#wpEmail');
             var $emailInput = $('#wpEmail');
             if (emailInput.length) {
             if ($emailInput.length) {
                 emailInput.attr('required', 'required');
                 $emailInput.prop('required', true);
                // HTML5のバリデーションを有効化
                $emailInput.attr('aria-required', 'true');
            }
           
            // 4. アカウント作成ボタンが押された際の最終チェック
            var $submitButton = $('#wpCreateaccount');
            if ($submitButton.length) {
                $submitButton.on('click', function(e) {
                    if ($emailInput.length && !$emailInput.val()) {
                        alert('メールアドレスは必須項目です。');
                        $emailInput.focus();
                        e.preventDefault();
                        return false;
                    }
                });
             }
             }
         };
         };


         // 即時実行
         // DOMの構築を待って実行
         customizeAccountForm();
         $(document).ready(function() {
         // MediaWikiの動的なUI生成を考慮し、少し遅延させて再度実行
            customizeAccountForm();
            // 動的な変更を監視(MutationObserver)
            if (window.MutationObserver) {
                var observer = new MutationObserver(function() {
                    customizeAccountForm();
                });
                observer.observe(document.body, { childList: true, subtree: true });
            }
        });
       
         // フォールバック:0.5秒後と2秒後にも実行
         setTimeout(customizeAccountForm, 500);
         setTimeout(customizeAccountForm, 500);
        setTimeout(customizeAccountForm, 2000);
     }
     }
})();
})();

2025年12月27日 (土) 10:52時点における版

/**
 * アカウント作成画面のラベル強制書き換えおよびバリデーション
 * MediaWiki 1.44.3 対応版
 */
(function() {
    // アカウント作成画面(Special:CreateAccount)でのみ実行
    if (mw.config.get('wgCanonicalSpecialPageName') === 'CreateAccount') {
        
        var customizeAccountForm = function() {
            // 1. メールアドレスのラベル変更(省略可能を削除)
            // 複数のセレクタを用いて、確実に要素を特定します
            var $emailLabel = $('label[for="wpEmail"], #mw-createaccount-join-form label:contains("メールアドレス")');
            if ($emailLabel.length) {
                $emailLabel.text('メールアドレス');
            }
            
            // 2. 本名のラベルを「HN(省略可能)」に変更
            var $realNameLabel = $('label[for="wpRealName"], #mw-createaccount-join-form label:contains("本名")');
            if ($realNameLabel.length) {
                $realNameLabel.text('HN(省略可能)');
            }
            
            // 3. メールアドレス入力をブラウザレベルで必須にする
            var $emailInput = $('#wpEmail');
            if ($emailInput.length) {
                $emailInput.prop('required', true);
                // HTML5のバリデーションを有効化
                $emailInput.attr('aria-required', 'true');
            }
            
            // 4. アカウント作成ボタンが押された際の最終チェック
            var $submitButton = $('#wpCreateaccount');
            if ($submitButton.length) {
                $submitButton.on('click', function(e) {
                    if ($emailInput.length && !$emailInput.val()) {
                        alert('メールアドレスは必須項目です。');
                        $emailInput.focus();
                        e.preventDefault();
                        return false;
                    }
                });
            }
        };

        // DOMの構築を待って実行
        $(document).ready(function() {
            customizeAccountForm();
            // 動的な変更を監視(MutationObserver)
            if (window.MutationObserver) {
                var observer = new MutationObserver(function() {
                    customizeAccountForm();
                });
                observer.observe(document.body, { childList: true, subtree: true });
            }
        });
        
        // フォールバック:0.5秒後と2秒後にも実行
        setTimeout(customizeAccountForm, 500);
        setTimeout(customizeAccountForm, 2000);
    }
})();