From b11a6d82e95db41f5bb425717ecf51676109eb63 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Thu, 28 Sep 2017 11:59:20 +0900 Subject: [PATCH 1/9] Add folder for member_scrap --- modules/member/member.class.php | 12 +++++++++++- modules/member/schemas/member_scrap.xml | 1 + modules/member/schemas/member_scrap_folders.xml | 7 +++++++ 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 modules/member/schemas/member_scrap_folders.xml diff --git a/modules/member/member.class.php b/modules/member/member.class.php index 499362b61..a318adb59 100644 --- a/modules/member/member.class.php +++ b/modules/member/member.class.php @@ -207,7 +207,10 @@ class member extends ModuleObject { // Check autologin table if(!$oDB->isColumnExists("member_autologin", "security_key")) return true; - + + // Check scrap folder table + if(!$oDB->isColumnExists("member_scrap", "folder_srl")) return true; + $oModuleModel = getModel('module'); $config = $oModuleModel->getModuleConfig('member'); // check signup form ordering info @@ -328,6 +331,13 @@ class member extends ModuleObject { $oDB->createTableByXmlFile($this->module_path . '/schemas/member_autologin.xml'); } + // Check scrap folder table + if(!$oDB->isColumnExists("member_scrap", "folder_srl")) + { + $oDB->addColumn("member_scrap", "folder_srl", "number", 11); + $oDB->addIndex("member_scrap","idx_folder_srl", array("folder_srl")); + } + $oModuleModel = getModel('module'); $config = $oModuleModel->getModuleConfig('member'); $oModuleController = getController('module'); diff --git a/modules/member/schemas/member_scrap.xml b/modules/member/schemas/member_scrap.xml index 5ea197c20..99250e7c9 100644 --- a/modules/member/schemas/member_scrap.xml +++ b/modules/member/schemas/member_scrap.xml @@ -6,6 +6,7 @@ + diff --git a/modules/member/schemas/member_scrap_folders.xml b/modules/member/schemas/member_scrap_folders.xml new file mode 100644 index 000000000..20fdc5460 --- /dev/null +++ b/modules/member/schemas/member_scrap_folders.xml @@ -0,0 +1,7 @@ + + + + + + +
From ed02a0f064d79eafa530e2b6012b29f4e4f5de27 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Thu, 28 Sep 2017 12:19:02 +0900 Subject: [PATCH 2/9] Assign default folder to all previous scraps --- modules/member/member.view.php | 41 ++++++++++++++++++- .../member/queries/getScrapDocumentList.xml | 1 + modules/member/queries/getScrapFolderList.xml | 14 +++++++ modules/member/queries/insertScrapFolder.xml | 12 ++++++ .../queries/updateScrapFolderFromNull.xml | 12 ++++++ 5 files changed, 78 insertions(+), 2 deletions(-) create mode 100644 modules/member/queries/getScrapFolderList.xml create mode 100644 modules/member/queries/insertScrapFolder.xml create mode 100644 modules/member/queries/updateScrapFolderFromNull.xml diff --git a/modules/member/member.view.php b/modules/member/member.view.php index 9fa7a5475..3312fb59e 100644 --- a/modules/member/member.view.php +++ b/modules/member/member.view.php @@ -410,11 +410,48 @@ class memberView extends member if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged'); $logged_info = Context::get('logged_info'); + + // Check folders + $output = executeQueryArray('member.getScrapFolderList', $args); + $folders = $output->data; + if(!count($folders)) + { + $args = new stdClass; + $args->folder_srl = getNextSequence(); + $args->member_srl = $logged_info->member_srl; + $args->name = '/DEFAULT/'; + $args->list_order = $args->folder_srl; + $output = executeQuery('member.insertScrapFolder', $args); + if(!$output->toBool()) + { + return $output; + } + $output = executeQuery('member.updateScrapFolderFromNull', $args); + if(!$output->toBool()) + { + return $output; + } + $output = executeQueryArray('member.getScrapFolderList', $args); + $folders = $output->data; + } + + // Get default folder if no folder is selected + $folder_srl = (int)Context::get('folder_srl'); + if($folder_srl && !count(array_filter($folders, function($folder) use($folder_srl) { return $folder->folder_srl == $folder_srl; }))) + { + return new Object(-1, 'msg_invalid_request'); + } + if(!$folder_srl && count($folders)) + { + $folder_srl = array_first($folders)->folder_srl; + } + + // Get scrapped documents in selected folder $args = new stdClass(); $args->member_srl = $logged_info->member_srl; + $args->folder_srl = $folder_srl; $args->page = (int)Context::get('page'); - - $output = executeQuery('member.getScrapDocumentList', $args); + $output = executeQueryArray('member.getScrapDocumentList', $args); Context::set('total_count', $output->total_count); Context::set('total_page', $output->total_page); Context::set('page', $output->page); diff --git a/modules/member/queries/getScrapDocumentList.xml b/modules/member/queries/getScrapDocumentList.xml index 33969197d..9df3439e2 100644 --- a/modules/member/queries/getScrapDocumentList.xml +++ b/modules/member/queries/getScrapDocumentList.xml @@ -7,6 +7,7 @@ + diff --git a/modules/member/queries/getScrapFolderList.xml b/modules/member/queries/getScrapFolderList.xml new file mode 100644 index 000000000..fd13f3c0b --- /dev/null +++ b/modules/member/queries/getScrapFolderList.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/modules/member/queries/insertScrapFolder.xml b/modules/member/queries/insertScrapFolder.xml new file mode 100644 index 000000000..46955b7d9 --- /dev/null +++ b/modules/member/queries/insertScrapFolder.xml @@ -0,0 +1,12 @@ + + +
+ + + + + + + + + diff --git a/modules/member/queries/updateScrapFolderFromNull.xml b/modules/member/queries/updateScrapFolderFromNull.xml new file mode 100644 index 000000000..2048d4e10 --- /dev/null +++ b/modules/member/queries/updateScrapFolderFromNull.xml @@ -0,0 +1,12 @@ + + +
+ + + + + + + + + \ No newline at end of file From cf0a5d019c63c6668ad218d62115a4d80661662a Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Thu, 28 Sep 2017 13:28:43 +0900 Subject: [PATCH 3/9] Implement moving scrap to another folder --- common/lang/en.php | 1 + common/lang/ko.php | 3 +- modules/member/conf/module.xml | 1 + modules/member/member.controller.php | 35 +++++++++++++++++++ modules/member/member.view.php | 5 ++- .../queries/updateScrapDocumentFolder.xml | 12 +++++++ modules/member/skins/default/js/member.js | 17 +++++++-- .../member/skins/default/scrapped_list.html | 18 +++++++++- 8 files changed, 87 insertions(+), 5 deletions(-) create mode 100644 modules/member/queries/updateScrapDocumentFolder.xml diff --git a/common/lang/en.php b/common/lang/en.php index 45c06ec9d..cce0402b5 100644 --- a/common/lang/en.php +++ b/common/lang/en.php @@ -297,6 +297,7 @@ $lang->column_type_list['date'] = 'date(yyyy/mm/dd)'; $lang->column_name = 'Column Name'; $lang->column_title = 'Column Title'; $lang->default_value = 'Default Value'; +$lang->default_folder = 'Default Folder'; $lang->is_active = 'Active'; $lang->is_required = 'Required Field'; $lang->eid = 'Name of user defined'; diff --git a/common/lang/ko.php b/common/lang/ko.php index 3f5697d9d..b5571ba87 100644 --- a/common/lang/ko.php +++ b/common/lang/ko.php @@ -296,7 +296,8 @@ $lang->column_type_list['kr_zip'] = '한국주소(zip)'; $lang->column_type_list['date'] = '일자(연월일)'; $lang->column_name = '입력항목 이름'; $lang->column_title = '입력항목 제목'; -$lang->default_value = '기본 값'; +$lang->default_value = '기본값'; +$lang->default_folder = '기본 폴더'; $lang->is_active = '활성'; $lang->is_required = '필수항목'; $lang->eid = '사용자 정의 이름'; diff --git a/modules/member/conf/module.xml b/modules/member/conf/module.xml index f1230cda2..f9afc1ac3 100644 --- a/modules/member/conf/module.xml +++ b/modules/member/conf/module.xml @@ -46,6 +46,7 @@ + diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index 32ab709ba..30ee59123 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -204,6 +204,41 @@ class memberController extends member return executeQuery('member.deleteScrapDocument', $args); } + /** + * Move a scrap to another folder + * + * @return void|Object (void : success, Object : fail) + */ + function procMemberMoveScrapFolder() + { + // Check login information + if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged'); + $logged_info = Context::get('logged_info'); + + $document_srl = (int)Context::get('document_srl'); + $folder_srl = (int)Context::get('folder_srl'); + if(!$document_srl || !$folder_srl) + { + return new Object(-1,'msg_invalid_request'); + } + + // Check folder + $args = new stdClass; + $args->member_srl = $logged_info->member_srl; + $output = executeQueryArray('member.getScrapFolderList', $args); + if(!array_filter($output->data, function($folder) use($folder_srl) { return $folder->folder_srl == $folder_srl; })) + { + return new Object(-1, 'msg_invalid_request'); + } + + // Move + $args = new stdClass; + $args->member_srl = $logged_info->member_srl; + $args->document_srl = $document_srl; + $args->folder_srl = $folder_srl; + return executeQuery('member.updateScrapDocumentFolder', $args); + } + /** * Save posts * @deprecated - instead Document Controller - procDocumentTempSave method use diff --git a/modules/member/member.view.php b/modules/member/member.view.php index 3312fb59e..5a578c06f 100644 --- a/modules/member/member.view.php +++ b/modules/member/member.view.php @@ -412,6 +412,8 @@ class memberView extends member $logged_info = Context::get('logged_info'); // Check folders + $args = new stdClass; + $args->member_srl = $logged_info->member_srl; $output = executeQueryArray('member.getScrapFolderList', $args); $folders = $output->data; if(!count($folders)) @@ -437,7 +439,7 @@ class memberView extends member // Get default folder if no folder is selected $folder_srl = (int)Context::get('folder_srl'); - if($folder_srl && !count(array_filter($folders, function($folder) use($folder_srl) { return $folder->folder_srl == $folder_srl; }))) + if($folder_srl && !array_filter($folders, function($folder) use($folder_srl) { return $folder->folder_srl == $folder_srl; })) { return new Object(-1, 'msg_invalid_request'); } @@ -457,6 +459,7 @@ class memberView extends member Context::set('page', $output->page); Context::set('document_list', $output->data); Context::set('page_navigation', $output->page_navigation); + Context::set('scrap_folders', $folders); $security = new Security($output->data); $security->encodeHTML('..nick_name'); diff --git a/modules/member/queries/updateScrapDocumentFolder.xml b/modules/member/queries/updateScrapDocumentFolder.xml new file mode 100644 index 000000000..bb2547c50 --- /dev/null +++ b/modules/member/queries/updateScrapDocumentFolder.xml @@ -0,0 +1,12 @@ + + +
+ + + + + + + + + \ No newline at end of file diff --git a/modules/member/skins/default/js/member.js b/modules/member/skins/default/js/member.js index 41c8e720c..192ca5692 100644 --- a/modules/member/skins/default/js/member.js +++ b/modules/member/skins/default/js/member.js @@ -131,7 +131,7 @@ function doDeleteImageMark(member_srl) { function doDeleteScrap(document_srl) { var params = new Array(); params['document_srl'] = document_srl; - exec_xml('member', 'procMemberDeleteScrap', params, function() { location.reload(); }); + exec_json('member.procMemberDeleteScrap', params, function() { location.reload(); }); } /* 비밀번호 찾기 후 */ @@ -154,10 +154,23 @@ function doDeleteSavedDocument(document_srl, confirm_message) { var params = new Array(); params['document_srl'] = document_srl; - exec_xml('member', 'procMemberDeleteSavedDocument', params, function() { location.reload(); }); + exec_json('member.procMemberDeleteSavedDocument', params, function() { location.reload(); }); } function insertSelectedModule(id, module_srl, mid, browser_title) { location.href = current_url.setQuery('selected_module_srl',module_srl); } +/* 스크랩 폴더 이동 */ +jQuery(function($) { + $("#scrap_folder_list").on("change", function() { + location.href = current_url.setQuery("folder_srl", $(this).val()); + }); + $(".scrap_folder_move").on("change", function() { + var document_srl = $(this).data('document-srl'); + var folder_srl = $(this).val(); + if (!folder_srl) return; + var params = { document_srl: document_srl, folder_srl: folder_srl }; + exec_json('member.procMemberMoveScrapFolder', params, function() { location.reload(); }); + }); +}); diff --git a/modules/member/skins/default/scrapped_list.html b/modules/member/skins/default/scrapped_list.html index 6da285f2f..37021f99d 100644 --- a/modules/member/skins/default/scrapped_list.html +++ b/modules/member/skins/default/scrapped_list.html @@ -1,7 +1,13 @@

{$member_title = $lang->cmd_view_scrapped_document}

+ + +
- @@ -9,6 +15,7 @@ + @@ -18,9 +25,18 @@ +
Total: {number_format($total_count)}, Page: {number_format($page)}/{number_format($total_page)}
{$lang->no}{$lang->writer} {$lang->date} {$lang->cmd_delete}{$lang->cmd_move}
{$val->nick_name} {zdate($val->regdate, "Y-m-d")} + +
+