Skip to content

fix(managermanager): mm_renameField などのラベル操作ルールを rc の編集画面に対応 - #478

Merged
yama merged 1 commit into
mainfrom
fix/mm-renamefield-label
Sep 23, 2026
Merged

yama merged 1 commit into
mainfrom
fix/mm-renamefield-label

Conversation

@yama

@yama yama commented Sep 22, 2026 •

Copy link
Copy Markdown
Member

概要

mm_rules の mm_renameField() が効かない不具合を直します。同じ原因で壊れていた他の mm_* ルールもあわせて直します。

原因

2 つあります。

  1. ラベルのクラス変更に ManagerManager が追随していない(1.2.0J 以降)
    編集画面の行テンプレートでラベルが span.warning から span.mutate-field-title に変わりました(f70e7938f, 39a8d48)。ウィジェットは span.warning を探していたため、要素が見つからず何も起きていませんでした。
  2. rc で $modx->config が既定値で丸ごと上書きされる(1.3.0rc)
    フレーム廃止で frames/menu.php が同じリクエスト内で読み込まれるようになりました。buildMenu() は topmenu_site が無いと $modx->config = $default_config; で config を差し替えるため、システム設定を一度も保存していないサイトでは ManagerManager 本体が $modx->config['base_path'] を参照できずに PHP 警告が出て、編集画面の描画が止まっていました。

変更内容

  • mm_renameField / mm_hideFields / mm_requireFields / mm_ddMaxLength / mm_ddGMap: ラベルのセレクタを span.mutate-field-title に変更
  • mm_renameField / mm_hideFields の menuindex: 入れ子テーブル前提の辿り方をやめ、closest("tr.mutate-field-row") で行を特定
  • mm_renameField('content'): 出力 JS の行末にセミコロンを追加
  • frames/menu.php: config を差し替えずに、足りないキーだけを既定値で補う(+=)

影響範囲

ルール 修正前 修正後
mm_renameField content 以外すべて効かない 通常項目・TV(text/textarea/checkbox/dropdown)・menuindex・show_in_menu・which_editor・weblink で反映
mm_hideFields('menuindex') 入力欄は隠れるがラベルが残る ラベルも隠れる
mm_requireFields 必須マークが付かず、アラートの項目名が空 マークが付き、項目名が出る
mm_ddMaxLength 超過アラートの項目名が空 項目名が出る
mm_ddGMap 見出しが空(コード上の確認のみ) 項目名が出る

mm_changeFieldHelp / mm_renameTab / mm_renameSection / mm_createTab / mm_moveFieldsToTab は元から動いていることを確認しました(変更なし)。

menu.php の修正は ManagerManager 以外にも効きます。これまで該当サイトでは、シェル表示のページで DB のシステム設定がすべて既定値で上書きされていました(例: friendly URL の設定が編集画面の alias 欄に反映されていなかった)。

確認手順

  1. mm_rules チャンクに次を書き、キャッシュをクリアする
    mm_renameField('pagetitle', '見出し');
    mm_renameField('menuindex', '並び順');
    mm_renameField('<TV名>', 'TVの新しい名前');
    mm_hideFields('menuindex');
    mm_requireFields('menutitle');
  2. リソース編集画面を開き、ラベルが変わること、menuindex がラベルごと隠れること、menutitle に * が付くことを確認する
  3. menutitle を空にして保存し、アラートに「Menu title」と出ることを確認する
  4. topmenu_* を system_settings から削除した状態(新規インストール直後相当)でも、編集画面が最後まで描画されてルールが効くことを確認する

Playwright(Chromium)とローカルの Docker 環境(1.3.0rc1 を新規インストール、デモコンテンツ入り)で上記をすべて確認しました。

Closes #476

🤖 Generated with Claude Code

https://claude.ai/code/session_01715QYq9MrhezVezp8WXJs6

Summary by CodeRabbit

  • バグ修正
    • ManagerManagerの各種ウィジェットで、フィールド名の表示・非表示、名前変更、必須表示、文字数超過時の警告が正しいフィールドタイトルを対象にするよう改善しました。
    • 地図ウィジェットで、セクション名が正しく表示されるよう修正しました。
    • メニュー初期化時に、既存の設定値が保持され、不足している設定のみ補完されるよう修正しました。

1.2.0J で編集画面のラベルが span.warning から span.mutate-field-title に
変わり、ラベルを探す mm_renameField / mm_hideFields(menuindex) /
mm_requireFields / mm_ddMaxLength / mm_ddGMap が要素を見つけられなく
なっていた。

あわせて、フレーム廃止後は frames/menu.php が同じリクエスト内で
読み込まれるため、topmenu_site が未保存のサイトでは buildMenu() が
$modx->config を既定値で丸ごと上書きし、ManagerManager 本体が
base_path を参照できず編集画面の描画が止まっていた。不足分だけを
補うように変更する。

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01715QYq9MrhezVezp8WXJs6
@coderabbitai

coderabbitai Bot commented Sep 22, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: modxcms-jp/evolution-jp/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: da222755-3412-4ce2-aa0b-76c060c417c0

📥 Commits

Reviewing files that changed from the base of the PR and between 3682ff5 and 4c6f5e1.

📒 Files selected for processing (6)
  • assets/plugins/managermanager/widgets/ddgmap/ddgmap.php
  • assets/plugins/managermanager/widgets/ddmaxlength/ddmaxlength.php
  • assets/plugins/managermanager/widgets/mm_hidefields/mm_hidefields.php
  • assets/plugins/managermanager/widgets/mm_renamefield/mm_renamefield.php
  • assets/plugins/managermanager/widgets/mm_requirefields/mm_requirefields.php
  • manager/frames/menu.php

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

ManagerManagerの各ウィジェットが参照するラベル要素を更新しました。buildMenu() の既定設定適用では、既存の設定を保持して不足キーだけを補完するように変更しました。

Changes

ManagerManager修正

Layer / File(s) Summary
ラベル要素参照の更新
assets/plugins/managermanager/widgets/*
mm_ddGMap、mm_ddMaxLength、mm_hideFields、mm_renameField、mm_requireFields のラベル参照先を更新しました。menuindex では tr.mutate-field-row 内の先頭セルを参照します。
メニュー設定の保持
manager/frames/menu.php
topmenu_site が未設定の場合、$modx->config 全体を置き換えず、不足する設定だけを $default_config から補完します。

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~15 minutes

Change: Bug fix · Severity of issue fixed: Medium

Merge Risk: ⚪ Minimal · up to 4c6f5

No concrete merge-blocking risk remains in the reviewed changes.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed タイトルは、ManagerManager のラベル操作ルールを rc の編集画面に対応させる主要な変更を明確かつ簡潔に示しています。
Description check ✅ Passed 概要、変更内容、確認手順を具体的に記載しています。影響範囲、原因、関連 Issue、検証環境も記載されており、テンプレートの必須情報を十分に満たしています。
Linked Issues check ✅ Passed Issue #476 のコーディング要件を満たしています。mm_renameField、mm_hideFields、mm_requireFields、mm_ddMaxLength、mm_ddGMap はラベルのセレクターを span.mutate-field-title に更新しています。menuindex は tr.mutate-field-row 基準で処理しま…
Out of Scope Changes check ✅ Passed 変更対象は Issue #476 が指定する ManagerManager の5ルールと、同 issue が指定する manager/frames/menu.php の設定補完処理に限定されています。セレクター更新、menuindex の行特定、セミコロン追加、設定値保持は、いずれも対象不具合の修正に直接関連します。無関係な変更は確認できません。
Docstring Coverage ✅ Passed Docstring coverage is 83.33% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 6 functions across 6 files.
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@yama
yama marked this pull request as ready for review September 23, 2026 00:03
Copilot AI lite review requested due to automatic review settings September 23, 2026 00:03

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🔵 Needs a closer look

Missing individual topmenu_* defaults are not restored when topmenu_site remains present.

Review effort: Lite
Findings: None

What changed in this PR

Updates ManagerManager label rules for the current resource editor DOM and preserves configuration during menu generation.

Changes:

  • Updates label selectors and menuindex row traversal.
  • Fixes field-name display for validation and map widgets.
  • Preserves existing configuration while applying menu defaults.
File Reviewed change
manager/​frames/​menu.php Updates menu configuration fallback handling.
assets/​plugins/​managermanager/​widgets/​mm_requirefields/​mm_requirefields.php Updates required-field labels and validation messages.
assets/​plugins/​managermanager/​widgets/​mm_renamefield/​mm_renamefield.php Updates label selectors and row lookup.
assets/​plugins/​managermanager/​widgets/​mm_hidefields/​mm_hidefields.php Updates field and label hiding behavior.
assets/​plugins/​managermanager/​widgets/​ddmaxlength/​ddmaxlength.php Fixes validation field-name display.
assets/​plugins/​managermanager/​widgets/​ddgmap/​ddgmap.php Fixes map heading field-name display.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@yama
yama merged commit ba42a14 into main Sep 23, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ManagerManager: mm_renameField などラベルを操作するルールが効かない

2 participants