読者です 読者をやめる 読者になる 読者になる

Code for final

ふぁいなる向けのコード置き場です。すでにコードじゃないこともいっぱい。

intra-mart Accel Platformの互換ページで部分的にAccelの画面を埋め込む。

今回はintra-martについてです。
特殊なケースかもしれないですが、先日、会社ではまったので。

v7.2からaccel platformに移行する場合、予算の都合上互換モードで動かす場合も少なくないと思います。
かくいう私のプロジェクトでもリスクと予算で互換でという結論になりました。accelの画面作りたかったのに…。
で、そんな中でも部分的に使えない部分が出てきました。
普通ならじゃあその画面だけaccelで作り直すという風になるのですが、リスクと予算を考えると部分的にaccelにできないか?ということになりました。
テーマが違うので、画面デザインがおかしくなると言ったんですが、見た目よりコストのクライアントさまの意向を尊重することになりました。

まぁ、iframeを使えばできるかーと思って互換ページに以下のコードを埋め込みました。

<iframe src="xxxx/yyyy" frameborder="0" scrolling="no" />

スクリプト開発の場合ですが、srcにはaccelで作った部分的なページを指定します。routing-jssp-configで設定したpathです。pageではないです。

そうすると画面は出ましたが、メニューが表示されます。
どうにかして消せないか調べててようやくたどり着きました。

accel platformにはPageBuilderというのがあり、目的にあったビルダーを選択することでメニュー表示、フッター表示、テーマの適用を制御できます。
こんな素晴らしい機構があるとは知らなかったので設定ではなく、画面側に細工するか、リクエストに何かを追加するかを想定していたので時間がかかりました。

ビルダーの種類は以下のドキュメントを参照してください。
PageBuilder — テーマ仕様書   第4版 2015-08-01   intra-mart Accel Platform /

画面イメージ付きでは以下のページで詳しくまとめられてました。

intra-mart Accel Platformのメニューとヘッダー・フッターの表示制御 | 株式会社アースリンク

今回は互換のページで部分的にaccelのコンポーネントを使用するので、HeadWithContainerThemeBuilderを選択しました。
設定の仕方ですが、confフォルダにビルダーにあったフォルダを作成してその中に定義します。
今回はHeadWithContainerThemeBuilderなので、theme-head-with-container-path-configフォルダを作成して以下のようなファイルをextend.xmlで配置しました。

<?xml version="1.0" encoding="UTF-8"?>
<theme-head-with-container-path-config
   xmlns="http://www.intra-mart.jp/theme/theme-head-with-container-path-config"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.intra-mart.jp/theme/theme-head-with-container-path-config ../../schema/theme-head-with-container-path-config.xsd ">
   <path>/xxxx/yyyy</path>
</theme-head-with-container-path-config>

このpathの設定にマッチしたものが適用されます。正規表現も使用できるみたいです。
詳しくは以下のドキュメントに書いてあります。

UI — 設定ファイルリファレンス   第11版 2015-08-01   intra-mart Accel Platform /

で、この設定をすることで無事に互換の画面にaccelの画面を埋め込み出来ました! intra-martの互換モードもiframeで実現しているみたいなので、iframeのネストになりますが。。

intra-martはドキュメントが整備されていていいんですけど、読み物が多くて理解に時間がかかりますね。
まだまだ知られざる機能がありそうで。。