diff --git a/classes/extravar/Extravar.class.php b/classes/extravar/Extravar.class.php index b29f40b17..6178c9a4c 100644 --- a/classes/extravar/Extravar.class.php +++ b/classes/extravar/Extravar.class.php @@ -45,7 +45,7 @@ if(!is_array($GLOBALS['XE_EXTRAVARS'][$this->module_srl])) $GLOBALS['XE_EXTRAVARS'][$this->module_srl] = array(); foreach($extra_keys as $key => $val) { $obj = null; - $obj = new ExtraItem($val->module_srl, $val->idx, $val->name, $val->type, $val->default, $val->desc, $val->is_required, $val->search, $val->value); + $obj = new ExtraItem($val->module_srl, $val->idx, $val->name, $val->type, $val->default, $val->desc, $val->is_required, $val->search, $val->value, $val->eid); $GLOBALS['XE_EXTRAVARS'][$this->module_srl][$val->idx] = $obj; } } @@ -76,11 +76,12 @@ var $is_required = 'N'; var $search = 'N'; var $value = null; + var $eid = ''; /** * @brief constructor **/ - function ExtraItem($module_srl, $idx, $name, $type = 'text', $default = null, $desc = '', $is_required = 'N', $search = 'N', $value = null) { + function ExtraItem($module_srl, $idx, $name, $type = 'text', $default = null, $desc = '', $is_required = 'N', $search = 'N', $value = null, $eid = '') { if(!$idx) return; $this->module_srl = $module_srl; $this->idx = $idx; @@ -91,6 +92,7 @@ $this->is_required = $is_required; $this->search = $search; $this->value = $value; + $this->eid = $eid; } /** diff --git a/common/lang/ko.lang.php b/common/lang/ko.lang.php index e810d8c56..2a2735ade 100644 --- a/common/lang/ko.lang.php +++ b/common/lang/ko.lang.php @@ -269,6 +269,7 @@ $lang->default_value = '기본 값'; $lang->is_active = '활성'; $lang->is_required = '필수항목'; + $lang->eid = '확장변수 이름'; // ftp 관련 $lang->ftp_form_title = 'FTP 정보 입력'; diff --git a/modules/document/document.admin.controller.php b/modules/document/document.admin.controller.php index c1ada3a9a..4bf6f5356 100644 --- a/modules/document/document.admin.controller.php +++ b/modules/document/document.admin.controller.php @@ -337,8 +337,9 @@ $default = Context::get('default'); $desc = Context::get('desc'); $search = Context::get('search'); + $eid = Context::get('eid'); - if(!$module_srl || !$name) return new Object(-1,'msg_invalid_request'); + if(!$module_srl || !$name || !$eid) return new Object(-1,'msg_invalid_request'); // idx가 지정되어 있지 않으면 최고 값을 지정 if(!$var_idx) { @@ -347,9 +348,18 @@ $var_idx = $output->data->var_idx+1; } + // 이미 존재하는 모듈 이름인지 체크 + $obj->module_srl = $module_srl; + $obj->var_idx = $var_idx; + $obj->eid = $eid; + $output = executeQuery('document.isExistsExtraKey', $obj); + if(!$output->toBool() || $output->data->count) { + return new Object(-1, 'msg_extra_name_exists'); + } + // insert or update $oDocumentController = &getController('document'); - $output = $oDocumentController->insertDocumentExtraKey($module_srl, $var_idx, $name, $type, $is_required, $search, $default, $desc); + $output = $oDocumentController->insertDocumentExtraKey($module_srl, $var_idx, $name, $type, $is_required, $search, $default, $desc, $eid); if(!$output->toBool()) return $output; $this->setMessage('success_registed'); @@ -574,7 +584,7 @@ } else { $args->module_srl = $module_srl; $args->var_idx = $new_idx; - $args->new_idx = -1; + $args->new_idx = -10000; $output = executeQuery('document.updateDocumentExtraKeyIdx', $args); if(!$output->toBool()) return $output; $output = executeQuery('document.updateDocumentExtraVarIdx', $args); @@ -587,7 +597,7 @@ $output = executeQuery('document.updateDocumentExtraVarIdx', $args); if(!$output->toBool()) return $output; - $args->var_idx = -1; + $args->var_idx = -10000; $args->new_idx = $var_idx; $output = executeQuery('document.updateDocumentExtraKeyIdx', $args); if(!$output->toBool()) return $output; diff --git a/modules/document/document.class.php b/modules/document/document.class.php index b4d8441c9..7683414a5 100644 --- a/modules/document/document.class.php +++ b/modules/document/document.class.php @@ -99,6 +99,12 @@ // 2009. 03. 11 확장변수 값 테이블의 인덱스 점검 if(!$oDB->isIndexExists("document_extra_vars", "unique_extra_vars")) return true; + /** + * 2009. 03. 19 : 확장변수 값 테이블에 eid가 없을 경우 추가 + **/ + if(!$oDB->isColumnExists("document_extra_keys","eid")) return true; + if(!$oDB->isColumnExists("document_extra_vars","eid")) return true; + return false; } @@ -200,6 +206,37 @@ $oDB->dropIndex("document_extra_vars", "unique_module_vars", true); } + /** + * 2009. 03. 19 : 확장변수 값 테이블에 eid 없을 경우 추가 + **/ + if(!$oDB->isColumnExists("document_extra_keys","eid")) { + $oDB->addColumn("document_extra_keys","eid","varchar",40); + + $output = executeQuery('document.getGroupsExtraKeys', $obj); + if($output->toBool() && $output->data && count($output->data)) { + foreach($output->data as $extra_keys) { + $args = $extra_keys; + $args->var_idx = $extra_keys->idx; + $args->eid = "extra_vars".$extra_keys->idx; + $output = executeQuery('document.updateDocumentExtraKey', $args); + } + } + } + + if(!$oDB->isColumnExists("document_extra_vars","eid")) { + $oDB->addColumn("document_extra_vars","eid","varchar",40); + $obj->var_idx = '-1,-2'; + $output = executeQuery('document.getGroupsExtraVars', $obj); + if($output->toBool() && $output->data && count($output->data)) { + foreach($output->data as $extra_vars) { + $args = $extra_vars; + $args->var_idx = $extra_vars->idx; + $args->eid = "extra_vars".$extra_vars->idx; + $output = executeQuery('document.updateDocumentExtraVar', $args); + } + } + } + return new Object(0,'success_updated'); } diff --git a/modules/document/document.controller.php b/modules/document/document.controller.php index 8f1258fe3..84e7185f0 100644 --- a/modules/document/document.controller.php +++ b/modules/document/document.controller.php @@ -209,7 +209,7 @@ if(isset($obj->{'extra_vars'.$idx})) $value = trim($obj->{'extra_vars'.$idx}); elseif(isset($obj->{$extra_item->name})) $value = trim($obj->{$extra_item->name}); if(!isset($value)) continue; - $this->insertDocumentExtraVar($obj->module_srl, $obj->document_srl, $idx, $value); + $this->insertDocumentExtraVar($obj->module_srl, $obj->document_srl, $idx, $value, $extra_item->eid); } } @@ -358,7 +358,7 @@ if(isset($obj->{'extra_vars'.$idx})) $value = trim($obj->{'extra_vars'.$idx}); elseif(isset($obj->{$extra_item->name})) $value = trim($obj->{$extra_item->name}); if(!isset($value)) continue; - $this->insertDocumentExtraVar($obj->module_srl, $obj->document_srl, $idx, $value); + $this->insertDocumentExtraVar($obj->module_srl, $obj->document_srl, $idx, $value, $extra_item->eid); } } @@ -566,8 +566,8 @@ /** * @breif documents 테이블의 확장 변수 등록 **/ - function insertDocumentExtraKey($module_srl, $var_idx, $var_name, $var_type, $var_is_required = 'N', $var_search = 'N', $var_default = '', $var_desc = '') { - if(!$module_srl || !$var_idx || !$var_name || !$var_type) return new Object(-1,'msg_invalid_request'); + function insertDocumentExtraKey($module_srl, $var_idx, $var_name, $var_type, $var_is_required = 'N', $var_search = 'N', $var_default = '', $var_desc = '', $eid) { + if(!$module_srl || !$var_idx || !$var_name || !$var_type || !$eid) return new Object(-1,'msg_invalid_request'); $obj->module_srl = $module_srl; $obj->var_idx = $var_idx; @@ -577,6 +577,27 @@ $obj->var_search = $var_search=='Y'?'Y':'N'; $obj->var_default = $var_default; $obj->var_desc = $var_desc; + $obj->eid = $eid; + + $output = executeQuery('document.getDocumentExtraKeys', $obj); + if(!$output->data) return executeQuery('document.insertDocumentExtraKey', $obj); + $output = executeQuery('document.updateDocumentExtraKey', $obj); + + // extra_vars에서 확장 변수 eid를 일괄 업데이트 + $output = executeQuery('document.updateDocumentExtraVar', $obj); + + return $output; + } + + /** + * @breif documents 테이블의 확장 변수 등록 + **/ + function updateDocumentExtraKey($module_srl, $var_idx, $eid) { + if(!$module_srl || !$var_idx || !$eid) return new Object(-1,'msg_invalid_request'); + + $obj->module_srl = $module_srl; + $obj->var_idx = $var_idx; + $obj->eid = $eid; $output = executeQuery('document.getDocumentExtraKeys', $obj); if(!$output->data) return executeQuery('document.insertDocumentExtraKey', $obj); @@ -600,7 +621,7 @@ /** * @breif documents 테이블의 확장 변수 값 등록 **/ - function insertDocumentExtraVar($module_srl, $document_srl, $var_idx, $value, $lang_code = '') { + function insertDocumentExtraVar($module_srl, $document_srl, $var_idx, $value, $eid = null, $lang_code = '') { if(!$module_srl || !$document_srl || !$var_idx || !isset($value)) return new Object(-1,'msg_invalid_request'); if(!$lang_code) $lang_code = Context::getLangType(); @@ -608,7 +629,8 @@ $obj->document_srl = $document_srl; $obj->var_idx = $var_idx; $obj->value = $value; - $obj->lang_code = $lang_code ; + $obj->lang_code = $lang_code; + $obj->eid = $eid; executeQuery('document.insertDocumentExtraVar', $obj); } @@ -616,11 +638,12 @@ /** * @brief documents 확장변수 값 제거 **/ - function deleteDocumentExtraVars($module_srl, $document_srl = null, $var_idx = null, $lang_code = null) { + function deleteDocumentExtraVars($module_srl, $document_srl = null, $var_idx = null, $lang_code = null, $eid = null) { $obj->module_srl = $module_srl; if(!is_null($document_srl)) $obj->document_srl = $document_srl; if(!is_null($var_idx)) $obj->var_idx = $var_idx; if(!is_null($lang_code)) $obj->lang_code = $lang_code; + if(!is_null($eid)) $obj->lang_code = $eid; $output = executeQuery('document.deleteDocumentExtraVars', $obj); return $output; } diff --git a/modules/document/document.model.php b/modules/document/document.model.php index 147f032ba..8797adf01 100644 --- a/modules/document/document.model.php +++ b/modules/document/document.model.php @@ -53,13 +53,13 @@ else if($val->idx == -2) $GLOBALS['XE_DOCUMENT_LIST'][$val->document_srl]->add('content', $val->value); } elseif($val->idx>0) { if($lang_code == $val->lang_code) { - $obj = new ExtraItem($val->module_srl, $val->idx, $val->name, $val->type, $val->default, $val->desc, $val->is_required, $val->search, $val->value); + $obj = new ExtraItem($val->module_srl, $val->idx, $val->name, $val->type, $val->default, $val->desc, $val->is_required, $val->search, $val->value, $val->eid); $GLOBALS['XE_EXTRA_VARS'][$val->document_srl][$val->idx] = $obj; } else if($lang_code == $GLOBALS['XE_DOCUMENT_LIST'][$val->document_srl]->lang_code && !isset($GLOBALS['XE_EXTRA_VARS'][$val->document_srl][$val->idx])) { - $obj = new ExtraItem($val->module_srl, $val->idx, $val->name, $val->type, $val->default, $val->desc, $val->is_required, $val->search, $val->value); + $obj = new ExtraItem($val->module_srl, $val->idx, $val->name, $val->type, $val->default, $val->desc, $val->is_required, $val->search, $val->value, $val->eid); $GLOBALS['XE_EXTRA_VARS'][$val->document_srl][$val->idx] = $obj; } else if(!isset($GLOBALS['XE_EXTRA_VARS'][$val->document_srl][$val->idx])) { - $obj = new ExtraItem($val->module_srl, $val->idx, $val->name, $val->type, $val->default, $val->desc, $val->is_required, $val->search, $val->value); + $obj = new ExtraItem($val->module_srl, $val->idx, $val->name, $val->type, $val->default, $val->desc, $val->is_required, $val->search, $val->value, $val->eid); $GLOBALS['XE_EXTRA_VARS'][$val->document_srl][$val->idx] = $obj; } } diff --git a/modules/document/queries/getDocumentExtraKeys.xml b/modules/document/queries/getDocumentExtraKeys.xml index cea78b74b..bd0ad59cb 100644 --- a/modules/document/queries/getDocumentExtraKeys.xml +++ b/modules/document/queries/getDocumentExtraKeys.xml @@ -11,6 +11,7 @@ + diff --git a/modules/document/queries/getDocumentExtraVars.xml b/modules/document/queries/getDocumentExtraVars.xml index 58fd59136..180fa8928 100644 --- a/modules/document/queries/getDocumentExtraVars.xml +++ b/modules/document/queries/getDocumentExtraVars.xml @@ -20,6 +20,7 @@ + @@ -27,6 +28,7 @@ + diff --git a/modules/document/queries/getDocumentsExtraVars.xml b/modules/document/queries/getDocumentsExtraVars.xml index 5fd98a335..73e5db94c 100644 --- a/modules/document/queries/getDocumentsExtraVars.xml +++ b/modules/document/queries/getDocumentsExtraVars.xml @@ -20,6 +20,7 @@ + diff --git a/modules/document/queries/getGroupsExtraKeys.xml b/modules/document/queries/getGroupsExtraKeys.xml new file mode 100644 index 000000000..cd38d4a34 --- /dev/null +++ b/modules/document/queries/getGroupsExtraKeys.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/document/queries/getGroupsExtraVars.xml b/modules/document/queries/getGroupsExtraVars.xml new file mode 100644 index 000000000..574ee18bb --- /dev/null +++ b/modules/document/queries/getGroupsExtraVars.xml @@ -0,0 +1,23 @@ + + +
+ + + + + + + + + + + + + + + + + + + + diff --git a/modules/document/queries/insertDocumentExtraKey.xml b/modules/document/queries/insertDocumentExtraKey.xml index 0103e7f2f..8bf33a63f 100644 --- a/modules/document/queries/insertDocumentExtraKey.xml +++ b/modules/document/queries/insertDocumentExtraKey.xml @@ -11,5 +11,6 @@ + diff --git a/modules/document/queries/insertDocumentExtraVar.xml b/modules/document/queries/insertDocumentExtraVar.xml index 32528617b..cef45f439 100644 --- a/modules/document/queries/insertDocumentExtraVar.xml +++ b/modules/document/queries/insertDocumentExtraVar.xml @@ -8,5 +8,6 @@ + diff --git a/modules/document/queries/isExistsExtraKey.xml b/modules/document/queries/isExistsExtraKey.xml new file mode 100644 index 000000000..8aeac3325 --- /dev/null +++ b/modules/document/queries/isExistsExtraKey.xml @@ -0,0 +1,13 @@ + + +
+ + + + + + + + + + diff --git a/modules/document/queries/updateDocumentExtraKey.xml b/modules/document/queries/updateDocumentExtraKey.xml index af0fb57d2..07966b4fd 100644 --- a/modules/document/queries/updateDocumentExtraKey.xml +++ b/modules/document/queries/updateDocumentExtraKey.xml @@ -9,6 +9,7 @@ + diff --git a/modules/document/queries/updateDocumentExtraVar.xml b/modules/document/queries/updateDocumentExtraVar.xml index 818b28147..52bdcb9bb 100644 --- a/modules/document/queries/updateDocumentExtraVar.xml +++ b/modules/document/queries/updateDocumentExtraVar.xml @@ -5,6 +5,7 @@ + diff --git a/modules/document/schemas/document_extra_keys.xml b/modules/document/schemas/document_extra_keys.xml index 96d1026c2..5334e1882 100644 --- a/modules/document/schemas/document_extra_keys.xml +++ b/modules/document/schemas/document_extra_keys.xml @@ -7,4 +7,5 @@ +
diff --git a/modules/document/schemas/document_extra_vars.xml b/modules/document/schemas/document_extra_vars.xml index d7b2e0efd..36e3df05f 100644 --- a/modules/document/schemas/document_extra_vars.xml +++ b/modules/document/schemas/document_extra_vars.xml @@ -4,4 +4,5 @@ + diff --git a/modules/document/tpl/extra_keys.html b/modules/document/tpl/extra_keys.html index e92bf7508..74264265a 100644 --- a/modules/document/tpl/extra_keys.html +++ b/modules/document/tpl/extra_keys.html @@ -14,6 +14,12 @@

{$lang->extra_vars} {$selected_var_idx}

+ + + + + @@ -79,6 +86,7 @@ + diff --git a/modules/document/tpl/filter/insert_extra_var.xml b/modules/document/tpl/filter/insert_extra_var.xml index 0b8e3d96d..e011d7386 100644 --- a/modules/document/tpl/filter/insert_extra_var.xml +++ b/modules/document/tpl/filter/insert_extra_var.xml @@ -2,6 +2,7 @@ + diff --git a/modules/module/lang/ko.lang.php b/modules/module/lang/ko.lang.php index 690a3b702..00988d124 100644 --- a/modules/module/lang/ko.lang.php +++ b/modules/module/lang/ko.lang.php @@ -64,6 +64,7 @@ $lang->msg_move_failed = '이동 실패하였습니다'; $lang->msg_cannot_delete_for_child = '하부 분류가 있는 분류는 삭제하실 수 없습니다'; $lang->msg_limit_mid ='모듈이름은 영문+[영문+숫자+_] 만 가능합니다.'; + $lang->msg_extra_name_exists = '이미 존재하는 확장변수 이름입니다. 다른 이름을 입력해주세요.'; $lang->about_browser_title = '브라우저의 제목에 나타나는 값입니다. RSS/Trackback에서도 사용됩니다.'; $lang->about_mid = '모듈이름은 http://주소/?mid=모듈이름 처럼 직접 호출할 수 있는 값입니다. ( 영문+[영문+숫자+_] 만 가능)'; @@ -83,7 +84,9 @@ $lang->about_grant_deatil = '가입한 사용자는 cafeXE등 분양형 가상 사이트에 가입을 한 로그인 사용자를 의미합니다'; $lang->about_module = "XE는 기본 라이브러리를 제외한 나머지는 모두 모듈로 구성되어 있습니다.\n모듈관리 모듈은 설치된 모든 모듈을 보여주고 관리를 도와줍니다."; $lang->about_extra_vars_default_value = '다중/단일 선택등 기본값이 여러개가 필요한 경우 , (콤마)로 연결하시면 됩니다'; - $lang->about_search_virtual_site = '가상 사이트(카페XE등)의 도메인을 입력하신 후 검색하세요.
가상 사이트이외의 모듈은 내용을 비우고 검색하시면 됩니다. (http:// 는 제외)'; + $lang->about_search_virtual_site = '가상 사이트(카페XE등)의 도메인을 입력하신 후 검색하세요.
가상 사이트이외의 모듈은 내용을 비우고 검색하시면 됩니다. (http:// 는 제 + 외)'; + $lang->about_extra_vars_eid_value = '확장변수에 이름을 적어주세요. ( 영문+[영문+숫자+_] 만 가능)'; $lang->about_langcode = '언어별로 다르게 설정하고 싶으시면 언어코드 찾기를 이용해주세요'; $lang->about_file_extension= "%s 파일만 가능합니다."; ?>
{$lang->eid}
+

{$lang->about_extra_vars_eid_value}

+
{$lang->column_name}
@@ -68,6 +74,7 @@
{$lang->no}
{$lang->eid}
{$lang->column_name}
{$lang->column_type}
{$lang->is_required}
{$val->idx}{$val->eid} {$val->name} {$lang->column_type_list[$val->type]} {$lang->is_required}N