アプリケーションにディープ・リンクが有効になっているページが含まれていると、サインインした直後にそのディープ・リンクが有効になっているページが開きます。サインイン直後に必ずホーム・ページが開くとは限らないため、すべてのページでダイアログを開く設定が必要になります。
Oracle APEXのアプリケーションにはグローバル・ページ(ページ番号0)が含まれています。グローバル・ページに作成されたリージョンやページ・アイテムはすべてのページで共有されます。今回は、グローバル・ページにダイアログを開く動的アクションを作成することにします。
ダイアログ上のボタンはい、またはいいえをクリックした結果はアプリケーション・アイテムに保存します。
アプリケーション・アイテムとしてG_CONFIRMEDを作成します。
ページ・デザイナでグローバル・ページを開きます。
左ペインで動的アクション・ビューを開き、ページのロード時に実行される動的アクションを作成します。
サーバー側の条件のタイプとしてファンクション本体を選択し、PL/SQLファンクション本体に以下を記述します。ログイン・ページでは動的アクションを実行せず(正確には生成されるページに動的アクションのJavaScriptコードを含めない)、また、G_CONFIRMEDに値が設定済みの場合も動的アクションを実行しません。
if :APP_PAGE_ID in (9999) then
return false; -- ログイン・ページを除く。
end if;
if :G_CONFIRMED is null then
return true; -- 初回アクセスであればダイアログを表示。
end if;
return false;
最初に実行されるTRUEアクションでは、サーバー側のコードを実行して、アプリケーション・アイテムG_CONFIRMEDにNを設定します。
:G_CONFIRMED := 'N';
続けて、ダイアログを開くTRUEアクションとして確認を作成します。
アクション確認によって開かれたダイアログで、確認ボタン(今回は確認ラベルをはいにしているので、はいのボタン)をクリックすると、後続のTRUEアクションが実行されます。
後続のTRUEアクションでアプリケーション・アイテムG_CONFIRMEDにYを設定します。
以上で、アプリケーションへの初回アクセス時に限りダイアログを表示することはできました。
TRUEアクションの確認による実装の場合、確認ボタンを押したときに、後続のTRUEアクションとして行いたい処理を実装することができます。しかし、取消ボタンを押したときは何もしないだけで、取消ボタンを押した時に行いたい処理を実装することはできません。
取消ボタンを押した時に行いたい処理がある場合は、JavaScript APIのapex.message.confirmを呼び出す必要があります。
同じ処理をJavaScriptコードで実装してみます。
アプリケーション・プロセスとして、アプリケーション・アイテムG_CONFIRMEDを更新する処理を実装します。
プロセス・ポイントはAjaxコールバック、名前はUPDATE_G_CONFIRMEDとします。ソースのコードに以下を記述します。
:G_CONFIRMED := apex_application.g_x01;
htp.p('{}');
TRUEアクションはJavaScriptコードの実行のみで実装します。設定のコードに以下を記述します。apex.message.confirmを呼び出す場合、取消ボタンを押した際の実行される処理も記述できます。
今回の記事は以上になります。
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完