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 環境で行う)

  1. user.jsuser.cssjquery_ready.js のバックアップを取ります。ファイルで管理している場合は <MT_HOME>/mt-static/plugins/MTAppjQuery/user-files/ 配下のファイルを、管理画面の「デザイン → user.js を編集」で管理している場合はその内容を保存してください。
  2. プラグイン設定(システム・ブログ両スコープ)の内容を控えます。フリーエリアに記述がある場合は、その内容も保存してください。
  3. user.js で使用しているメソッドを洗い出し、後述の「削除されたメソッド」に該当するものがないかを確認します。

設置(PowerCMS 7 環境で行う)

  1. PowerCMS 7 側に P5 の plugins/MTAppjQuery/mt-static/plugins/MTAppjQuery/ が残っている場合は、両方とも削除します。旧バージョンのファイルを残したまま上書きしないでください。
  2. 配布ファイルを展開し、plugins/MTAppjQuery/<MT_HOME>/plugins/ に配置します。
  3. mt-static/plugins/MTAppjQuery/<MT_HOME>/mt-static/plugins/ に配置します。
  4. バックアップした user.jsuser.cssjquery_ready.js<MT_HOME>/mt-static/plugins/MTAppjQuery/user-files/ に戻します。配布ファイルにも同名の空のファイルが含まれているため、必ずご自身のファイルで置き換えてください。
  5. 管理画面のシステムメニュー「プラグイン」で MTAppjQuery P7 が有効になっていることを確認します。

設定

  1. システムのプラグイン設定にライセンスキーの入力欄が追加されています。購入時のライセンスキーを入力し、「認証」ボタンを押したのち「変更を保存」を押します。
  2. プラグイン設定の各項目(有効化、user.js の利用、DataAPI SDK の利用、フリーエリアなど)が移行前と一致しているかを確認します。ライセンスキー以外の設定項目に追加・変更はありません。

設定の互換性

項目P5P7
プラグイン 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 など全項目)
管理画面が読み込む JavaScriptMTAppjQuery.js(非圧縮)MTAppjQuery-min.js(圧縮版)。user.js の書き方には影響しません

user.js の互換性

削除されたメソッド

PowerCMS 7 の標準機能と重複するため、次の 14 メソッドを削除しました。user.js で呼び出している場合は、該当行を削除するか、代替手段へ置き換えてください。呼び出したままにすると「$.MTAppXxx is not a function」のエラーで user.js の処理が止まります。

削除されたメソッド代替手段
MTAppMultiFormPowerCMS 標準の「複数選択チェックボックス」「複数選択ドロップダウン」フィールド型
MTAppMultiCheckbox同上
MTAppHasCategoryPowerCMS 標準の RequiredFields(カテゴリの必須設定)
MTAppCheckCategoryCount同上
MTAppDuplicatePowerCMS 標準の複製機能
MTAppFullscreen本文エディタ標準のフルスクリーン
MTAppSortableBatchEditPowerCMS のグループ機能
MTAppGroupFilterグループ編集画面標準の絞り込み
MTAppFancyListingPowerCMS 標準のダイアログ、または MTAppListing
MTAppUserMenuWidgetPowerCMS のブックマーク機能
MTAppKeyboardShortcut
MTAppTemplateListCustomizePowerCMS 7 標準のテンプレート一覧(種類別に整理済み)
MTApp1clickRebuildPowerCMS 標準の再構築
MTAppInCatsMTAppCategorySwitchcode オプション(後述)

MTAppInCats を使用している場合

カテゴリ選択時に任意の処理を実行する機能は、MTAppCategorySwitchcode オプションに統合しました。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 点の確認が必要です。

  1. Maps JavaScript API の読み込みコードを、google.maps.importLibrary が利用できる Google 公式のブートストラップコードにしてください。旧方式の読み込みでは地図が表示されず、コンソールに警告が出ます。読み込み方法はメソッドのドキュメントに記載しています。
  2. AdvancedMarkerElement には Map ID が必要です。Google Cloud で作成した Map ID を mapId オプションに指定してください(既定の DEMO_MAP_ID は試作用です)。

MTAppNoScrollRightSidebar を使用している場合

MTAppNoScrollRightSidebarcloseMode / openSelector オプション(ウィジェットの開閉)は、PowerCMS 7 標準の開閉機能と重複するため廃止しました。指定したままでもエラーにはならず無視されますが、削除をおすすめします。

旧オプション名(互換用の別名)

P5 で使えた次の旧オプション名は、P7 でも互換用の別名として動作します。修正は必須ではありませんが、新しく書くコードでは正式名を使ってください。

メソッド旧オプション名正式名
MTAppTaxAssistfractionrounding
MTAppNumCheckermin_msg / max_msg / zero_padminMsg / maxMsg / zeroPad
MTAppLineBreakFieldinput_classinputClass
MTAppFieldSplitplaceholderplaceholders
MTAppFieldSortinsert_idinsertID
MTAppTabspointer_basenamepointerBasename
MTAppCustomizeadd_class / show_field / show_parentaddClass / showField / showParent
MTAppDialogMsghide_effecthideEffect
MTAppMakeFieldidbasename
MTAppShowHint / MTAppTooltiptexthtml

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 で追加されたオプション(MTAppListingselectedViewMTAppMultiFileUploaddropAreaMTAppFieldSplitdirectionMTAppMakeWidgetcanClose など)は任意指定のため、既存の呼び出しに影響しません。
  • mtappVars.screen_id による画面判定の値(edit-entry / list-entry など)は変わりません。
  • MTAppShowListEntries は互換のために残しています。新しく作る場合は MTAppListingselectedView オプションを推奨します。

メソッド以外の独自コード

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 で確認できます。

移行チェックリスト

  1. user.jsuser.cssjquery_ready.js・プラグイン設定・フリーエリアをバックアップした。
  2. 旧バージョンの plugins/MTAppjQuery/mt-static/plugins/MTAppjQuery/ を削除してから P7 を配置した。
  3. user-files/ にバックアップした user.js などを戻した。
  4. ライセンスキーを認証して保存した。
  5. user.js から削除されたメソッドの呼び出しを取り除いた(MTAppInCatsMTAppCategorySwitchcode に書き換えた)。
  6. MTAppGoogleMapFields を使っている場合、Maps JavaScript API の読み込み方法と Map ID を見直した。
  7. user.js に Data API のアカウント情報が残っていないことを確認した。
  8. 対象の管理画面でスーパーリロード(強制再読み込み)を行い、ブラウザのコンソールにエラーが出ないことを確認した。

関連