P5 からのアップグレード
MTAppjQuery P5(PowerCMS 5/6 用)を利用中の環境を、PowerCMS 7 への移行にあわせて MTAppjQuery P7 へ切り替えるための手順と、user.js・プラグイン設定で修正が必要になる箇所をまとめたセクションです。
MTAppjQuery P5(PowerCMS 5/6 用)を利用中の環境を、PowerCMS 7 への移行にあわせて MTAppjQuery P7 へ切り替えるための手順と、user.js・プラグイン設定で修正が必要になる箇所をまとめたセクションです。
要点は次の 3 つです。
- 設置方法・設定項目・
user.jsの書き方は P5 と同じです。プラグインの内部 ID も同一のため、PowerCMS のデータベースをアップグレードして移行する場合はプラグイン設定がそのまま引き継がれます。 - PowerCMS 7 の標準機能と重複する 14 のメソッドを削除しています。
user.jsで該当メソッドを呼び出している場合は修正が必要です。 - 残りの 38 メソッドは同じメソッド名・同じオプション名で動作します。旧オプション名も互換用の別名として引き続き使えます。
MTAppjQuery P7 は PowerCMS 7 専用です。PowerCMS 5・6 では動作しないため、PowerCMS 7 への移行と同時に切り替えてください。P5 とは別製品となり、P7 のライセンスが別途必要です。ライセンスについては製品ページを参照してください。
アップデート手順
以降 <MT_HOME> は PowerCMS を設置したディレクトリ(mt.cgi がある場所)を指します。
事前準備(移行前の PowerCMS 5/6 環境で行う)
user.js・user.css・jquery_ready.jsのバックアップを取ります。ファイルで管理している場合は<MT_HOME>/mt-static/plugins/MTAppjQuery/user-files/配下のファイルを、管理画面の「デザイン → user.js を編集」で管理している場合はその内容を保存してください。- プラグイン設定(システム・ブログ両スコープ)の内容を控えます。フリーエリアに記述がある場合は、その内容も保存してください。
user.jsで使用しているメソッドを洗い出し、後述の「削除されたメソッド」に該当するものがないかを確認します。
設置(PowerCMS 7 環境で行う)
- PowerCMS 7 側に P5 の
plugins/MTAppjQuery/とmt-static/plugins/MTAppjQuery/が残っている場合は、両方とも削除します。旧バージョンのファイルを残したまま上書きしないでください。 - 配布ファイルを展開し、
plugins/MTAppjQuery/を<MT_HOME>/plugins/に配置します。 mt-static/plugins/MTAppjQuery/を<MT_HOME>/mt-static/plugins/に配置します。- バックアップした
user.js・user.css・jquery_ready.jsを<MT_HOME>/mt-static/plugins/MTAppjQuery/user-files/に戻します。配布ファイルにも同名の空のファイルが含まれているため、必ずご自身のファイルで置き換えてください。 - 管理画面のシステムメニュー「プラグイン」で MTAppjQuery P7 が有効になっていることを確認します。
設定
- システムのプラグイン設定にライセンスキーの入力欄が追加されています。購入時のライセンスキーを入力し、「認証」ボタンを押したのち「変更を保存」を押します。
- プラグイン設定の各項目(有効化、
user.jsの利用、DataAPI SDK の利用、フリーエリアなど)が移行前と一致しているかを確認します。ライセンスキー以外の設定項目に追加・変更はありません。
設定の互換性
| 項目 | P5 | P7 |
|---|---|---|
| プラグイン ID・キー | mt_app_jquery | 同じ(設定が引き継がれる) |
| 設定項目 | active / userjs / usercss / jquery_ready / フリーエリア / DataAPI SDK / blogs_json など | 同じ。ライセンスキー(システムスコープ)のみ追加 |
user.js などの設置場所 | mt-static/plugins/MTAppjQuery/user-files/ | 同じ |
| 「デザイン → user.js を編集」 | あり | 同じ |
環境変数(MTAppjQueryUserJSName など) | あり | 同じ |
mtappVars の内容 | — | 同じ(screen_id など全項目) |
| 管理画面が読み込む JavaScript | MTAppjQuery.js(非圧縮) | MTAppjQuery-min.js(圧縮版)。user.js の書き方には影響しません |
user.js の互換性
削除されたメソッド
PowerCMS 7 の標準機能と重複するため、次の 14 メソッドを削除しました。user.js で呼び出している場合は、該当行を削除するか、代替手段へ置き換えてください。呼び出したままにすると「$.MTAppXxx is not a function」のエラーで user.js の処理が止まります。
| 削除されたメソッド | 代替手段 |
|---|---|
MTAppMultiForm | PowerCMS 標準の「複数選択チェックボックス」「複数選択ドロップダウン」フィールド型 |
MTAppMultiCheckbox | 同上 |
MTAppHasCategory | PowerCMS 標準の RequiredFields(カテゴリの必須設定) |
MTAppCheckCategoryCount | 同上 |
MTAppDuplicate | PowerCMS 標準の複製機能 |
MTAppFullscreen | 本文エディタ標準のフルスクリーン |
MTAppSortableBatchEdit | PowerCMS のグループ機能 |
MTAppGroupFilter | グループ編集画面標準の絞り込み |
MTAppFancyListing | PowerCMS 標準のダイアログ、または MTAppListing |
MTAppUserMenuWidget | PowerCMS のブックマーク機能 |
MTAppKeyboardShortcut | — |
MTAppTemplateListCustomize | PowerCMS 7 標準のテンプレート一覧(種類別に整理済み) |
MTApp1clickRebuild | PowerCMS 標準の再構築 |
MTAppInCats | MTAppCategorySwitch の code オプション(後述) |
MTAppInCats を使用している場合
カテゴリ選択時に任意の処理を実行する機能は、MTAppCategorySwitch の code オプションに統合しました。categories にカンマ区切りで指定していたカテゴリ ID は、code のキー 'cat<カテゴリID>' に分けて指定します。
変更前(P5)
$.MTAppInCats({
categories: '1,2',
code: function () {
// カテゴリ 1 または 2 が選択された時の処理
}
});変更後(P7)
$.MTAppCategorySwitch({
code: {
'cat1': function (categoryId) {
// カテゴリ 1 が選択された時の処理
},
'cat2': function (categoryId) {
// カテゴリ 2 が選択された時の処理
}
}
});code のコールバックは、直前の選択に無かったカテゴリが新たに選択された時にだけ発火します。表示切替(selector / basename)と併用することもできます。
MTAppGoogleMapFields を使用している場合
MTAppGoogleMapFields は、Google Maps JavaScript API の最新方式(google.maps.importLibrary による動的読み込みと AdvancedMarkerElement)に対応しました。オプション名は従来と同じですが、次の 2 点の確認が必要です。
- Maps JavaScript API の読み込みコードを、
google.maps.importLibraryが利用できる Google 公式のブートストラップコードにしてください。旧方式の読み込みでは地図が表示されず、コンソールに警告が出ます。読み込み方法はメソッドのドキュメントに記載しています。 AdvancedMarkerElementには Map ID が必要です。Google Cloud で作成した Map ID をmapIdオプションに指定してください(既定のDEMO_MAP_IDは試作用です)。
MTAppNoScrollRightSidebar を使用している場合
MTAppNoScrollRightSidebar の closeMode / openSelector オプション(ウィジェットの開閉)は、PowerCMS 7 標準の開閉機能と重複するため廃止しました。指定したままでもエラーにはならず無視されますが、削除をおすすめします。
旧オプション名(互換用の別名)
P5 で使えた次の旧オプション名は、P7 でも互換用の別名として動作します。修正は必須ではありませんが、新しく書くコードでは正式名を使ってください。
| メソッド | 旧オプション名 | 正式名 |
|---|---|---|
MTAppTaxAssist | fraction | rounding |
MTAppNumChecker | min_msg / max_msg / zero_pad | minMsg / maxMsg / zeroPad |
MTAppLineBreakField | input_class | inputClass |
MTAppFieldSplit | placeholder | placeholders |
MTAppFieldSort | insert_id | insertID |
MTAppTabs | pointer_basename | pointerBasename |
MTAppCustomize | add_class / show_field / show_parent | addClass / showField / showParent |
MTAppDialogMsg | hide_effect | hideEffect |
MTAppMakeField | id | basename |
MTAppShowHint / MTAppTooltip | text | html |
Data API を使うメソッド
MTAppListing / MTAppShowListEntries / MTAppMultiFileUpload、および MTAppAssetFields のサムネイル取得は Data API を利用します。P7 では、プラグイン設定「DataAPI SDK を利用」を有効にすると、管理画面にログイン中のユーザーでアクセストークンを自動発行します。
- P5 で
mtappVars.DataAPIFileUploadUser/mtappVars.DataAPIFileUploadUserPasswordにアカウント情報を設定していた場合、その記述は不要です。パスワードをuser.jsに残さないよう削除してください。 get_thumbnailを使う機能は Data API v2 以降が必要です。プラグイン設定の Data API バージョンを確認してください。
そのまま使えるもの
- 上記以外の 38 メソッドは、同じメソッド名・同じオプション名で動作します。P7 で追加されたオプション(
MTAppListingのselectedView、MTAppMultiFileUploadのdropArea、MTAppFieldSplitのdirection、MTAppMakeWidgetのcanCloseなど)は任意指定のため、既存の呼び出しに影響しません。 mtappVars.screen_idによる画面判定の値(edit-entry/list-entryなど)は変わりません。MTAppShowListEntriesは互換のために残しています。新しく作る場合はMTAppListingのselectedViewオプションを推奨します。
メソッド以外の独自コード
user.js に MTAppjQuery のメソッド以外の独自の jQuery コードを記述している場合は、次の点を確認してください。
- PowerCMS 7 の管理画面は jQuery 3.6 系です。jQuery 1 系でのみ動作する API(
.live()・.size()・$.browserなど)を使用している場合は修正が必要です。 - PowerCMS 7 は管理画面の HTML 構造が変わっています(本文エディタは TinyMCE 7、カテゴリ選択 UI なども更新)。管理画面の要素を直接指定しているコードは、PowerCMS 7 の画面で動作確認をしてください。要素の ID は MTAppDebug で確認できます。
移行チェックリスト
user.js・user.css・jquery_ready.js・プラグイン設定・フリーエリアをバックアップした。- 旧バージョンの
plugins/MTAppjQuery/とmt-static/plugins/MTAppjQuery/を削除してから P7 を配置した。 user-files/にバックアップしたuser.jsなどを戻した。- ライセンスキーを認証して保存した。
user.jsから削除されたメソッドの呼び出しを取り除いた(MTAppInCatsはMTAppCategorySwitchのcodeに書き換えた)。MTAppGoogleMapFieldsを使っている場合、Maps JavaScript API の読み込み方法と Map ID を見直した。user.jsに Data API のアカウント情報が残っていないことを確認した。- 対象の管理画面でスーパーリロード(強制再読み込み)を行い、ブラウザのコンソールにエラーが出ないことを確認した。
関連
- はじめに — インストールと使い方の流れ。
- プラグイン設定 — 各設定項目とスコープの説明。
- メソッドリファレンス — 各メソッドの構文・パラメータ・使用例。
- トラブルシューティング — うまく動かないときの確認ポイント。