diff --git a/classes/db/DBMssql.class.php b/classes/db/DBMssql.class.php index ec6e4d541..f53b32ac4 100644 --- a/classes/db/DBMssql.class.php +++ b/classes/db/DBMssql.class.php @@ -30,11 +30,11 @@ class DBMssql extends DB var $column_type = array( 'bignumber' => 'bigint', 'number' => 'int', - 'varchar' => 'varchar', - 'char' => 'char', - 'text' => 'text', - 'bigtext' => 'text', - 'date' => 'varchar(14)', + 'varchar' => 'nvarchar', + 'char' => 'nchar', + 'text' => 'ntext', + 'bigtext' => 'ntext', + 'date' => 'nvarchar(14)', 'float' => 'float', ); diff --git a/modules/admin/lang/lang.xml b/modules/admin/lang/lang.xml index 3fc63c16b..e93335114 100644 --- a/modules/admin/lang/lang.xml +++ b/modules/admin/lang/lang.xml @@ -1590,8 +1590,8 @@ - 만약 접근이 차단된 경우 './files/config/db.config.php' 파일에서 `'use_sitelock' => 'Y'`를 `'use_sitelock' => 'N'`으로 변경하여 차단을 해제할 수 있습니다.]]> - もし接近が遮断された場合、'./files/config/db.config.php' ファイルから `'use_sitelock' => 'Y'`を `'use_sitelock' => 'N'`へ変更すれば遮断が解除できます。]]> + 만약 접근이 차단된 경우 './files/config/db.config.php' 파일에서 `'use_sitelock' => 'Y'`를 `'use_sitelock' => 'N'`으로 변경하여 차단을 해제할 수 있습니다.
사이트 잠금 디자인 파일의 위치는 './common/tpl/sitelock.html' 입니다.]]>
+ もし接近が遮断された場合、'./files/config/db.config.php' ファイルから `'use_sitelock' => 'Y'`を `'use_sitelock' => 'N'`へ変更すれば遮断が解除できます。
サイトロックの設計ファイルの場所は、'./commo/tpl/sitelock.html' です。]]>
diff --git a/modules/board/board.admin.view.php b/modules/board/board.admin.view.php index 3f53e5e7d..90cfbee54 100644 --- a/modules/board/board.admin.view.php +++ b/modules/board/board.admin.view.php @@ -55,7 +55,7 @@ class boardAdminView extends board { // install order (sorting) options foreach($this->order_target as $key) $order_target[$key] = Context::getLang($key); - $order_target['list_order'] = Context::getLang('document_srl'); + $order_target['list_order'] = Context::getLang('regdate'); $order_target['update_order'] = Context::getLang('last_update'); Context::set('order_target', $order_target); } diff --git a/modules/board/board.class.php b/modules/board/board.class.php index d3adbd471..cb81e10f7 100644 --- a/modules/board/board.class.php +++ b/modules/board/board.class.php @@ -11,7 +11,7 @@ class board extends ModuleObject { var $search_option = array('title','content','title_content','comment','user_name','nick_name','user_id','tag'); ///< 검색 옵션 - var $order_target = array('list_order', 'update_order', 'regdate', 'voted_count', 'blamed_count', 'readed_count', 'comment_count', 'title'); // 정렬 옵션 + var $order_target = array('list_order', 'update_order', 'voted_count', 'blamed_count', 'readed_count', 'comment_count', 'title'); // 정렬 옵션 var $skin = "default"; ///< skin name var $list_count = 20; ///< the number of documents displayed in a page diff --git a/modules/board/skins/default/list.html b/modules/board/skins/default/list.html index bd58261a4..b5b06ed55 100644 --- a/modules/board/skins/default/list.html +++ b/modules/board/skins/default/list.html @@ -11,9 +11,9 @@ {$lang->writer} {$lang->user_id} {$lang->user_name} - {$lang->date} - {$lang->last_update} - {$lang->last_post} + {$lang->date} + {$lang->last_update} + {$lang->last_post} {$lang->readed_count} {$lang->voted_count} {$lang->blamed_count} diff --git a/modules/communication/communication.admin.controller.php b/modules/communication/communication.admin.controller.php index be289821f..1f9e8b028 100644 --- a/modules/communication/communication.admin.controller.php +++ b/modules/communication/communication.admin.controller.php @@ -24,7 +24,7 @@ class communicationAdminController extends communication function procCommunicationAdminInsertConfig() { // get the default information - $args = Context::gets('skin', 'colorset', 'editor_skin', 'sel_editor_colorset', 'mskin', 'mcolorset', 'layout_srl', 'mlayout_srl'); + $args = Context::gets('skin', 'colorset', 'editor_skin', 'sel_editor_colorset', 'mskin', 'mcolorset', 'layout_srl', 'mlayout_srl', 'grant_write_default','grant_write_group'); $args->editor_colorset = $args->sel_editor_colorset; unset($args->sel_editor_colorset); @@ -53,6 +53,11 @@ class communicationAdminController extends communication $args->layout_srl = NULL; } + $oCommunicationModel = getModel('communication'); + $args->grant_write = $oCommunicationModel->getGrantArray($args->grant_write_default, $args->grant_write_group); + unset($args->grant_write_default); + unset($args->grant_write_group); + // create the module module Controller object $oModuleController = getController('module'); $output = $oModuleController->insertModuleConfig('communication', $args); diff --git a/modules/communication/communication.admin.view.php b/modules/communication/communication.admin.view.php index 039a33c99..264161bfe 100644 --- a/modules/communication/communication.admin.view.php +++ b/modules/communication/communication.admin.view.php @@ -58,6 +58,10 @@ class communicationAdminView extends communication $security->encodeHTML('communication_skin_list..title'); $security->encodeHTML('communication_mobile_skin_list..title'); + $oMemberModel = getModel('member'); + $group_list = $oMemberModel->getGroups($this->site_srl); + Context::set('group_list', $group_list); + // specify a template $this->setTemplatePath($this->module_path . 'tpl'); $this->setTemplateFile('index'); diff --git a/modules/communication/communication.controller.php b/modules/communication/communication.controller.php index c16f4457f..cbda510a2 100644 --- a/modules/communication/communication.controller.php +++ b/modules/communication/communication.controller.php @@ -88,6 +88,12 @@ class communicationController extends communication // Check if there is a member to receive a message $oMemberModel = getModel('member'); $oCommunicationModel = getModel('communication'); + $config = $oCommunicationModel->getConfig(); + + if(!$oCommunicationModel->checkGrant($config->grant_write)) + { + return new Object(-1, 'msg_not_permitted'); + } $receiver_member_info = $oMemberModel->getMemberInfoByMemberSrl($receiver_srl); if($receiver_member_info->member_srl != $receiver_srl) diff --git a/modules/communication/communication.model.php b/modules/communication/communication.model.php index d5a0f88e3..46e262fd3 100644 --- a/modules/communication/communication.model.php +++ b/modules/communication/communication.model.php @@ -51,10 +51,102 @@ class communicationModel extends communication { $communication_config->mskin = 'default'; } + + if(!$communication_config->grant_write) + { + $communication_config->grant_write = array('default_grant'=>'member'); + } return $communication_config; } + /** + * @brief get grant array for insert to database. table module_config's config field + * @param string $default + * @param array $group + * @return array + */ + function getGrantArray($default, $group) + { + $grant = array(); + if($default!="") + { + switch($default) + { + case "-2": + $grant = array("default_grant"=>"site"); + break; + case "-3": + $grant = array("default_grant"=>"manager"); + break; + default : + $grant = array("default_grant"=>"member"); + break; + } + } + else if(is_array($group)) + { + $oMemberModel = getModel('member'); + $group_list = $oMemberModel->getGroups($this->site_srl); + + $group_grant = array(); + foreach($group as $group_srl) + { + $group_grant[$group_srl] = $group_list[$group_srl]->title; + } + $grant = array('group_grant'=>$group_grant); + } + return $grant; + } + + /** + * @brief check member's grant + * @param object $member_info + * @param array $arrGrant + * @return boolean + */ + function checkGrant($arrGrant) + { + if(!$arrGrant) + return false; + + $logged_info = Context::get('logged_info'); + if(!$logged_info) + return false; + + if($logged_info->is_admin == "Y") + return true; + + if($arrGrant['default_grant']) + { + if($arrGrant['default_grant'] == "member" && $logged_info) + return true; + + if($arrGrant['default_grant'] == "site" && $this->site_srl == $logged_info->site_srl) + return true; + + if($arrGrant['default_grant'] == "manager" && $logged_info->is_admin == "Y") + return true; + } + + if($arrGrant['group_grant']) + { + $group_grant = $arrGrant['group_grant']; + if(!is_array($group_grant)) + return false; + + foreach($logged_info->group_list as $group_srl=>$title) + { + if(isset($group_grant[$group_srl])&&$group_grant[$group_srl]==$title) + return true; + } + + } + + return false; + + } + /** * get the message contents * @param int $message_srl diff --git a/modules/communication/lang/lang.xml b/modules/communication/lang/lang.xml index 6f31a0b9c..d4bac684f 100644 --- a/modules/communication/lang/lang.xml +++ b/modules/communication/lang/lang.xml @@ -376,4 +376,12 @@ + + + + + + + + diff --git a/modules/communication/tpl/index.html b/modules/communication/tpl/index.html index e099a2f38..7f21fa105 100644 --- a/modules/communication/tpl/index.html +++ b/modules/communication/tpl/index.html @@ -1,4 +1,5 @@ +
@@ -81,6 +82,24 @@
+
+ +
+ + +
+
+
@@ -89,5 +108,7 @@ jQuery(function() { doGetSkinColorset("{$communication_config->skin}", 'P'); doGetSkinColorset("{$communication_config->mskin}", 'M'); + jQuery('.grant_default').change( function(event) { doShowGrantZone(); } ); + doShowGrantZone() }); diff --git a/modules/document/document.controller.php b/modules/document/document.controller.php index 709099db8..7e3f9e74a 100644 --- a/modules/document/document.controller.php +++ b/modules/document/document.controller.php @@ -793,6 +793,8 @@ class documentController extends document $oCacheHandler = CacheHandler::getInstance('object'); if($oCacheHandler->isSupport()) { + $cache_key = 'document_item:'. getNumberingPath($oDocument->document_srl) . $oDocument->document_srl; + $oCacheHandler->delete($cache_key); } return $output; diff --git a/modules/install/lang/lang.xml b/modules/install/lang/lang.xml index 12fdf353e..75d4b81be 100644 --- a/modules/install/lang/lang.xml +++ b/modules/install/lang/lang.xml @@ -405,7 +405,7 @@ innodb để sử dụng MySql Database.
Giao dịch được kích hoạt cho innodb]]>
- Manual]]> + Manual]]> Manual for more info]]> Manual]]> Manual]]> diff --git a/modules/layout/tpl/layout_info_view.html b/modules/layout/tpl/layout_info_view.html index 43cef668c..e270feccc 100644 --- a/modules/layout/tpl/layout_info_view.html +++ b/modules/layout/tpl/layout_info_view.html @@ -61,7 +61,6 @@ - {@$group = ''} {@$cnt = 1} @@ -137,7 +136,7 @@ - +

{$lang->menu}

diff --git a/modules/trash/conf/module.xml b/modules/trash/conf/module.xml index e6225c9f2..5ffec0ed9 100644 --- a/modules/trash/conf/module.xml +++ b/modules/trash/conf/module.xml @@ -11,6 +11,8 @@ + + diff --git a/modules/trash/lang/lang.xml b/modules/trash/lang/lang.xml index 9c72e44ee..f53058eab 100644 --- a/modules/trash/lang/lang.xml +++ b/modules/trash/lang/lang.xml @@ -83,4 +83,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/trash/queries/getDocumentExtraVars.xml b/modules/trash/queries/getDocumentExtraVars.xml new file mode 100644 index 000000000..c02dd3fad --- /dev/null +++ b/modules/trash/queries/getDocumentExtraVars.xml @@ -0,0 +1,32 @@ + + + +
+ + + + +
+
+ + + + + + + + + + + + + + + + + + + + + +
diff --git a/modules/trash/tpl/trash_list.html b/modules/trash/tpl/trash_list.html index 8f08c3e82..add8cec8a 100644 --- a/modules/trash/tpl/trash_list.html +++ b/modules/trash/tpl/trash_list.html @@ -41,7 +41,7 @@ var no_text_comment = '{$lang->no_text_comment}'; {$lang->no_text_comment} - {$oTrashVO->getTitle()} + {$oTrashVO->getTitle()} {$lang->document}{$lang->comment} {$oTrashVO->getNickName()} diff --git a/modules/trash/tpl/trash_view.html b/modules/trash/tpl/trash_view.html new file mode 100644 index 000000000..8cb422f08 --- /dev/null +++ b/modules/trash/tpl/trash_view.html @@ -0,0 +1,73 @@ +
+

{$lang->cmd_trash} {$lang->trash_description}

+
+

{$lang->delete_info}

+ + + + + + + + + + + + + + +
{$lang->trasher} + {htmlspecialchars($remover_info->nick_name)} [{$remover_info->user_id}] +
{$lang->trash_date}{zdate($oTrashVO->getRegdate(), "Y-m-d H:i:s")}
{$lang->trash_description}{$oTrashVO->getDescription()}
+
+

{$lang->origin_info}

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{$lang->module} + {$module_info->browser_title} ({$module_info->mid}) +
{$lang->title}{$oOrigin->title}
{$lang->writer}{htmlspecialchars($oOrigin->nick_name)} [{$oOrigin->user_id}]
{$lang->regdate}{zdate($oOrigin->regdate,'Y.m.d H:i:s')}
{$val->name}{$val->value}
{$lang->content}{$oOrigin->content}
+ + +
+ + + + + + + + +
+ +
+ + +
+
+ diff --git a/modules/trash/trash.admin.view.php b/modules/trash/trash.admin.view.php index c68635aad..cb5d2b766 100644 --- a/modules/trash/trash.admin.view.php +++ b/modules/trash/trash.admin.view.php @@ -51,6 +51,41 @@ class trashAdminView extends trash // 템플릿 파일 지정 $this->setTemplateFile('trash_list'); } + + + + // Trash View - sejin7940 + function dispTrashAdminView() + { + $trash_srl = Context::get('trash_srl'); + + $oTrashModel = getModel('trash'); + $output = $oTrashModel->getTrash($trash_srl); + if(!$output->data->getTrashSrl()) return new Object(-1, 'msg_invalid_request'); + + $originObject = unserialize($output->data->getSerializedObject()); + if(is_array($originObject)) $originObject = (object)$originObject; + + Context::set('oTrashVO',$output->data); + Context::set('oOrigin',$originObject); + + $oMemberModel = &getModel('member'); + $remover_info = $oMemberModel->getMemberInfoByMemberSrl($output->data->getRemoverSrl()); + Context::set('remover_info', $remover_info); + + $oModuleModel = &getModel('module'); + $module_info = $oModuleModel->getModuleInfoByModuleSrl($originObject->module_srl); + Context::set('module_info', $module_info); + + if($originObject) { + $args_extra->module_srl = $originObject->module_srl; + $args_extra->document_srl = $originObject->document_srl; + $output_extra = executeQueryArray('trash.getDocumentExtraVars', $args_extra); + Context::set('oOriginExtraVars',$output_extra->data); + } + $this->setTemplateFile('trash_view'); + } + } /* End of file trash.admin.view.php */ /* Location: ./modules/trash/trash.admin.view.php */ diff --git a/modules/widget/tpl/js/generate_code.js b/modules/widget/tpl/js/generate_code.js index 87eb393f6..7d905fc23 100644 --- a/modules/widget/tpl/js/generate_code.js +++ b/modules/widget/tpl/js/generate_code.js @@ -133,6 +133,7 @@ function doFillWidgetVars() { switch(type) { case "hidden" : + case "number" : case "text" : case "textarea" : var val = selected_node.getAttribute(name);