Cloud computing platform
Revisão | 9322c3ae8a579366c528c97b9e0213865ee07796 (tree) |
---|---|
Hora | 2018-03-22 12:20:43 |
Autor | naoki hirata <naoki@magi...> |
Commiter | naoki hirata |
デフォルトコンテンツウィジェット更新。
@@ -40,6 +40,9 @@ class default_contentWidgetContainer extends default_contentBaseWidgetContainer | ||
40 | 40 | private $useJQuery; // jQueryスクリプト作成を行うかどうか |
41 | 41 | private $headScript; // HTMLヘッダに埋め込むJavascript |
42 | 42 | private $addLib = array(); // 追加スクリプトライブラリ |
43 | + private $autoGenerateAttachFileList; // 添付ファイルリストを自動作成するかどうか | |
44 | + private $attachFileRows; // 添付ファイル情報(コンテンツ本文作成用) | |
45 | + private $attachFileDownloadUrl; // 添付ファイルのリンク先URL | |
43 | 46 | const DEFAULT_LIST_COUNT = 10; // 最大リスト表示数 |
44 | 47 | const DEFAULT_SEARCH_LIST_COUNT = 20; // 最大リスト表示数(検索用) |
45 | 48 | const MESSAGE_NO_CONTENT = 'コンテンツが見つかりません'; |
@@ -77,6 +80,7 @@ class default_contentWidgetContainer extends default_contentBaseWidgetContainer | ||
77 | 80 | $this->outputHead = self::$_configArray[default_contentCommonDef::$CF_OUTPUT_HEAD]; // ヘッダ出力するかどうか |
78 | 81 | $this->passwordFormCount = 0; // パスワード入力フォーム数 |
79 | 82 | $this->useJQuery = self::$_configArray[default_contentCommonDef::$CF_USE_JQUERY]; // jQueryスクリプトを作成するかどうか |
83 | + $this->autoGenerateAttachFileList = self::$_configArray[default_contentCommonDef::CF_AUTO_GENERATE_ATTACH_FILE_LIST]; // 添付ファイルリストを自動作成するかどうか | |
80 | 84 | } |
81 | 85 | /** |
82 | 86 | * テンプレートファイルを設定 |
@@ -564,8 +568,7 @@ class default_contentWidgetContainer extends default_contentBaseWidgetContainer | ||
564 | 568 | |
565 | 569 | $formName = ''; |
566 | 570 | $funcName = ''; |
567 | - | |
568 | - $contentText = $fetchedRow['cn_html']; | |
571 | + $contentText = $fetchedRow['cn_html']; // コンテンツ本文 | |
569 | 572 | |
570 | 573 | $accessPointUrl = ''; // コンテンツアクセスポイント |
571 | 574 | switch (default_contentCommonDef::$_deviceType){ // デバイスごとの処理 |
@@ -638,28 +641,36 @@ class default_contentWidgetContainer extends default_contentBaseWidgetContainer | ||
638 | 641 | $optionAttr = ''; // 追加属性 |
639 | 642 | if ($this->jQueryMobileFormat) $optionAttr = 'rel="external"'; // jQueryMobile用のフォーマットで出力するかどうか |
640 | 643 | |
641 | - $attachFileTag .= '<ul>'; | |
642 | - for ($i = 0; $i < count($attachFileRows); $i++){ | |
643 | - $fileTitle = $attachFileRows[$i]['af_title']; | |
644 | - if (empty($fileTitle)) $fileTitle = $attachFileRows[$i]['af_filename']; | |
644 | + if (empty($this->autoGenerateAttachFileList)){ // 添付ファイルリストを自動作成しない場合 | |
645 | + // ##### コンテンツ本文を解析して添付ファイルダウンロード用のリンクを埋め込む ##### | |
646 | + $this->attachFileRows = $attachFileRows; // 添付ファイル情報(コンテンツ本文作成用) | |
647 | + $this->attachFileDownloadUrl = $canDownloadAttachFile ? '' : $accessUrl; // 添付ファイルのリンク先URL(ダウンロード不可時のみ設定) | |
648 | + $pattern = '/' . preg_quote(M3_TAG_START . M3_TAG_MACRO_ITEM_KEY) . '(\d+?)\|?(.*?)' . preg_quote(M3_TAG_END) . '/u'; // オプションパラメータは「|」以降(2015/4/20変更) | |
649 | + $contentText = preg_replace_callback($pattern, array($this, '_replace_content_macro_callback'), $contentText); | |
650 | + } else { // 添付ファイルリストを自動生成する場合 | |
651 | + $attachFileTag .= '<ul>'; | |
652 | + for ($i = 0; $i < count($attachFileRows); $i++){ | |
653 | + $fileTitle = $attachFileRows[$i]['af_title']; | |
654 | + if (empty($fileTitle)) $fileTitle = $attachFileRows[$i]['af_filename']; | |
645 | 655 | |
646 | - // ダウンロード用のリンク | |
647 | - // 添付ファイルがダウンロードできない状態のときはアクセスキー取得用のURLへリンク | |
648 | - if ($canDownloadAttachFile){ // ダウンロード可能のとき | |
649 | - $downloadUrl = $this->gEnv->getDefaultUrl() . '?' . M3_REQUEST_PARAM_OPERATION_COMMAND . '=' . M3_REQUEST_CMD_DO_WIDGET; | |
650 | - $downloadUrl .= '&' . M3_REQUEST_PARAM_WIDGET_ID . '=' . $this->gEnv->getCurrentWidgetId(); | |
651 | - $downloadUrl .= '&fileid=' . $attachFileRows[$i]['af_file_id']; | |
652 | - $downloadUrl = $this->getUrl($downloadUrl); | |
653 | - } else { | |
654 | - $downloadUrl = $accessUrl; | |
655 | - } | |
656 | + // ダウンロード用のリンク | |
657 | + // 添付ファイルがダウンロードできない状態のときはアクセスキー取得用のURLへリンク | |
658 | + if ($canDownloadAttachFile){ // ダウンロード可能のとき | |
659 | + $downloadUrl = $this->gEnv->getDefaultUrl() . '?' . M3_REQUEST_PARAM_OPERATION_COMMAND . '=' . M3_REQUEST_CMD_DO_WIDGET; | |
660 | + $downloadUrl .= '&' . M3_REQUEST_PARAM_WIDGET_ID . '=' . $this->gEnv->getCurrentWidgetId(); | |
661 | + $downloadUrl .= '&fileid=' . $attachFileRows[$i]['af_file_id']; | |
662 | + $downloadUrl = $this->getUrl($downloadUrl); | |
663 | + } else { | |
664 | + $downloadUrl = $accessUrl; | |
665 | + } | |
656 | 666 | |
657 | - $attachFileTag .= '<li>' . $this->convertToDispString($fileTitle); | |
658 | - $attachFileTag .= '<a href="' . $this->convertUrlToHtmlEntity($downloadUrl) . '" ' . $optionAttr . '>'; | |
659 | - $attachFileTag .= '<img src="' . $this->getUrl($this->gEnv->getRootUrl() . self::DOWNLOAD_ICON_FILE) . '" width="' . self::DOWNLOAD_ICON_SIZE . '" height="' . self::DOWNLOAD_ICON_SIZE . '" title="ダウンロード" alt="ダウンロード" style="border:none;margin:0;padding:0;vertical-align:text-top;" />'; | |
660 | - $attachFileTag .= '</a></li>'; | |
667 | + $attachFileTag .= '<li>' . $this->convertToDispString($fileTitle); | |
668 | + $attachFileTag .= '<a href="' . $this->convertUrlToHtmlEntity($downloadUrl) . '" ' . $optionAttr . '>'; | |
669 | + $attachFileTag .= '<img src="' . $this->getUrl($this->gEnv->getRootUrl() . self::DOWNLOAD_ICON_FILE) . '" width="' . self::DOWNLOAD_ICON_SIZE . '" height="' . self::DOWNLOAD_ICON_SIZE . '" title="ダウンロード" alt="ダウンロード" style="border:none;margin:0;padding:0;vertical-align:text-top;" />'; | |
670 | + $attachFileTag .= '</a></li>'; | |
671 | + } | |
672 | + $attachFileTag .= '</ul>'; | |
661 | 673 | } |
662 | - $attachFileTag .= '</ul>'; | |
663 | 674 | } |
664 | 675 | |
665 | 676 | // 関連コンテンツリンク |
@@ -853,5 +864,58 @@ class default_contentWidgetContainer extends default_contentBaseWidgetContainer | ||
853 | 864 | } |
854 | 865 | return $contentText; |
855 | 866 | } |
867 | + /** | |
868 | + * 添付ファイルリンク変換コールバック関数 | |
869 | + * | |
870 | + * @param array $matchData 検索マッチデータ | |
871 | + * @return string 変換後データ | |
872 | + */ | |
873 | + function _replace_content_macro_callback($matchData) | |
874 | + { | |
875 | + $destTag = $matchData[0]; | |
876 | + $itemNo = $matchData[1]; // 添付ファイルの項目No | |
877 | + $options = $matchData[2]; // オプション文字列 | |
878 | + | |
879 | + // オプションを解析 | |
880 | + $option = ''; | |
881 | + if (!empty($options)){ | |
882 | + list($option, $optionValue) = array_map('trim', explode('=', $options)); | |
883 | + $option = strtolower($option); | |
884 | + } | |
885 | + | |
886 | + // デフォルトのファイルタイトルを取得 | |
887 | + $index = $itemNo -1; | |
888 | + $fileTitle = $this->attachFileRows[$index]['af_title']; | |
889 | + if (empty($fileTitle)) $fileTitle = $this->attachFileRows[$index]['af_filename']; | |
890 | + if (empty($fileTitle)) $fileTitle = $this->attachFileRows[$index]['af_original_filename']; | |
891 | + | |
892 | + switch ($option){ | |
893 | + case 'title': | |
894 | + if (!empty($optionValue)) $fileTitle = $optionValue; | |
895 | + break; | |
896 | + case 'tag': | |
897 | + default: | |
898 | + break; | |
899 | + } | |
900 | + | |
901 | + // ダウンロード用のリンク | |
902 | + if (empty($this->attachFileDownloadUrl)){ | |
903 | + $downloadUrl = $this->gEnv->getDefaultUrl() . '?' . M3_REQUEST_PARAM_OPERATION_COMMAND . '=' . M3_REQUEST_CMD_DO_WIDGET; | |
904 | + $downloadUrl .= '&' . M3_REQUEST_PARAM_WIDGET_ID . '=' . $this->gEnv->getCurrentWidgetId(); | |
905 | + $downloadUrl .= '&fileid=' . $this->attachFileRows[$index]['af_file_id']; | |
906 | + $downloadUrl = $this->getUrl($downloadUrl); | |
907 | + } else { | |
908 | + $downloadUrl = $this->attachFileDownloadUrl; | |
909 | + } | |
910 | + $destTag = '<a href="' . $this->convertUrlToHtmlEntity($downloadUrl) . '">'; | |
911 | + if ($option == 'tag'){ | |
912 | + $destTag .= $optionValue; | |
913 | + } else { | |
914 | + $destTag .= $this->convertToDispString($fileTitle); | |
915 | + } | |
916 | + $destTag .= '</a>'; | |
917 | + | |
918 | + return $destTag; | |
919 | + } | |
856 | 920 | } |
857 | 921 | ?> |
@@ -78,7 +78,7 @@ $HELP['content_access_url']['title'] = 'アクセスキー取得用URL'; | ||
78 | 78 | $HELP['content_access_url']['body'] = 'アクセスキーを発行できるページのURLを設定します。ページ上のウィジェットがアクセスキー発行に対応されている必要があります。発行側のウィジェットに上記のアクセスキーを登録します。'; |
79 | 79 | |
80 | 80 | $HELP['content_filename_embed_tag']['title'] = 'ファイル名 / 埋め込みタグ'; |
81 | -$HELP['content_filename_embed_tag']['body'] = '●ファイル名<br />ユーザがダウンロードしたときのファイル名です。<br />●埋め込みタグ<br />コンテンツに埋め込むと添付ファイルをダウンロードするためのリンクタグを生成します。'; | |
81 | +$HELP['content_filename_embed_tag']['body'] = '■ファイル名<br />ユーザがダウンロードしたときのファイル名です。<br />■埋め込みタグ<br />コンテンツに埋め込むと添付ファイルをダウンロードするためのリンクタグを生成します。<br />●フォーマット [#ITEM_KEY_nn#]<br />一覧で入力したタイトルを使用してリンクを作成します。<br />●フォーマット [#ITEM_KEY_nn|title=任意タイトル#]<br />リンクのタイトルを「任意タイトル」に変更します。<br />●フォーマット [#ITEM_KEY_nn|tag=任意タグ#]<br />リンクの内容を任意のHTMLタグの「任意タグ」に変更します。'; | |
82 | 82 | |
83 | 83 | $HELP['content_buttons']['title'] = '操作ボタン'; |
84 | 84 | $HELP['content_buttons']['body'] = '新規 - 新規コンテンツを追加します。<br />編集 - 選択されているコンテンツを編集します。<br />コンテンツを選択するには、一覧の左端のチェックボックスにチェックを入れます。<br />削除ボタン - 選択されているコンテンツを削除します。<br />コンテンツを選択するには、一覧の左端のチェックボックスにチェックを入れます。'; |