mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-04-02 01:52:10 +09:00
Merge pull request #924 from kijin/pr/scrap-message-folders
스크랩 기능을 폴더로 나누어 관리할 수 있도록 개선
This commit is contained in:
commit
263d0e6919
22 changed files with 518 additions and 8 deletions
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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 = '사용자 정의 이름';
|
||||
|
|
|
|||
|
|
@ -46,6 +46,10 @@
|
|||
<action name="procMemberDeleteImageMark" type="controller" permission="member" />
|
||||
<action name="procMemberScrapDocument" type="controller" permission="member" />
|
||||
<action name="procMemberDeleteScrap" type="controller" permission="member" />
|
||||
<action name="procMemberMoveScrapFolder" type="controller" permission="member" />
|
||||
<action name="procMemberInsertScrapFolder" type="controller" permission="member" />
|
||||
<action name="procMemberRenameScrapFolder" type="controller" permission="member" />
|
||||
<action name="procMemberDeleteScrapFolder" type="controller" permission="member" />
|
||||
<action name="procMemberSaveDocument" type="controller" permission="member" />
|
||||
<action name="procMemberDeleteSavedDocument" type="controller" permission="member" />
|
||||
<action name="procMemberDeleteAutologin" type="controller" permission="member" />
|
||||
|
|
|
|||
|
|
@ -121,6 +121,9 @@ $lang->cmd_view_saved_document = 'Saved Articles';
|
|||
$lang->cmd_send_email = 'Send Mail';
|
||||
$lang->msg_email_not_exists = 'You have entered an invalid email address.';
|
||||
$lang->msg_alreay_scrapped = 'This article is already scrapped.';
|
||||
$lang->msg_folder_alreay_exists = 'A folder with the same name already exists.';
|
||||
$lang->msg_folder_is_default = 'The default folder cannot be renamed or deleted.';
|
||||
$lang->msg_folder_not_empty = 'The folder is not empty.';
|
||||
$lang->msg_cart_is_null = 'Please select the target.';
|
||||
$lang->msg_checked_file_is_deleted = '%d attached file(s) is(are) deleted.';
|
||||
$lang->msg_find_account_title = 'Account Info';
|
||||
|
|
@ -309,3 +312,6 @@ $lang->msg_spammer_complete = 'Completed.';
|
|||
$lang->cmd_login_browser_info = 'Browser Information';
|
||||
$lang->cmd_initial_login = 'First Login';
|
||||
$lang->cmd_recent_visit = 'Recent Visit';
|
||||
$lang->scrap_folder_create = 'New Folder';
|
||||
$lang->scrap_folder_rename = 'Rename';
|
||||
$lang->scrap_folder_delete = 'Delete';
|
||||
|
|
|
|||
|
|
@ -125,6 +125,9 @@ $lang->cmd_modify_nickname_log = '닉네임 변경 기록';
|
|||
$lang->cmd_member_profile_view = '회원 프로필사진 보이기';
|
||||
$lang->msg_email_not_exists = '이메일 주소가 존재하지 않습니다.';
|
||||
$lang->msg_alreay_scrapped = '이미 스크랩된 게시물입니다.';
|
||||
$lang->msg_folder_alreay_exists = '이미 존재하는 폴더 이름입니다.';
|
||||
$lang->msg_folder_is_default = '기본 폴더는 이름을 변경하거나 삭제할 수 없습니다.';
|
||||
$lang->msg_folder_not_empty = '폴더가 비어 있지 않습니다.';
|
||||
$lang->msg_cart_is_null = '대상을 선택해주세요.';
|
||||
$lang->msg_checked_file_is_deleted = '%d개의 첨부 파일이 삭제되었습니다.';
|
||||
$lang->msg_find_account_title = '아이디/비밀번호 정보입니다.';
|
||||
|
|
@ -329,3 +332,6 @@ $lang->nick_name_after_changing = '닉네임 변경 후';
|
|||
$lang->cmd_login_browser_info = '브라우저 정보';
|
||||
$lang->cmd_initial_login = '최초 로그인';
|
||||
$lang->cmd_recent_visit = '최근 방문';
|
||||
$lang->scrap_folder_create = '폴더 추가';
|
||||
$lang->scrap_folder_rename = '이름 변경';
|
||||
$lang->scrap_folder_delete = '삭제';
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
|
|
|
|||
|
|
@ -159,10 +159,25 @@ class memberController extends member
|
|||
return new Object(-1, 'msg_not_permitted');
|
||||
}
|
||||
|
||||
// Find default scrap folder
|
||||
$args = new stdClass();
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->name = '/DEFAULT/';
|
||||
$output = executeQuery('member.getScrapFolderList', $args);
|
||||
if($output->toBool() && is_object($output->data) && $output->data->folder_srl)
|
||||
{
|
||||
$default_folder_srl = $output->data->folder_srl;
|
||||
}
|
||||
else
|
||||
{
|
||||
$default_folder_srl = null;
|
||||
}
|
||||
|
||||
// Variables
|
||||
$args = new stdClass();
|
||||
$args->document_srl = $document_srl;
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->folder_srl = $default_folder_srl;
|
||||
$args->user_id = $oDocument->get('user_id');
|
||||
$args->user_name = $oDocument->get('user_name');
|
||||
$args->nick_name = $oDocument->get('nick_name');
|
||||
|
|
@ -204,6 +219,206 @@ 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 that the target folder exists and belongs to member
|
||||
$args = new stdClass;
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->folder_srl = $folder_srl;
|
||||
$output = executeQueryArray('member.getScrapFolderList', $args);
|
||||
if(!count($output->data))
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a scrap folder
|
||||
*
|
||||
* @return void|Object (void : success, Object : fail)
|
||||
*/
|
||||
function procMemberInsertScrapFolder()
|
||||
{
|
||||
// Check login information
|
||||
if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged');
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
// Get new folder name
|
||||
$folder_name = Context::get('name');
|
||||
$folder_name = escape(trim(utf8_normalize_spaces($folder_name)));
|
||||
if(!$folder_name)
|
||||
{
|
||||
return new Object(-1, 'msg_invalid_request');
|
||||
}
|
||||
|
||||
// Check existing folder with same name
|
||||
$args = new stdClass;
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->name = $folder_name;
|
||||
$output = executeQueryArray('member.getScrapFolderList', $args);
|
||||
if(count($output->data) || $folder_name === lang('default_folder'))
|
||||
{
|
||||
return new Object(-1, 'msg_folder_alreay_exists');
|
||||
}
|
||||
|
||||
// Create folder
|
||||
$args = new stdClass;
|
||||
$args->folder_srl = getNextSequence();
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->name = $folder_name;
|
||||
$args->list_order = $args->folder_srl;
|
||||
$this->add('folder_srl', $args->folder_srl);
|
||||
return executeQuery('member.insertScrapFolder', $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* Rename a scrap folder
|
||||
*
|
||||
* @return void|Object (void : success, Object : fail)
|
||||
*/
|
||||
function procMemberRenameScrapFolder()
|
||||
{
|
||||
// Check login information
|
||||
if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged');
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
// Get new folder name
|
||||
$folder_srl = intval(Context::get('folder_srl'));
|
||||
$folder_name = Context::get('name');
|
||||
$folder_name = escape(trim(utf8_normalize_spaces($folder_name)));
|
||||
if(!$folder_srl || !$folder_name)
|
||||
{
|
||||
return new Object(-1, 'msg_invalid_request');
|
||||
}
|
||||
|
||||
// Check that the original folder exists and belongs to member
|
||||
$args = new stdClass;
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->folder_srl = $folder_srl;
|
||||
$output = executeQueryArray('member.getScrapFolderList', $args);
|
||||
if(!count($output->data))
|
||||
{
|
||||
return new Object(-1, 'msg_invalid_request');
|
||||
}
|
||||
if(array_first($output->data)->name === '/DEFAULT/')
|
||||
{
|
||||
return new Object(-1, 'msg_folder_is_default');
|
||||
}
|
||||
|
||||
// Check existing folder with same name
|
||||
$args = new stdClass;
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->not_folder_srl = $folder_srl;
|
||||
$args->name = $folder_name;
|
||||
$output = executeQueryArray('member.getScrapFolderList', $args);
|
||||
if(count($output->data) || $folder_name === lang('default_folder'))
|
||||
{
|
||||
return new Object(-1, 'msg_folder_alreay_exists');
|
||||
}
|
||||
|
||||
// Rename folder
|
||||
$args = new stdClass;
|
||||
$args->folder_srl = $folder_srl;
|
||||
$args->name = $folder_name;
|
||||
return executeQuery('member.updateScrapFolder', $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a scrap folder
|
||||
*
|
||||
* @return void|Object (void : success, Object : fail)
|
||||
*/
|
||||
function procMemberDeleteScrapFolder()
|
||||
{
|
||||
// Check login information
|
||||
if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged');
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
// Get folder_srl to delete
|
||||
$folder_srl = intval(Context::get('folder_srl'));
|
||||
if(!$folder_srl)
|
||||
{
|
||||
return new Object(-1, 'msg_invalid_request');
|
||||
}
|
||||
|
||||
// Check that the folder exists and belongs to member
|
||||
$args = new stdClass;
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->folder_srl = $folder_srl;
|
||||
$output = executeQueryArray('member.getScrapFolderList', $args);
|
||||
if(!count($output->data))
|
||||
{
|
||||
return new Object(-1, 'msg_invalid_request');
|
||||
}
|
||||
if(array_first($output->data)->name === '/DEFAULT/')
|
||||
{
|
||||
return new Object(-1, 'msg_folder_is_default');
|
||||
}
|
||||
|
||||
// Check that the folder is empty
|
||||
$args = new stdClass;
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->folder_srl = $folder_srl;
|
||||
$output = executeQueryArray('member.getScrapDocumentList', $args);
|
||||
if(count($output->data))
|
||||
{
|
||||
return new Object(-1, 'msg_folder_not_empty');
|
||||
}
|
||||
|
||||
// Delete folder
|
||||
$args = new stdClass;
|
||||
$args->folder_srl = $folder_srl;
|
||||
return executeQuery('member.deleteScrapFolder', $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* Migrate a member's scrapped documents to the new folder system.
|
||||
*
|
||||
* @param int $member_srl
|
||||
* @return void|Object (void : success, Object : fail)
|
||||
*/
|
||||
function migrateMemberScrappedDocuments($member_srl)
|
||||
{
|
||||
$args = new stdClass;
|
||||
$args->folder_srl = getNextSequence();
|
||||
$args->member_srl = $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;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Save posts
|
||||
* @deprecated - instead Document Controller - procDocumentTempSave method use
|
||||
|
|
|
|||
|
|
@ -410,16 +410,60 @@ class memberView extends member
|
|||
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
|
||||
|
||||
$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))
|
||||
{
|
||||
$output = getController('member')->migrateMemberScrappedDocuments($logged_info->member_srl);
|
||||
if($output && !$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 && !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 folder info
|
||||
$folder_info = new stdClass;
|
||||
foreach($folders as $folder)
|
||||
{
|
||||
if($folder->folder_srl == $folder_srl)
|
||||
{
|
||||
$folder_info = $folder;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 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);
|
||||
Context::set('document_list', $output->data);
|
||||
Context::set('page_navigation', $output->page_navigation);
|
||||
Context::set('scrap_folders', $folders);
|
||||
Context::set('folder_info', $folder_info);
|
||||
Context::set('folder_srl', $folder_srl);
|
||||
|
||||
$security = new Security($output->data);
|
||||
$security->encodeHTML('..nick_name');
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
<columns>
|
||||
<column name="member_srl" var="member_srl" notnull="notnull" />
|
||||
<column name="document_srl" var="document_srl" default="0" />
|
||||
<column name="folder_srl" var="folder_srl" />
|
||||
<column name="title" var="title" />
|
||||
<column name="user_id" var="user_id" />
|
||||
<column name="user_name" var="user_name" />
|
||||
|
|
|
|||
8
modules/member/queries/deleteScrapFolder.xml
Normal file
8
modules/member/queries/deleteScrapFolder.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<query id="deleteScrapFolder" action="delete">
|
||||
<tables>
|
||||
<table name="member_scrap_folders" />
|
||||
</tables>
|
||||
<conditions>
|
||||
<condition operation="equal" column="folder_srl" var="folder_srl" notnull="notnull" />
|
||||
</conditions>
|
||||
</query>
|
||||
|
|
@ -7,6 +7,7 @@
|
|||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" filter="number" />
|
||||
<condition operation="equal" column="folder_srl" var="folder_srl" filter="number" pipe="and" />
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="list_order" order="desc" />
|
||||
|
|
|
|||
17
modules/member/queries/getScrapFolderList.xml
Normal file
17
modules/member/queries/getScrapFolderList.xml
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<query id="getScrapFolderList" action="select">
|
||||
<tables>
|
||||
<table name="member_scrap_folders" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" filter="number" />
|
||||
<condition operation="equal" column="folder_srl" var="folder_srl" pipe="and" />
|
||||
<condition operation="notequal" column="folder_srl" var="not_folder_srl" pipe="and" />
|
||||
<condition operation="equal" column="name" var="name" pipe="and" />
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="list_order" order="asc" />
|
||||
</navigation>
|
||||
</query>
|
||||
12
modules/member/queries/insertScrapFolder.xml
Normal file
12
modules/member/queries/insertScrapFolder.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<query id="insertScrapFolder" action="insert">
|
||||
<tables>
|
||||
<table name="member_scrap_folders" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="folder_srl" var="folder_srl" notnull="notnull" />
|
||||
<column name="member_srl" var="member_srl" notnull="notnull" />
|
||||
<column name="name" var="name" notnull="notnull" />
|
||||
<column name="regdate" var="regdate" default="curdate()" />
|
||||
<column name="list_order" var="list_order" notnull="notnull" />
|
||||
</columns>
|
||||
</query>
|
||||
12
modules/member/queries/updateScrapDocumentFolder.xml
Normal file
12
modules/member/queries/updateScrapDocumentFolder.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<query id="updateScrapDocumentFolder" action="update">
|
||||
<tables>
|
||||
<table name="member_scrap" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="folder_srl" var="folder_srl" notnull="notnull" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" filter="number" notnull="notnull" />
|
||||
<condition operation="equal" column="document_srl" var="document_srl" filter="number" notnull="notnull" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
11
modules/member/queries/updateScrapFolder.xml
Normal file
11
modules/member/queries/updateScrapFolder.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<query id="updateScrapFolder" action="update">
|
||||
<tables>
|
||||
<table name="member_scrap_folders" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="name" var="name" notnull="notnull" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="folder_srl" var="folder_srl" notnull="notnull" />
|
||||
</conditions>
|
||||
</query>
|
||||
12
modules/member/queries/updateScrapFolderFromNull.xml
Normal file
12
modules/member/queries/updateScrapFolderFromNull.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<query id="updateScrapFolderFromNull" action="update">
|
||||
<tables>
|
||||
<table name="member_scrap" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="folder_srl" var="folder_srl" notnull="notnull" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" filter="number" notnull="notnull" />
|
||||
<condition operation="null" column="folder_srl" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
<table name="member_scrap">
|
||||
<column name="member_srl" type="number" size="11" notnull="notnull" unique="unique_scrap" />
|
||||
<column name="document_srl" type="number" size="11" notnull="notnull" unique="unique_scrap" />
|
||||
<column name="folder_srl" type="number" size="11" index="idx_folder_srl" />
|
||||
<column name="title" type="varchar" size="250" />
|
||||
<column name="user_id" type="varchar" size="80" />
|
||||
<column name="user_name" type="varchar" size="80" notnull="notnull" />
|
||||
|
|
|
|||
7
modules/member/schemas/member_scrap_folders.xml
Normal file
7
modules/member/schemas/member_scrap_folders.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<table name="member_scrap_folders">
|
||||
<column name="folder_srl" type="number" size="11" notnull="notnull" primary_key="primary_key" />
|
||||
<column name="member_srl" type="number" size="11" notnull="notnull" index="idx_member_srl" />
|
||||
<column name="name" type="varchar" size="250" />
|
||||
<column name="regdate" type="date" index="idx_regdate" />
|
||||
<column name="list_order" type="number" size="11" notnull="notnull" index="idx_list_order" />
|
||||
</table>
|
||||
|
|
@ -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,57 @@ 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_create").on("click", function() {
|
||||
var input = $(this).siblings("input.folder_name").first();
|
||||
if (!input.is(":visible")) {
|
||||
input.show();
|
||||
} else {
|
||||
if (!input.val()) return;
|
||||
var params = { name: input.val() };
|
||||
exec_json('member.procMemberInsertScrapFolder', params, function(data) {
|
||||
window.location.href = current_url.setQuery("folder_srl", data.folder_srl);
|
||||
});
|
||||
}
|
||||
});
|
||||
$("#scrap_folder_rename").on("click", function() {
|
||||
var folder_srl = $(this).data("folder-srl");
|
||||
var input = $(this).siblings("input.folder_name").first();
|
||||
if (!input.is(":visible")) {
|
||||
input.show();
|
||||
} else {
|
||||
if (!input.val()) return;
|
||||
var params = { folder_srl: folder_srl, name: input.val() };
|
||||
exec_json('member.procMemberRenameScrapFolder', params, function() {
|
||||
window.location.reload();
|
||||
});
|
||||
}
|
||||
});
|
||||
$("#scrap_folder_delete").on("click", function() {
|
||||
var folder_srl = $(this).data("folder-srl");
|
||||
var params = { folder_srl: folder_srl };
|
||||
exec_json('member.procMemberDeleteScrapFolder', params, function() {
|
||||
window.location.href = current_url.setQuery("folder_srl", "");
|
||||
});
|
||||
});
|
||||
$("#scrap_folder_list").on("change", function() {
|
||||
window.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() {
|
||||
window.location.reload();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,7 +1,27 @@
|
|||
<include target="./common_header.html" />
|
||||
<h1>{$member_title = $lang->cmd_view_scrapped_document}</h1>
|
||||
|
||||
<div>
|
||||
<div class="btnArea" style="clear:none;float:left">
|
||||
<select id="scrap_folder_list" style="margin:0">
|
||||
<!--@foreach($scrap_folders as $folder)-->
|
||||
<option value="{$folder->folder_srl}" selected="selected"|cond="$folder_srl == $folder->folder_srl">{$folder->name == '/DEFAULT/' ? $lang->default_folder : $folder->name}</option>
|
||||
<!--@endforeach-->
|
||||
</select>
|
||||
<div class="btn-group" cond="$folder_info->name !== '/DEFAULT/'">
|
||||
<input type="text" class="folder_name" style="margin:0;display:none" />
|
||||
<button id="scrap_folder_rename" class="btn" data-folder-srl="{$folder_srl}">{$lang->scrap_folder_rename}</button>
|
||||
<button id="scrap_folder_delete" class="btn" data-folder-srl="{$folder_srl}">{$lang->scrap_folder_delete}</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnArea" style="clear:none;float:right">
|
||||
<input type="text" class="folder_name" style="margin:0;display:none" />
|
||||
<button id="scrap_folder_create" class="btn">{$lang->scrap_folder_create}</button>
|
||||
</div>
|
||||
<div class="clear:both"></div>
|
||||
</div>
|
||||
|
||||
<table class="table table-striped table-hover">
|
||||
<caption>Total: {number_format($total_count)}, Page: {number_format($page)}/{number_format($total_page)}</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{$lang->no}</th>
|
||||
|
|
@ -9,6 +29,7 @@
|
|||
<th>{$lang->writer}</th>
|
||||
<th>{$lang->date}</th>
|
||||
<th>{$lang->cmd_delete}</th>
|
||||
<th>{$lang->cmd_move}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
|
@ -18,9 +39,18 @@
|
|||
<td><a href="#popup_menu_area" class="member_{$val->target_member_srl}">{$val->nick_name}</a></td>
|
||||
<td>{zdate($val->regdate, "Y-m-d")}</td>
|
||||
<td><button type="button" class="text" onclick="doDeleteScrap({$val->document_srl});">{$lang->cmd_delete}</button></td>
|
||||
<td>
|
||||
<select class="scrap_folder_move" data-document-srl="{$val->document_srl}">
|
||||
<option value="">{$lang->cmd_move}</option>
|
||||
<!--@foreach($scrap_folders as $folder)-->
|
||||
<option value="{$folder->folder_srl}">{$folder->name == '/DEFAULT/' ? $lang->default_folder : $folder->name}</option>
|
||||
<!--@endforeach-->
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="pagination pagination-centered">
|
||||
<ul>
|
||||
<li><a href="{getUrl('page','','module_srl','')}">« {$lang->first_page}</a></li>
|
||||
|
|
|
|||
|
|
@ -161,3 +161,50 @@ function insertSelectedModule(id, module_srl, mid, browser_title) {
|
|||
location.href = current_url.setQuery('selected_module_srl',module_srl);
|
||||
}
|
||||
|
||||
/* 스크랩 폴더 이동 */
|
||||
jQuery(function($) {
|
||||
$("#scrap_folder_create").on("click", function() {
|
||||
var input = $(this).siblings("input.folder_name").first();
|
||||
if (!input.is(":visible")) {
|
||||
input.show();
|
||||
} else {
|
||||
if (!input.val()) return;
|
||||
var params = { name: input.val() };
|
||||
exec_json('member.procMemberInsertScrapFolder', params, function(data) {
|
||||
window.location.href = current_url.setQuery("folder_srl", data.folder_srl);
|
||||
});
|
||||
}
|
||||
});
|
||||
$("#scrap_folder_rename").on("click", function() {
|
||||
var folder_srl = $(this).data("folder-srl");
|
||||
var input = $(this).siblings("input.folder_name").first();
|
||||
if (!input.is(":visible")) {
|
||||
input.show();
|
||||
} else {
|
||||
if (!input.val()) return;
|
||||
var params = { folder_srl: folder_srl, name: input.val() };
|
||||
exec_json('member.procMemberRenameScrapFolder', params, function() {
|
||||
window.location.reload();
|
||||
});
|
||||
}
|
||||
});
|
||||
$("#scrap_folder_delete").on("click", function() {
|
||||
var folder_srl = $(this).data("folder-srl");
|
||||
var params = { folder_srl: folder_srl };
|
||||
exec_json('member.procMemberDeleteScrapFolder', params, function() {
|
||||
window.location.href = current_url.setQuery("folder_srl", "");
|
||||
});
|
||||
});
|
||||
$("#scrap_folder_list").on("change", function() {
|
||||
window.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() {
|
||||
window.location.reload();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,7 +1,20 @@
|
|||
<include target="./common_header.html" />
|
||||
<section class="sw-body">
|
||||
<h1>{$member_title = lang('member.cmd_view_scrapped_document')}</h1>
|
||||
<div class="rx_member-notice">{lang('common.total')}: {number_format($total_count)}</div>
|
||||
|
||||
<div>
|
||||
<select id="scrap_folder_list" style="margin:0">
|
||||
<!--@foreach($scrap_folders as $folder)-->
|
||||
<option value="{$folder->folder_srl}" selected="selected"|cond="$folder_srl == $folder->folder_srl">{$folder->name == '/DEFAULT/' ? $lang->default_folder : $folder->name}</option>
|
||||
<!--@endforeach-->
|
||||
</select>
|
||||
<div class="btn-group" cond="$folder_info->name !== '/DEFAULT/'">
|
||||
<input type="text" class="folder_name" style="margin:0;display:none" />
|
||||
<button id="scrap_folder_rename" class="btn" data-folder-srl="{$folder_srl}">{$lang->scrap_folder_rename}</button>
|
||||
<button id="scrap_folder_delete" class="btn" data-folder-srl="{$folder_srl}">{$lang->scrap_folder_delete}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<ul class="rx_sw_list">
|
||||
<li loop="$document_list => $key, $item">
|
||||
|
|
@ -31,4 +44,8 @@
|
|||
<li><a href="{getUrl('page',$page_navigation->last_page,'module_srl','')}">{$lang->last_page} ›</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="sw-footer sw-anchor-buttons">
|
||||
<input type="text" class="folder_name" style="margin:0;display:none" />
|
||||
<button id="scrap_folder_create">{$lang->scrap_folder_create}</button>
|
||||
</div>
|
||||
<include target="./common_footer.html" />
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue