#450. 애드온에서 활성화 대상 모듈 선택 기능 추가. 애드온에서 권한 대상을 선택하는 것은 불필요하다고 판단. 관련하여 에디터 컴포넌트에서도 대상 모듈을 선택할 수 있도록 기능 추가

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4123 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2008-04-21 04:58:18 +00:00
parent fb08c61fce
commit 1bbc3c1b9c
29 changed files with 184 additions and 48 deletions

View file

@ -41,6 +41,7 @@
unset($args->module);
unset($args->act);
unset($args->addon_name);
unset($args->body);
$this->doSetup($addon_name, $args);
@ -55,18 +56,24 @@
$buff = "";
$oAddonModel = &getAdminModel('addon');
$addon_list = $oAddonModel->getInsertedAddons();
foreach($addon_list as $addon=> $val) {
foreach($addon_list as $addon => $val) {
if($val->is_used != 'Y' || !is_dir('./addons/'.$addon) ) continue;
$extra_vars = unserialize($val->extra_vars);
$mid_list = $extra_vars->mid_list;
if(!is_array($mid_list)||!count($mid_list)) $mid_list = null;
$mid_list = base64_encode(serialize($mid_list));
if($val->extra_vars) {
unset($extra_vars);
$extra_vars = base64_encode($val->extra_vars);
}
$buff .= sprintf(' if(file_exists("./addons/%s/%s.addon.php")) { unset($addon_info); $addon_info = unserialize(base64_decode("%s")); $addon_path = "./addons/%s/"; @include("./addons/%s/%s.addon.php"); }', $addon, $addon, $extra_vars, $addon, $addon, $addon);
$buff .= sprintf(' $_ml = unserialize(base64_decode("%s")); if(file_exists("./addons/%s/%s.addon.php") && (!is_array($_ml) || in_array($_m, $_ml))) { unset($addon_info); $addon_info = unserialize(base64_decode("%s")); $addon_path = "./addons/%s/"; @include("./addons/%s/%s.addon.php"); }', $mid_list, $addon, $addon, $extra_vars, $addon, $addon, $addon);
}
$buff = sprintf('<?php if(!defined("__ZBXE__"))exit(); %s ?>', $buff);
$buff = sprintf('<?php if(!defined("__ZBXE__")) exit(); $_m = Context::get(\'mid\'); %s ?>', $buff);
debugPrint($buff);
FileHandler::writeFile($this->cache_file, $buff);
}
@ -106,6 +113,7 @@
* @brief 애드온 설정
**/
function doSetup($addon, $extra_vars) {
if($extra_vars->mid_list) $extra_vars->mid_list = explode('|@|', $extra_vars->mid_list);
$args->addon = $addon;
$args->extra_vars = serialize($extra_vars);
return executeQuery('addon.updateAddon', $args);

View file

@ -110,14 +110,18 @@
$addon_info->history[] = $obj;
}
// 확장변수
// DB에 설정된 내역을 가져온다
$db_args->addon = $addon;
$output = executeQuery('addon.getAddonInfo',$db_args);
$extra_vals = unserialize($output->data->extra_vars);
if($extra_vals->mid_list) {
$addon_info->mid_list = $extra_vals->mid_list;
} else {
$addon_info->mid_list = array();
}
if($xml_obj->extra_vars) {
// DB에 설정된 내역을 가져온다
$db_args->addon = $addon;
$output = executeQuery('addon.getAddonInfo',$db_args);
$extra_vals = unserialize($output->data->extra_vars);
// 확장변수를 정리
if(!is_array($xml_obj->extra_vars->var)) $extra_vars[] = $xml_obj->extra_vars->var;
else $extra_vars = $xml_obj->extra_vars->var;

View file

@ -41,8 +41,22 @@
// mid 목록을 가져옴
$oModuleModel = &getModel('module');
// 모듈 카테고리 목록을 구함
$module_categories = $oModuleModel->getModuleCategories();
$mid_list = $oModuleModel->getMidList();
Context::set('mid_list', $mid_list);
// module_category와 module의 조합
if($module_categories) {
foreach($mid_list as $module_srl => $module) {
$module_categories[$module->module_category_srl]->list[$module_srl] = $module;
}
} else {
$module_categories[0]->list = $mid_list;
}
Context::set('mid_list',$module_categories);
// 레이아웃을 팝업으로 지정
$this->setLayoutFile('popup_layout');

View file

@ -11,5 +11,6 @@
$lang->addon_maker = 'Author of this Addon';
$lang->addon_history = 'Addon History';
$lang->about_addon_mid = "애드온이 사용될 대상을 지정할 수 있습니다.<br />(모두 해제시 모든 대상에서 사용 가능합니다)";
$lang->about_addon = 'Addon is for controlling actions rather than displaying the HTML results.<br />Simply by toggling any addons you want on or off, you can use very useful functions to administer your website';
?>

View file

@ -11,5 +11,6 @@
$lang->addon_maker = 'Autor de Addon';
$lang->addon_history = 'Historia de Addon ';
$lang->about_addon_mid = "애드온이 사용될 대상을 지정할 수 있습니다.<br />(모두 해제시 모든 대상에서 사용 가능합니다)";
$lang->about_addon = 'Addon is para controlar las acciones y no para mostrar el resultado en HTML.<br /> Sólo con activar o desactivar el addon que desee, podrá obtener funciones útiles para la administración de tu sitio web.';
?>

View file

@ -11,6 +11,7 @@
$lang->addon_maker = 'L\'Auteur de la Compagnon';
$lang->addon_history = 'L\'Histoire de la Compagnon';
$lang->about_addon_mid = "애드온이 사용될 대상을 지정할 수 있습니다.<br />(모두 해제시 모든 대상에서 사용 가능합니다)";
$lang->about_addon = 'La Compagnon, c\'est pour contrôler les actions plutôt d\'imprimer des résultats de HTML.<br/>Par la Touche à Bascule des compagnons que vous voulez faire marcher ou arrêter, vous pouvez appliquer les fonctions très utiles à administrer votre site web.';
?>

View file

@ -11,5 +11,6 @@
$lang->addon_maker = 'アドオン作者';
$lang->addon_history = '変更内容';
$lang->about_addon_mid = "애드온이 사용될 대상을 지정할 수 있습니다.<br />(모두 해제시 모든 대상에서 사용 가능합니다)";
$lang->about_addon = 'アドオンは、HTMLの出力をコントロールするというより動作を制御する役割をします。お好みのアドオンを「使用/未使用」に設定するだけでサイトの運営に有用な機能が利用できます。';
?>

View file

@ -11,5 +11,6 @@
$lang->addon_maker = '애드온 제작자';
$lang->addon_history = '변경 사항 ';
$lang->about_addon_mid = "애드온이 사용될 대상을 지정할 수 있습니다.<br />(모두 해제시 모든 대상에서 사용 가능합니다)";
$lang->about_addon = '애드온은 html결과물을 출력하기 보다 동작을 제어하는 역할을 합니다.<br />원하시는 애드온을 on/ off하시는 것만으로 사이트 운영에 유용한 기능을 연동할 수 있습니다.';
?>

View file

@ -11,5 +11,6 @@
$lang->addon_maker = 'Автор аддона';
$lang->addon_history = 'История аддона';
$lang->about_addon_mid = "애드온이 사용될 대상을 지정할 수 있습니다.<br />(모두 해제시 모든 대상에서 사용 가능합니다)";
$lang->about_addon = 'Аддон служит больше для контролирования действий, чем для отображения HTML-результатов.<br />Простым включением/выключением любых аддонов, Вы можете использовать очень полезные функции для администрирования Вашего веб-сайта';
?>

View file

@ -11,5 +11,6 @@
$lang->addon_maker = '插件作者';
$lang->addon_history = '更新纪录 ';
$lang->about_addon_mid = "애드온이 사용될 대상을 지정할 수 있습니다.<br />(모두 해제시 모든 대상에서 사용 가능합니다)";
$lang->about_addon = '插件是加载扩展功能的动作,而不是输出结果组件。<br />启用/禁用插件,为网站提供强大的功能。';
?>

View file

@ -3,7 +3,7 @@
<table name="addons" />
</tables>
<columns>
<column name="is_used" var="is_used" default="Y" />
<column name="is_used" var="is_used" />
<column name="extra_vars" var="extra_vars" />
</columns>
<conditions>

View file

@ -89,13 +89,7 @@
<td><a href="{$val->author->homepage}" onclick="window.open(this.href);return false;">{$val->author->name}</a></td>
<td class="tahoma">{$val->author->date}</td>
<td class="tahoma">{$val->path}</td>
<td>
<!--@if($val->extra_vars)-->
<a href="{getUrl('','module','addon','act','dispAddonAdminSetup','selected_addon',$val->addon)}" onclick="popopen(this.href,'addon_info');return false" class="blue">{$lang->cmd_setup}</a>
<!--@else-->
&nbsp;
<!--@end-->
</td>
<td><a href="{getUrl('','module','addon','act','dispAddonAdminSetup','selected_addon',$val->addon)}" onclick="popopen(this.href,'addon_info');return false" class="blue">{$lang->cmd_setup}</a></td>
<td>
<!--@if($val->activated)-->
<a href="#" onclick="doToggleAddon('{$val->addon}');return false;" class="blue">{$lang->use}</a>

View file

@ -0,0 +1,4 @@
@charset "utf-8";
.module_category_title { border:1px solid #DDDDDD; margin:10px 5px 5px 0; padding:3px 3px 3px 9px; }
.module_list { margin:0 0 5px 10px; }

View file

@ -7,3 +7,11 @@ function doToggleAddon(addon) {
fo_obj.addon.value = addon;
procFilter(fo_obj, toggle_activate_addon);
}
function toggleSectionCheckBox(obj, id) {
var box_list = xGetElementsByTagName('input', xGetElementById(id));
if(typeof(box_list.length)=='undefined') return;
for(var i in box_list) {
box_list[i].checked = obj.checked;
}
}

View file

@ -1,4 +1,6 @@
<!--%import("filter/setup_addon.xml")-->
<!--%import("css/addon.css")-->
<!--%import("js/addon.js")-->
<div id="popHeadder">
<h3>{$lang->cmd_setup}</h3>
@ -26,12 +28,7 @@
<!--@foreach($addon_info->extra_vars as $id => $var)-->
<tr>
<th scope="row">
{$var->title}
<!--@if($var->type == 'mid_list')-->
<input type="checkbox" onclick="checkboxSelectAll(this.form, '{$var->name}'); return false;" />
<!--@end-->
</th>
<th scope="row">{$var->title}</th>
<td>
<!--@if($var->type == 'text')-->
<input type="text" name="{$var->name}" value="{$var->value}" class="inputTypeText w400" />
@ -45,19 +42,40 @@
<option value="{$val->value}"<!--@if($var->value == $val->value)--> selected="selected"<!--@end-->>{$val->title}</option>
<!--@end-->
</select>
<!--@elseif($var->type == 'mid_list')-->
<!--@foreach($mid_list as $key => $val)-->
<div class="addon_mid_list">
<input type="checkbox" value="{$key}" name="{$var->name}" id="chk_mid_list_{$key}" <!--@if(in_array($key, $var->value))-->checked="checkde" <!--@end-->/>
<label for="chk_mid_list_{$key}">{$key} ({$val->browser_title})</label>
</div>
<!--@end-->
<!--@end-->
<p class="clear">{nl2br($var->description)}</p>
</td>
</tr>
<!--@end-->
<tr>
<th scope="row">
{$lang->module}
<input type="checkbox" onclick="checkboxSelectAll(this.form, 'mid_list'); return false;" />
</th>
<td>
<p>{$lang->about_addon_mid}</p>
<!--@foreach($mid_list as $module_category_srl => $modules)-->
<div class="module_category_title">
<input type="checkbox" onclick="toggleSectionCheckBox(this, 'section_{$module_category_srl}');" />
<!--@if($modules->title)-->
{$modules->title}
<!--@else-->
&nbsp;
<!--@end-->
</div>
<div id="section_{$module_category_srl}">
<!--@foreach($modules->list as $key => $val)-->
<div class="module_list">
<input type="checkbox" value="{$key}" name="mid_list" id="chk_mid_list_{$key}" <!--@if(in_array($key, $addon_info->mid_list))-->checked="checked"<!--@end--> />
<label for="chk_mid_list_{$key}">{$key} ({$val->browser_title})</label>
</div>
<!--@end-->
</div>
<!--@end-->
</td>
</tr>
</table>
</div>
@ -67,5 +85,4 @@
<a href="#" onclick="window.close(); return false;" class="button"><span>{$lang->cmd_close}</span></a>
</div>
</div>
</form>