#12 현재 기본 패키지에 포함된 블로그/게시판/페이지/외부페이지의 모듈 복사 기능 추가. 추가되는 모듈들도 복사할 수 있도록 module의 기본 기능으로 추가하였음

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@2619 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2007-09-19 06:24:28 +00:00
parent 8577a213d4
commit 1d45f520e1
22 changed files with 204 additions and 4 deletions

View file

@ -26,6 +26,7 @@
$lang->cmd_cancel = 'Cancel'; $lang->cmd_cancel = 'Cancel';
$lang->cmd_back = 'Go Back'; $lang->cmd_back = 'Go Back';
$lang->cmd_vote = 'Vote'; $lang->cmd_vote = 'Vote';
$lang->cmd_copy = 'Copy';
$lang->cmd_move = 'Move'; $lang->cmd_move = 'Move';
$lang->cmd_move_up = 'Up'; $lang->cmd_move_up = 'Up';
$lang->cmd_move_down = 'Down'; $lang->cmd_move_down = 'Down';

View file

@ -26,6 +26,7 @@
$lang->cmd_cancel = 'Cancelar'; $lang->cmd_cancel = 'Cancelar';
$lang->cmd_back = 'Atrás'; $lang->cmd_back = 'Atrás';
$lang->cmd_vote = 'Recomendar'; $lang->cmd_vote = 'Recomendar';
$lang->cmd_copy = 'Copia';
$lang->cmd_move = 'Mover'; $lang->cmd_move = 'Mover';
$lang->cmd_move_up = 'Arriba'; $lang->cmd_move_up = 'Arriba';
$lang->cmd_move_down = 'Abajo'; $lang->cmd_move_down = 'Abajo';

View file

@ -26,6 +26,7 @@
$lang->cmd_cancel = 'Decommander'; $lang->cmd_cancel = 'Decommander';
$lang->cmd_back = 'Retour'; $lang->cmd_back = 'Retour';
$lang->cmd_vote = 'Voter'; $lang->cmd_vote = 'Voter';
$lang->cmd_copy = 'Copie';
$lang->cmd_move = 'Deplacer'; $lang->cmd_move = 'Deplacer';
$lang->cmd_move_up = 'Relever'; $lang->cmd_move_up = 'Relever';
$lang->cmd_move_down = 'Abaisser'; $lang->cmd_move_down = 'Abaisser';

View file

@ -26,6 +26,7 @@
$lang->cmd_cancel = 'キャンセル'; $lang->cmd_cancel = 'キャンセル';
$lang->cmd_back = '戻る'; $lang->cmd_back = '戻る';
$lang->cmd_vote = '推薦'; $lang->cmd_vote = '推薦';
$lang->cmd_copy = 'コピー';
$lang->cmd_move = '移動'; $lang->cmd_move = '移動';
$lang->cmd_move_up = '上へ'; $lang->cmd_move_up = '上へ';
$lang->cmd_move_down = '下へ'; $lang->cmd_move_down = '下へ';

View file

@ -26,6 +26,7 @@
$lang->cmd_cancel = '취소'; $lang->cmd_cancel = '취소';
$lang->cmd_back = '돌아가기'; $lang->cmd_back = '돌아가기';
$lang->cmd_vote = '추천'; $lang->cmd_vote = '추천';
$lang->cmd_copy = '복사';
$lang->cmd_move = '이동'; $lang->cmd_move = '이동';
$lang->cmd_move_up = '위로'; $lang->cmd_move_up = '위로';
$lang->cmd_move_down = '아래로'; $lang->cmd_move_down = '아래로';

View file

@ -26,6 +26,7 @@
$lang->cmd_cancel = '取消'; $lang->cmd_cancel = '取消';
$lang->cmd_back = '返回'; $lang->cmd_back = '返回';
$lang->cmd_vote = '推荐'; $lang->cmd_vote = '推荐';
$lang->cmd_copy = '副本';
$lang->cmd_move = '查看'; $lang->cmd_move = '查看';
$lang->cmd_move_up = '向上'; $lang->cmd_move_up = '向上';
$lang->cmd_move_down = '向下'; $lang->cmd_move_down = '向下';

View file

@ -19,6 +19,7 @@
<col width="80" /> <col width="80" />
<col width="40" /> <col width="40" />
<col width="40" /> <col width="40" />
<col width="40" />
<thead> <thead>
<tr> <tr>
<th scope="col">{$lang->no}</th> <th scope="col">{$lang->no}</th>
@ -44,6 +45,7 @@
<th scope="col">{$lang->admin_id}</th> <th scope="col">{$lang->admin_id}</th>
<th scope="col">{$lang->regdate}</th> <th scope="col">{$lang->regdate}</th>
<th scope="col">{$lang->cmd_view}</th> <th scope="col">{$lang->cmd_view}</th>
<th scope="col">{$lang->cmd_copy}</th>
<th scope="col">{$lang->cmd_delete}</th> <th scope="col">{$lang->cmd_delete}</th>
</tr> </tr>
</thead> </thead>
@ -66,7 +68,8 @@
<td class="tahoma">{$val->skin}</td> <td class="tahoma">{$val->skin}</td>
<td class="tahoma">{$val->admin_id}&nbsp;</td> <td class="tahoma">{$val->admin_id}&nbsp;</td>
<td class="tahoma">{zdate($val->regdate,"Y-m-d")}</td> <td class="tahoma">{zdate($val->regdate,"Y-m-d")}</td>
<td class="blue"><a href="./?mid={$val->mid}" target="_blank">{$lang->cmd_view}</a></td> <td class="blue"><a href="{getUrl('','mid',$val->mid)}" onclick="window.open(this.href);return false;">{$lang->cmd_view}</a></td>
<td class="blue"><a href="./?module=module&act=dispModuleAdminCopyModule&module_srl={$val->module_srl}" onclick="popopen(this.href);return false;">{$lang->cmd_copy}</a></td>
<td class="red"><!--@if($val->is_default!='Y')--><a href="{getUrl('act','dispBlogAdminDeleteBlog','module_srl', $val->module_srl)}">{$lang->cmd_delete}</a><!--@else-->&nbsp;<!--@end--></td> <td class="red"><!--@if($val->is_default!='Y')--><a href="{getUrl('act','dispBlogAdminDeleteBlog','module_srl', $val->module_srl)}">{$lang->cmd_delete}</a><!--@else-->&nbsp;<!--@end--></td>
</tr> </tr>
<!--@end--> <!--@end-->

View file

@ -19,6 +19,7 @@
<col width="80" /> <col width="80" />
<col width="40" /> <col width="40" />
<col width="40" /> <col width="40" />
<col width="40" />
<thead> <thead>
<tr> <tr>
<th scope="col">{$lang->no}</th> <th scope="col">{$lang->no}</th>
@ -44,6 +45,7 @@
<th scope="col">{$lang->admin_id}</th> <th scope="col">{$lang->admin_id}</th>
<th scope="col">{$lang->regdate}</th> <th scope="col">{$lang->regdate}</th>
<th scope="col">{$lang->cmd_view}</th> <th scope="col">{$lang->cmd_view}</th>
<th scope="col">{$lang->cmd_copy}</th>
<th scope="col">{$lang->cmd_delete}</th> <th scope="col">{$lang->cmd_delete}</th>
</tr> </tr>
</thead> </thead>
@ -65,6 +67,7 @@
<td class="tahoma">{$val->admin_id}&nbsp;</td> <td class="tahoma">{$val->admin_id}&nbsp;</td>
<td class="tahoma">{zdate($val->regdate,"Y-m-d")}</td> <td class="tahoma">{zdate($val->regdate,"Y-m-d")}</td>
<td class="blue"><a href="{getUrl('','mid',$val->mid)}" onclick="window.open(this.href); return false;">{$lang->cmd_view}</a></td> <td class="blue"><a href="{getUrl('','mid',$val->mid)}" onclick="window.open(this.href); return false;">{$lang->cmd_view}</a></td>
<td class="blue"><a href="./?module=module&act=dispModuleAdminCopyModule&module_srl={$val->module_srl}" onclick="popopen(this.href);return false;">{$lang->cmd_copy}</a></td>
<td class="red"><!--@if($val->is_default!='Y')--><a href="{getUrl('act','dispBoardAdminDeleteBoard','module_srl', $val->module_srl)}">{$lang->cmd_delete}</a><!--@end--></td> <td class="red"><!--@if($val->is_default!='Y')--><a href="{getUrl('act','dispBoardAdminDeleteBoard','module_srl', $val->module_srl)}">{$lang->cmd_delete}</a><!--@end--></td>
</tr> </tr>
<!--@end--> <!--@end-->

View file

@ -8,7 +8,9 @@
<action name="dispModuleSkinInfo" type="view" standalone="true" /> <action name="dispModuleSkinInfo" type="view" standalone="true" />
<action name="dispModuleAdminCopyModule" type="view" standalone="true" />
<action name="procModuleAdminInsertCategory" type="controller" standalone="true" /> <action name="procModuleAdminInsertCategory" type="controller" standalone="true" />
<action name="procModuleAdminUpdateCategory" type="controller" standalone="true" /> <action name="procModuleAdminUpdateCategory" type="controller" standalone="true" />
<action name="procModuleAdminCopyModule" type="controller" standalone="true" />
</actions> </actions>
</module> </module>

View file

@ -28,6 +28,7 @@
'H' => 'Open summary', 'H' => 'Open summary',
'N' => 'Not open', 'N' => 'Not open',
); );
$lang->module_copy = "Copy module";
$lang->cmd_add_shortcut = "Add Shortcut"; $lang->cmd_add_shortcut = "Add Shortcut";
$lang->cmd_install = "Install"; $lang->cmd_install = "Install";

View file

@ -28,6 +28,7 @@
'H' => 'Abrir el sumario', 'H' => 'Abrir el sumario',
'N' => 'No abrir', 'N' => 'No abrir',
); );
$lang->module_copy = "Copy Module";
$lang->cmd_add_shortcut = "añadir acceso directo"; $lang->cmd_add_shortcut = "añadir acceso directo";
$lang->cmd_install = "Instalar"; $lang->cmd_install = "Instalar";

View file

@ -28,6 +28,7 @@
'H' => '要約配信', 'H' => '要約配信',
'N' => '配信しない', 'N' => '配信しない',
); );
$lang->module_copy = "Copy module";
$lang->cmd_add_shortcut = "ショットカット追加"; $lang->cmd_add_shortcut = "ショットカット追加";
$lang->cmd_install = "インストール"; $lang->cmd_install = "インストール";

View file

@ -28,6 +28,7 @@
'H' => '요약 공개', 'H' => '요약 공개',
'N' => '공개하지 않음', 'N' => '공개하지 않음',
); );
$lang->module_copy = "모듈 복사";
$lang->cmd_add_shortcut = "바로가기 추가"; $lang->cmd_add_shortcut = "바로가기 추가";
$lang->cmd_install = "설치"; $lang->cmd_install = "설치";

View file

@ -28,6 +28,7 @@
'H' => '公开摘要', 'H' => '公开摘要',
'N' => '不公开', 'N' => '不公开',
); );
$lang->module_copy = "Copy Module";
$lang->cmd_add_shortcut = "添加到快捷菜单"; $lang->cmd_add_shortcut = "添加到快捷菜单";
$lang->cmd_install = "安装"; $lang->cmd_install = "安装";

View file

@ -62,5 +62,50 @@
return executeQuery('module.deleteModuleCategory', $args); return executeQuery('module.deleteModuleCategory', $args);
} }
/**
* @brief 모듈 복사
**/
function procModuleAdminCopyModule() {
// 복사하려는 대상 모듈의 정보를 구함
$module_srl = Context::get('module_srl');
if(!$module_srl) return;
// 새로 생성하려는 모듈들의 이름/브라우저 제목을 구함
$clones = array();
$args = Context::getAll();
for($i=1;$i<=10;$i++) {
$mid = $args->{"mid_".$i};
$browser_title = $args->{"browser_title_".$i};
if(!$mid) continue;
if($mid && !$browser_title) $browser_title = $mid;
$clones[$mid] = $browser_title;
}
if(!count($clones)) return;
// 원 모듈의 정보를 직접 구해옴
$obj->module_srl = $module_srl;
$output = executeQuery("module.getMidInfo", $obj);
$module_info = $output->data;
unset($module_info->module_srl);
unset($module_info->regdate);
$oDB = &DB::getInstance();
$oDB->begin();
// 모듈 복사
foreach($clones as $mid => $browser_title) {
$clone_args = null;
$clone_args = clone($module_info);
$clone_args->module_srl = getNextSequence();
$clone_args->mid = $mid;
$clone_args->browser_title = $browser_title;
$clone_args->is_default = 'N';
$output = executeQuery('module.insertModule', $clone_args);
}
$oDB->commit();
$this->setMessage('success_registed');
}
} }
?> ?>

View file

@ -78,5 +78,24 @@
} }
} }
/**
* @brief 모듈 복사 기능
**/
function dispModuleAdminCopyModule() {
// 복사하려는 대상 모듈을 구함
$module_srl = Context::get('module_srl');
// 해당 모듈의 정보를 구함
$oModuleModel = &getModel('module');
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl);
Context::set('module_info', $module_info);
// 레이아웃을 팝업으로 지정
$this->setLayoutFile('popup_layout');
// 템플릿 파일 지정
$this->setTemplateFile('copy_module');
}
} }
?> ?>

View file

@ -11,6 +11,7 @@
<column name="layout_srl" var="layout_srl" /> <column name="layout_srl" var="layout_srl" />
<column name="description" var="description" /> <column name="description" var="description" />
<column name="content" var="content" /> <column name="content" var="content" />
<column name="grants" var="grants" />
<column name="module" var="module" notnull="notnull" maxlength="80"/> <column name="module" var="module" notnull="notnull" maxlength="80"/>
<column name="is_default" var="is_default" default="N" notnull="notnull" /> <column name="is_default" var="is_default" default="N" notnull="notnull" />
<column name="menu_srl" var="menu_srl" filter="number" /> <column name="menu_srl" var="menu_srl" filter="number" />

View file

@ -0,0 +1,87 @@
<!--%import("js/module_admin.js")-->
<!--%import("filter/copy_module.xml")-->
<div id="popHeadder">
<h1>{$lang->module_copy}</h1>
</div>
<form action="./" method="post" onsubmit="return procFilter(this, copy_module)" >
<input type="hidden" name="module_srl" value="{$module_info->module_srl}" />
<div id="popBody">
<table cellspacing="0" class="tableType5">
<col width="140" />
<col />
<tr>
<th scope="row">{$lang->module}</th>
<td>{$module_info->module}</td>
</tr>
<tr>
<th scope="row">{$lang->mid}</th>
<td>{$module_info->mid}</td>
</tr>
<tr>
<th scope="row">{$lang->browser_title}</th>
<td>{$module_info->browser_title}</td>
</tr>
</table>
<table cellspacing="0" class="tableType3 gap1">
<col width="50%" />
<col width="50%" />
<tr>
<th scope="col">{$lang->mid}</th>
<th scope="col">{$lang->browser_title}</th>
</tr>
<tr>
<td><input type="text" name="mid_1" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_1" class="inputTypeText w200" /></td>
</tr>
<tr>
<td><input type="text" name="mid_2" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_2" class="inputTypeText w200" /></td>
</tr>
<tr>
<td><input type="text" name="mid_3" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_3" class="inputTypeText w200" /></td>
</tr>
<tr>
<td><input type="text" name="mid_4" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_4" class="inputTypeText w200" /></td>
</tr>
<tr>
<td><input type="text" name="mid_5" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_5" class="inputTypeText w200" /></td>
</tr>
<tr>
<td><input type="text" name="mid_6" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_6" class="inputTypeText w200" /></td>
</tr>
<tr>
<td><input type="text" name="mid_7" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_7" class="inputTypeText w200" /></td>
</tr>
<tr>
<td><input type="text" name="mid_8" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_8" class="inputTypeText w200" /></td>
</tr>
<tr>
<td><input type="text" name="mid_9" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_9" class="inputTypeText w200" /></td>
</tr>
<tr>
<td><input type="text" name="mid_10" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_10" class="inputTypeText w200" /></td>
</tr>
</table>
</div>
<div id="popFooter" class="tCenter gap1">
<span class="button"><input type="submit" value="{$lang->cmd_save}" /></span>
<span class="button"><input type="button" value="{$lang->cmd_close}" onclick="window.close(); return false;"/></span>
</div>
</form>

View file

@ -0,0 +1,9 @@
<filter name="copy_module" module="module" act="procModuleAdminCopyModule">
<form>
<node target="module_srl" required="true" />
</form>
<response callback_func="completeCopyModule">
<tag name="error" />
<tag name="message" />
</response>
</filter>

View file

@ -50,3 +50,9 @@ function doUpdateModule(module) {
params['module_name'] = module; params['module_name'] = module;
exec_xml('install','procInstallAdminUpdate',params, completeInstallModule); exec_xml('install','procInstallAdminUpdate',params, completeInstallModule);
} }
/* 모듈 복사후 */
function completeCopyModule() {
if(typeof(opener)!='undefined') opener.location.href = opener.location.href;
window.close();
}

View file

@ -10,6 +10,15 @@
<!-- 목록 --> <!-- 목록 -->
<table cellspacing="0" class="tableType1"> <table cellspacing="0" class="tableType1">
<col width="40" />
<col width="140" />
<col />
<col />
<col width="40" />
<col width="80" />
<col width="40" />
<col width="40" />
<col width="40" />
<thead> <thead>
<tr> <tr>
<th scope="col">{$lang->no}</th> <th scope="col">{$lang->no}</th>
@ -17,7 +26,7 @@
<form action="./" method="get" onsubmit="return doChangeCategory(this);"> <form action="./" method="get" onsubmit="return doChangeCategory(this);">
<input type="hidden" name="module" value="{$module}" /> <input type="hidden" name="module" value="{$module}" />
<input type="hidden" name="act" value="{$act}" /> <input type="hidden" name="act" value="{$act}" />
<select name="module_category_srl"> <select name="module_category_srl" class="w100">
<option value="">{$lang->module_category}</option> <option value="">{$lang->module_category}</option>
<!--@foreach($module_category as $key => $val)--> <!--@foreach($module_category as $key => $val)-->
<option value="{$key}" <!--@if($module_category_srl==$key)-->selected="selected"<!--@end-->>{$val->title}</option> <option value="{$key}" <!--@if($module_category_srl==$key)-->selected="selected"<!--@end-->>{$val->title}</option>
@ -33,6 +42,7 @@
<th scope="col">{$lang->is_default}</th> <th scope="col">{$lang->is_default}</th>
<th scope="col">{$lang->regdate}</th> <th scope="col">{$lang->regdate}</th>
<th scope="col">{$lang->cmd_view}</th> <th scope="col">{$lang->cmd_view}</th>
<th scope="col">{$lang->cmd_copy}</th>
<th scope="col">{$lang->cmd_delete}</th> <th scope="col">{$lang->cmd_delete}</th>
</tr> </tr>
</thead> </thead>
@ -52,7 +62,8 @@
<td>{$val->browser_title}</td> <td>{$val->browser_title}</td>
<td class="tahoma">{$val->is_default}</td> <td class="tahoma">{$val->is_default}</td>
<td class="tahoma">{zdate($val->regdate,"Y-m-d")}</td> <td class="tahoma">{zdate($val->regdate,"Y-m-d")}</td>
<td class="blue"><a href="./?mid={$val->mid}" target="_blank">{$lang->cmd_view}</a></td> <td class="blue"><a href="{getUrl('','mid',$val->mid)}" onclick="window.open(this.href); return false;">{$lang->cmd_view}</a></td>
<td class="blue"><a href="./?module=module&act=dispModuleAdminCopyModule&module_srl={$val->module_srl}" onclick="popopen(this.href);return false;">{$lang->cmd_copy}</a></td>
<td class="red"><!--@if($val->is_default!='Y')--><a href="{getUrl('act','dispOpageAdminDelete','module_srl', $val->module_srl)}">{$lang->cmd_delete}</a><!--@end--></td> <td class="red"><!--@if($val->is_default!='Y')--><a href="{getUrl('act','dispOpageAdminDelete','module_srl', $val->module_srl)}">{$lang->cmd_delete}</a><!--@end--></td>
</tr> </tr>
<!--@end--> <!--@end-->

View file

@ -18,6 +18,7 @@
<col width="80" /> <col width="80" />
<col width="40" /> <col width="40" />
<col width="40" /> <col width="40" />
<col width="40" />
<thead> <thead>
<tr> <tr>
<th scope="col">{$lang->no}</th> <th scope="col">{$lang->no}</th>
@ -41,6 +42,7 @@
<th scope="col">{$lang->is_default}</th> <th scope="col">{$lang->is_default}</th>
<th scope="col">{$lang->regdate}</th> <th scope="col">{$lang->regdate}</th>
<th scope="col">{$lang->cmd_view}</th> <th scope="col">{$lang->cmd_view}</th>
<th scope="col">{$lang->cmd_copy}</th>
<th scope="col">{$lang->cmd_delete}</th> <th scope="col">{$lang->cmd_delete}</th>
</tr> </tr>
</thead> </thead>
@ -60,7 +62,8 @@
<td><div class="tLeft">{$val->browser_title}</div></td> <td><div class="tLeft">{$val->browser_title}</div></td>
<td class="tahoma">{$val->is_default}</td> <td class="tahoma">{$val->is_default}</td>
<td class="tahoma">{zdate($val->regdate,"Y-m-d")}</td> <td class="tahoma">{zdate($val->regdate,"Y-m-d")}</td>
<td class="blue"><a href="./?mid={$val->mid}" target="_blank">{$lang->cmd_view}</a></td> <td class="blue"><a href="{getUrl('','mid',$val->mid)}" onclick="window.open(this.href); return false;">{$lang->cmd_view}</a></td>
<td class="blue"><a href="./?module=module&act=dispModuleAdminCopyModule&module_srl={$val->module_srl}" onclick="popopen(this.href);return false;">{$lang->cmd_copy}</a></td>
<td class="red"><!--@if($val->is_default!='Y')--><a href="{getUrl('act','dispPageAdminDelete','module_srl', $val->module_srl)}">{$lang->cmd_delete}</a><!--@end--></td> <td class="red"><!--@if($val->is_default!='Y')--><a href="{getUrl('act','dispPageAdminDelete','module_srl', $val->module_srl)}">{$lang->cmd_delete}</a><!--@end--></td>
</tr> </tr>
<!--@end--> <!--@end-->