Changeset 20860
- Timestamp:
- 2011/04/18 21:56:35 (13 years ago)
- bzr:base-revision:
- ohkouchi@loop-az.jp-20110418102425-xm10rcev2j2xr3db
- bzr:committer:
- Kentaro Ohkouchi <ohkouchi@loop-az.jp>
- bzr:file-ids:
data/Smarty/templates/admin/design/css.tpl 15732@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2FSmarty%2Ftemplates%2Fdefault%2Fadmin%2Fdesign%2Fcss.tpl
data/class/pages/admin/design/LC_Page_Admin_Design_CSS.php 15689@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Fdesign%2FLC_Page_Admin_Design_CSS.php
data/class/pages/admin/design/LC_Page_Admin_Design_Header.php 15688@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Fdesign%2FLC_Page_Admin_Design_Header.php- bzr:mapping-version:
- v4
- bzr:merge:
ohkouchi@loop-az.jp-20110418125320-1fqcjq5b4i2xb8bx- bzr:repository-uuid:
- 1e3b908f-19a9-db11-a64c-001125224ba8
- bzr:revision-id:
- ohkouchi@loop-az.jp-20110418125631-85kcyrv2bsk1tnq6
- bzr:revno:
- 3571
- bzr:revprop:branch-nick:
- branches/version-2_11-dev
- bzr:root:
- branches/version-2_11-dev
- bzr:text-revisions:
data/Smarty/templates/admin/design/css.tpl ohkouchi@loop-az.jp-20110418125320-1fqcjq5b4i2xb8bx
data/class/pages/admin/design/LC_Page_Admin_Design_CSS.php ohkouchi@loop-az.jp-20110418125320-1fqcjq5b4i2xb8bx
data/class/pages/admin/design/LC_Page_Admin_Design_Header.php ohkouchi@loop-az.jp-20110418125320-1fqcjq5b4i2xb8bx- bzr:timestamp:
- 2011-04-18 21:56:31.716000080 +0900
- bzr:user-agent:
- bzr2.2.1+bzr-svn1.0.4
- svn:original-date:
- 2011-04-18T12:56:31.716000Z
- Location:
- branches/version-2_11-dev/data
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_11-dev/data/Smarty/templates/admin/design/css.tpl
r20800 r20860 30 30 <div id="design" class="contents-main"> 31 31 32 <!--{if $arrErr.err != ""}--> 33 <div class="message"> 34 <span class="attention"><!--{$arrErr.err}--></span> 35 </div> 36 <!--{/if}--> 37 32 38 <!--▼CSS設定ここから--> 33 39 <table class="form"> … … 35 41 <th>CSSファイル名</th> 36 42 <td> 37 <!--{if $arrErr.css_name != ""}--><span class="attention"><!--{$arrErr.css_name}--></span><br /><!--{/if}--> 38 <input type="text" name="css_name" value="<!--{$css_name|h}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" style="<!--{if $arrErr.css_name != ""}-->background-color: <!--{$smarty.const.ERR_COLOR}-->;<!--{/if}-->" size="60" class="box60" />.css<span class="attention"> (上限<!--{$smarty.const.STEXT_LEN}-->文字)</span> 43 <!--{assign var=key value="css_name"}--> 44 <input type="text" name="<!--{$key}-->" value="<!--{$arrForm[$key].value|h}-->" maxlength="<!--{$arrForm[$key].length}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" size="60" class="box60" />.css 45 <span class="attention"> (上限<!--{$arrForm[$key].length}-->文字)</span> 46 <!--{if $arrErr[$key] != ""}--> <div class="attention"><!--{$arrErr[$key]}--></div> <!--{/if}--> 39 47 </td> 40 48 </tr> … … 42 50 <th>CSS内容</th> 43 51 <td> 44 <textarea id="css" class="top" name="css" cols=90 rows=<!--{$area_row}--> align="left" wrap=off style="width: 650px;"><!--{$css_data|h}--></textarea> 52 <!--{assign var=key value="css_data"}--> 53 <textarea id="css" class="top" name="<!--{$key}-->" cols="90" rows=<!--{$area_row}--> align="left" style="width: 650px;"><!--{$arrForm[$key].value|h}--></textarea> 45 54 <input type="hidden" name="area_row" value="<!--{$area_row}-->" /> 46 55 <div class="btn"> -
branches/version-2_11-dev/data/class/pages/admin/design/LC_Page_Admin_Design_CSS.php
r20813 r20860 68 68 * Page のアクション. 69 69 * 70 * FIXME css ファイルの取得方法を要修正71 *72 70 * @return void 73 71 */ 74 72 function action() { 75 $objFileManager = new SC_Helper_FileManager_Ex(); 76 $this->objLayout = new SC_Helper_PageLayout_Ex(); 73 $objLayout = new SC_Helper_PageLayout_Ex(); 77 74 78 75 $objFormParam = new SC_FormParam_Ex(); 79 $this->lfInitParam($objFormParam, $_REQUEST); 76 $this->lfInitParam($objFormParam); 77 $objFormParam->setParam($_REQUEST); 78 $objFormParam->convParam(); 79 $this->arrErr = $objFormParam->checkError(); 80 $is_error = (!SC_Utils_Ex::isBlank($this->arrErr)); 80 81 81 82 // CSSファイル名を取得 82 $css_name = $objFormParam->getValue('css_name'); 83 $this->css_name = $css_name; 84 $old_css_name = $objFormParam->getValue('old_css_name'); 85 if ($old_css_name == "" && $css_name != "") { 86 $old_css_name = $css_name; 87 } 88 $this->old_css_name = $old_css_name; 89 90 // 端末種別IDを取得 91 $device_type_id = $objFormParam->getValue('device_type_id'); 92 93 //サブタイトルの追加 94 $this->tpl_subtitle .= ' - ' . $this->arrDeviceType[$device_type_id]; 95 96 $css_dir = $this->objLayout->getTemplatePath($device_type_id, true) . "css/"; 97 $css_path = $css_dir . $css_name . '.css'; 98 99 // CSSファイルの読み込み 100 if($css_name != ''){ 101 $css_data = $objFileManager->sfReadFile($css_path); 102 } 103 // テキストエリアに表示 104 $this->css_data = $css_data; 83 $this->css_name = $objFormParam->getValue('css_name'); 84 $this->old_css_name = $objFormParam->getValue('old_css_name', $this->css_name); 85 $this->device_type_id = $objFormParam->getValue('device_type_id', DEVICE_TYPE_PC); 86 87 $css_dir = $objLayout->getTemplatePath($this->device_type_id, true) . "css/"; 88 $css_path = $css_dir . $this->css_name . '.css'; 105 89 106 90 switch($this->getMode()) { 107 91 // データ更新処理 108 92 case 'confirm': 109 $this->lfExecuteConfirm($css_dir, $css_name, $old_css_name, $css_path); 93 if (!$is_error) { 94 $this->arrErr = $this->lfCheckError($objFormParam, $this->arrErr); 95 if (SC_Utils_Ex::isBlank($this->arrErr)) { 96 if ($this->doRegister($css_dir, $this->css_name, $this->old_css_name, $css_path, 97 $objFormParam->getValue('css_data'))) { 98 $this->tpl_onload = "alert('登録が完了しました。');"; 99 } 100 } 101 } 110 102 break; 111 103 case 'delete': 112 $this->lfExecuteDelete($css_path, $device_type_id); 104 if (!$is_error) { 105 if ($this->doDelete($css_path)) { 106 SC_Response_Ex::reload(array('device_type_id' => $this->device_type_id, 107 'msg' => 'on'), true); 108 } 109 } 113 110 break; 114 111 default: 112 if (isset($_GET['msg']) && $_GET['msg'] == 'on') { 113 // 完了メッセージ 114 $this->tpl_onload = "alert('登録が完了しました。');"; 115 } 115 116 break; 116 117 } 117 118 118 // ファイルリストを取得 119 $this->arrCSSList = $this->lfGetCSSList($css_dir); 120 $this->device_type_id = $device_type_id; 119 if (!$is_error) { 120 // CSSファイルの読み込み 121 if (!SC_Utils_Ex::isBlank($this->css_name)) { 122 $objFormParam->setValue('css_data', file_get_contents($css_path)); 123 } 124 // ファイルリストを取得 125 $this->arrCSSList = $this->getCSSList($css_dir); 126 } else { 127 // 画面にエラー表示しないため, ログ出力 128 GC_Utils_Ex::gfPrintLog('Error: ' . print_r($this->arrErr, true)); 129 130 } 131 $this->tpl_subtitle .= ' - ' . $this->arrDeviceType[$this->device_type_id]; 132 $this->arrForm = $objFormParam->getFormParamList(); 121 133 } 122 134 … … 130 142 } 131 143 132 133 144 /** 134 145 * パラメータ情報の初期化 135 146 * 136 147 * @param object $objFormParam SC_FormParamインスタンス 137 * @param array $arrPost $_POSTデータ 138 * @return void 139 */ 140 function lfInitParam(&$objFormParam, $arrPost) { 141 $objFormParam->addParam("端末種別ID", "device_type_id", INT_LEN, 'n', array("NUM_CHECK", "MAX_LENGTH_CHECK"), DEVICE_TYPE_PC); 142 $objFormParam->addParam("CSSファイル名", "css_name", MTEXT_LEN, 'a', array("MAX_LENGTH_CHECK")); 143 $objFormParam->addParam("旧CSSファイル名", "old_css_name", MTEXT_LEN, 'a', array("MAX_LENGTH_CHECK")); 144 $objFormParam->setParam($arrPost); 145 $objFormParam->convParam(); 146 } 147 148 function lfExecuteConfirm($css_dir, $css_name, $old_css_name, $css_path) { 148 * @return void 149 */ 150 function lfInitParam(&$objFormParam) { 151 $objFormParam->addParam("端末種別ID", "device_type_id", INT_LEN, 'n', array("NUM_CHECK", "MAX_LENGTH_CHECK")); 152 $objFormParam->addParam("CSSファイル名", "css_name", STEXT_LEN, 'a', array("MAX_LENGTH_CHECK")); 153 $objFormParam->addParam("旧CSSファイル名", "old_css_name", STEXT_LEN, 'a', array("MAX_LENGTH_CHECK")); 154 $objFormParam->addParam("CSSデータ", "css_data"); 155 156 } 157 158 /** 159 * 登録を実行する. 160 * 161 * ファイルの作成に失敗した場合は, エラーメッセージを出力する. 162 * 163 * @param string $css_dir CSS ディレクトリ 164 * @param string $css_name CSSファイル名 165 * @param string $old_css_name 旧CSSファイル名 166 * @param string $css_path CSSファイルの絶対パス 167 * @param string $css_data 書き込みを行うデータ 168 * @return boolean 登録が成功した場合 true; 失敗した場合 false 169 */ 170 function doRegister($css_dir, $css_name, $old_css_name, $css_path, $css_data) { 149 171 $objFileManager = new SC_Helper_FileManager_Ex(); 150 172 151 // エラーチェック 152 $this->arrErr = $this->lfErrorCheck($_POST, $css_dir); 153 154 // エラーがなければ更新処理を行う 155 if (count($this->arrErr) == 0) { 156 // 旧ファイルの削除 157 if ($old_css_name != '' && $old_css_name != $css_name) { 158 $objFileManager->sfDeleteDir($css_dir . $old_css_name . '.css'); 159 } 160 // プレビュー用テンプレートに書き込み 161 $objFileManager->sfWriteFile($css_path, $_POST['css']); 162 163 $this->tpl_onload="alert('登録が完了しました。');"; 164 $this->old_css_name = $css_name; 165 } 166 $this->css_data = $_POST['css']; 167 } 168 169 function lfExecuteDelete($css_path, $device_type_id) { 170 $objFileManager = new SC_Helper_FileManager_Ex(); 171 172 // css_name が空でない場合にはdeleteを実行 173 if ($_POST['css_name'] !== '') { 174 $objFileManager->sfDeleteDir($css_path); 175 } 176 $this->objDisplay->reload(array('device_type_id' => $device_type_id), true); 173 if (!SC_Utils_Ex::isBlank($old_css_name) 174 && $old_css_name != $css_name) { 175 if (!unlink($css_dir . $old_css_name . '.css')) { 176 $this->arrErr['err'] = '※ 旧ファイルの削除に失敗しました<br />'; 177 return false; 178 } 179 } 180 181 if (!SC_Helper_FileManager_Ex::sfWriteFile($css_path, $css_data)) { 182 $this->arrErr['err'] = '※ CSSの書き込みに失敗しました<br />'; 183 return false; 184 } 185 return true; 186 } 187 188 /** 189 * 削除を実行する. 190 * 191 * @param string $css_path CSSファイルの絶対パス 192 * @return boolean 削除が成功した場合 true; 失敗した場合 false 193 */ 194 function doDelete($css_path) { 195 if (!unlink($css_path)) { 196 $this->arrErr['err'] = '※ CSSの削除に失敗しました<br />'; 197 return false; 198 } 199 return true; 177 200 } 178 201 … … 183 206 * @return array ファイルリスト 184 207 */ 185 function lfGetCSSList($css_dir) {208 function getCSSList($css_dir) { 186 209 $objFileManager = new SC_Helper_FileManager_Ex(); 187 210 188 211 $arrFileList = $objFileManager->sfGetFileList($css_dir); 189 foreach ($arrFileList as $ key => $val) {212 foreach ($arrFileList as $val) { 190 213 if (!$val['is_dir']) { 191 214 $arrCSSList[] = array( … … 199 222 200 223 /** 201 * 入力項目のエラーチェックを行う. 202 * 203 * @param array $arrData 入力データ 204 * @param array $css_dir CSSディレクトリ 205 * @return array エラー情報 206 */ 207 function lfErrorCheck($array, $css_dir) { 208 $objErr = new SC_CheckError_Ex($array); 209 210 $objErr->doFunc(array("CSSファイル名", "css_name", STEXT_LEN), array("EXIST_CHECK", "NO_SPTAB", "MAX_LENGTH_CHECK")); 211 212 // 入力文字が英数字,"_","-"以外ならエラーを返す 213 if(!isset($objErr->arrErr['css_name'])){ 214 if(!ereg("^[a-zA-Z0-9_\.-]+$", $array['css_name'])) { 215 $objErr->arrErr['css_name'] = '※ CSSファイル名は英数字と"_"および"-"だけを入力してください。<br />'; 216 } 217 } 218 219 // 同一のファイル名が存在している場合にはエラー 220 if(!isset($objErr->arrErr['css_name'])){ 221 $arrCSSList = $this->lfGetCSSList($css_dir); 222 foreach ($arrCSSList as $key => $val) { 223 if ($val['css_name'] == $array['css_name']) { 224 if ($array['old_css_name'] == '' || $array['old_css_name'] != $array['css_name']) { 225 $errFlg = TRUE; 224 * エラーチェックを行う. 225 * 226 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 227 * @return array エラーメッセージの配列 228 */ 229 function lfCheckError(&$objFormParam, &$arrErr) { 230 $arrParams = $objFormParam->getHashArray(); 231 $objErr = new SC_CheckError_Ex($arrParams); 232 $objErr->arrErr =& $arrErr; 233 $objErr->doFunc(array('CSSファイル名', 'css_name', STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK","FILE_NAME_CHECK_BY_NOUPLOAD")); 234 235 $device_type_id = $objFormParam->getValue('device_type_id'); 236 $css_name = $objFormParam->getValue('css_name'); 237 $old_css_name = $objFormParam->getValue('old_css_name', $css_name); 238 239 $is_error = false; 240 // 重複チェック 241 if(!SC_Utils_Ex::isBlank(($objErr->arrErr['css_name']))) { 242 $arrCSSList = $this->getCSSList($this->getCSSDir()); 243 foreach ($arrCSSList as $val) { 244 if ($val['css_name'] == $css_name) { 245 if (SC_Utils_Ex::isBlank($old_css_name) 246 || $old_css_name != $css_name) { 247 $is_error = true; 226 248 } 227 249 } 228 250 } 229 if ($errFlg) $objErr->arrErr['css_name'] = '※ 同じファイル名のデータが存在しています。別の名称を付けてください。<br />'; 230 } 231 251 if ($is_error) { 252 $objErr->arrErr['css_name'] = '※ 同じファイル名のデータが存在しています。別の名称を付けてください。<br />'; 253 } 254 } 232 255 return $objErr->arrErr; 256 } 257 258 /** 259 * CSSディレクトリを取得する. 260 * 261 * @param integer $device_type_id 端末種別ID 262 * @return string CSSディレクトリ 263 */ 264 function getCSSDir($device_type_id) { 265 return SC_Helper_PageLayout_Ex::getTemplatePath($device_type_id, true) . "css/"; 233 266 } 234 267 } -
branches/version-2_11-dev/data/class/pages/admin/design/LC_Page_Admin_Design_Header.php
r20859 r20860 84 84 // 登録 85 85 case 'regist': 86 if ($this->doRegister($objFormParam)) { 87 $this->tpl_onload = "alert('登録が完了しました。');"; 86 $this->arrErr = $this->lfCheckError($objFormParam, $this->arrErr); 87 if (SC_Utils_Ex::isBlank($this->arrErr)) { 88 if ($this->doRegister($objFormParam)) { 89 $this->tpl_onload = "alert('登録が完了しました。');"; 90 } 88 91 } 89 92 break; … … 140 143 * @return array エラーメッセージの配列 141 144 */ 142 function lfCheckError(&$objFormParam, &$arrErr , &$objLayout) {145 function lfCheckError(&$objFormParam, &$arrErr) { 143 146 $arrParams = $objFormParam->getHashArray(); 144 147 $objErr = new SC_CheckError_Ex($arrParams);
Note: See TracChangeset
for help on using the changeset viewer.