MTAppSetLabel

[セレクタ, 旧テキスト, 新テキスト] の配列で、ページ内の要素テキスト(ラベル等)をまとめて書き換える。MTAppGetLabel の出力を編集して使う。

現在のページにある要素のテキスト(ラベルなど)をまとめて書き換える静的メソッドです。[セレクタ, 旧テキスト, 新テキスト] の配列を渡すと、各セレクタの要素配下のテキストノードを再帰的に走査し、旧テキストを新テキストに置換します。MTAppGetLabel で生成した配列表記を編集して渡す使い方が基本です。

構文

$.MTAppSetLabel(array);

静的メソッド($.MTAppSetLabel)です。

パラメータ

引数説明
arrayArray書き換え定義の配列。各要素は [セレクタ, 旧テキスト, 新テキスト] の3要素配列

戻り値

なし(undefined)。

使用例

$.MTAppSetLabel([
    ['#title-label', 'タイトル', '記事名'],
    ['#customfield_note-field label', 'メモ', '備考']
]);

MTAppGetLabel の出力(["#title-label", "タイトル", "タイトル"] など)をコピーし、3番目の要素を変更後のラベルに書き換えて渡すと効率的です。

user.js での記述例

user.js(「デザイン → user.js を編集」)に書く場合は、mtappVars.screen_id で画面を判定して呼び出します。

(function ($) {
    if (typeof mtappVars !== 'object') return;
    if (mtappVars.screen_id === 'edit-entry') {
        $.MTAppSetLabel([
            ['#title-label', 'タイトル', '記事名'],
            ['#customfield_note-field label', 'メモ', '備考']
        ]);
    }
})(jQuery);

補足

  • 各定義について、セレクタで最初に一致した要素の配下のテキストノードを再帰的に置換します。要素ノードは再帰、テキストノードは旧→新に置換します。
  • セレクタが何にも一致しない場合、その定義は飛ばして次へ進みます(1つの誤ったセレクタで全体が止まることはありません)。
  • セレクタが #title-label の場合は、タイトル入力欄(#title)の placeholder も新テキストに更新します。
  • 置換はテキストノード単位の文字列置換です(HTML としては解釈されません)。1つのテキストノード内に旧テキストが複数回現れる場合、置換されるのは最初の1か所です。

MTAppCustomize との違い

ラベルの変更は MTAppCustomize でもできますが、性格が異なります。

  • MTAppSetLabel: [セレクタ, 旧テキスト, 新テキスト]配列で複数のラベルを一括置換します。任意のセレクタ(フィールドのラベルに限らずテーブル見出しなども)を対象にでき、テキストノードの旧→新を部分置換するため、ラベル内の必須マークやアイコンなどの子要素は残ります
  • MTAppCustomize: フィールド単位(basename)の総合カスタマイザで、ラベル変更はその一機能です。ラベルは .text()要素の中身を丸ごと置換するため、子要素があると一緒に消えます。一方でクラス追加・表示制御・ヒント・折りたたみなども併せて行えます。

複数ラベルのテキストだけを手早く改名するなら本メソッド、1フィールドをスタイルやヒント込みで整えるなら MTAppCustomize が向いています。

関連

  • MTAppGetLabel — 本メソッドに渡す [セレクタ, ラベル, ラベル] 配列を生成する開発支援。
  • MTAppCustomize — ラベル変更を含むフィールドの総合的なカスタマイズ(特定フィールド向け)。