• R/O
  • HTTP
  • SSH
  • HTTPS

magic3: Commit

Cloud computing platform


Commit MetaInfo

Revisão9322c3ae8a579366c528c97b9e0213865ee07796 (tree)
Hora2018-03-22 12:20:43
Autornaoki hirata <naoki@magi...>
Commiternaoki hirata

Mensagem de Log

デフォルトコンテンツウィジェット更新。

Mudança Sumário

Diff

--- a/widgets/default_content/include/container/default_contentWidgetContainer.php
+++ b/widgets/default_content/include/container/default_contentWidgetContainer.php
@@ -40,6 +40,9 @@ class default_contentWidgetContainer extends default_contentBaseWidgetContainer
4040 private $useJQuery; // jQueryスクリプト作成を行うかどうか
4141 private $headScript; // HTMLヘッダに埋め込むJavascript
4242 private $addLib = array(); // 追加スクリプトライブラリ
43+ private $autoGenerateAttachFileList; // 添付ファイルリストを自動作成するかどうか
44+ private $attachFileRows; // 添付ファイル情報(コンテンツ本文作成用)
45+ private $attachFileDownloadUrl; // 添付ファイルのリンク先URL
4346 const DEFAULT_LIST_COUNT = 10; // 最大リスト表示数
4447 const DEFAULT_SEARCH_LIST_COUNT = 20; // 最大リスト表示数(検索用)
4548 const MESSAGE_NO_CONTENT = 'コンテンツが見つかりません';
@@ -77,6 +80,7 @@ class default_contentWidgetContainer extends default_contentBaseWidgetContainer
7780 $this->outputHead = self::$_configArray[default_contentCommonDef::$CF_OUTPUT_HEAD]; // ヘッダ出力するかどうか
7881 $this->passwordFormCount = 0; // パスワード入力フォーム数
7982 $this->useJQuery = self::$_configArray[default_contentCommonDef::$CF_USE_JQUERY]; // jQueryスクリプトを作成するかどうか
83+ $this->autoGenerateAttachFileList = self::$_configArray[default_contentCommonDef::CF_AUTO_GENERATE_ATTACH_FILE_LIST]; // 添付ファイルリストを自動作成するかどうか
8084 }
8185 /**
8286 * テンプレートファイルを設定
@@ -564,8 +568,7 @@ class default_contentWidgetContainer extends default_contentBaseWidgetContainer
564568
565569 $formName = '';
566570 $funcName = '';
567-
568- $contentText = $fetchedRow['cn_html'];
571+ $contentText = $fetchedRow['cn_html']; // コンテンツ本文
569572
570573 $accessPointUrl = ''; // コンテンツアクセスポイント
571574 switch (default_contentCommonDef::$_deviceType){ // デバイスごとの処理
@@ -638,28 +641,36 @@ class default_contentWidgetContainer extends default_contentBaseWidgetContainer
638641 $optionAttr = ''; // 追加属性
639642 if ($this->jQueryMobileFormat) $optionAttr = 'rel="external"'; // jQueryMobile用のフォーマットで出力するかどうか
640643
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'];
645655
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+ }
656666
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>';
661673 }
662- $attachFileTag .= '</ul>';
663674 }
664675
665676 // 関連コンテンツリンク
@@ -853,5 +864,58 @@ class default_contentWidgetContainer extends default_contentBaseWidgetContainer
853864 }
854865 return $contentText;
855866 }
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+ }
856920 }
857921 ?>
--- a/widgets/default_content/include/help/index.php
+++ b/widgets/default_content/include/help/index.php
@@ -78,7 +78,7 @@ $HELP['content_access_url']['title'] = 'アクセスキー取得用URL';
7878 $HELP['content_access_url']['body'] = 'アクセスキーを発行できるページのURLを設定します。ページ上のウィジェットがアクセスキー発行に対応されている必要があります。発行側のウィジェットに上記のアクセスキーを登録します。';
7979
8080 $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タグの「任意タグ」に変更します。';
8282
8383 $HELP['content_buttons']['title'] = '操作ボタン';
8484 $HELP['content_buttons']['body'] = '新規 - 新規コンテンツを追加します。<br />編集 - 選択されているコンテンツを編集します。<br />コンテンツを選択するには、一覧の左端のチェックボックスにチェックを入れます。<br />削除ボタン - 選択されているコンテンツを削除します。<br />コンテンツを選択するには、一覧の左端のチェックボックスにチェックを入れます。';
Show on old repository browser