Oracle APEX 23.1の新機能に、コンテキスト依存ヘルプというものがあります。
Oracle APEXのオンライン・ヘルプにドキュメントの表示というボタンが含まれている場合ががあります。このボタンをクリックすると、今までは製品ドキュメントのトップ・ページが開いたのですが、23.1からは関連するページが開かれるようになっています。
便利になりましたが、いかんせん英語のドキュメントが開きます。
仕組みを調べて、日本語のドキュメントが開くようにしてみました。
製品ドキュメントの位置は、管理サービスにサインインした後、インスタンスの設定より実施します。
今までは、ボタンドキュメントの表示をクリックしたときに、このヘルプのURLとして設定されているURLを開いていました。23.1からは、製品ドキュメントを開く際に?context=コンテキストという引数が与えられています。
例えば、本記事の最初の画像にある製品ドキュメントは、以下のURLより呼び出されています。
https://apex.oracle.com/doc231?context=4000:510
https://docs.oracle.com/en/database/oracle/apex/23.1/context-sensitive-help.js
コンテキストとURLの対応は英語のドキュメントが元になっています。とはいえ、URLやアンカーは日本語のドキュメントでも維持されているはずなので、この対応をそのまま使います。
一番最初に、コンテキストとURLの対応を保存する表CSH_CONTEXT_SENSITIVE_HELPを作成します。
create table csh_context_sensitive_help
(
context varchar2(40) not null,
url varchar2(400) not null
);
context-sensive-help.jsを読み込んで、コンテキストとURLの対応を作成した表CSH_CONTEXT_SENSITIVE_HELPに書き込みます。JavaScriptのファイルの位置はAPEXのバージョンに依存して変更されます。また、内容に関してもAPEXがバージョン・アップされると変更される可能性はあります。
SQLワークショップのSQLコマンドより実行します。
コンテキスト依存ヘルプのリクエストを受け付けて、適切な製品ドキュメントのURLを返すRESTサービスを作成します。
SQLワークショップのRESTfulサービスを開き、モジュールの作成を実行します。
モジュール名はContext Sensitive Help、ベース・パスは/help/とし、モジュールの作成をクリックします。
続けて、テンプレートの作成をクリックします。
URIテンプレートとしてpageを指定します。
テンプレートの作成をクリックします。
テンプレートpageが作成されます。
ハンドラの作成をクリックします。
作成するハンドラのメソッドとしてGETを選択します。ソース・タイプはPL/SQLです。ソースとして、以下を記述します。Oracle APEX 23.1の製品ドキュメントはまだ日本語訳が無いため、代わりにOracle APEX 22.2の日本語ドキュメントのURLをC_BASE_URLに設定しています。
パラメータとしてcontextを受け付け、表CSH_CONTEXT_SENSITIVE_HELPよりリダイレクト先を見つけて、クライアントにリダイレクトを要求しています。
リダイレクト先をHTTPの応答ヘッダーのLocationとして返すため、パラメータを追加します。
行の追加をクリックし、パラメータをひとつ追加します。
追加したパラメータの名前はLocation、バインド変数はlocation、アクセス・メソッドはOUT、ソース・タイプとしてHTTP HEADER、データ型としてSTRINGを指定します。
作成されたハンドラの完全なURLをコピーします。
このURLをAPEXのインスタンスの設定のヘルプのURLとして設定します。
管理サービスにサインインし、ヘルプのURLを変更します。
以上の変更で、コンテキスト依存ヘルプとして日本語の製品ドキュメントが開くようになります。
本記事は以上になります。
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完