2022年12月2日金曜日

CKEditor5による画像アップロードを実装する(5) - 動的コンテンツを使う

APEX 22.2よりPL/SQL動的コンテンツのリージョンがレガシーになり、新たに動的コンテンツというタイプが追加されました。一番の違いはリージョンのリフレッシュに対応している点です。

以下の記事で作成したAPEXアプリケーションに、動的コンテンツ・リージョンにより文書を表示するページを追加してみます。

CKEditor5による画像アップロードを実装する(4) - 画像をオブジェクト・ストレージに保存する

作成したページは以下のように動作します。


ページを新規に作成します。

ページの作成をクリックします。


空白ページを選択します。


名前は任意ですが、ここでは動的コンテンツとしています。ページ・モード標準です。


ページが作成されます。

作成されたページに文書を選択するためのページ・アイテムを作成します。

Body上でコンテキスト・メニューを表示させ、アイテムの作成を実行します。

識別名前P5_DOCUMENT_IDタイプ選択リストを選びます。ラベル表示する文書とします。LOVタイプとしてSQL問合せを選択し、SQL問合せに以下を記述します。

select title d, id r from rte_documents

追加値の表示OFFNULL値の表示ONNULL表示値として--文書を選択 --を入力します。


同様にして、Bodyにリージョンを新規作成します。

リージョンの識別タイトルドキュメントタイプ動的コンテンツを選択します。ソースCLOBを返すPL/SQLファンクション本体として、以下を記述します。

送信するページ・アイテムとしてP5_DOCUMENT_IDを指定します。


最後にP5_DOCUMENT_ID上でコンテキスト・メニューを表示させ、動的アクションを作成します。

作成した動的アクションの識別名前文書の切り替えとします。タイミングイベント変更選択タイプアイテムアイテムP5_DOCUMENT_IDとなります。


TRUEアクション識別名前文書の再表示とします。

アクションリフレッシュ影響を受ける要素選択タイプリージョンリージョンドキュメントを選択します。


このままだと画像が大きく表示されるため、CSSを定義します。

ページ・プロパティのCSSのインラインに以下を記述します。

#mydoc img {
    width: 80%;
}


動的コンテンツのリージョンに静的IDとしてmydocを割り当てます。


以上で動的コンテンツを実装したページの完成です。実行すると先頭のGIF動画の動作をします。

今回作成したアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/ckeditor-image-sample-dyn.zip

Oracle APEXのアプリケーション作成の参考になれば幸いです。