Skip to content

管理画面と QuickManager から jQuery を外し、本体も同梱しないようにする - #859

Merged
yama merged 5 commits into
mainfrom
refactor/823-remove-jquery
Oct 22, 2026
Merged

yama merged 5 commits into
mainfrom
refactor/823-remove-jquery

Conversation

@yama

@yama yama commented Oct 18, 2026 •

Copy link
Copy Markdown
Member

概要

互換性の変更: 管理画面は jQuery を同梱せず、読み込みません。$j / jQuery も定義されません。$j(...) に頼る外部のアドオン(他の作者のプラグイン、自作の ManagerManager のウィジェット、mm_rules に手で書いた JS)は、書き換えるか、jQuery を自分で用意してプラグインで読み込む必要があります(assets/docs/jquery-migration.md の「外部のアドオンの互換」)。本体は互換の $j も定義しません。QuickManager の設定 loadfrontendjq・noconflictjq、隠れた設定 mgr_jquery_path は廃止しました。

管理画面と QuickManager から jQuery を外し、jQuery の廃止(#679)を終える。外部のアドオンへの互換は、#858 で確定した案 2 で扱う。

Closes #823
Closes #858
Closes #838

決めたこと(#858:案 2)

  • manager/media/script/jquery/jquery.min.js ごと外す。jQuery に頼るアドオンは、利用者が jQuery を用意して読み込む
  • 隠れた設定 mgr_jquery_path と、QM の loadfrontendjq / jqpath は、読み込む先が無くなるので廃止する
  • 本体は $j を定義しない。jQuery を自分で読み込む利用者が、プラグインの側で $j も定義する(QM の noconflictjq と jQuery.colorbox.close の互換も外す)
  • これに伴い、仮決めの確認:QM の loadfrontendjq の新規インストールの既定 #838(loadfrontendjq の新規インストールの既定)は論点が無くなる

変更内容

  • manager/media/script/jquery/jquery.min.js を削除(約 87KB)
  • manager/actions/header.inc.php
    • jQuery を読み込まない(mgr_jquery_path による読み込みも削除)
    • $j を定義しない(var $j = jQuery.noConflict(); を削除)
  • QuickManager(@Version 1.5.7)
    • 公開側に jQuery を読み込む設定 loadfrontendjq と、読み込み先の jqpath を廃止
    • noconflictjq(サイトの jQuery に $j の別名を付ける)も廃止
    • qm.js の jQuery.colorbox.close を差し込む互換を削除。モーダルを閉じるのは parent.QM.close()(コアはすでにこちらだけを使う)
    • Qm::$jqpath は、旧版のプラグインのコードが代入するため宣言だけ残す(PHP 8.2 以降の動的プロパティの警告を避ける)
  • assets/docs/jquery-migration.md:「外部のアドオンの互換」を、jQuery を自分で用意してプラグインで読み込む案内に書き換え、廃止した設定を明記
  • csrf.js・helpers.php:jQuery がある前提のコメントを直した(動きは変わらない)

既存のサイトの QM のプロパティに保存済みの loadfrontendjq は、アップデート後も残るが、読まれないだけで害はない。

何が変わるか(リリース記事の候補)

  • 管理画面は jQuery を同梱せず、読み込まなくなる。$j / jQuery も無くなる
  • 他の作者のプラグインや、自作の ManagerManager のウィジェット・mm_rules に手で書いた $j(...) は動かなくなる。書き換えるか、jQuery を自分で用意して OnManagerMainFrameHeaderHTMLBlock のプラグインで読み込む
  • QuickManager は公開側に jQuery を読み込まず、$j も付けなくなる(設定 loadfrontendjq・noconflictjq は廃止)。parent.$j.colorbox.close() を呼ぶアドオンは parent.QM.close() に書き換える。サイトのテンプレートが jQuery を使うときは、テンプレートで読み込む

確認手順

Docker の検証環境(php 8.4 / mariadb 11)で、Playwright を使って確かめた。

$j を外したあと(1dbda4dc1)

確認 結果
新規インストール(サンプルサイトあり)+検証スキルのスモークテスト 6/6 PASS
新規インストールの QM のプロパティ noconflictjq / loadfrontendjq が無い
管理画面の 8 画面(トップ、リソースの編集・新規、システム設定、要素の管理、ユーザー一覧・編集、プラグインの編集)を直接開く・シェルで移るの 2 通り 16 通りとも $j と jQuery は undefined、JS のエラーなし
ログイン中の表側 QM のツールバーが出る。$j と jQuery は undefined で、$j を付けるスクリプトも出ない
QM のモーダル 編集画面(a=27&quickmanager=1)が開き、中でも $j / jQuery は undefined。閉じるボタンと、iframe の中からの parent.QM.close() で閉じる。保存すると DB に入り、親ページが読み直される
サイトが jQuery を持っているとき(仮の window.jQuery を置く) QM は $j も jQuery.colorbox も付けない
jQuery のファイルへの要求 管理画面・表側とも 0 件

表側の 404 は備考のアイコン(save.png / stop.png。#878 で直す)だけ。

案 2 にしたとき(d2957b785)

確認 結果
新規インストール(サンプルサイトあり)+検証スキルのスモークテスト 6/6 PASS
管理画面の 7 画面(トップ、ダッシュボード、リソースの編集・新規、システム設定、要素の管理、ユーザー) どの画面でも jQuery と $j は undefined、JS のエラーなし
ログイン中の表側 QM のツールバーが出て、編集のモーダルが開く。jQuery は undefined
jQuery のファイルへの要求 0 件

(案 2 にする前の版での確認:管理画面の 43 画面を直接開く・シェルで移るの 2 通りで回り、JS のエラーは main と同じ。ManagerManager の検証用ルールのセット A〜E の観測値が main の記録と一致)

  • php -l(header.inc.php・qm.inc.php・on_web_page_prerender.php)、node --check(qm.js)

備考

  • 確認中に、QM がリソースの編集画面に出すボタン(on_doc_form_prerender.php)が、テーマに無いアイコン(media/style/<テーマ>/images/icons/save.png / stop.png)を指していて 404 になるのを見つけた。main でも同じで、この PR とは別件(管理画面のボタンの、隠れたアイコンを整理する #878 で直す)
  • manager/actions/element/mutate_plugin.dynamic.php に MooTools の書き方($('id').setProperty / $$())の残りがある。jQuery ではなく、main でも動いていない(今回の変更による回帰ではない)

🤖 Generated with Claude Code

yama and others added 2 commits October 18, 2026 21:05
管理画面の本体は jQuery を使わなくなったため、header.inc.php での
jquery.min.js の読み込みと $j の定義をやめる。外部のアドオンの互換のために、
隠れた設定 mgr_jquery_path が入っているときだけ読み込み、jQuery があるときだけ
$j を定義する。jquery.min.js は QM の公開側と互換のために残す。

jquery-migration.md に、アドオンの作者・利用者向けの置き換えと戻し方
(OnManagerMainFrameHeaderHTMLBlock のプラグイン、mgr_jquery_path)を書く。
csrf.js・helpers.php のコメントを jQuery が無い前提に直す。

Refs #823

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

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019j5AHQgfMXdM9GxE4j1Fj1
@yama yama added the refactor リファクタリング label Oct 18, 2026
@yama yama self-assigned this Oct 18, 2026
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-22T04:31:40.045099Z d2957b7 Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@yama yama added 仕様変更 利用者から見た動きが変わる(リリース記事に書く) breaking change 後方互換性がない変更 labels Oct 21, 2026
@yama yama changed the title refactor(manager): 管理画面で jQuery を既定で読み込まないようにする(マージは #858 の確認待ち) 管理画面で jQuery を既定で読み込まないようにする Oct 21, 2026
yama and others added 2 commits October 21, 2026 16:40
#858 を案 2 で確定したため、jquery.min.js を削除し、それを読み込む設定を廃止する。

- 管理画面: 隠れた設定 mgr_jquery_path による読み込みをやめる。プラグインで jQuery を読み込んだときだけ $j を定義する互換は残す
- QM: 公開側に jQuery を読み込む設定 loadfrontendjq と読み込み先の jqpath を廃止し、@Version を 1.5.7 に上げる。noconflictjq は、サイトが読み込んだ jQuery に $j の別名を付ける互換として残す
- jquery-migration.md: jQuery が必要なときは、自分で用意してプラグインで読み込むように案内する

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
前のコミットで jquery.min.js を削除したのに合わせ、それを読み込む設定と案内を外す
(前のコミットに入れ損ねた分)。

- 管理画面: 隠れた設定 mgr_jquery_path による読み込みをやめる。プラグインで jQuery を読み込んだときだけ $j を定義する互換は残す
- QM: 公開側に jQuery を読み込む設定 loadfrontendjq と読み込み先の jqpath を廃止し、@Version を 1.5.7 に上げる。noconflictjq は、サイトが読み込んだ jQuery に $j の別名を付ける互換として残す
- jquery-migration.md: jQuery が必要なときは、自分で用意してプラグインで読み込むように案内する

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@yama yama changed the title 管理画面で jQuery を既定で読み込まないようにする 管理画面と QuickManager から jQuery を外し、本体も同梱しないようにする Oct 21, 2026
@yama

yama commented Oct 21, 2026

Copy link
Copy Markdown
Member Author

@codex review

@yama

yama commented Oct 22, 2026

Copy link
Copy Markdown
Member Author

@codex レビューして

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d2957b785b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread assets/plugins/qm/inc/on_web_page_prerender.php Outdated
jQuery を同梱しなくなったので、$j を付ける互換も本体から外す。
jQuery を自分で読み込む利用者が、プラグインの側で $j も定義する。

- header.inc.php: jQuery があるときに $j を定義する処理を削除
- QuickManager: 設定 noconflictjq(サイトの jQuery に $j の別名を付ける)を廃止
- qm.js: jQuery.colorbox.close を差し込む互換を削除(閉じるのは parent.QM.close())

Codex の指摘(遅延読み込みの jQuery に $j が付かない)は、別名を付ける処理ごと無くして解消する。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@yama
yama merged commit 88bb026 into main Oct 22, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking change 後方互換性がない変更 refactor リファクタリング ドキュメント リファクタ 仕様変更 利用者から見た動きが変わる(リリース記事に書く)

Projects

None yet

1 participant