mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-23 13:19:56 +09:00
merge sandbox to trunk for 1.4.4
git-svn-id: http://xe-core.googlecode.com/svn/trunk@7723 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
200d63636c
commit
b8299c8a65
683 changed files with 70982 additions and 69716 deletions
|
|
@ -1,102 +1,102 @@
|
|||
<?php
|
||||
/**
|
||||
* @class addonAdminController
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief addon 모듈의 admin controller class
|
||||
**/
|
||||
include_once('addon.controller.php');
|
||||
|
||||
class addonAdminController extends addonController {
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 애드온의 활성/비활성 체인지
|
||||
**/
|
||||
function procAddonAdminToggleActivate() {
|
||||
$oAddonModel = &getAdminModel('addon');
|
||||
|
||||
$site_module_info = Context::get('site_module_info');
|
||||
|
||||
// addon값을 받아옴
|
||||
$addon = Context::get('addon');
|
||||
$type = Context::get('type');
|
||||
if(!$type) $type = "pc";
|
||||
if($addon) {
|
||||
// 활성화 되어 있으면 비활성화 시킴
|
||||
if($oAddonModel->isActivatedAddon($addon, $site_module_info->site_srl, $type)) $this->doDeactivate($addon, $site_module_info->site_srl, $type);
|
||||
|
||||
// 비활성화 되어 있으면 활성화 시킴
|
||||
else $this->doActivate($addon, $site_module_info->site_srl, $type);
|
||||
}
|
||||
|
||||
$this->makeCacheFile($site_module_info->site_srl, $type);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 애드온 설정 정보 입력
|
||||
**/
|
||||
function procAddonAdminSetupAddon() {
|
||||
$args = Context::getRequestVars();
|
||||
$addon_name = $args->addon_name;
|
||||
unset($args->module);
|
||||
unset($args->act);
|
||||
unset($args->addon_name);
|
||||
unset($args->body);
|
||||
|
||||
$site_module_info = Context::get('site_module_info');
|
||||
|
||||
$this->doSetup($addon_name, $args, $site_module_info->site_srl);
|
||||
|
||||
$this->makeCacheFile($site_module_info->site_srl, "pc");
|
||||
$this->makeCacheFile($site_module_info->site_srl, "mobile");
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief 애드온 추가
|
||||
* DB에 애드온을 추가함
|
||||
**/
|
||||
function doInsert($addon, $site_srl = 0) {
|
||||
$args->addon = $addon;
|
||||
$args->is_used = 'N';
|
||||
if(!$site_srl) return executeQuery('addon.insertAddon', $args);
|
||||
$args->site_srl = $site_srl;
|
||||
return executeQuery('addon.insertSiteAddon', $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 애드온 활성화
|
||||
* addons라는 테이블에 애드온의 활성화 상태를 on 시켜줌
|
||||
**/
|
||||
function doActivate($addon, $site_srl = 0, $type = "pc") {
|
||||
$args->addon = $addon;
|
||||
if($type == "pc") $args->is_used = 'Y';
|
||||
else $args->is_used_m = "Y";
|
||||
if(!$site_srl) return executeQuery('addon.updateAddon', $args);
|
||||
$args->site_srl = $site_srl;
|
||||
return executeQuery('addon.updateSiteAddon', $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 애드온 비활성화
|
||||
*
|
||||
* addons라는 테이블에 애드온의 이름을 제거하는 것으로 비활성화를 시키게 된다
|
||||
**/
|
||||
function doDeactivate($addon, $site_srl = 0, $type = "pc") {
|
||||
$args->addon = $addon;
|
||||
if($type == "pc") $args->is_used = 'N';
|
||||
else $args->is_used_m = 'N';
|
||||
if(!$site_srl) return executeQuery('addon.updateAddon', $args);
|
||||
$args->site_srl = $site_srl;
|
||||
return executeQuery('addon.updateSiteAddon', $args);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
/**
|
||||
* @class addonAdminController
|
||||
* @author NHN (developers@xpressengine.com)
|
||||
* @brief addon 모듈의 admin controller class
|
||||
**/
|
||||
include_once('addon.controller.php');
|
||||
|
||||
class addonAdminController extends addonController {
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 애드온의 활성/비활성 체인지
|
||||
**/
|
||||
function procAddonAdminToggleActivate() {
|
||||
$oAddonModel = &getAdminModel('addon');
|
||||
|
||||
$site_module_info = Context::get('site_module_info');
|
||||
|
||||
// addon값을 받아옴
|
||||
$addon = Context::get('addon');
|
||||
$type = Context::get('type');
|
||||
if(!$type) $type = "pc";
|
||||
if($addon) {
|
||||
// 활성화 되어 있으면 비활성화 시킴
|
||||
if($oAddonModel->isActivatedAddon($addon, $site_module_info->site_srl, $type)) $this->doDeactivate($addon, $site_module_info->site_srl, $type);
|
||||
|
||||
// 비활성화 되어 있으면 활성화 시킴
|
||||
else $this->doActivate($addon, $site_module_info->site_srl, $type);
|
||||
}
|
||||
|
||||
$this->makeCacheFile($site_module_info->site_srl, $type);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 애드온 설정 정보 입력
|
||||
**/
|
||||
function procAddonAdminSetupAddon() {
|
||||
$args = Context::getRequestVars();
|
||||
$addon_name = $args->addon_name;
|
||||
unset($args->module);
|
||||
unset($args->act);
|
||||
unset($args->addon_name);
|
||||
unset($args->body);
|
||||
|
||||
$site_module_info = Context::get('site_module_info');
|
||||
|
||||
$this->doSetup($addon_name, $args, $site_module_info->site_srl);
|
||||
|
||||
$this->makeCacheFile($site_module_info->site_srl, "pc");
|
||||
$this->makeCacheFile($site_module_info->site_srl, "mobile");
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief 애드온 추가
|
||||
* DB에 애드온을 추가함
|
||||
**/
|
||||
function doInsert($addon, $site_srl = 0) {
|
||||
$args->addon = $addon;
|
||||
$args->is_used = 'N';
|
||||
if(!$site_srl) return executeQuery('addon.insertAddon', $args);
|
||||
$args->site_srl = $site_srl;
|
||||
return executeQuery('addon.insertSiteAddon', $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 애드온 활성화
|
||||
* addons라는 테이블에 애드온의 활성화 상태를 on 시켜줌
|
||||
**/
|
||||
function doActivate($addon, $site_srl = 0, $type = "pc") {
|
||||
$args->addon = $addon;
|
||||
if($type == "pc") $args->is_used = 'Y';
|
||||
else $args->is_used_m = "Y";
|
||||
if(!$site_srl) return executeQuery('addon.updateAddon', $args);
|
||||
$args->site_srl = $site_srl;
|
||||
return executeQuery('addon.updateSiteAddon', $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 애드온 비활성화
|
||||
*
|
||||
* addons라는 테이블에 애드온의 이름을 제거하는 것으로 비활성화를 시키게 된다
|
||||
**/
|
||||
function doDeactivate($addon, $site_srl = 0, $type = "pc") {
|
||||
$args->addon = $addon;
|
||||
if($type == "pc") $args->is_used = 'N';
|
||||
else $args->is_used_m = 'N';
|
||||
if(!$site_srl) return executeQuery('addon.updateAddon', $args);
|
||||
$args->site_srl = $site_srl;
|
||||
return executeQuery('addon.updateSiteAddon', $args);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -1,313 +1,313 @@
|
|||
<?php
|
||||
/**
|
||||
* @class addonAdminModel
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief addon 모듈의 admin model class
|
||||
**/
|
||||
|
||||
class addonAdminModel extends addon {
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 애드온의 경로를 구함
|
||||
**/
|
||||
function getAddonPath($addon_name) {
|
||||
$class_path = sprintf('./addons/%s/', $addon_name);
|
||||
if(is_dir($class_path)) return $class_path;
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 애드온의 종류와 정보를 구함
|
||||
**/
|
||||
function getAddonList($site_srl = 0) {
|
||||
// activated된 애드온 목록을 구함
|
||||
$inserted_addons = $this->getInsertedAddons($site_srl);
|
||||
|
||||
// 다운받은 애드온과 설치된 애드온의 목록을 구함
|
||||
$searched_list = FileHandler::readDir('./addons');
|
||||
$searched_count = count($searched_list);
|
||||
if(!$searched_count) return;
|
||||
sort($searched_list);
|
||||
|
||||
for($i=0;$i<$searched_count;$i++) {
|
||||
// 애드온의 이름
|
||||
$addon_name = $searched_list[$i];
|
||||
if($addon_name == "smartphone") continue;
|
||||
|
||||
// 애드온의 경로 (files/addons가 우선)
|
||||
$path = $this->getAddonPath($addon_name);
|
||||
|
||||
// 해당 애드온의 정보를 구함
|
||||
unset($info);
|
||||
$info = $this->getAddonInfoXml($addon_name, $site_srl);
|
||||
|
||||
$info->addon = $addon_name;
|
||||
$info->path = $path;
|
||||
$info->activated = false;
|
||||
$info->mactivated = false;
|
||||
|
||||
// DB에 입력되어 있는지 확인
|
||||
if(!in_array($addon_name, array_keys($inserted_addons))) {
|
||||
// DB에 입력되어 있지 않으면 입력 (model에서 이런짓 하는거 싫지만 귀찮아서.. ㅡ.ㅜ)
|
||||
$oAddonAdminController = &getAdminController('addon');
|
||||
$oAddonAdminController->doInsert($addon_name, $site_srl);
|
||||
|
||||
// 활성화 되어 있는지 확인
|
||||
} else {
|
||||
if($inserted_addons[$addon_name]->is_used=='Y') $info->activated = true;
|
||||
if($inserted_addons[$addon_name]->is_used_m=='Y') $info->mactivated = true;
|
||||
}
|
||||
|
||||
$list[] = $info;
|
||||
}
|
||||
return $list;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 모듈의 conf/info.xml 을 읽어서 정보를 구함
|
||||
**/
|
||||
function getAddonInfoXml($addon, $site_srl = 0) {
|
||||
// 요청된 모듈의 경로를 구한다. 없으면 return
|
||||
$addon_path = $this->getAddonPath($addon);
|
||||
if(!$addon_path) return;
|
||||
|
||||
// 현재 선택된 모듈의 스킨의 정보 xml 파일을 읽음
|
||||
$xml_file = sprintf("%sconf/info.xml", $addon_path);
|
||||
if(!file_exists($xml_file)) return;
|
||||
|
||||
$oXmlParser = new XmlParser();
|
||||
$tmp_xml_obj = $oXmlParser->loadXmlFile($xml_file);
|
||||
$xml_obj = $tmp_xml_obj->addon;
|
||||
|
||||
if(!$xml_obj) return;
|
||||
|
||||
|
||||
// DB에 설정된 내역을 가져온다
|
||||
$db_args->addon = $addon;
|
||||
if(!$site_srl) $output = executeQuery('addon.getAddonInfo',$db_args);
|
||||
else {
|
||||
$db_args->site_srl = $site_srl;
|
||||
$output = executeQuery('addon.getSiteAddonInfo',$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->version && $xml_obj->attrs->version == '0.2') {
|
||||
// addon format v0.2
|
||||
sscanf($xml_obj->date->body, '%d-%d-%d', $date_obj->y, $date_obj->m, $date_obj->d);
|
||||
$addon_info->date = sprintf('%04d%02d%02d', $date_obj->y, $date_obj->m, $date_obj->d);
|
||||
|
||||
$addon_info->addon_name = $addon;
|
||||
$addon_info->title = $xml_obj->title->body;
|
||||
$addon_info->description = trim($xml_obj->description->body);
|
||||
$addon_info->version = $xml_obj->version->body;
|
||||
$addon_info->homepage = $xml_obj->link->body;
|
||||
$addon_info->license = $xml_obj->license->body;
|
||||
$addon_info->license_link = $xml_obj->license->attrs->link;
|
||||
|
||||
if(!is_array($xml_obj->author)) $author_list[] = $xml_obj->author;
|
||||
else $author_list = $xml_obj->author;
|
||||
|
||||
foreach($author_list as $author) {
|
||||
unset($author_obj);
|
||||
$author_obj->name = $author->name->body;
|
||||
$author_obj->email_address = $author->attrs->email_address;
|
||||
$author_obj->homepage = $author->attrs->link;
|
||||
$addon_info->author[] = $author_obj;
|
||||
}
|
||||
|
||||
// 확장변수를 정리
|
||||
if($xml_obj->extra_vars) {
|
||||
$extra_var_groups = $xml_obj->extra_vars->group;
|
||||
if(!$extra_var_groups) $extra_var_groups = $xml_obj->extra_vars;
|
||||
if(!is_array($extra_var_groups)) $extra_var_groups = array($extra_var_groups);
|
||||
|
||||
foreach($extra_var_groups as $group) {
|
||||
$extra_vars = $group->var;
|
||||
if(!is_array($group->var)) $extra_vars = array($group->var);
|
||||
|
||||
foreach($extra_vars as $key => $val) {
|
||||
unset($obj);
|
||||
if(!$val->attrs->type) { $val->attrs->type = 'text'; }
|
||||
|
||||
$obj->group = $group->title->body;
|
||||
$obj->name = $val->attrs->name;
|
||||
$obj->title = $val->title->body;
|
||||
$obj->type = $val->attrs->type;
|
||||
$obj->description = $val->description->body;
|
||||
$obj->value = $extra_vals->{$obj->name};
|
||||
if(strpos($obj->value, '|@|') != false) { $obj->value = explode('|@|', $obj->value); }
|
||||
if($obj->type == 'mid_list' && !is_array($obj->value)) { $obj->value = array($obj->value); }
|
||||
|
||||
// 'select'type에서 option목록을 구한다.
|
||||
if(is_array($val->options)) {
|
||||
$option_count = count($val->options);
|
||||
|
||||
for($i = 0; $i < $option_count; $i++) {
|
||||
$obj->options[$i]->title = $val->options[$i]->title->body;
|
||||
$obj->options[$i]->value = $val->options[$i]->attrs->value;
|
||||
}
|
||||
} else {
|
||||
$obj->options[0]->title = $val->options[0]->title->body;
|
||||
$obj->options[0]->value = $val->options[0]->attrs->value;
|
||||
}
|
||||
|
||||
$addon_info->extra_vars[] = $obj;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// history
|
||||
if($xml_obj->history) {
|
||||
if(!is_array($xml_obj->history)) $history[] = $xml_obj->history;
|
||||
else $history = $xml_obj->history;
|
||||
|
||||
foreach($history as $item) {
|
||||
unset($obj);
|
||||
|
||||
if($item->author) {
|
||||
(!is_array($item->author)) ? $obj->author_list[] = $item->author : $obj->author_list = $item->author;
|
||||
|
||||
foreach($obj->author_list as $author) {
|
||||
unset($author_obj);
|
||||
$author_obj->name = $author->name->body;
|
||||
$author_obj->email_address = $author->attrs->email_address;
|
||||
$author_obj->homepage = $author->attrs->link;
|
||||
$obj->author[] = $author_obj;
|
||||
}
|
||||
}
|
||||
|
||||
$obj->name = $item->name->body;
|
||||
$obj->email_address = $item->attrs->email_address;
|
||||
$obj->homepage = $item->attrs->link;
|
||||
$obj->version = $item->attrs->version;
|
||||
$obj->date = $item->attrs->date;
|
||||
$obj->description = $item->description->body;
|
||||
|
||||
if($item->log) {
|
||||
(!is_array($item->log)) ? $obj->log[] = $item->log : $obj->log = $item->log;
|
||||
|
||||
foreach($obj->log as $log) {
|
||||
unset($log_obj);
|
||||
$log_obj->text = $log->body;
|
||||
$log_obj->link = $log->attrs->link;
|
||||
$obj->logs[] = $log_obj;
|
||||
}
|
||||
}
|
||||
|
||||
$addon_info->history[] = $obj;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
// addon format 0.1
|
||||
$addon_info->addon_name = $addon;
|
||||
$addon_info->title = $xml_obj->title->body;
|
||||
$addon_info->description = trim($xml_obj->author->description->body);
|
||||
$addon_info->version = $xml_obj->attrs->version;
|
||||
sscanf($xml_obj->author->attrs->date, '%d. %d. %d', $date_obj->y, $date_obj->m, $date_obj->d);
|
||||
$addon_info->date = sprintf('%04d%02d%02d', $date_obj->y, $date_obj->m, $date_obj->d);
|
||||
$author_obj->name = $xml_obj->author->name->body;
|
||||
$author_obj->email_address = $xml_obj->author->attrs->email_address;
|
||||
$author_obj->homepage = $xml_obj->author->attrs->link;
|
||||
$addon_info->author[] = $author_obj;
|
||||
|
||||
if($xml_obj->extra_vars) {
|
||||
// 확장변수를 정리
|
||||
$extra_var_groups = $xml_obj->extra_vars->group;
|
||||
if(!$extra_var_groups) $extra_var_groups = $xml_obj->extra_vars;
|
||||
if(!is_array($extra_var_groups)) $extra_var_groups = array($extra_var_groups);
|
||||
foreach($extra_var_groups as $group) {
|
||||
$extra_vars = $group->var;
|
||||
if(!is_array($group->var)) $extra_vars = array($group->var);
|
||||
|
||||
foreach($extra_vars as $key => $val) {
|
||||
unset($obj);
|
||||
if(!$val->type->body) { $val->type->body = 'text'; }
|
||||
|
||||
$obj->group = $group->title->body;
|
||||
$obj->name = $val->attrs->name;
|
||||
$obj->title = $val->title->body;
|
||||
$obj->type = $val->type->body;
|
||||
$obj->description = $val->description->body;
|
||||
$obj->value = $extra_vals->{$obj->name};
|
||||
if(strpos($obj->value, '|@|') != false) { $obj->value = explode('|@|', $obj->value); }
|
||||
if($obj->type == 'mid_list' && !is_array($obj->value)) { $obj->value = array($obj->value); }
|
||||
|
||||
// 'select'type에서 option목록을 구한다.
|
||||
if(is_array($val->options)) {
|
||||
$option_count = count($val->options);
|
||||
|
||||
for($i = 0; $i < $option_count; $i++) {
|
||||
$obj->options[$i]->title = $val->options[$i]->title->body;
|
||||
$obj->options[$i]->value = $val->options[$i]->value->body;
|
||||
}
|
||||
}
|
||||
|
||||
$addon_info->extra_vars[] = $obj;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
return $addon_info;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 활성화된 애드온 목록을 구해옴
|
||||
**/
|
||||
function getInsertedAddons($site_srl = 0) {
|
||||
$args->list_order = 'addon';
|
||||
if(!$site_srl) $output = executeQuery('addon.getAddons', $args);
|
||||
else {
|
||||
$args->site_srl = $site_srl;
|
||||
$output = executeQuery('addon.getSiteAddons', $args);
|
||||
}
|
||||
if(!$output->data) return array();
|
||||
if(!is_array($output->data)) $output->data = array($output->data);
|
||||
|
||||
$activated_count = count($output->data);
|
||||
for($i=0;$i<$activated_count;$i++) {
|
||||
$addon = $output->data[$i];
|
||||
$addon_list[$addon->addon] = $addon;
|
||||
}
|
||||
return $addon_list;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 애드온이 활성화 되어 있는지 체크
|
||||
**/
|
||||
function isActivatedAddon($addon, $site_srl = 0, $type = "pc") {
|
||||
$args->addon = $addon;
|
||||
if(!$site_srl) {
|
||||
if($type == "pc") $output = executeQuery('addon.getAddonIsActivated', $args);
|
||||
else $output = executeQuery('addon.getMAddonIsActivated', $args);
|
||||
}
|
||||
else {
|
||||
$args->site_srl = $site_srl;
|
||||
if($type == "pc") $output = executeQuery('addon.getSiteAddonIsActivated', $args);
|
||||
else $output = executeQuery('addon.getSiteMAddonIsActivated', $args);
|
||||
}
|
||||
if($output->data->count>0) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
/**
|
||||
* @class addonAdminModel
|
||||
* @author NHN (developers@xpressengine.com)
|
||||
* @brief addon 모듈의 admin model class
|
||||
**/
|
||||
|
||||
class addonAdminModel extends addon {
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 애드온의 경로를 구함
|
||||
**/
|
||||
function getAddonPath($addon_name) {
|
||||
$class_path = sprintf('./addons/%s/', $addon_name);
|
||||
if(is_dir($class_path)) return $class_path;
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 애드온의 종류와 정보를 구함
|
||||
**/
|
||||
function getAddonList($site_srl = 0) {
|
||||
// activated된 애드온 목록을 구함
|
||||
$inserted_addons = $this->getInsertedAddons($site_srl);
|
||||
|
||||
// 다운받은 애드온과 설치된 애드온의 목록을 구함
|
||||
$searched_list = FileHandler::readDir('./addons');
|
||||
$searched_count = count($searched_list);
|
||||
if(!$searched_count) return;
|
||||
sort($searched_list);
|
||||
|
||||
for($i=0;$i<$searched_count;$i++) {
|
||||
// 애드온의 이름
|
||||
$addon_name = $searched_list[$i];
|
||||
if($addon_name == "smartphone") continue;
|
||||
|
||||
// 애드온의 경로 (files/addons가 우선)
|
||||
$path = $this->getAddonPath($addon_name);
|
||||
|
||||
// 해당 애드온의 정보를 구함
|
||||
unset($info);
|
||||
$info = $this->getAddonInfoXml($addon_name, $site_srl);
|
||||
|
||||
$info->addon = $addon_name;
|
||||
$info->path = $path;
|
||||
$info->activated = false;
|
||||
$info->mactivated = false;
|
||||
|
||||
// DB에 입력되어 있는지 확인
|
||||
if(!in_array($addon_name, array_keys($inserted_addons))) {
|
||||
// DB에 입력되어 있지 않으면 입력 (model에서 이런짓 하는거 싫지만 귀찮아서.. ㅡ.ㅜ)
|
||||
$oAddonAdminController = &getAdminController('addon');
|
||||
$oAddonAdminController->doInsert($addon_name, $site_srl);
|
||||
|
||||
// 활성화 되어 있는지 확인
|
||||
} else {
|
||||
if($inserted_addons[$addon_name]->is_used=='Y') $info->activated = true;
|
||||
if($inserted_addons[$addon_name]->is_used_m=='Y') $info->mactivated = true;
|
||||
}
|
||||
|
||||
$list[] = $info;
|
||||
}
|
||||
return $list;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 모듈의 conf/info.xml 을 읽어서 정보를 구함
|
||||
**/
|
||||
function getAddonInfoXml($addon, $site_srl = 0) {
|
||||
// 요청된 모듈의 경로를 구한다. 없으면 return
|
||||
$addon_path = $this->getAddonPath($addon);
|
||||
if(!$addon_path) return;
|
||||
|
||||
// 현재 선택된 모듈의 스킨의 정보 xml 파일을 읽음
|
||||
$xml_file = sprintf("%sconf/info.xml", $addon_path);
|
||||
if(!file_exists($xml_file)) return;
|
||||
|
||||
$oXmlParser = new XmlParser();
|
||||
$tmp_xml_obj = $oXmlParser->loadXmlFile($xml_file);
|
||||
$xml_obj = $tmp_xml_obj->addon;
|
||||
|
||||
if(!$xml_obj) return;
|
||||
|
||||
|
||||
// DB에 설정된 내역을 가져온다
|
||||
$db_args->addon = $addon;
|
||||
if(!$site_srl) $output = executeQuery('addon.getAddonInfo',$db_args);
|
||||
else {
|
||||
$db_args->site_srl = $site_srl;
|
||||
$output = executeQuery('addon.getSiteAddonInfo',$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->version && $xml_obj->attrs->version == '0.2') {
|
||||
// addon format v0.2
|
||||
sscanf($xml_obj->date->body, '%d-%d-%d', $date_obj->y, $date_obj->m, $date_obj->d);
|
||||
$addon_info->date = sprintf('%04d%02d%02d', $date_obj->y, $date_obj->m, $date_obj->d);
|
||||
|
||||
$addon_info->addon_name = $addon;
|
||||
$addon_info->title = $xml_obj->title->body;
|
||||
$addon_info->description = trim($xml_obj->description->body);
|
||||
$addon_info->version = $xml_obj->version->body;
|
||||
$addon_info->homepage = $xml_obj->link->body;
|
||||
$addon_info->license = $xml_obj->license->body;
|
||||
$addon_info->license_link = $xml_obj->license->attrs->link;
|
||||
|
||||
if(!is_array($xml_obj->author)) $author_list[] = $xml_obj->author;
|
||||
else $author_list = $xml_obj->author;
|
||||
|
||||
foreach($author_list as $author) {
|
||||
unset($author_obj);
|
||||
$author_obj->name = $author->name->body;
|
||||
$author_obj->email_address = $author->attrs->email_address;
|
||||
$author_obj->homepage = $author->attrs->link;
|
||||
$addon_info->author[] = $author_obj;
|
||||
}
|
||||
|
||||
// 확장변수를 정리
|
||||
if($xml_obj->extra_vars) {
|
||||
$extra_var_groups = $xml_obj->extra_vars->group;
|
||||
if(!$extra_var_groups) $extra_var_groups = $xml_obj->extra_vars;
|
||||
if(!is_array($extra_var_groups)) $extra_var_groups = array($extra_var_groups);
|
||||
|
||||
foreach($extra_var_groups as $group) {
|
||||
$extra_vars = $group->var;
|
||||
if(!is_array($group->var)) $extra_vars = array($group->var);
|
||||
|
||||
foreach($extra_vars as $key => $val) {
|
||||
unset($obj);
|
||||
if(!$val->attrs->type) { $val->attrs->type = 'text'; }
|
||||
|
||||
$obj->group = $group->title->body;
|
||||
$obj->name = $val->attrs->name;
|
||||
$obj->title = $val->title->body;
|
||||
$obj->type = $val->attrs->type;
|
||||
$obj->description = $val->description->body;
|
||||
$obj->value = $extra_vals->{$obj->name};
|
||||
if(strpos($obj->value, '|@|') != false) { $obj->value = explode('|@|', $obj->value); }
|
||||
if($obj->type == 'mid_list' && !is_array($obj->value)) { $obj->value = array($obj->value); }
|
||||
|
||||
// 'select'type에서 option목록을 구한다.
|
||||
if(is_array($val->options)) {
|
||||
$option_count = count($val->options);
|
||||
|
||||
for($i = 0; $i < $option_count; $i++) {
|
||||
$obj->options[$i]->title = $val->options[$i]->title->body;
|
||||
$obj->options[$i]->value = $val->options[$i]->attrs->value;
|
||||
}
|
||||
} else {
|
||||
$obj->options[0]->title = $val->options[0]->title->body;
|
||||
$obj->options[0]->value = $val->options[0]->attrs->value;
|
||||
}
|
||||
|
||||
$addon_info->extra_vars[] = $obj;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// history
|
||||
if($xml_obj->history) {
|
||||
if(!is_array($xml_obj->history)) $history[] = $xml_obj->history;
|
||||
else $history = $xml_obj->history;
|
||||
|
||||
foreach($history as $item) {
|
||||
unset($obj);
|
||||
|
||||
if($item->author) {
|
||||
(!is_array($item->author)) ? $obj->author_list[] = $item->author : $obj->author_list = $item->author;
|
||||
|
||||
foreach($obj->author_list as $author) {
|
||||
unset($author_obj);
|
||||
$author_obj->name = $author->name->body;
|
||||
$author_obj->email_address = $author->attrs->email_address;
|
||||
$author_obj->homepage = $author->attrs->link;
|
||||
$obj->author[] = $author_obj;
|
||||
}
|
||||
}
|
||||
|
||||
$obj->name = $item->name->body;
|
||||
$obj->email_address = $item->attrs->email_address;
|
||||
$obj->homepage = $item->attrs->link;
|
||||
$obj->version = $item->attrs->version;
|
||||
$obj->date = $item->attrs->date;
|
||||
$obj->description = $item->description->body;
|
||||
|
||||
if($item->log) {
|
||||
(!is_array($item->log)) ? $obj->log[] = $item->log : $obj->log = $item->log;
|
||||
|
||||
foreach($obj->log as $log) {
|
||||
unset($log_obj);
|
||||
$log_obj->text = $log->body;
|
||||
$log_obj->link = $log->attrs->link;
|
||||
$obj->logs[] = $log_obj;
|
||||
}
|
||||
}
|
||||
|
||||
$addon_info->history[] = $obj;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
// addon format 0.1
|
||||
$addon_info->addon_name = $addon;
|
||||
$addon_info->title = $xml_obj->title->body;
|
||||
$addon_info->description = trim($xml_obj->author->description->body);
|
||||
$addon_info->version = $xml_obj->attrs->version;
|
||||
sscanf($xml_obj->author->attrs->date, '%d. %d. %d', $date_obj->y, $date_obj->m, $date_obj->d);
|
||||
$addon_info->date = sprintf('%04d%02d%02d', $date_obj->y, $date_obj->m, $date_obj->d);
|
||||
$author_obj->name = $xml_obj->author->name->body;
|
||||
$author_obj->email_address = $xml_obj->author->attrs->email_address;
|
||||
$author_obj->homepage = $xml_obj->author->attrs->link;
|
||||
$addon_info->author[] = $author_obj;
|
||||
|
||||
if($xml_obj->extra_vars) {
|
||||
// 확장변수를 정리
|
||||
$extra_var_groups = $xml_obj->extra_vars->group;
|
||||
if(!$extra_var_groups) $extra_var_groups = $xml_obj->extra_vars;
|
||||
if(!is_array($extra_var_groups)) $extra_var_groups = array($extra_var_groups);
|
||||
foreach($extra_var_groups as $group) {
|
||||
$extra_vars = $group->var;
|
||||
if(!is_array($group->var)) $extra_vars = array($group->var);
|
||||
|
||||
foreach($extra_vars as $key => $val) {
|
||||
unset($obj);
|
||||
if(!$val->type->body) { $val->type->body = 'text'; }
|
||||
|
||||
$obj->group = $group->title->body;
|
||||
$obj->name = $val->attrs->name;
|
||||
$obj->title = $val->title->body;
|
||||
$obj->type = $val->type->body;
|
||||
$obj->description = $val->description->body;
|
||||
$obj->value = $extra_vals->{$obj->name};
|
||||
if(strpos($obj->value, '|@|') != false) { $obj->value = explode('|@|', $obj->value); }
|
||||
if($obj->type == 'mid_list' && !is_array($obj->value)) { $obj->value = array($obj->value); }
|
||||
|
||||
// 'select'type에서 option목록을 구한다.
|
||||
if(is_array($val->options)) {
|
||||
$option_count = count($val->options);
|
||||
|
||||
for($i = 0; $i < $option_count; $i++) {
|
||||
$obj->options[$i]->title = $val->options[$i]->title->body;
|
||||
$obj->options[$i]->value = $val->options[$i]->value->body;
|
||||
}
|
||||
}
|
||||
|
||||
$addon_info->extra_vars[] = $obj;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
return $addon_info;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 활성화된 애드온 목록을 구해옴
|
||||
**/
|
||||
function getInsertedAddons($site_srl = 0) {
|
||||
$args->list_order = 'addon';
|
||||
if(!$site_srl) $output = executeQuery('addon.getAddons', $args);
|
||||
else {
|
||||
$args->site_srl = $site_srl;
|
||||
$output = executeQuery('addon.getSiteAddons', $args);
|
||||
}
|
||||
if(!$output->data) return array();
|
||||
if(!is_array($output->data)) $output->data = array($output->data);
|
||||
|
||||
$activated_count = count($output->data);
|
||||
for($i=0;$i<$activated_count;$i++) {
|
||||
$addon = $output->data[$i];
|
||||
$addon_list[$addon->addon] = $addon;
|
||||
}
|
||||
return $addon_list;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 애드온이 활성화 되어 있는지 체크
|
||||
**/
|
||||
function isActivatedAddon($addon, $site_srl = 0, $type = "pc") {
|
||||
$args->addon = $addon;
|
||||
if(!$site_srl) {
|
||||
if($type == "pc") $output = executeQuery('addon.getAddonIsActivated', $args);
|
||||
else $output = executeQuery('addon.getMAddonIsActivated', $args);
|
||||
}
|
||||
else {
|
||||
$args->site_srl = $site_srl;
|
||||
if($type == "pc") $output = executeQuery('addon.getSiteAddonIsActivated', $args);
|
||||
else $output = executeQuery('addon.getSiteMAddonIsActivated', $args);
|
||||
}
|
||||
if($output->data->count>0) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -1,98 +1,98 @@
|
|||
<?php
|
||||
/**
|
||||
* @class addonAdminView
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief addon 모듈의 admin view class
|
||||
**/
|
||||
|
||||
class addonAdminView extends addon {
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
$this->setTemplatePath($this->module_path.'tpl');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 애드온 관리 메인 페이지 (목록 보여줌)
|
||||
**/
|
||||
function dispAddonAdminIndex() {
|
||||
$site_module_info = Context::get('site_module_info');
|
||||
|
||||
// 애드온 목록을 세팅
|
||||
$oAddonModel = &getAdminModel('addon');
|
||||
$addon_list = $oAddonModel->getAddonList($site_module_info->site_srl);
|
||||
Context::set('addon_list', $addon_list);
|
||||
|
||||
// 템플릿 패스 및 파일을 지정
|
||||
$this->setTemplateFile('addon_list');
|
||||
}
|
||||
|
||||
/**
|
||||
* @biref 애드온 세부 설정 팝업 출력
|
||||
**/
|
||||
function dispAddonAdminSetup() {
|
||||
$site_module_info = Context::get('site_module_info');
|
||||
|
||||
// 요청된 애드온을 구함
|
||||
$selected_addon = Context::get('selected_addon');
|
||||
|
||||
// 요청된 애드온의 정보를 구함
|
||||
$oAddonModel = &getAdminModel('addon');
|
||||
$addon_info = $oAddonModel->getAddonInfoXml($selected_addon, $site_module_info->site_srl);
|
||||
Context::set('addon_info', $addon_info);
|
||||
|
||||
// mid 목록을 가져옴
|
||||
$oModuleModel = &getModel('module');
|
||||
$oModuleAdminModel = &getAdminModel('module');
|
||||
|
||||
if($site_module_info->site_srl) $args->site_srl = $site_module_info->site_srl;
|
||||
$mid_list = $oModuleModel->getMidList($args);
|
||||
|
||||
// module_category와 module의 조합
|
||||
if(!$site_module_info->site_srl) {
|
||||
// 모듈 카테고리 목록을 구함
|
||||
$module_categories = $oModuleModel->getModuleCategories();
|
||||
|
||||
if($mid_list) {
|
||||
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');
|
||||
|
||||
// 템플릿 패스 및 파일을 지정
|
||||
$this->setTemplateFile('setup_addon');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 애드온의 상세 정보(conf/info.xml)를 팝업 출력
|
||||
**/
|
||||
function dispAddonAdminInfo() {
|
||||
$site_module_info = Context::get('site_module_info');
|
||||
|
||||
// 요청된 애드온을 구함
|
||||
$selected_addon = Context::get('selected_addon');
|
||||
|
||||
// 요청된 애드온의 정보를 구함
|
||||
$oAddonModel = &getAdminModel('addon');
|
||||
$addon_info = $oAddonModel->getAddonInfoXml($selected_addon, $site_module_info->site_srl);
|
||||
Context::set('addon_info', $addon_info);
|
||||
|
||||
// 레이아웃을 팝업으로 지정
|
||||
$this->setLayoutFile('popup_layout');
|
||||
|
||||
// 템플릿 패스 및 파일을 지정
|
||||
$this->setTemplateFile('addon_info');
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
/**
|
||||
* @class addonAdminView
|
||||
* @author NHN (developers@xpressengine.com)
|
||||
* @brief addon 모듈의 admin view class
|
||||
**/
|
||||
|
||||
class addonAdminView extends addon {
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
$this->setTemplatePath($this->module_path.'tpl');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 애드온 관리 메인 페이지 (목록 보여줌)
|
||||
**/
|
||||
function dispAddonAdminIndex() {
|
||||
$site_module_info = Context::get('site_module_info');
|
||||
|
||||
// 애드온 목록을 세팅
|
||||
$oAddonModel = &getAdminModel('addon');
|
||||
$addon_list = $oAddonModel->getAddonList($site_module_info->site_srl);
|
||||
Context::set('addon_list', $addon_list);
|
||||
|
||||
// 템플릿 패스 및 파일을 지정
|
||||
$this->setTemplateFile('addon_list');
|
||||
}
|
||||
|
||||
/**
|
||||
* @biref 애드온 세부 설정 팝업 출력
|
||||
**/
|
||||
function dispAddonAdminSetup() {
|
||||
$site_module_info = Context::get('site_module_info');
|
||||
|
||||
// 요청된 애드온을 구함
|
||||
$selected_addon = Context::get('selected_addon');
|
||||
|
||||
// 요청된 애드온의 정보를 구함
|
||||
$oAddonModel = &getAdminModel('addon');
|
||||
$addon_info = $oAddonModel->getAddonInfoXml($selected_addon, $site_module_info->site_srl);
|
||||
Context::set('addon_info', $addon_info);
|
||||
|
||||
// mid 목록을 가져옴
|
||||
$oModuleModel = &getModel('module');
|
||||
$oModuleAdminModel = &getAdminModel('module');
|
||||
|
||||
if($site_module_info->site_srl) $args->site_srl = $site_module_info->site_srl;
|
||||
$mid_list = $oModuleModel->getMidList($args);
|
||||
|
||||
// module_category와 module의 조합
|
||||
if(!$site_module_info->site_srl) {
|
||||
// 모듈 카테고리 목록을 구함
|
||||
$module_categories = $oModuleModel->getModuleCategories();
|
||||
|
||||
if($mid_list) {
|
||||
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');
|
||||
|
||||
// 템플릿 패스 및 파일을 지정
|
||||
$this->setTemplateFile('setup_addon');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 애드온의 상세 정보(conf/info.xml)를 팝업 출력
|
||||
**/
|
||||
function dispAddonAdminInfo() {
|
||||
$site_module_info = Context::get('site_module_info');
|
||||
|
||||
// 요청된 애드온을 구함
|
||||
$selected_addon = Context::get('selected_addon');
|
||||
|
||||
// 요청된 애드온의 정보를 구함
|
||||
$oAddonModel = &getAdminModel('addon');
|
||||
$addon_info = $oAddonModel->getAddonInfoXml($selected_addon, $site_module_info->site_srl);
|
||||
Context::set('addon_info', $addon_info);
|
||||
|
||||
// 레이아웃을 팝업으로 지정
|
||||
$this->setLayoutFile('popup_layout');
|
||||
|
||||
// 템플릿 패스 및 파일을 지정
|
||||
$this->setTemplateFile('addon_info');
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -1,71 +1,71 @@
|
|||
<?php
|
||||
/**
|
||||
* @class addon
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief addon 모듈의 high class
|
||||
**/
|
||||
|
||||
class addon extends ModuleObject {
|
||||
|
||||
/**
|
||||
* @brief 설치시 추가 작업이 필요할시 구현
|
||||
**/
|
||||
function moduleInstall() {
|
||||
// 몇가지 애드온을 등록
|
||||
$oAddonController = &getAdminController('addon');
|
||||
$oAddonController->doInsert('autolink');
|
||||
$oAddonController->doInsert('blogapi');
|
||||
$oAddonController->doInsert('counter');
|
||||
$oAddonController->doInsert('member_communication');
|
||||
$oAddonController->doInsert('member_extra_info');
|
||||
$oAddonController->doInsert('mobile');
|
||||
$oAddonController->doInsert('referer');
|
||||
$oAddonController->doInsert('resize_image');
|
||||
$oAddonController->doInsert('openid_delegation_id');
|
||||
$oAddonController->doInsert('point_level_icon');
|
||||
|
||||
// 몇가지 애드온을 기본 활성화 상태로 변경
|
||||
$oAddonController->doActivate('autolink');
|
||||
$oAddonController->doActivate('counter');
|
||||
$oAddonController->doActivate('member_communication');
|
||||
$oAddonController->doActivate('member_extra_info');
|
||||
$oAddonController->doActivate('mobile');
|
||||
$oAddonController->doActivate('referer');
|
||||
$oAddonController->doActivate('resize_image');
|
||||
$oAddonController->makeCacheFile(0);
|
||||
return new Object();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function checkUpdate() {
|
||||
$oDB = &DB::getInstance();
|
||||
if(!$oDB->isColumnExists("addons", "is_used_m")) return true;
|
||||
if(!$oDB->isColumnExists("addons_site", "is_used_m")) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 업데이트 실행
|
||||
**/
|
||||
function moduleUpdate() {
|
||||
$oDB = &DB::getInstance();
|
||||
if(!$oDB->isColumnExists("addons", "is_used_m")) {
|
||||
$oDB->addColumn("addons", "is_used_m", "char", 1, "N", true);
|
||||
}
|
||||
if(!$oDB->isColumnExists("addons_site", "is_used_m")) {
|
||||
$oDB->addColumn("addons_site", "is_used_m", "char", 1, "N", true);
|
||||
}
|
||||
return new Object();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 캐시 파일 재생성
|
||||
**/
|
||||
function recompileCache() {
|
||||
FileHandler::removeFilesInDir('./files/cache/addons');
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
/**
|
||||
* @class addon
|
||||
* @author NHN (developers@xpressengine.com)
|
||||
* @brief addon 모듈의 high class
|
||||
**/
|
||||
|
||||
class addon extends ModuleObject {
|
||||
|
||||
/**
|
||||
* @brief 설치시 추가 작업이 필요할시 구현
|
||||
**/
|
||||
function moduleInstall() {
|
||||
// 몇가지 애드온을 등록
|
||||
$oAddonController = &getAdminController('addon');
|
||||
$oAddonController->doInsert('autolink');
|
||||
$oAddonController->doInsert('blogapi');
|
||||
$oAddonController->doInsert('counter');
|
||||
$oAddonController->doInsert('member_communication');
|
||||
$oAddonController->doInsert('member_extra_info');
|
||||
$oAddonController->doInsert('mobile');
|
||||
$oAddonController->doInsert('referer');
|
||||
$oAddonController->doInsert('resize_image');
|
||||
$oAddonController->doInsert('openid_delegation_id');
|
||||
$oAddonController->doInsert('point_level_icon');
|
||||
|
||||
// 몇가지 애드온을 기본 활성화 상태로 변경
|
||||
$oAddonController->doActivate('autolink');
|
||||
$oAddonController->doActivate('counter');
|
||||
$oAddonController->doActivate('member_communication');
|
||||
$oAddonController->doActivate('member_extra_info');
|
||||
$oAddonController->doActivate('mobile');
|
||||
$oAddonController->doActivate('referer');
|
||||
$oAddonController->doActivate('resize_image');
|
||||
$oAddonController->makeCacheFile(0);
|
||||
return new Object();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function checkUpdate() {
|
||||
$oDB = &DB::getInstance();
|
||||
if(!$oDB->isColumnExists("addons", "is_used_m")) return true;
|
||||
if(!$oDB->isColumnExists("addons_site", "is_used_m")) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 업데이트 실행
|
||||
**/
|
||||
function moduleUpdate() {
|
||||
$oDB = &DB::getInstance();
|
||||
if(!$oDB->isColumnExists("addons", "is_used_m")) {
|
||||
$oDB->addColumn("addons", "is_used_m", "char", 1, "N", true);
|
||||
}
|
||||
if(!$oDB->isColumnExists("addons_site", "is_used_m")) {
|
||||
$oDB->addColumn("addons_site", "is_used_m", "char", 1, "N", true);
|
||||
}
|
||||
return new Object();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 캐시 파일 재생성
|
||||
**/
|
||||
function recompileCache() {
|
||||
FileHandler::removeFilesInDir('./files/cache/addons');
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
/**
|
||||
* @class addonController
|
||||
* @author sol ngleader.com
|
||||
* @author NHN (developers@xpressengine.com)
|
||||
* @brief addon 모듈의 controller class
|
||||
**/
|
||||
|
||||
|
|
|
|||
|
|
@ -1,36 +1,36 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module version="0.2">
|
||||
<title xml:lang="ko">애드온</title>
|
||||
<title xml:lang="en">Addon</title>
|
||||
<title xml:lang="vi">Addon</title>
|
||||
<title xml:lang="es">Addon</title>
|
||||
<title xml:lang="zh-CN">插件管理</title>
|
||||
<title xml:lang="jp">アドオン</title>
|
||||
<title xml:lang="fr">Additions</title>
|
||||
<title xml:lang="ru">Аддон</title>
|
||||
<title xml:lang="zh-TW">附加元件</title>
|
||||
<description xml:lang="ko">애드온을 등록하거나 사용/미사용을 설정하는 애드온 관리 모듈입니다.</description>
|
||||
<description xml:lang="en">This module is for maintaining addons which can toggle use and disuse states.</description>
|
||||
<description xml:lang="vi">Module này dành cho việc bảo trì những Addon đang sử dụng và không sử dụng.</description>
|
||||
<description xml:lang="es">Este Módulo es para agregar Addons, como también el manejo de ellos.</description>
|
||||
<description xml:lang="zh-CN">登录插件或设置启用/禁用插件的管理模块。</description>
|
||||
<description xml:lang="jp">アドオンの「登録、使用・未使用」などを設定する管理モジュールです。</description>
|
||||
<description xml:lang="fr">Ce module est pour les Additions de maintien qui peuvent basculer des états d'utilisation et de désuétude. </description>
|
||||
<description xml:lang="ru">Этот модуль служит для управления аддонами, использование которых Вы можете включать и выключать.</description>
|
||||
<description xml:lang="zh-TW">設定附加元件「登錄、啟用、禁用」的管理模組。</description>
|
||||
<version>0.1</version>
|
||||
<date>2007-02-28</date>
|
||||
<category>utility</category>
|
||||
|
||||
<author email_address="zero@zeroboard.com" link="http://blog.nzeo.com">
|
||||
<name xml:lang="ko">zero</name>
|
||||
<name xml:lang="en">zero</name>
|
||||
<name xml:lang="vi">zero</name>
|
||||
<name xml:lang="es">zero</name>
|
||||
<name xml:lang="zh-CN">zero</name>
|
||||
<name xml:lang="jp">zero</name>
|
||||
<name xml:lang="fr">zero</name>
|
||||
<name xml:lang="ru">zero</name>
|
||||
<name xml:lang="zh-TW">zero</name>
|
||||
</author>
|
||||
</module>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module version="0.2">
|
||||
<title xml:lang="ko">애드온</title>
|
||||
<title xml:lang="en">Addon</title>
|
||||
<title xml:lang="vi">Addon</title>
|
||||
<title xml:lang="es">Addon</title>
|
||||
<title xml:lang="zh-CN">插件管理</title>
|
||||
<title xml:lang="jp">アドオン</title>
|
||||
<title xml:lang="fr">Additions</title>
|
||||
<title xml:lang="ru">Аддон</title>
|
||||
<title xml:lang="zh-TW">附加元件</title>
|
||||
<description xml:lang="ko">애드온을 등록하거나 사용/미사용을 설정하는 애드온 관리 모듈입니다.</description>
|
||||
<description xml:lang="en">This module is for maintaining addons which can toggle use and disuse states.</description>
|
||||
<description xml:lang="vi">Module này dành cho việc bảo trì những Addon đang sử dụng và không sử dụng.</description>
|
||||
<description xml:lang="es">Este Módulo es para agregar Addons, como también el manejo de ellos.</description>
|
||||
<description xml:lang="zh-CN">登录插件或设置启用/禁用插件的管理模块。</description>
|
||||
<description xml:lang="jp">アドオンの「登録、使用・未使用」などを設定する管理モジュールです。</description>
|
||||
<description xml:lang="fr">Ce module est pour les Additions de maintien qui peuvent basculer des états d'utilisation et de désuétude. </description>
|
||||
<description xml:lang="ru">Этот модуль служит для управления аддонами, использование которых Вы можете включать и выключать.</description>
|
||||
<description xml:lang="zh-TW">設定附加元件「登錄、啟用、禁用」的管理模組。</description>
|
||||
<version>0.1</version>
|
||||
<date>2007-02-28</date>
|
||||
<category>utility</category>
|
||||
|
||||
<author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
|
||||
<name xml:lang="ko">NHN</name>
|
||||
<name xml:lang="en">NHN</name>
|
||||
<name xml:lang="vi">NHN</name>
|
||||
<name xml:lang="es">NHN</name>
|
||||
<name xml:lang="zh-CN">NHN</name>
|
||||
<name xml:lang="jp">NHN</name>
|
||||
<name xml:lang="fr">NHN</name>
|
||||
<name xml:lang="ru">NHN</name>
|
||||
<name xml:lang="zh-TW">NHN</name>
|
||||
</author>
|
||||
</module>
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
<?php
|
||||
/**
|
||||
* @file en.lang.php
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief English Language Pack
|
||||
**/
|
||||
|
||||
$lang->addon = "Addon";
|
||||
|
||||
$lang->addon_info = 'Summary of this Addon';
|
||||
$lang->addon_maker = 'Author of this Addon';
|
||||
$lang->addon_license = 'License';
|
||||
$lang->addon_history = 'Addon History';
|
||||
|
||||
$lang->about_addon_mid = "Addons can select targets.<br />(All targets will be selected when nothing is selected)";
|
||||
$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';
|
||||
?>
|
||||
<?php
|
||||
/**
|
||||
* @file en.lang.php
|
||||
* @author NHN (developers@xpressengine.com)
|
||||
* @brief English Language Pack
|
||||
**/
|
||||
|
||||
$lang->addon = "Addon";
|
||||
|
||||
$lang->addon_info = 'Summary of this Addon';
|
||||
$lang->addon_maker = 'Author of this Addon';
|
||||
$lang->addon_license = 'License';
|
||||
$lang->addon_history = 'Addon History';
|
||||
|
||||
$lang->about_addon_mid = "Addons can select targets.<br />(All targets will be selected when nothing is selected)";
|
||||
$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';
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
/**
|
||||
* @archivo es.lang.php
|
||||
* @autor zero (zero@nzeo.com)
|
||||
* @autor NHN (developers@xpressengine.com)
|
||||
* @sumario Paquete del idioma español
|
||||
**/
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
/**
|
||||
* @file modules/addon/lang/fr.lang.php
|
||||
* @author zero (zero@nzeo.com) Traduit par Pierre Duvent(PierreDuvent@gamil.com)
|
||||
* @author NHN (developers@xpressengine.com) Traduit par Pierre Duvent(PierreDuvent@gamil.com)
|
||||
* @brief Paquet du langage en français pour le module de Compagnon
|
||||
**/
|
||||
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
<?php
|
||||
/**
|
||||
* @file modules/addon/lang/jp.lang.php
|
||||
* @author zero (zero@nzeo.com) 翻訳:RisaPapa、ミニミ
|
||||
* @brief 日本語言語パッケージ
|
||||
**/
|
||||
|
||||
$lang->addon = 'アドオン';
|
||||
|
||||
$lang->addon_info = 'アドオン情報';
|
||||
$lang->addon_maker = 'アドオン制作者';
|
||||
$lang->addon_license = 'ライセンス';
|
||||
$lang->addon_history = '変更履歴';
|
||||
|
||||
$lang->about_addon_mid = 'アドオンが使われる対象を指定します。<br />(選択なしの場合、全てのモジュールが利用可能対象)';
|
||||
$lang->about_addon = 'アドオンは、HTMLの出力をコントロールすると言うより、動作を制御する役割をします。お好みのアドオンを「使用/未使用」に設定するだけで、サイトの運営に有用な機能が利用出来ます。';
|
||||
?>
|
||||
<?php
|
||||
/**
|
||||
* @file modules/addon/lang/jp.lang.php
|
||||
* @author NHN (developers@xpressengine.com) 翻訳:RisaPapa、ミニミ
|
||||
* @brief 日本語言語パッケージ
|
||||
**/
|
||||
|
||||
$lang->addon = 'アドオン';
|
||||
|
||||
$lang->addon_info = 'アドオン情報';
|
||||
$lang->addon_maker = 'アドオン制作者';
|
||||
$lang->addon_license = 'ライセンス';
|
||||
$lang->addon_history = '変更履歴';
|
||||
|
||||
$lang->about_addon_mid = 'アドオンが使われる対象を指定します。<br />(選択なしの場合、全てのモジュールが利用可能対象)';
|
||||
$lang->about_addon = 'アドオンは、HTMLの出力をコントロールすると言うより、動作を制御する役割をします。お好みのアドオンを「使用/未使用」に設定するだけで、サイトの運営に有用な機能が利用出来ます。';
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
<?php
|
||||
/**
|
||||
* @file ko.lang.php
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief 한국어 언어팩
|
||||
**/
|
||||
|
||||
$lang->addon = '애드온';
|
||||
|
||||
$lang->addon_info = '애드온 정보';
|
||||
$lang->addon_maker = '애드온 제작자';
|
||||
$lang->addon_license = '라이선스';
|
||||
$lang->addon_history = '변경 이력';
|
||||
|
||||
$lang->about_addon_mid = '애드온이 사용될 대상을 지정할 수 있습니다.<br />(모두 해제 시 모든 대상에서 사용 가능합니다.)';
|
||||
$lang->about_addon = '애드온은 HTML결과물을 출력하기보다는 동작을 제어하는 역할을 합니다.<br />원하시는 애드온을 ON/OFF 하시는 것만으로도 사이트 운영에 유용한 기능을 연동할 수 있습니다.';
|
||||
?>
|
||||
<?php
|
||||
/**
|
||||
* @file ko.lang.php
|
||||
* @author NHN (developers@xpressengine.com)
|
||||
* @brief 한국어 언어팩
|
||||
**/
|
||||
|
||||
$lang->addon = '애드온';
|
||||
|
||||
$lang->addon_info = '애드온 정보';
|
||||
$lang->addon_maker = '애드온 제작자';
|
||||
$lang->addon_license = '라이선스';
|
||||
$lang->addon_history = '변경 이력';
|
||||
|
||||
$lang->about_addon_mid = '애드온이 사용될 대상을 지정할 수 있습니다.<br />(모두 해제 시 모든 대상에서 사용 가능합니다.)';
|
||||
$lang->about_addon = '애드온은 HTML결과물을 출력하기보다는 동작을 제어하는 역할을 합니다.<br />원하시는 애드온을 ON/OFF 하시는 것만으로도 사이트 운영에 유용한 기능을 연동할 수 있습니다.';
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
<?php
|
||||
/**
|
||||
* @file ru.lang.php
|
||||
* @author zero <zero@nzeo.com> | translation by Maslennikov Evgeny aka X-[Vr]bL1s5 | e-mail: x-bliss[a]tut.by; ICQ: 225035467;
|
||||
* @brief Russian basic language pack
|
||||
**/
|
||||
|
||||
$lang->addon = "Аддон";
|
||||
|
||||
$lang->addon_info = 'Информация об аддоне';
|
||||
$lang->addon_maker = 'Автор аддона';
|
||||
$lang->addon_license = 'License';
|
||||
$lang->addon_history = 'История аддона';
|
||||
|
||||
$lang->about_addon_mid = "애드온이 사용될 대상을 지정할 수 있습니다.<br />(모두 해제시 모든 대상에서 사용 가능합니다)";
|
||||
$lang->about_addon = 'Аддон служит больше для контролирования действий, чем для отображения HTML-результатов.<br />Простым включением/выключением любых аддонов, Вы можете использовать очень полезные функции для администрирования Вашего веб-сайта';
|
||||
?>
|
||||
<?php
|
||||
/**
|
||||
* @file ru.lang.php
|
||||
* @author NHN (developers@xpressengine.com) | translation by Maslennikov Evgeny aka X-[Vr]bL1s5 | e-mail: x-bliss[a]tut.by; ICQ: 225035467;
|
||||
* @brief Russian basic language pack
|
||||
**/
|
||||
|
||||
$lang->addon = "Аддон";
|
||||
|
||||
$lang->addon_info = 'Информация об аддоне';
|
||||
$lang->addon_maker = 'Автор аддона';
|
||||
$lang->addon_license = 'License';
|
||||
$lang->addon_history = 'История аддона';
|
||||
|
||||
$lang->about_addon_mid = "애드온이 사용될 대상을 지정할 수 있습니다.<br />(모두 해제시 모든 대상에서 사용 가능합니다)";
|
||||
$lang->about_addon = 'Аддон служит больше для контролирования действий, чем для отображения HTML-результатов.<br />Простым включением/выключением любых аддонов, Вы можете использовать очень полезные функции для администрирования Вашего веб-сайта';
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -1,19 +1,19 @@
|
|||
<?php
|
||||
/* ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
||||
░░ * @File : common/lang/vi.lang.php ░░
|
||||
░░ * @Author : zero (zero@nzeo.com) ░░
|
||||
░░ * @Trans : Đào Đức Duy (ducduy.dao.vn@vietxe.net) ░░
|
||||
░░ * @Website: http://vietxe.net ░░
|
||||
░░ * @Brief : Vietnamese Language Pack (Only basic words are included here) ░░
|
||||
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ */
|
||||
|
||||
$lang->addon = "Addon";
|
||||
|
||||
$lang->addon_info = 'Thông tin về Addon';
|
||||
$lang->addon_maker = 'Tác giả của Addon';
|
||||
$lang->addon_license = 'Giấy phép';
|
||||
$lang->addon_history = 'Lịch sử';
|
||||
|
||||
$lang->about_addon_mid = "Addon có thể chọn những vị trí.<br />(Tất cả những vị trí mà chưa Addon nào sử dụng.)";
|
||||
$lang->about_addon = 'Addon có nhiệm vụ hiển thị và kiểm soát kết quả HTML.<br />Bạn có thể mở hoặc tắt bất cứ Addon nào bạn muốn.';
|
||||
?>
|
||||
<?php
|
||||
/* ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
||||
░░ * @File : common/lang/vi.lang.php ░░
|
||||
░░ * @Author : NHN (developers@xpressengine.com) ░░
|
||||
░░ * @Trans : Đào Đức Duy (ducduy.dao.vn@vietxe.net) ░░
|
||||
░░ * @Website: http://vietxe.net ░░
|
||||
░░ * @Brief : Vietnamese Language Pack (Only basic words are included here) ░░
|
||||
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ */
|
||||
|
||||
$lang->addon = "Addon";
|
||||
|
||||
$lang->addon_info = 'Thông tin về Addon';
|
||||
$lang->addon_maker = 'Tác giả của Addon';
|
||||
$lang->addon_license = 'Giấy phép';
|
||||
$lang->addon_history = 'Lịch sử';
|
||||
|
||||
$lang->about_addon_mid = "Addon có thể chọn những vị trí.<br />(Tất cả những vị trí mà chưa Addon nào sử dụng.)";
|
||||
$lang->about_addon = 'Addon có nhiệm vụ hiển thị và kiểm soát kết quả HTML.<br />Bạn có thể mở hoặc tắt bất cứ Addon nào bạn muốn.';
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
/**
|
||||
* @file zh-CN.lang.php
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @author NHN (developers@xpressengine.com)
|
||||
* @brief 简体中文语言包
|
||||
**/
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
/**
|
||||
* @file modules/addon/lang/zh-TW.lang.php
|
||||
* @author zero (zero@nzeo.com) 翻譯:royallin
|
||||
* @author NHN (developers@xpressengine.com) 翻譯:royallin
|
||||
* @brief 附加元件(addon)模組正體中文語言
|
||||
**/
|
||||
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
<!-- xml js filter를 이용하기 위한 데이터 전달용 form -->
|
||||
<form id="fo_addon" action="./" method="get">
|
||||
<input type="hidden" name="addon" value="" />
|
||||
<input type="hidden" name="type" value="" />
|
||||
</form>
|
||||
|
||||
<!-- 애드온의 목록 -->
|
||||
|
|
@ -18,7 +19,9 @@
|
|||
<th scope="col"><div>{$lang->author}</div></th>
|
||||
<th scope="col"><div>{$lang->date}</div></th>
|
||||
<th scope="col" class="wide"><div>{$lang->installed_path}</div></th>
|
||||
<th scope="col" colspan="2"><div> </div></th>
|
||||
<th scope="col"><div>{$lang->cmd_setup}</div></th>
|
||||
<th scope="col"><div>PC</div></th>
|
||||
<th scope="col"><div>Mobile</div></th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
|
|
@ -47,6 +50,14 @@
|
|||
<a href="#" onclick="doToggleAddon('{$val->addon}');return false;" title="{htmlspecialchars($lang->notuse)}" class="buttonSet buttonDisable"><span>{$lang->notuse}</span></a>
|
||||
<!--@end-->
|
||||
</td>
|
||||
<td>
|
||||
<!--@if($val->mactivated)-->
|
||||
<a href="#" onclick="doToggleAddon('{$val->addon}','mobile');return false;" title="{htmlspecialchars($lang->use)}" class="buttonSet buttonActive"><span>{$lang->use}</span></a>
|
||||
<!--@else-->
|
||||
<a href="#" onclick="doToggleAddon('{$val->addon}','mobile');return false;" title="{htmlspecialchars($lang->notuse)}" class="buttonSet buttonDisable"><span>{$lang->notuse}</span></a>
|
||||
<!--@end-->
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<filter name="toggle_activate_addon" module="addon" act="procAddonAdminToggleActivate">
|
||||
<form>
|
||||
<node target="addon" required="true" />
|
||||
<node target="type" required="true" />
|
||||
</form>
|
||||
<response callback_func="reloadDocument">
|
||||
<tag name="error" />
|
||||
|
|
|
|||
|
|
@ -2,9 +2,11 @@
|
|||
* @brief 애드온의 활성/비활성 토글용 함수
|
||||
* fo_addon이라는 id를 가지는 form에 인자로 주어진 addon값을 세팅후 실행
|
||||
**/
|
||||
function doToggleAddon(addon) {
|
||||
function doToggleAddon(addon, type) {
|
||||
if(typeof(type) == "undefined") type = "pc";
|
||||
var fo_obj = jQuery('#fo_addon').get(0);
|
||||
fo_obj.addon.value = addon;
|
||||
fo_obj.type.value = type;
|
||||
procFilter(fo_obj, toggle_activate_addon);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue