mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-21 20:29:57 +09:00
merge from 1.5.2
git-svn-id: http://xe-core.googlecode.com/svn/trunk@10446 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
6c23751ef8
commit
c727926d9e
382 changed files with 6855 additions and 3603 deletions
|
|
@ -178,17 +178,15 @@
|
|||
if($obj->type == 'mid_list' && !is_array($obj->value)) { $obj->value = array($obj->value); }
|
||||
|
||||
// 'Select'type obtained from the option list.
|
||||
if(is_array($val->options)) {
|
||||
$option_count = count($val->options);
|
||||
if($val->options && !is_array($val->options))
|
||||
{
|
||||
$val->options = array($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;
|
||||
}
|
||||
for($i = 0, $c = count($val->options); $i < $c; $i++) {
|
||||
$obj->options[$i]->title = $val->options[$i]->title->body;
|
||||
$obj->options[$i]->value = $val->options[$i]->attrs->value;
|
||||
}
|
||||
|
||||
$addon_info->extra_vars[] = $obj;
|
||||
}
|
||||
|
|
@ -273,14 +271,15 @@
|
|||
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 obtained from the option list.
|
||||
if(is_array($val->options)) {
|
||||
$option_count = count($val->options);
|
||||
if($val->options && !is_array($val->options))
|
||||
{
|
||||
$val->options = array($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;
|
||||
}
|
||||
}
|
||||
for($i = 0, $c = count($val->options); $i < $c; $i++) {
|
||||
$obj->options[$i]->title = $val->options[$i]->title->body;
|
||||
$obj->options[$i]->value = $val->options[$i]->value->body;
|
||||
}
|
||||
|
||||
$addon_info->extra_vars[] = $obj;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -137,10 +137,10 @@
|
|||
$extra_vars = base64_encode($val->extra_vars);
|
||||
}
|
||||
|
||||
$buff .= sprintf(' $_ml = unserialize(base64_decode("%s")); if(file_exists("%saddons/%s/%s.addon.php") && (!is_array($_ml) || in_array($_m, $_ml))) { unset($addon_info); $addon_info = unserialize(base64_decode("%s")); $addon_path = "%saddons/%s/"; @include("%saddons/%s/%s.addon.php"); }', $mid_list, _XE_PATH_, $addon, $addon, $extra_vars, _XE_PATH_, $addon, _XE_PATH_, $addon, $addon);
|
||||
$buff .= sprintf(' $_ml = unserialize(base64_decode("%s")); $addon_path = "%saddons/%s/"; $addon_file = "%s.addon.php"; if(file_exists($addon_path.$addon_file) && (!is_array($_ml) || in_array($_m, $_ml))) { unset($addon_info); $addon_info = unserialize(base64_decode("%s")); @include($addon_path.$addon_file); }', $mid_list, './', $addon, $addon, $extra_vars);
|
||||
}
|
||||
|
||||
$buff = sprintf('<?php if(!defined("__ZBXE__")) exit(); $_m = Context::get(\'mid\'); %s ?>', $buff);
|
||||
$buff = sprintf('<?php if(!defined("__XE__")) exit(); $_m = Context::get(\'mid\'); %s ?>', $buff);
|
||||
|
||||
$addon_path = _XE_PATH_.'files/cache/addons/';
|
||||
if(!is_dir($addon_path)) FileHandler::makeDir($addon_path);
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@
|
|||
<value xml:lang="en"><![CDATA[Select a target where the added is used.<br />(If you select none, the addon will be used on all targets.)]]></value>
|
||||
<value xml:lang="jp"><![CDATA[アドオンを使用する対象を指定します。<br />(選択しない場合、すべてのモジュールが利用可能対象となります]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[可以指定使用插件的对象。<br />(全部解除表示可用在所有对象。)]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[可以指定使用附加元件的目標。<br />(全部不選取表示可用在所有目標。)]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[可以指定使用附加元件的目標。<br />(全部不選取表示可用於所有目標。)]]></value>
|
||||
<value xml:lang="fr"><![CDATA[On peut choisir des objets dans lesquels la Compagnon soit utilisé.<br />(Tout sera choisi quand rien n'est choisi.)]]></value>
|
||||
<value xml:lang="ru"><![CDATA[애드온이 사용될 대상을 지정할 수 있습니다.<br />(모두 해제시 모든 대상에서 사용 가능합니다)]]></value>
|
||||
<value xml:lang="es"><![CDATA[Add-ons se puede utilizar para especificar el destino. <br /> (Todo gratis, están disponibles en todos los destinos)]]></value>
|
||||
|
|
@ -73,7 +73,7 @@
|
|||
<value xml:lang="en"><![CDATA[Addons control many actions performed in your site rather than display HTML results.<br />You can control useful functions simply by switching ON/OFF of addons.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[アドオンは、HTMLの出力をコントロールするというより、動作を制御する役割をします。アドオンを「使用/未使用」に設定するだけで、サイトの運営に有用な機能を利用できます。]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[插件就是对动作(Action)的有效控制来给核心程序提供扩展功能的一种组件。<br />只需启用/禁用操作,即可为网站提供强大的扩展功能。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[附加元件可對 Action進行控制並可擴展核心程式功能,而不是顯示輸出 HTML結果。<br />『啟用/禁用』附加元件,以增強網站的功能。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[附加元件可對 Action 進行控制並可擴展核心程式功能,而不是顯示 HTML 結果。<br />『啟用/禁用』附加元件,以增強網站的功能。]]></value>
|
||||
<value xml:lang="fr"><![CDATA[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.]]></value>
|
||||
<value xml:lang="ru"><![CDATA[Аддон служит больше для контролирования действий, чем для отображения HTML-результатов.<br />Простым включением/выключением любых аддонов, Вы можете использовать очень полезные функции для администрирования Вашего веб-сайта]]></value>
|
||||
<value xml:lang="es"><![CDATA[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.]]></value>
|
||||
|
|
@ -84,25 +84,30 @@
|
|||
<value xml:lang="ko"><![CDATA[설치된 애드온]]></value>
|
||||
<value xml:lang="en"><![CDATA[Installed Add-ons]]></value>
|
||||
<value xml:lang="jp"><![CDATA[インストールされているアドオン]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[已安裝附加元件]]></value>
|
||||
</item>
|
||||
<item name="about_installed_addon">
|
||||
<value xml:lang="ko"><![CDATA[PC, Mobile에 체크하면 애드온을 켤 수 있습니다.]]></value>
|
||||
<value xml:lang="en"><![CDATA[Check PC and Mobile to switch on the addon.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[PC、Mobileを選択するとアドオンを使用できます。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[可選擇切換 PC 和 Mobile 的附加元件。]]></value>
|
||||
</item>
|
||||
<item name="fixed">
|
||||
<value xml:lang="ko"><![CDATA[고정]]></value>
|
||||
<value xml:lang="en"><![CDATA[Fixed]]></value>
|
||||
<value xml:lang="jp"><![CDATA[固定]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[固定]]></value>
|
||||
</item>
|
||||
<item name="about_fixed">
|
||||
<value xml:lang="ko"><![CDATA[체크하면 사이트 관리자가 이 설정을 변경할 수 없음.]]></value>
|
||||
<value xml:lang="en"><![CDATA[Check this, and the site administrator cannot change this setting.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[選択すると、サイトマネージャーがこの設定を変更することができません。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[選擇此項後,網站管理員將無法變更設定。]]></value>
|
||||
</item>
|
||||
<item name="msg_not_exist_option">
|
||||
<value xml:lang="ko"><![CDATA[이 애드온은 설정이 존재하지 않습니다.]]></value>
|
||||
<value xml:lang="en"><![CDATA[Configuration for this addon does not exist.]]></value>
|
||||
<value xml:lang="en"><![CDATA[Configuration for this addon does not exist.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[このアドオンは、設定がありません。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[此附加元件的設定不存在。]]></value>
|
||||
</item>
|
||||
</lang>
|
||||
|
|
|
|||
|
|
@ -8,19 +8,22 @@
|
|||
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
</div>
|
||||
<div class="table even easyList">
|
||||
<div class="table even easyList dsTg">
|
||||
<table width="100%" border="1" cellspacing="0">
|
||||
<caption>All({$addon_count})</caption>
|
||||
<caption>
|
||||
All({$addon_count})
|
||||
<span class="side"><button type="button" class="text"><span class="hide">{$lang->simple_view}</span><span class="show">{$lang->detail_view}</span></button></span>
|
||||
</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="title">{$lang->addon_name}</th>
|
||||
<th scope="col">{$lang->version}</th>
|
||||
<th scope="col">{$lang->author}</th>
|
||||
<th scope="col">{$lang->installed_path}</th>
|
||||
<th scope="col">{$lang->cmd_setup}</th>
|
||||
<th scope="col">PC</th>
|
||||
<th scope="col">Mobile</th>
|
||||
<th scope="col">{$lang->cmd_delete}</th>
|
||||
<th scope="col" class="nowr">{$lang->version}</th>
|
||||
<th scope="col" class="nowr">{$lang->author}</th>
|
||||
<th scope="col" class="nowr">{$lang->installed_path}</th>
|
||||
<th scope="col" class="nowr">{$lang->cmd_setup}</th>
|
||||
<th scope="col" class="nowr">PC</th>
|
||||
<th scope="col" class="nowr">Mobile</th>
|
||||
<th scope="col" class="nowr">{$lang->cmd_delete}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
|
@ -32,18 +35,18 @@
|
|||
{$lang->msg_avail_easy_update} <a href="{$addon->update_url}&return_url={urlencode(getRequestUriByServerEnviroment())}">{$lang->msg_do_you_like_update}</a>
|
||||
</p>
|
||||
</td>
|
||||
<td>{$addon->version}</td>
|
||||
<td>
|
||||
<td class="nowr">{$addon->version}</td>
|
||||
<td class="nowr">
|
||||
<block loop="$addon->author => $author">
|
||||
<a cond="$author->homepage" href="{$author->homepage}" target="_blank">{$author->name}</a>
|
||||
<block cond="!$author->homepage">{$author->name}</block>
|
||||
</block>
|
||||
</td>
|
||||
<td>{$addon->path}</td>
|
||||
<td><a href="{getUrl('act', 'dispAddonAdminSetup', 'selected_addon', $addon->addon_name)}">{$lang->cmd_setup}</a></td>
|
||||
<td><input type="checkbox" name="pc_on[]" title="PC" value="{htmlspecialchars($addon->addon_name)}" checked="checked"|cond="$addon->activated" /></td>
|
||||
<td><input type="checkbox" name="mobile_on[]" title="Mobile" value="{htmlspecialchars($addon->addon_name)}" checked="checked"|cond="$addon->mactivated" /></td>
|
||||
<td><a cond="$addon->remove_url" href="{$addon->remove_url}&return_url={urlencode(getRequestUriByServerEnviroment())}">{$lang->cmd_delete}</a></td>
|
||||
<td class="nowr">{$addon->path}</td>
|
||||
<td class="nowr"><a href="{getUrl('act', 'dispAddonAdminSetup', 'selected_addon', $addon->addon_name)}">{$lang->cmd_setup}</a></td>
|
||||
<td class="nowr"><input type="checkbox" name="pc_on[]" title="PC" value="{htmlspecialchars($addon->addon_name)}" checked="checked"|cond="$addon->activated" /></td>
|
||||
<td class="nowr"><input type="checkbox" name="mobile_on[]" title="Mobile" value="{htmlspecialchars($addon->addon_name)}" checked="checked"|cond="$addon->mactivated" /></td>
|
||||
<td class="nowr"><a cond="$addon->remove_url" href="{$addon->remove_url}&return_url={urlencode(getRequestUriByServerEnviroment())}">{$lang->cmd_delete}</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
<p class="q"><label for="{$var->name}">{$var->title}</label></p>
|
||||
<p class="a">
|
||||
<input cond="$var->type == 'text'" type="text" name="{$var->name}" id="{$var->name}" value="{htmlspecialchars($var->value)}" class="lang_code">
|
||||
<textarea cond="$var->type == 'textarea'" name="{$var->name}" id="{$var->name}" class="lang_code">{htmlspecialchars($var->value)}</textarea>
|
||||
<textarea cond="$var->type == 'textarea'" name="{$var->name}" id="{$var->name}" class="lang_code" rows="8" cols="42">{htmlspecialchars($var->value)}</textarea>
|
||||
<select cond="$var->type == 'select'" name="{$var->name}" id="{$var->name}">
|
||||
<option loop="$var->options => $option" value="{$option->value}" selected="selected"|cond="$var->value == $option->value">{$option->title}</option>
|
||||
</select>
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@
|
|||
|
||||
function getAdminFTPList()
|
||||
{
|
||||
Context::loadLang('./modules/autoinstall/lang');
|
||||
set_time_limit(5);
|
||||
require_once(_XE_PATH_.'libs/ftp.class.php');
|
||||
$ftp_info = Context::getRequestVars();
|
||||
|
|
@ -90,6 +91,10 @@
|
|||
if(strpos($v,'d') === 0 || strpos($v, '<DIR>')) $list[] = substr(strrchr($v,' '),1) . '/';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return new Object(-1,'msg_ftp_no_directory');
|
||||
}
|
||||
$this->add('list', $list);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -144,6 +144,43 @@
|
|||
$output = $oAdminAdminModel->getFavoriteList(0, true);
|
||||
Context::set('favorite_list', $output->get('favoriteList'));
|
||||
|
||||
// Retrieve recent news and set them into context,
|
||||
// move from index method, because use in admin footer
|
||||
$newest_news_url = sprintf("http://news.xpressengine.com/%s/news.php?version=%s&package=%s", _XE_LOCATION_, __ZBXE_VERSION__, _XE_PACKAGE_);
|
||||
$cache_file = sprintf("%sfiles/cache/newest_news.%s.cache.php", _XE_PATH_, _XE_LOCATION_);
|
||||
if(!file_exists($cache_file) || filemtime($cache_file)+ 60*60 < time()) {
|
||||
// Considering if data cannot be retrieved due to network problem, modify filemtime to prevent trying to reload again when refreshing administration page
|
||||
// Ensure to access the administration page even though news cannot be displayed
|
||||
FileHandler::writeFile($cache_file,'');
|
||||
FileHandler::getRemoteFile($newest_news_url, $cache_file, null, 1, 'GET', 'text/html', array('REQUESTURL'=>getFullUrl('')));
|
||||
}
|
||||
|
||||
if(file_exists($cache_file)) {
|
||||
$oXml = new XmlParser();
|
||||
$buff = $oXml->parse(FileHandler::readFile($cache_file));
|
||||
|
||||
$item = $buff->zbxe_news->item;
|
||||
if($item) {
|
||||
if(!is_array($item)) $item = array($item);
|
||||
|
||||
foreach($item as $key => $val) {
|
||||
$obj = null;
|
||||
$obj->title = $val->body;
|
||||
$obj->date = $val->attrs->date;
|
||||
$obj->url = $val->attrs->url;
|
||||
$news[] = $obj;
|
||||
}
|
||||
Context::set('news', $news);
|
||||
if(isset($news) && is_array($news))
|
||||
{
|
||||
Context::set('latestVersion', array_shift($news));
|
||||
}
|
||||
}
|
||||
Context::set('released_version', $buff->zbxe_news->attrs->released_version);
|
||||
Context::set('download_link', $buff->zbxe_news->attrs->download_link);
|
||||
}
|
||||
|
||||
|
||||
Context::set('subMenuTitle', $subMenuTitle);
|
||||
Context::set('gnbUrlList', $menu->list);
|
||||
Context::set('parentSrl', $parentSrl);
|
||||
|
|
@ -151,62 +188,6 @@
|
|||
Context::setBrowserTitle($browserTitle);
|
||||
}
|
||||
|
||||
function loadSideBar()
|
||||
{
|
||||
$oModuleModel = &getModel('module');
|
||||
$installed_module_list = $oModuleModel->getModulesXmlInfo();
|
||||
|
||||
$installed_modules = $package_modules = array();
|
||||
$package_idx = 0;
|
||||
foreach($installed_module_list as $key => $val) {
|
||||
if($val->category == 'migration') $val->category = 'system';
|
||||
if($val->category == 'interlock') $val->category = 'accessory';
|
||||
if($val->category == 'statistics') $val->category = 'accessory';
|
||||
|
||||
if($val->module == 'admin' || !$val->admin_index_act) continue;
|
||||
// get action information
|
||||
$action_spec = $oModuleModel->getModuleActionXml($val->module);
|
||||
$actions = array();
|
||||
if($action_spec->default_index_act) $actions[] = $action_spec->default_index_act;
|
||||
if($action_spec->admin_index_act) $actions[] = $action_spec->admin_index_act;
|
||||
if($action_spec->action) foreach($action_spec->action as $k => $v) $actions[] = $k;
|
||||
|
||||
$obj = null;
|
||||
$obj->category = $val->category;
|
||||
$obj->title = $val->title;
|
||||
$obj->description = $val->description;
|
||||
$obj->index_act = $val->admin_index_act;
|
||||
if(in_array(Context::get('act'), $actions)) $obj->selected = true;
|
||||
|
||||
// Packages
|
||||
if($val->category == 'package') {
|
||||
if($package_idx == 0) $obj->position = "first";
|
||||
else $obj->position = "mid";
|
||||
$package_modules[] = $obj;
|
||||
$package_idx ++;
|
||||
if($obj->selected) Context::set('package_selected',true);
|
||||
// Modules
|
||||
} else {
|
||||
$installed_modules[] = $obj;
|
||||
}
|
||||
if($obj->selected) {
|
||||
Context::set('selected_module_category', $val->category);
|
||||
Context::set('selected_module_info', $val);
|
||||
}
|
||||
}
|
||||
if(count($package_modules)) $package_modules[count($package_modules)-1]->position = 'end';
|
||||
Context::set('package_modules', $package_modules);
|
||||
Context::set('installed_modules', $installed_modules);
|
||||
Context::setBrowserTitle("XE Admin Page");
|
||||
|
||||
// add javascript tooltip plugin - gony
|
||||
Context::loadJavascriptPlugin('qtip');
|
||||
Context::loadJavascriptPlugin('watchinput');
|
||||
|
||||
$security = new Security();
|
||||
$security->encodeHTML('selected_module_info.', 'selected_module_info.author..', 'package_modules..', 'installed_modules..');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Display Super Admin Dashboard
|
||||
* @return none
|
||||
|
|
@ -277,51 +258,29 @@
|
|||
Context::set('latestTrackbackList', $output->data);
|
||||
unset($args, $output, $columnList);
|
||||
|
||||
//Retrieve recent news and set them into context
|
||||
$newest_news_url = sprintf("http://news.xpressengine.com/%s/news.php?version=%s&package=%s", _XE_LOCATION_, __ZBXE_VERSION__, _XE_PACKAGE_);
|
||||
$cache_file = sprintf("%sfiles/cache/newest_news.%s.cache.php", _XE_PATH_, _XE_LOCATION_);
|
||||
if(!file_exists($cache_file) || filemtime($cache_file)+ 60*60 < time()) {
|
||||
// Considering if data cannot be retrieved due to network problem, modify filemtime to prevent trying to reload again when refreshing administration page
|
||||
// Ensure to access the administration page even though news cannot be displayed
|
||||
FileHandler::writeFile($cache_file,'');
|
||||
FileHandler::getRemoteFile($newest_news_url, $cache_file, null, 1, 'GET', 'text/html', array('REQUESTURL'=>getFullUrl('')));
|
||||
}
|
||||
|
||||
if(file_exists($cache_file)) {
|
||||
$oXml = new XmlParser();
|
||||
$buff = $oXml->parse(FileHandler::readFile($cache_file));
|
||||
|
||||
$item = $buff->zbxe_news->item;
|
||||
if($item) {
|
||||
if(!is_array($item)) $item = array($item);
|
||||
|
||||
foreach($item as $key => $val) {
|
||||
$obj = null;
|
||||
$obj->title = $val->body;
|
||||
$obj->date = $val->attrs->date;
|
||||
$obj->url = $val->attrs->url;
|
||||
$news[] = $obj;
|
||||
}
|
||||
Context::set('news', $news);
|
||||
}
|
||||
Context::set('released_version', $buff->zbxe_news->attrs->released_version);
|
||||
Context::set('download_link', $buff->zbxe_news->attrs->download_link);
|
||||
}
|
||||
|
||||
// Get list of modules
|
||||
$oModuleModel = &getModel('module');
|
||||
$module_list = $oModuleModel->getModuleList();
|
||||
if(is_array($module_list))
|
||||
{
|
||||
$isUpdated = false;
|
||||
$needUpdate = false;
|
||||
$addTables = false;
|
||||
foreach($module_list AS $key=>$value)
|
||||
{
|
||||
if($value->need_install || $value->need_update)
|
||||
$isUpdated = true;
|
||||
if($value->need_install)
|
||||
{
|
||||
$addTables = true;
|
||||
}
|
||||
if($value->need_update)
|
||||
{
|
||||
$needUpdate = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
Context::set('module_list', $module_list);
|
||||
Context::set('isUpdated', $isUpdated);
|
||||
Context::set('needUpdate', $isUpdated);
|
||||
Context::set('addTables', $addTables);
|
||||
Context::set('needUpdate', $needUpdate);
|
||||
|
||||
// gathering enviroment check
|
||||
$mainVersion = join('.', array_slice(explode('.', __ZBXE_VERSION__), 0, 2));
|
||||
|
|
|
|||
|
|
@ -82,7 +82,10 @@
|
|||
$args->menu_srl = $menuSrl;
|
||||
$args->menu_item_srl = getNextSequence();
|
||||
$args->name = '{$lang->menu_gnb[\''.$value.'\']}';
|
||||
if($value == 'dashboard') $args->url = getUrl('', 'module', 'admin');
|
||||
if($value == 'dashboard')
|
||||
{
|
||||
$args->url = 'index.php?module=admin';
|
||||
}
|
||||
else $args->url = '#';
|
||||
$args->listorder = -1*$args->menu_item_srl;
|
||||
$output = executeQuery('menu.insertMenuItem', $args);
|
||||
|
|
|
|||
|
|
@ -874,11 +874,6 @@ Lütfen son sürümü için indirme linkine tıklayınız.]]></value>
|
|||
<value xml:lang="en"><![CDATA[Ratio(Keep Aspect)]]></value>
|
||||
<value xml:lang="jp"><![CDATA[Ratio(縦横の比率をキープ)]]></value>
|
||||
</item>
|
||||
<item name="ratio">
|
||||
<value xml:lang="ko"><![CDATA[Ratio(비율 맞추기)]]></value>
|
||||
<value xml:lang="en"><![CDATA[Ratio(Keep Aspect)]]></value>
|
||||
<value xml:lang="jp"><![CDATA[Ratio(縦横の比率をキープ)]]></value>
|
||||
</item>
|
||||
<item name="about_admin_ip_limit">
|
||||
<value xml:lang="ko"><![CDATA[관리자 페이지로 접근가능한 IP대역을 지정합니다.]]></value>
|
||||
<value xml:lang="en"><![CDATA[Sepcify IP address band that can access the admin page.]]></value>
|
||||
|
|
@ -1073,6 +1068,21 @@ Lütfen son sürümü için indirme linkine tıklayınız.]]></value>
|
|||
<value xml:lang="ko"><![CDATA[업데이트 가능]]></value>
|
||||
<value xml:lang="en"><![CDATA[Update Available]]></value>
|
||||
</item>
|
||||
<item name="need_update_and_table">
|
||||
<value xml:lang="ko"><![CDATA[DB Table 생성과 모듈 업데이트 필요]]></value>
|
||||
<value xml:lang="en"><![CDATA[Need to Create DB Table and Update Module]]></value>
|
||||
<value xml:lang="jp"><![CDATA[DBテーブルの生成とモジュールの更新が必要]]></value>
|
||||
</item>
|
||||
<item name="need_update">
|
||||
<value xml:lang="ko"><![CDATA[모듈 업데이트 필요]]></value>
|
||||
<value xml:lang="en"><![CDATA[Need to Update Module]]></value>
|
||||
<value xml:lang="jp"><![CDATA[モジュールの更新が必要]]></value>
|
||||
</item>
|
||||
<item name="need_table">
|
||||
<value xml:lang="ko"><![CDATA[DB Table 생성 필요]]></value>
|
||||
<value xml:lang="en"><![CDATA[Need to Create DB Table]]></value>
|
||||
<value xml:lang="jp"><![CDATA[DBテーブルの生成が必要]]></value>
|
||||
</item>
|
||||
<item name="admin_menu_setup">
|
||||
<value xml:lang="ko"><![CDATA[관리자 메뉴 설정]]></value>
|
||||
<value xml:lang="en"><![CDATA[Admin Menu Setup]]></value>
|
||||
|
|
@ -1185,32 +1195,19 @@ Lütfen son sürümü için indirme linkine tıklayınız.]]></value>
|
|||
<value xml:lang="zh-TW"><![CDATA[此資料會儲存在 <strong>files/config/ftp.config.php</strong> 檔案中。 安裝後可在設定頁面中新增、更改或刪除此資訊。]]></value>
|
||||
<value xml:lang="de"><![CDATA[Die Angabe wird unter <strong>files/config/ftp.config.php</strong> gespeichert. Nach der Installation ist es auch möglich, dass die Angabe von Administrator modifiziert oder gelöscht werden kann.]]></value>
|
||||
</item>
|
||||
<item name="msg_ftp_not_connected">
|
||||
<value xml:lang="ko"><![CDATA[localhost로의 FTP 접속 오류가 발생했습니다. FTP 포트 번호를 확인해주시거나 FTP 서비스가 가능한지 확인해주세요.]]></value>
|
||||
<value xml:lang="en"><![CDATA[Connection to the localhost via FTP failed. Please check the port number and whether the FTP service is available.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[localhostへのFTP接続エラーが発生しました。FTPポート(port)番号をはじめ、FTPサービスが可能であるかを確認してください。]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[发生本地(localhost)FTP连接错误。请确认ftp端口号及支持ftp服务与否。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[本地(localhost) FTP連線錯誤。請檢查 FTP 埠口並確認是否支援 FTP 功能。]]></value>
|
||||
<value xml:lang="fr"><![CDATA[localhost로의 FTP 접속 오류가 발생하였습니다. ftp 포트 번호를 확인해주시거나 ftp 서비스가 가능한지 확인해주세요]]></value>
|
||||
<value xml:lang="de"><![CDATA[Ein Verbindungsfehler des FTPs an localhost ist aufgetreten. Bitte FTP_Port checken, oder ob FTP_Service möglich ist.]]></value>
|
||||
<value xml:lang="ru"><![CDATA[Connection to localhost via FTP failed. Please check the port number and if FTP service is available.]]></value>
|
||||
<value xml:lang="es"><![CDATA[Ha ocurrico un error de conexión al FTP del localhost. Verifique el puerto del FTP y/o el funcionamiento del servicio FTP.]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Yerel web alanına FTP bağlantısı sağlanamadı. Lütfen port numarasını ve FTP servisinin mevcut olup-olmadığını kontrol ediniz .]]></value>
|
||||
<value xml:lang="vi"><![CDATA[Kết nối bằng FTP không thành công. Xin vui lòng kiểm tra lại thông tin tài khoản và cổng kết nối!]]></value>
|
||||
<value xml:lang="mn"><![CDATA[localhost-ын FTP холболт амжилтгvй боллоо. FTP дугаараа шалгах буюу эсвэл FTP vйлчилгээг ашиглах боломжтой эсэхээ шалгана уу.]]></value>
|
||||
</item>
|
||||
<item name="msg_ftp_invalid_auth_info">
|
||||
<value xml:lang="ko"><![CDATA[입력하신 FTP 정보로 로그인을 하지 못했습니다. FTP정보를 확인해주세요.]]></value>
|
||||
<value xml:lang="en"><![CDATA[Authentication failed. Please check the username and password.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[ログインに失敗しました。FTPアクセス情報を再度確認してください。]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[FTP登录失败。请确认输入的FTP信息。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[FTP登入失敗。請確認輸入的 FTP 資訊。]]></value>
|
||||
<value xml:lang="fr"><![CDATA[입력하신 FTP 정보로 로그인을 하지 못했습니다. FTP정보를 확인해주세요]]></value>
|
||||
<value xml:lang="de"><![CDATA[Anmeldungsfehler mit der Angabe des FTPs Bitte die Angabe des FTPs festlegen.]]></value>
|
||||
<value xml:lang="es"><![CDATA[Los datos de login para el FTP no son correctos. Veriféquelos.]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Kimlik doğrulama başarısız oldu. Lütfen kullanıcı adını ve şifreyi kontrol ediniz.]]></value>
|
||||
<value xml:lang="vi"><![CDATA[Xác nhận thất bại. Xin vui lòng kiểm tra lại tên sử dụng và mật khẩu.]]></value>
|
||||
<value xml:lang="mn"><![CDATA[Таны оруулсан FTP мэдээллээр нэвтэрч чадсангvй. FTPмэдээллээ шалгана уу.]]></value>
|
||||
<item name="msg_ftp_no_directory">
|
||||
<value xml:lang="ko"><![CDATA[FTP 접속에 성공했으나, 디렉토리 정보를 읽어올 수 없습니다. 서버 설정을 확인해주세요.]]></value>
|
||||
<value xml:lang="en"><![CDATA[Succeed to connect to the host via FTP. However, can not read any directory list informaiton. Check the server configurations.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[Succeed to connect to the host via FTP. However, can not read any directory list informaiton. Check the server configurations.]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[Succeed to connect to the host via FTP. However, can not read any directory list informaiton. Check the server configurations.]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[Succeed to connect to the host via FTP. However, can not read any directory list informaiton. Check the server configurations.]]></value>
|
||||
<value xml:lang="fr"><![CDATA[Succeed to connect to the host via FTP. However, can not read any directory list informaiton. Check the server configurations.]]></value>
|
||||
<value xml:lang="de"><![CDATA[Succeed to connect to the host via FTP. However, can not read any directory list informaiton. Check the server configurations.]]></value>
|
||||
<value xml:lang="ru"><![CDATA[Succeed to connect to the host via FTP. However, can not read any directory list informaiton. Check the server configurations.]]></value>
|
||||
<value xml:lang="es"><![CDATA[Succeed to connect to the host via FTP. However, can not read any directory list informaiton. Check the server configurations.]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Succeed to connect to the host via FTP. However, can not read any directory list informaiton. Check the server configurations.]]></value>
|
||||
<value xml:lang="vi"><![CDATA[Succeed to connect to the host via FTP. However, can not read any directory list informaiton. Check the server configurations.]]></value>
|
||||
<value xml:lang="mn"><![CDATA[Succeed to connect to the host via FTP. However, can not read any directory list informaiton. Check the server configurations.]]></value>
|
||||
</item>
|
||||
<item name="msg_ftp_mkdir_fail">
|
||||
<value xml:lang="ko"><![CDATA[FTP를 이용한 디렉토리 생성 명령에 실패했습니다. FTP 서버의 설정을 확인해주세요.]]></value>
|
||||
|
|
|
|||
|
|
@ -1,10 +1,14 @@
|
|||
</div>
|
||||
<div class="footer">
|
||||
<p class="power">Powered by <strong><a href="{_XE_LOCATION_SITE_}" target="_blank">XE</a></strong> (ver. {__XE_VERSION__}).</p>
|
||||
<p class="power">
|
||||
Powered by <strong><a href="{_XE_LOCATION_SITE_}" target="_blank">XE</a></strong>. <span class="vr">|</span>
|
||||
<strong>Your version</strong>: {__XE_VERSION__} <span class="vr">|</span>
|
||||
<!--@if(isset($latestVersion))--><strong>Latest version</strong>: <a href="{$latestVersion->url}" target="_blank" title="{zdate($latestVersion->date, 'Y-m-d')}">{$latestVersion->title}</a><!--@end-->
|
||||
</p>
|
||||
<p class="cache">
|
||||
<button type="button" class="text" onclick="doResetAdminMenu();">{$lang->cmd_admin_menu_reset}</button>
|
||||
<button type="button" class="text" onclick="doRecompileCacheFile();">{$lang->cmd_remake_cache}</button>
|
||||
<button type="button" class="text" onclick="doClearSession();">{$lang->cmd_clear_session}</button>
|
||||
<button type="button" class="text" onclick="doResetAdminMenu();">{$lang->cmd_admin_menu_reset}</button> <span class="vr">|</span>
|
||||
<button type="button" class="text" onclick="doRecompileCacheFile();">{$lang->cmd_remake_cache}</button> <span class="vr">|</span>
|
||||
<button type="button" class="text" onclick="doClearSession();">{$lang->cmd_clear_session}</button> <span class="vr">|</span>
|
||||
<a href="http://code.google.com/p/xe-core/issues/entry" target="_blank">{$lang->bug_report}</a>
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -15,31 +15,43 @@
|
|||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="gnb jx">
|
||||
<ul>
|
||||
<li loop="$gnbUrlList=>$key,$value" class="activeOn"|cond="$parentSrl==$key"><a href="{$value['href']}">{$value['text']}</a>
|
||||
<div class="gnb">
|
||||
<ul class="nav">
|
||||
<li loop="$gnbUrlList=>$key,$value" class="activeOn"|cond="$parentSrl==$key"><a href="{getFullUrl('')}{$value['href']}"><span>{$value['text']}</span></a>
|
||||
<ul cond="count($value['list'])">
|
||||
<li loop="$value['list']=>$key2,$value2"><a href="{$value2['href']}">{$value2['text']}</a></li>
|
||||
<li loop="$value['list']=>$key2,$value2"><a href="{getFullUrl('')}{$value2['href']}">{$value2['text']}</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="bmk">
|
||||
<a href="#bmk" class="tgAnchor" data-effect="fade" data-duration="200">{$lang->favorite}</a>
|
||||
<ul id="bmk" class="tgContent">
|
||||
<li loop="$favorite_list => $favorite">
|
||||
<a href="{getUrl('act', $favorite->admin_index_act)}">{$favorite->title}</a>
|
||||
<form class="action" action="">
|
||||
<input type="hidden" name="module" value="admin" />
|
||||
<input type="hidden" name="act" value="procAdminToggleFavorite" />
|
||||
<input type="hidden" name="site_srl" value="0" />
|
||||
<input type="hidden" name="module_name" value="{$favorite->module}" />
|
||||
<input type="hidden" name="success_return_url" value="{getUrl('', 'module', 'admin')}" />
|
||||
<button type="submit" class="text" title="{$lang->cmd_delete}">x</button>
|
||||
</form>
|
||||
</li>
|
||||
<li cond="!is_array($favorite_list) || count($favorite_list) < 1">{$lang->no_data}</li>
|
||||
</ul>
|
||||
<select class="mnv">
|
||||
<block loop="$gnbUrlList=>$key,$value">
|
||||
<optgroup label="{$value['text']}" cond="count($value['list']) > 0">
|
||||
<option loop="$value['list']=>$key2,$value2" value="{getFullUrl('')}{$value2['href']}" selected="selected"|cond="$value2['text'] == $subMenuTitle">{$value2['text']}</option>
|
||||
</optgroup>
|
||||
<option cond="count($value['list']) == 0" value="{getFullUrl('')}{$value['href']}" selected="selected"|cond="!$subMenuTitle">{$value['text']}</option>
|
||||
</block>
|
||||
</select>
|
||||
<div class="bmk active">
|
||||
<a href="#bmk" class="bmAnchor" data-effect="fade" data-duration="200">{$lang->favorite}</a>
|
||||
<ul id="bmk" class="bmContent">
|
||||
<li loop="$favorite_list => $favorite">
|
||||
<a href="{getUrl('', 'module', 'admin', 'act', $favorite->admin_index_act)}">{$favorite->title}</a>
|
||||
<form class="action" action="">
|
||||
<input type="hidden" name="module" value="admin" />
|
||||
<input type="hidden" name="act" value="procAdminToggleFavorite" />
|
||||
<input type="hidden" name="site_srl" value="0" />
|
||||
<input type="hidden" name="module_name" value="{$favorite->module}" />
|
||||
<input type="hidden" name="success_return_url" value="{getUrl('', 'module', 'admin')}" />
|
||||
<button type="submit" class="text" title="{$lang->cmd_delete}">x</button>
|
||||
</form>
|
||||
</li>
|
||||
<li cond="!is_array($favorite_list) || count($favorite_list) < 1">{$lang->no_data}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<select class="mnv">
|
||||
<option>{$lang->favorite}</option>
|
||||
<option loop="$favorite_list => $favorite" value="{getUrl('', 'module', 'admin', 'act', $favorite->admin_index_act)}">{$favorite->title}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="body">
|
||||
<div class="body">
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ jQuery(function($){
|
|||
<li>
|
||||
<p class="q"><label for="time_zone">{$lang->about_timezone}</label></p>
|
||||
<p class="a">
|
||||
<select name="time_zone" id="time_zone" class="fullWidth">
|
||||
<select name="time_zone" id="time_zone">
|
||||
<!--@foreach($time_zone_list as $key => $val)-->
|
||||
<option value="{$key}" <!--@if($time_zone==$key)-->selected="selected"<!--@end-->>{$val}</option>
|
||||
<!--@endforeach-->
|
||||
|
|
@ -105,7 +105,7 @@ jQuery(function($){
|
|||
<p>{$lang->detail_input_footer_script}</p>
|
||||
</div>
|
||||
<p class="a">
|
||||
<textarea name="htmlFooter" id="htmlFooter" rows="4" cols="42">{$htmlFooter}</textarea>
|
||||
<textarea name="htmlFooter" id="htmlFooter" rows="8" cols="42">{$htmlFooter}</textarea>
|
||||
</p>
|
||||
</li>
|
||||
<li>
|
||||
|
|
@ -137,7 +137,7 @@ jQuery(function($){
|
|||
<p>{$lang->detail_about_admin_ip_limit}</p>
|
||||
</div>
|
||||
<p class="a">
|
||||
<textarea name="admin_ip_list" id="admin_ip_list" rows="4" cols="42">{$admin_ip_list}</textarea>
|
||||
<textarea name="admin_ip_list" id="admin_ip_list" rows="8" cols="42">{$admin_ip_list}</textarea>
|
||||
{$lang->local_ip_address} : {$IP}</p>
|
||||
</li>
|
||||
<li>
|
||||
|
|
|
|||
|
|
@ -58,19 +58,21 @@ header,footer,section,article,aside,nav,hgroup,details,menu,figure,figcaption{di
|
|||
.x .table caption strong{color:#e00}
|
||||
.x .table caption .side{float:right;font-weight:normal;margin-left:1em}
|
||||
.x .table th,
|
||||
.x .table td{border:0;padding:8px;vertical-align:top;text-align:left;border-bottom:1px solid #ddd;white-space:nowrap}
|
||||
.x .table th{background:#f8f8f8}
|
||||
.x .table td{border:0;padding:8px;vertical-align:top;text-align:left;border-bottom:1px solid #ddd}
|
||||
.x .table th{background:#f8f8f8;white-space:nowrap}
|
||||
.x .table thead th{border-bottom:1px solid #999}
|
||||
.x .table tfoot td{font-weight:bold;background:#f8f8f8}
|
||||
.x .table.even tbody tr:nth-of-type(even) td{background-color:#fafafa}
|
||||
.x .table.even tbody tr:nth-of-type(even){background-color:#fafafa}
|
||||
.x .table tbody tr:hover{background:#ffd !important}
|
||||
.x .table td>input[type=text]{margin:-1px 0 !important;vertical-align:middle}
|
||||
.x .table img{vertical-align:middle}
|
||||
.x .table em{font-style:normal;font-weight:normal;color:#e00}
|
||||
.x .table th.nowr,
|
||||
.x .table td.nowr{white-space:nowrap}
|
||||
.x .table th.title,
|
||||
.x .table td.title,
|
||||
.x .table th.text,
|
||||
.x .table td.text{white-space:normal;width:100%}
|
||||
.x .table td[colspan]{white-space:normal}
|
||||
.x .table td.text{width:100%}
|
||||
/* Form */
|
||||
.x .form{margin:1em 0;padding:0}
|
||||
.x .form fieldset{margin:0 0 2em 0;padding:0;border:0}
|
||||
|
|
@ -84,6 +86,7 @@ header,footer,section,article,aside,nav,hgroup,details,menu,figure,figcaption{di
|
|||
.x .form input[type=file]{cursor:pointer}
|
||||
.x .form ul{position:relative;margin:1em 0;padding:0;list-style:none;border-top:2px solid #ccc;border-bottom:1px solid #ccc;zoom:1}
|
||||
.x .form li{list-style:none;border:1px solid #ddd;border-left:0;border-right:0;margin:-1px 0;padding:8px 0;vertical-align:top;zoom:1}
|
||||
.x .form li:hover{background:#ffd}
|
||||
.x .form li:first-child{border-top:0}
|
||||
.x .form li>label:first-child{display:block;font-weight:bold}
|
||||
.x .form li label em{font-weight:normal}
|
||||
|
|
@ -91,6 +94,7 @@ header,footer,section,article,aside,nav,hgroup,details,menu,figure,figcaption{di
|
|||
.x .form input[type=text],
|
||||
.x .form input[type=password],
|
||||
.x .form input[type=file],
|
||||
.x .form select[size],
|
||||
.x .form textarea{position:relative;width:280px;margin:2px 0;border:1px solid #b7b7b7;border-right-color:#e1e1e1;border-bottom-color:#e1e1e1;background:transparent}
|
||||
.x .form input[type=text],
|
||||
.x .form input[type=password],
|
||||
|
|
@ -105,7 +109,7 @@ header,footer,section,article,aside,nav,hgroup,details,menu,figure,figcaption{di
|
|||
.x .form input[type=checkbox][disabled=disabled],
|
||||
.x .form select[disabled=disabled],
|
||||
.x .form textarea[disabled=disabled]{background:#ddd;text-shadow:1px 1px 0 #fff}
|
||||
.x .form textarea{padding:3px 4px;vertical-align:top}
|
||||
.x .form textarea{padding:3px 4px;vertical-align:top;resize:both}
|
||||
.x .form span.desc,
|
||||
.x .form em.desc{line-height:22px;vertical-align:middle;margin:0 10px}
|
||||
.x .form p.desc{margin:.25em 0;line-height:1.4}
|
||||
|
|
@ -113,60 +117,46 @@ header,footer,section,article,aside,nav,hgroup,details,menu,figure,figcaption{di
|
|||
.x .form .a{margin:0 0 5px 0}
|
||||
.x .form .tgForm{margin-right:1em}
|
||||
/* Global Navigation Bar */
|
||||
.x .gnb{position:relative;clear:both;border:1px solid #c1c1c1;border-left:0;border-right:0;background-color:#efefef;background:#efefef -webkit-gradient(linear, 0% 0%, 0% 100%, from(#efefef), to(#dcdcdc));background:#efefef -moz-linear-gradient(top, #efefef, #dcdcdc);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#efefef, endColorStr=#dcdcdc);zoom:1}
|
||||
.x .gnb ul{margin:0;padding:0 0 0 20px;list-style:none;border:1px solid #fff;border-left:0;border-right:0;zoom:1}
|
||||
.x .gnb ul ul{position:absolute;top:30px;left:0;border:1px solid #ccc;border-top:0;padding:1px 0 0 0;background:#fff}
|
||||
.x .gnb ul:after{content:"";display:block;clear:both}
|
||||
.x .gnb li{position:relative;float:left;border:1px solid #fff;border-top:0;border-bottom:0;margin:0 -1px 0 0}
|
||||
.x .gnb li li{float:none;clear:both;overflow:hidden;border:0;border-top:1px dotted #ccc;margin:0;padding:2px}
|
||||
.x .gnb li li:first-child{border:0}
|
||||
.x .gnb li a{float:left;font-weight:bold;color:#333;font-size:12px;height:14px;padding:8px 18px;white-space:nowrap;text-decoration:none;text-shadow:0 1px 0 #fff;zoom:1}
|
||||
.x .gnb li a:hover,
|
||||
.x .gnb li a:active,
|
||||
.x .gnb li a:focus,
|
||||
.x .gnb li.active a{background:#f4f4f4;border:1px solid #ccc;border-bottom:0;padding:7px 17px 8px 17px}
|
||||
.x .gnb li.activeOn a{background:#fff;border:1px solid #ccc;border-bottom:0;padding:7px 17px 8px 17px}
|
||||
.x .gnb li.active li a{display:block;float:none;color:#555;background:#fff;padding:5px 15px !important;font-weight:normal !important;border:0 !important}
|
||||
.x .gnb li.active li a:hover,
|
||||
.x .gnb li.active li a:active,
|
||||
.x .gnb li.active li a:focus{border:0;background:#eee}
|
||||
.x .gnb .setting{position:absolute;top:8px;right:2em;width:16px;height:0;padding:16px 0 0 0;overflow:hidden;background:url(../img/iconSetting.gif) no-repeat center}
|
||||
.x .gnb.jx ul{display:block;position:static;padding:0}
|
||||
.x .gnb.jx li{float:none;clear:both;border-top:1px solid #ccc}
|
||||
.x .gnb.jx ul ul{border:0}
|
||||
.x .gnb.jx li li{border:0}
|
||||
.x .gnb.jx li a{float:none;display:block}
|
||||
.x .gnb.jx li a:hover,
|
||||
.x .gnb.jx li a:active,
|
||||
.x .gnb.jx li a:focus{background:none}
|
||||
.x .gnb.jx li.activeOn>a{background:#ddd}
|
||||
.x .gnb{height:34px;clear:both;border:1px solid #c1c1c1;border-left:0;border-right:0;background-color:#efefef;background:#efefef -webkit-gradient(linear, 0% 0%, 0% 100%, from(#efefef), to(#dcdcdc));background:#efefef -moz-linear-gradient(top, #efefef, #dcdcdc);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#efefef, endColorStr=#dcdcdc);zoom:1}
|
||||
.x .gnb:after{content:"";display:block;clear:both}
|
||||
.x .gnb .nav{float:left;position:relative;display:inline-block;*display:inline;zoom:1;margin:0 0 0 20px;padding:1px;list-style:none}
|
||||
.x .gnb .nav ul{_position:absolute;display:block;_display:inline;zoom:1;clear:both;margin:0;padding:0;border:0;overflow:hidden}
|
||||
.x .gnb.active .nav{top:-5px;padding:5px 5px 5px 0;margin:0 0 -100% 20px;border:1px solid #aaa;background:#fff;box-shadow:0 0 10px #999;border-radius:5px}
|
||||
.x .gnb.active .nav ul{top:0;_position:relative;box-shadow:none;display:block;_display:inline;clear:both;padding:0;margin:0;border:0}
|
||||
.x .gnb .nav:after{content:"";display:block;clear:both}
|
||||
.x .gnb .nav li{position:relative;display:inline-block;*display:inline;zoom:1;vertical-align:top;overflow:hidden;margin:0}
|
||||
.x .gnb .nav li.activeOn{z-index:10}
|
||||
.x .gnb .nav li.activeOn>a{border:1px solid #ccc}
|
||||
.x .gnb .nav li li{display:block;_float:left;clear:both;overflow:hidden;border:0;margin:0}
|
||||
.x .gnb .nav li li:first-child{border:0}
|
||||
.x .gnb .nav li a{display:block;_float:left;font-weight:bold;color:#333;font-size:12px;height:14px;padding:9px 0;white-space:nowrap;text-decoration:none;text-shadow:0 1px 0 #fff;zoom:1}
|
||||
.x .gnb .nav li a span{padding:0 15px;border-left:1px solid #fff}
|
||||
.x .gnb.active .nav li a span,
|
||||
.x .gnb .nav li:first-child a span,
|
||||
.x .gnb .nav li.activeOn+li a span{border:0;margin:0 0 0 1px}
|
||||
.x .gnb .nav li a:hover,
|
||||
.x .gnb .nav li a:active,
|
||||
.x .gnb .nav li a:focus{background:#f4f4f4}
|
||||
.x .gnb .nav li.activeOn>a{background:#fff;padding:8px 0}
|
||||
.x .gnb .nav li li a{color:#555;background:#fff;padding:5px 15px !important;font-weight:normal !important;border:0 !important}
|
||||
.x .gnb .nav li li a:hover,
|
||||
.x .gnb .nav li li a:active,
|
||||
.x .gnb .nav li li a:focus{border:0;background:#eee}
|
||||
.x .gnb .bmk{position:relative;float:right;padding:8px 15px;margin:0 20px -100% 0;text-align:right;display:inline}
|
||||
.x .gnb .bmk.active{top:-5px;padding:12px 14px 10px 15px;background-color:#fff;border:1px solid #aaa;box-shadow:0 0 10px #999;border-radius:5px}
|
||||
.x .gnb .bmk .bmAnchor{height:16px;text-shadow:0 1px 0 #fff;display:inline-block;padding:0 0 0 20px;background:url(../img/iconFavorite.gif) no-repeat 0 -16px}
|
||||
.x .gnb .bmk ul{display:none}
|
||||
.x .gnb .bmk.active ul{position:relative;list-style:none;display:block !important;text-align:left;background:none;margin:0 !important;padding:10px 0 0 0 !important;border:0;box-shadow:none;border-radius:0}
|
||||
.x .gnb .bmk li{display:block;position:relative;padding:3px 15px 3px 0 !important;white-space:nowrap}
|
||||
.x .gnb .bmk li a{display:inline;padding:0;background:none !important;font-weight:normal}
|
||||
.x .gnb .bmk li .action{position:absolute;top:0;right:0}
|
||||
.x .gnb .bmk li .action .text{text-decoration:none;width:16px;text-align:center;margin:0;padding:0;border:0;background:none;overflow:visible}
|
||||
.x .gnb .mnv{width:100%;height:32px;display:none}
|
||||
@media only all and (max-width:860px){
|
||||
.x .gnb ul{padding-left:1em}
|
||||
.x .gnb .setting{right:1em}
|
||||
}
|
||||
@media only all and (max-width:640px){
|
||||
.x .gnb ul{display:block;position:static;padding:0}
|
||||
.x .gnb li{float:none;clear:both;border-top:1px solid #ccc}
|
||||
.x .gnb ul ul{border:0;position:static}
|
||||
.x .gnb li li{border:0}
|
||||
.x .gnb li a{float:none;display:block}
|
||||
.x .gnb li a:hover,
|
||||
.x .gnb li a:active,
|
||||
.x .gnb li a:focus{background:none}
|
||||
.x .gnb li.activeOn>a{background:#ddd}
|
||||
}
|
||||
/* Favorite */
|
||||
.x .bmk{position:absolute;right:20px;bottom:10px;padding:0 0 0 20px;background:url(../img/iconFavorite.gif) no-repeat 0 -16px}
|
||||
.x .bmk>a{text-shadow:0 1px 0 #fff}
|
||||
.x .bmk ul{position:absolute;top:140%;right:0;list-style:none;margin:0;padding:5px 10px;border:1px solid #aaa;border-radius:5px;background:#fff;box-shadow:1px 1px 3px #aaa}
|
||||
.x .bmk li{position:relative;padding:3px 30px 3px 0;white-space:nowrap}
|
||||
.x .bmk li .action{position:absolute;top:0;right:0}
|
||||
.x .bmk li .action .text{text-decoration:none;width:16px;text-align:center;margin:0}
|
||||
@media only all and (max-width:640px){
|
||||
.x .bmk{position:static;background-color:#fff;padding:10px 20px;background:#fff}
|
||||
.x .bmk .tgAnchor{display:block}
|
||||
.x .bmk ul{position:relative;border:0;border-top:1px solid #ccc;border-radius:0;box-shadow:none;padding:0;margin:5px 0 0 0}
|
||||
.x .bmk li{position:relative;top:-1px;border-top:1px dotted #ccc}
|
||||
.x .gnb{height:auto}
|
||||
.x .gnb .nav,
|
||||
.x .gnb .bmk{display:none}
|
||||
.x .gnb .mnv{display:block}
|
||||
}
|
||||
/* Local Navigation */
|
||||
.x .lnb{position:relative;float:left;width:210px;margin:1em 0 1em -240px;line-height:normal;zoom:1;display:inline}
|
||||
|
|
@ -236,7 +226,7 @@ header,footer,section,article,aside,nav,hgroup,details,menu,figure,figcaption{di
|
|||
.x .prgrs.prgrsLarge .pAction,
|
||||
.x .prgrs.prgrsLarge .pNum{height:34px;line-height:34px;font-size:14px}
|
||||
/* Modal Window */
|
||||
.modal{position:absolute;top:0;left:0;width:100%;_height:100%;min-height:100%;z-index:100}
|
||||
.modal{position:absolute;top:0;left:0;width:100%;_height:100%;min-height:100%;z-index:99}
|
||||
.modal .bg{position:absolute;background:#000;_background:none;width:100%;height:100%;opacity:.5;z-index:2;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);zoom:1}
|
||||
.modal .fg{position:relative;width:80%;margin:5em auto;background:#fff;padding:0 1em;*padding:1em;border:8px solid #ddd;z-index:3;zoom:1;border-radius:5px;box-shadow:0 0 6px #000}
|
||||
.modal ul,
|
||||
|
|
@ -262,7 +252,10 @@ body.modalContainer{_height:100%;_width:100%} /* IE6 only */
|
|||
.x .h2Anchor{position:absolute;right:0;border:0;background:none;color:#00f;text-decoration:underline}
|
||||
/* Skip Navigation */
|
||||
.x .skipNav{margin:0;text-align:center}
|
||||
.x .skipNav a{position:absolute;width:1px;height:1px;display:block;font-weight:bold;padding:10px 0}
|
||||
@media only all and (max-width:860px){
|
||||
.x .skipNav{display:none}
|
||||
}
|
||||
.x .skipNav a{position:absolute;width:1px;height:1px;display:block;padding:10px 0;font-weight:bold;overflow:hidden}
|
||||
.x .skipNav a:hover,
|
||||
.x .skipNav a:active,
|
||||
.x .skipNav a:focus{position:relative;width:auto;height:auto}
|
||||
|
|
@ -270,11 +263,11 @@ body.modalContainer{_height:100%;_width:100%} /* IE6 only */
|
|||
.x .header{position:relative;z-index:2;padding:30px 0 0 0;background:#4c4c4c;box-shadow:0 0 10px #aaa;zoom:1;border-radius:5px 5px 0 0}
|
||||
.x .header:after{content:"";display:block;clear:both}
|
||||
.x .header a{text-decoration:none}
|
||||
.x .header h1{margin:0 15px 10px 20px;font-size:24px;line-height:32px;display:inline-block;zoom:1}
|
||||
.x .header h1{margin:0 0 10px 20px;font-size:24px;line-height:32px;display:inline-block;*display:inline;zoom:1;vertical-align:middle}
|
||||
.x .header h1 *{vertical-align:middle}
|
||||
.x .header h1 a{color:#fff;text-shadow:1px 1px 0 #000;filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=1, OffY=1, Color=#000000, Positive=true);zoom:1}
|
||||
.x .header h1 a{display:inline-block;color:#fff;text-shadow:1px 1px 0 #000;filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=1, OffY=1, Color=#000000, Positive=true);zoom:1}
|
||||
.x .header h1 .url{font-size:12px;font-weight:normal}
|
||||
.x .header .site{margin:0;display:inline-block;zoom:1}
|
||||
.x .header .site{margin:0 0 10px 20px;display:inline-block;*display:inline;zoom:1}
|
||||
.x .header .site a{color:#fff;text-decoration:underline}
|
||||
.x .header #moveSiteList{padding:10px 1em 5px 1em;margin:0}
|
||||
.x .header #moveSiteList ul{list-style:none;margin:0;padding:0}
|
||||
|
|
@ -282,12 +275,15 @@ body.modalContainer{_height:100%;_width:100%} /* IE6 only */
|
|||
.x .header #siteMapList{padding:0 1em 1em 1em;margin:0}
|
||||
.x .header #siteMapList li{white-space:nowrap}
|
||||
.x .header .account{position:absolute;z-index:3;width:100%;top:0;right:0;white-space:nowrap;text-align:right;background:#333;border-bottom:1px solid #656565;color:#fff;font-size:12px;border-radius:5px 5px 0 0}
|
||||
.x .header .account ul{margin:0 2px 0 0;padding:5px 20px 5px 0;list-style:none}
|
||||
.x .header .account ul{margin:0;padding:5px 20px 5px 0;list-style:none}
|
||||
.x .header .account li{position:relative;display:inline;border-left:1px solid #666;padding:0 6px 0 10px}
|
||||
.x .header .account li:first-child{border:0}
|
||||
.x .header .account a{color:#fff;display:inline-block;height:14px}
|
||||
.x .header .account a.language{padding-right:16px;background:url(../img/iconArrow.gif) no-repeat right -160px}
|
||||
.x .header #language{position:absolute;top:19px;right:-2em;padding:6px 4px !important;border:1px solid #666;border-top:0;background:#333}
|
||||
.x .header #language{position:absolute;top:19px;right:-20px;padding:6px 4px !important;border:1px solid #666;border-top:0;background:#333}
|
||||
@media only all and (max-width:860px){
|
||||
.x .header #language{right:-10px}
|
||||
}
|
||||
.x .header #language li{border:0;display:block;padding:1px 8px 1px 10px;text-align:left;line-height:1}
|
||||
.x .header #language li.selected{background:url(../img/iconCheck.gif) no-repeat left center}
|
||||
.x .header #language li.selected a{text-decoration:underline}
|
||||
|
|
@ -303,6 +299,7 @@ body.modalContainer{_height:100%;_width:100%} /* IE6 only */
|
|||
.x .footer p{margin:0}
|
||||
.x .footer .power{float:left}
|
||||
.x .footer .cache{float:right}
|
||||
.x .footer .vr{color:#ccc}
|
||||
/* Body */
|
||||
.x .body{position:relative;z-index:1;padding:1em 20px 1em 260px;zoom:1}
|
||||
.x .body:after{content:"";display:block;clear:both}
|
||||
|
|
@ -334,7 +331,9 @@ body.modalContainer{_height:100%;_width:100%} /* IE6 only */
|
|||
.x .search form{float:right;margin:1em 0}
|
||||
.x .search form *{vertical-align:middle}
|
||||
/* Site Map */
|
||||
.x .siteMap h2 input{font-size:14px;font-weight:bold;padding:0 .5em}
|
||||
.x .siteMap h2 input{font-size:14px;font-weight:bold;padding:3px 4px;margin:0;border:0;background:transparent}
|
||||
.x .siteMap h2:hover input,
|
||||
.x .siteMap h2 input:focus{background:#ff0;border:1px dashed #ccc;margin:-1px}
|
||||
.x .siteMap label{cursor:text}
|
||||
.x .siteMap .lined ul{padding:0;margin:0;border-top:1px solid #eee;zoom:1}
|
||||
.x .siteMap .lined li{position:relative;padding:0;margin:0;cursor:all-scroll;list-style:none;zoom:1}
|
||||
|
|
@ -496,7 +495,10 @@ body.modalContainer{_height:100%;_width:100%} /* IE6 only */
|
|||
.x .easyNav h2{font-size:16px}
|
||||
.x .easyNav .category{width:30%;float:left;margin:0 2em;display:inline}
|
||||
.x .easyNav .filter{position:absolute;top:0;right:0;margin:1em 2em;text-align:right}
|
||||
.x .easyList td p{margin-top:0}
|
||||
.x .easyList caption .side .text .hide,
|
||||
.x .easyList caption .side .details .show{display:none}
|
||||
.x .easyList caption .side .details .hide{display:inline}
|
||||
.x .easyList td p:first-child{margin:0}
|
||||
.x .easyList td p.update{background:#ffc;padding:.5em 1em;border:1px solid #fc9;border-left:0;border-right:0;text-align:center}
|
||||
/* Font Preview */
|
||||
.x .fontPreview{width:96%;border:1px solid #e9e9e9;zoom:1;padding:1em 2em;margin:.5em 0}
|
||||
|
|
@ -576,7 +578,6 @@ body.modalContainer{_height:100%;_width:100%} /* IE6 only */
|
|||
.x a.cMenu{display:inline-block;width:16px;height:0;padding:16px 0 0 0;overflow:hidden;vertical-align:middle;background:url(../../../../common/img/icon.bubble.png) no-repeat}
|
||||
/* Responsive Layout */
|
||||
@media only all and (max-width:860px){
|
||||
.x .header h1{margin-left:.7em}
|
||||
.x .header .account ul{padding-right:10px}
|
||||
.x .body{padding:0}
|
||||
.x .content{float:none;margin-left:0}
|
||||
|
|
@ -587,10 +588,6 @@ body.modalContainer{_height:100%;_width:100%} /* IE6 only */
|
|||
.x .easyNav .category{float:none;display:block;width:auto}
|
||||
.x .easyNav .filter{position:static}
|
||||
}
|
||||
@media only all and (max-width:640px){
|
||||
.x .skipNav a{position:relative;width:auto;height:auto}
|
||||
.modal{position:absolute}
|
||||
}
|
||||
/* Legacy Code (Don't use it. It will be removed as soon as possible.) */
|
||||
.x h3.xeAdmin,
|
||||
.x h4.xeAdmin{position:relative;border-bottom-style:solid;border-bottom-color:#ccc;zoom:1}
|
||||
|
|
|
|||
2
modules/admin/tpl/css/admin.min.css
vendored
2
modules/admin/tpl/css/admin.min.css
vendored
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,7 @@
|
|||
<!--#include("./_spHeader.html")-->
|
||||
|
||||
|
||||
|
||||
<div class="content dashboard" id="content">
|
||||
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
|
|
@ -15,15 +18,17 @@
|
|||
</div>
|
||||
</form>
|
||||
<!--@end-->
|
||||
<!--@if($isUpdated)-->
|
||||
<!--@if($addTables || $needUpdate)-->
|
||||
<div class="message update">
|
||||
<h2>{$lang->update_available}</h2>
|
||||
<h2 cond="$needUpdate && $addTables">{$lang->need_update_and_table}</h2>
|
||||
<h2 cond="$needUpdate && !$addTables">{$lang->need_update}</h2>
|
||||
<h2 cond="!$needUpdate && $addTables">{$lang->need_table}</h2>
|
||||
<ul>
|
||||
<!--@foreach($module_list AS $key => $value)-->
|
||||
<!--@if($value->need_install)-->
|
||||
<li><a href="{getUrl('','module','admin','act',$val->admin_index_act)}">{$value->module}</a> - <a href="#" onclick="doInstallModule('{$value->module}');return false;">{$lang->cmd_install}</a></li>
|
||||
<li style="margin:0 0 4px 0;">{$value->module} - <span class="btn"><button type="button" onclick="doInstallModule('{$value->module}')">{$lang->cmd_create_db_table}</button></span></li>
|
||||
<!--@else if($value->need_update)-->
|
||||
<li><a href="{getUrl('','module','admin','act',$val->admin_index_act)}">{$value->module}</a> - <a href="#" onclick="doUpdateModule('{$value->module}')">{$lang->cmd_update}</a></li>
|
||||
<li style="margin:0 0 4px 0;">{$value->module} - <span class="btn"><button type="button" onclick="doUpdateModule('{$value->module}')">{$lang->cmd_module_update}</button></li>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
</ul>
|
||||
|
|
@ -41,7 +46,7 @@
|
|||
</ul>
|
||||
</div>
|
||||
<div class="portlet">
|
||||
<h2 class="h2">{$lang->latest_documents}</h2>
|
||||
<h2 class="h2"><a href="{getUrl('', 'module', 'admin', 'act', 'dispDocumentAdminList')}">{$lang->latest_documents}</a></h2>
|
||||
<ul class="lined">
|
||||
<!--@foreach($latestDocumentList AS $key=>$value)-->
|
||||
{@$document = $value->variables}
|
||||
|
|
@ -63,7 +68,7 @@
|
|||
</ul>
|
||||
</div>
|
||||
<div class="portlet">
|
||||
<h2 class="h2">{$lang->latest_comments}</h2>
|
||||
<h2 class="h2"><a href="{getUrl('', 'module', 'admin', 'act', 'dispCommentAdminList')}">{$lang->latest_comments}</a></h2>
|
||||
<ul class="lined">
|
||||
<!--@foreach($latestCommentList AS $key=>$value)-->
|
||||
<li>
|
||||
|
|
@ -84,7 +89,7 @@
|
|||
</ul>
|
||||
</div>
|
||||
<div class="portlet">
|
||||
<h2 class="h2">{$lang->latest_trackbacks}</h2>
|
||||
<h2 class="h2"><a href="{getUrl('', 'module', 'admin', 'act', 'dispTrackbackAdminList')}">{$lang->latest_trackbacks}</a></h2>
|
||||
<ul class="lined">
|
||||
<!--@foreach($latestTrackbackList AS $key=>$value)-->
|
||||
<li>
|
||||
|
|
@ -103,32 +108,6 @@
|
|||
<li cond="!is_array($latestTrackbackList) || count($latestTrackbackList) < 1">{$lang->no_data}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="portlet">
|
||||
<h2 class="h2">{$lang->notices}</h2>
|
||||
<ul class="lined">
|
||||
<!--@foreach($news AS $key=>$value)-->
|
||||
<li><a href="{$value->url}" target="_blank">{$value->title}</a> <span class="side">{zdate($value->date, 'Y-m-d')}</span></li>
|
||||
<!--@end-->
|
||||
<li cond="!is_array($news) || count($news) < 1">{$lang->no_data}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="portlet">
|
||||
<h2 class="h2">{$lang->favorites}</h2>
|
||||
<ul class="lined">
|
||||
<li loop="$favorite_list => $favorite">
|
||||
<a href="{getUrl('act', $favorite->admin_index_act)}">{$favorite->title}</a>
|
||||
<form class="action" action="">
|
||||
<input type="hidden" name="module" value="admin" />
|
||||
<input type="hidden" name="act" value="procAdminToggleFavorite" />
|
||||
<input type="hidden" name="site_srl" value="0" />
|
||||
<input type="hidden" name="module_name" value="{$favorite->module}" />
|
||||
<input type="hidden" name="success_return_url" value="{getUrl('', 'module', 'admin')}" />
|
||||
<button type="submit" class="text">{$lang->cmd_delete}</button>
|
||||
</form>
|
||||
</li>
|
||||
<li cond="!is_array($favorite_list) || count($favorite_list) < 1">{$lang->no_data}</li>
|
||||
</UL>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--#include("./_spFooter.html")-->
|
||||
|
|
|
|||
|
|
@ -152,51 +152,73 @@ jQuery(function($){
|
|||
// Global Navigation Bar
|
||||
jQuery(function($){
|
||||
|
||||
$.fn.xeMenu = function(){
|
||||
this
|
||||
.removeClass('jx')
|
||||
.attr('role', 'navigation') // WAI-ARIA role
|
||||
.find('li')
|
||||
.attr('role', 'menuitem') // WAI-ARIA role
|
||||
.find('>ul').hide().end()
|
||||
.filter(':has(>ul)')
|
||||
.attr('aria-haspopup', 'true') // WAI-ARIA
|
||||
$.fn.xeMenu = function(){
|
||||
this
|
||||
.attr('role', 'navigation') // WAI-ARIA role
|
||||
.find('>.nav>li')
|
||||
.attr('role', 'menuitem') // WAI-ARIA role
|
||||
.find('>ul').css('height','0').end()
|
||||
.filter(':has(>ul)')
|
||||
.attr('aria-haspopup', 'true') // WAI-ARIA
|
||||
.end()
|
||||
.end()
|
||||
.end()
|
||||
.delegate('li', {
|
||||
mouseover : function(){
|
||||
.find('>.nav')
|
||||
.mouseover(function(){
|
||||
$(this)
|
||||
.addClass('active')
|
||||
.find('>ul').show().end()
|
||||
.parentsUntil('.gnb')
|
||||
.filter('li').addClass('active').end()
|
||||
.end()
|
||||
},
|
||||
mouseleave : function(){
|
||||
.parent('.gnb').addClass('active').end()
|
||||
.find('>li>ul').css('height','auto').end()
|
||||
})
|
||||
.mouseleave(function(){
|
||||
$(this)
|
||||
.removeClass('active')
|
||||
.find('>ul').hide();
|
||||
},
|
||||
focusout : function(){
|
||||
.parent('.gnb').removeClass('active').end()
|
||||
.find('>li>ul').css('height','0').end()
|
||||
})
|
||||
.focusout(function(){
|
||||
var $this = $(this);
|
||||
setTimeout(function(){
|
||||
if(!$this.find(':focus').length) {
|
||||
$this.removeClass('active').find('>ul').hide();
|
||||
$this.mouseleave();
|
||||
}
|
||||
}, 1);
|
||||
}
|
||||
})
|
||||
.delegate('a', {
|
||||
focus : function(){
|
||||
$(this).parent('li').mouseover();
|
||||
}
|
||||
});
|
||||
};
|
||||
})
|
||||
.delegate('a', {
|
||||
focus : function(){
|
||||
$(this).mouseover();
|
||||
}
|
||||
});
|
||||
this
|
||||
.find('>.bmk')
|
||||
.removeClass('active')
|
||||
.mouseover(function(){
|
||||
$(this).addClass('active')
|
||||
})
|
||||
.mouseleave(function(){
|
||||
$(this).removeClass('active')
|
||||
})
|
||||
.focusout(function(){
|
||||
var $this = $(this);
|
||||
setTimeout(function(){
|
||||
if(!$this.find(':focus').length) {
|
||||
$this.mouseleave();
|
||||
}
|
||||
}, 1);
|
||||
})
|
||||
.delegate('a', {
|
||||
focus : function(){
|
||||
$(this).mouseover();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
$('div.gnb').xeMenu();
|
||||
|
||||
$('div.gnb').xeMenu();
|
||||
$('.gnb>.mnv').change(function(){
|
||||
window.location.href=$(this).find('option:selected').val();
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
// Modal Window
|
||||
jQuery(function($){
|
||||
|
||||
|
|
@ -944,7 +966,7 @@ function initLayer($layer) {
|
|||
.bind('multilang-reset', function(){
|
||||
$layer
|
||||
.data('multilang-current-name', '')
|
||||
.find('.langInput li').find('>input:text,>textarea').val(' ').prev('label').css('visibility','visible');
|
||||
.find('.langInput li').find('>input:text,>textarea').val('').prev('label').css('visibility','visible');
|
||||
|
||||
mode = MODE_SAVE;
|
||||
setTitleText();
|
||||
|
|
@ -1190,3 +1212,21 @@ jQuery(function($){
|
|||
$('.x>.body>.content').addClass('single'); // Add class single
|
||||
}
|
||||
});
|
||||
/* Details toggle in admin table */
|
||||
jQuery(function($){
|
||||
var viewBtn = $('.x .dsTg span.side>button.text');
|
||||
var tdTitle = $('.x .dsTg td.title');
|
||||
tdTitle.each(function(){
|
||||
var $t = $(this)
|
||||
if($t.find('p.update').length==0){
|
||||
$t.addClass('tg').find('>p:not(:first-child)').hide();
|
||||
} else {
|
||||
$t.addClass('up');
|
||||
}
|
||||
});
|
||||
var details = $('.x .dsTg td.tg>p:not(:first-child)');
|
||||
viewBtn.click(function(){
|
||||
viewBtn.toggleClass('details');
|
||||
details.slideToggle(200);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
39
modules/admin/tpl/js/admin.min.js
vendored
39
modules/admin/tpl/js/admin.min.js
vendored
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
require_once(_XE_PATH_.'libs/ftp.class.php');
|
||||
|
||||
class ModuleInstaller {
|
||||
var $package = null;
|
||||
|
|
@ -139,10 +140,13 @@
|
|||
|
||||
$_files = $oTar->files;
|
||||
$file_list = array();
|
||||
foreach($_files as $key => $info) {
|
||||
FileHandler::writeFile($this->download_path."/".$info['name'], $info['file']);
|
||||
$file_list[] = $info['name'];
|
||||
}
|
||||
if(is_array($_files))
|
||||
{
|
||||
foreach($_files as $key => $info) {
|
||||
FileHandler::writeFile($this->download_path."/".$info['name'], $info['file']);
|
||||
$file_list[] = $info['name'];
|
||||
}
|
||||
}
|
||||
return $file_list;
|
||||
}
|
||||
|
||||
|
|
@ -187,6 +191,11 @@
|
|||
}
|
||||
|
||||
function _connect() {
|
||||
if(!function_exists('ssh2_connect'))
|
||||
{
|
||||
return new Object(-1, 'msg_sftp_not_supported');
|
||||
}
|
||||
|
||||
if(!$this->ftp_info->ftp_user || !$this->ftp_info->sftp || $this->ftp_info->sftp != 'Y') return new Object(-1,'msg_ftp_invalid_auth_info');
|
||||
|
||||
if($this->ftp_info->ftp_host)
|
||||
|
|
@ -217,7 +226,7 @@
|
|||
|
||||
if(!@ssh2_sftp_unlink($this->sftp, $target_path))
|
||||
{
|
||||
return new Object(-1, "failed to delete file ".$path);
|
||||
return new Object(-1, sprintf(Context::getLang('msg_delete_file_failed'), $path));
|
||||
}
|
||||
return new Object();
|
||||
}
|
||||
|
|
@ -229,7 +238,7 @@
|
|||
|
||||
if(!@ssh2_sftp_rmdir($this->sftp, $target_path))
|
||||
{
|
||||
return new Object(-1, "failed to delete directory ".$path);
|
||||
return new Object(-1, sprintf(Context::getLang('msg_delete_dir_failed'), $path));
|
||||
}
|
||||
return new Object();
|
||||
}
|
||||
|
|
@ -284,7 +293,10 @@
|
|||
}
|
||||
|
||||
$this->connection = ftp_connect($ftp_host, $this->ftp_info->ftp_port);
|
||||
if(!$this->connection) return new Object(-1, 'msg_ftp_not_connected');
|
||||
if(!$this->connection)
|
||||
{
|
||||
return new Object(-1, sprintf(Context::getLang('msg_ftp_not_connected'), $ftp_host));
|
||||
}
|
||||
|
||||
$login_result = @ftp_login($this->connection, $this->ftp_info->ftp_user, $this->ftp_password);
|
||||
if(!$login_result)
|
||||
|
|
@ -361,7 +373,7 @@
|
|||
return new Object(-1, "msg_make_directory_failed");
|
||||
}
|
||||
|
||||
if(!stristr(PHP_OS, 'win'))
|
||||
if(strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN')
|
||||
{
|
||||
if (function_exists('ftp_chmod')) {
|
||||
if(!ftp_chmod($this->connection, 0755, $ftp_path))
|
||||
|
|
@ -411,7 +423,10 @@
|
|||
}
|
||||
|
||||
$this->oFtp = new ftp();
|
||||
if(!$this->oFtp->ftp_connect($ftp_host, $this->ftp_info->ftp_port)) return new Object(-1,'msg_ftp_not_connected');
|
||||
if(!$this->oFtp->ftp_connect($ftp_host, $this->ftp_info->ftp_port))
|
||||
{
|
||||
return new Object(-1, sprintf(Context::getLang('msg_ftp_not_connected'), $ftp_host));
|
||||
}
|
||||
if(!$this->oFtp->ftp_login($this->ftp_info->ftp_user, $this->ftp_password)) {
|
||||
$this->_close();
|
||||
return new Object(-1,'msg_ftp_invalid_auth_info');
|
||||
|
|
@ -427,7 +442,7 @@
|
|||
|
||||
if(!$this->oFtp->ftp_delete($target_path))
|
||||
{
|
||||
return new Object(-1, "failed to delete file ".$path);
|
||||
return new Object(-1, sprintf(Context::getLang('msg_delete_file_failed'), $path));
|
||||
}
|
||||
return new Object();
|
||||
}
|
||||
|
|
@ -439,7 +454,7 @@
|
|||
|
||||
if(!$this->oFtp->ftp_rmdir($target_path))
|
||||
{
|
||||
return new Object(-1, "failed to delete directory ".$path);
|
||||
return new Object(-1, sprintf(Context::getLang('msg_delete_dir_failed'), $path));
|
||||
}
|
||||
return new Object();
|
||||
}
|
||||
|
|
@ -451,8 +466,6 @@
|
|||
function _copyDir(&$file_list){
|
||||
if(!$this->ftp_password) return new Object(-1,'msg_ftp_password_input');
|
||||
|
||||
require_once(_XE_PATH_.'libs/ftp.class.php');
|
||||
|
||||
$output = $this->_connect();
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
|
|
|
|||
|
|
@ -12,13 +12,13 @@
|
|||
<menus>
|
||||
<menu name="easyInstall">
|
||||
<title xml:lang="en">Easy Install</title>
|
||||
<title xml:lang="ko">쉬운설치</title>
|
||||
<title xml:lang="ko">쉬운 설치</title>
|
||||
<title xml:lang="zh-CN">Easy Install</title>
|
||||
<title xml:lang="jp">Easy Install</title>
|
||||
<title xml:lang="es">Easy Install</title>
|
||||
<title xml:lang="ru">Easy Install</title>
|
||||
<title xml:lang="fr">Easy Install</title>
|
||||
<title xml:lang="zh-TW">Easy Install</title>
|
||||
<title xml:lang="zh-TW">自動安裝</title>
|
||||
<title xml:lang="vi">Easy Install</title>
|
||||
<title xml:lang="mn">Easy Install</title>
|
||||
<title xml:lang="tr">Easy Install</title>
|
||||
|
|
|
|||
|
|
@ -71,24 +71,26 @@
|
|||
<value xml:lang="en"><![CDATA[If the %s is not set, the installation or update will not work. Pleas configure the FTP information.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[%sが完了されないと、イージーインストールが動作しません。 FTP設定を確認してください。]]></value>
|
||||
<value xml:lang="ru"><![CDATA[If %s is not set, installation would not work. Please configure FTP information]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[請先將 %s好,否則無法執行自動安裝功能。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[請先將 %s完成,否則無法執行自動安裝功能。]]></value>
|
||||
</item>
|
||||
<item name="ftp_setup">
|
||||
<value xml:lang="ko"><![CDATA[FTP 설정]]></value>
|
||||
<value xml:lang="en"><![CDATA[FTP configuration]]></value>
|
||||
<value xml:lang="jp"><![CDATA[FTP設定]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[FTP設定]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[FTP 設定]]></value>
|
||||
</item>
|
||||
<item name="description_update">
|
||||
<value xml:lang="ko"><![CDATA[쉬운설치 사용전 %s를 해주세요.]]></value>
|
||||
<value xml:lang="ko"><![CDATA[쉬운 설치 사용전 %s를 해주세요.]]></value>
|
||||
<value xml:lang="en"><![CDATA[Click %s before using EasyInstall.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[新しくインストールしたモジュールバージョン情報などは%sを押すと反映されます。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[使用自動安裝前請先點擊%s]]></value>
|
||||
<value xml:lang="ru"><![CDATA[If you have upgraded or installed programs without EasyInstall module, please press %s to renew new information]]></value>
|
||||
</item>
|
||||
<item name="status_update">
|
||||
<value xml:lang="ko"><![CDATA[상태 업데이트]]></value>
|
||||
<value xml:lang="en"><![CDATA[update button]]></value>
|
||||
<value xml:lang="jp"><![CDATA[アップデート]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[更新按鈕]]></value>
|
||||
</item>
|
||||
<item name="install">
|
||||
<value xml:lang="ko"><![CDATA[설치]]></value>
|
||||
|
|
@ -115,7 +117,7 @@
|
|||
<value xml:lang="en"><![CDATA[Version]]></value>
|
||||
<value xml:lang="jp"><![CDATA[現インストールバージョン]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[现用版本]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[版本]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[目前版本]]></value>
|
||||
<value xml:lang="fr"><![CDATA[Version Courante]]></value>
|
||||
<value xml:lang="es"><![CDATA[Versión actual]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Sürüm]]></value>
|
||||
|
|
@ -156,7 +158,7 @@
|
|||
<value xml:lang="en"><![CDATA[If FTP is unavailable, you should manually download and extract it into the target path. (If the target path is ./modules/board, extract it to ./modules)]]></value>
|
||||
<value xml:lang="jp"><![CDATA[FTPの利用ができない場合は、直接ダウンロードし、サーバー上の該当パスにてインストールしてください。 (一つ上の階層にて解凍します。 ./modules/board の場合 ./modulesに tarを解凍してください。)]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[无法使用FTP时,需得自行下载安装到指定路径。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[如果 FTP無法使用的話,必須要手動下載並解壓縮到目標路徑。(假設目標路徑為 ./modules/board 的話,將檔案解壓縮到 ./modules就可以了)]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[如果 FTP 無法使用的話,必須要手動下載並解壓縮到目標路徑。(假設目標路徑為 ./modules/board 的話,將檔案解壓縮到 ./modules就可以了)]]></value>
|
||||
<value xml:lang="ru"><![CDATA[If FTP is unavailable, you should manually download it and extract it into target path. (if target path is ./modules/board, extract it at ./modules)]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Eğer FTP kullanılamaz durumduysa, indirmeyi kendiniz yapmanız ve dosyaları hedef dizine çıkartmanız gerekmektedir. (eğer hedef yol ./modules/board ise, çıkarma işlemini ./modules yoluna yapınız)]]></value>
|
||||
<value xml:lang="vi"><![CDATA[Khi FTP không được mở, bạn nên tải về và giả nén, sau đó Upload theo đường dẫn. (Nếu đường dẫn là ./modules/board, thì giải nén vào ./modules)]]></value>
|
||||
|
|
@ -193,11 +195,13 @@
|
|||
<value xml:lang="ko"><![CDATA[배포 버전]]></value>
|
||||
<value xml:lang="en"><![CDATA[Distribute version]]></value>
|
||||
<value xml:lang="jp"><![CDATA[配布バージョン]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[發布版本]]></value>
|
||||
</item>
|
||||
<item name="run">
|
||||
<value xml:lang="ko"><![CDATA[실행]]></value>
|
||||
<value xml:lang="en"><![CDATA[Run]]></value>
|
||||
<value xml:lang="jp"><![CDATA[実行]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[執行]]></value>
|
||||
</item>
|
||||
<item name="rate">
|
||||
<value xml:lang="ko"><![CDATA[%s점]]></value>
|
||||
|
|
@ -213,26 +217,31 @@
|
|||
<value xml:lang="ko"><![CDATA[섬네일]]></value>
|
||||
<value xml:lang="en"><![CDATA[Thumbnail]]></value>
|
||||
<value xml:lang="jp"><![CDATA[サムネイル]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[縮圖]]></value>
|
||||
</item>
|
||||
<item name="name">
|
||||
<value xml:lang="ko"><![CDATA[이름]]></value>
|
||||
<value xml:lang="en"><![CDATA[Name]]></value>
|
||||
<value xml:lang="jp"><![CDATA[名前]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[名稱]]></value>
|
||||
</item>
|
||||
<item name="about_depending_programs">
|
||||
<value xml:lang="ko"><![CDATA[이 패키지 사용을 위해서는 아래 프로그램이 설치되어 있어야 합니다.]]></value>
|
||||
<value xml:lang="en"><![CDATA[To use this package, the following program should have been installed.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[このパッケージを使用するには、下記のプログラムがインストールされていなければなりません。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[使用此 package,將會安裝下列 program]]></value>
|
||||
</item>
|
||||
<item name="ftp_password">
|
||||
<value xml:lang="ko"><![CDATA[FTP 비밀번호]]></value>
|
||||
<value xml:lang="en"><![CDATA[FTP password]]></value>
|
||||
<value xml:lang="jp"><![CDATA[FTP パスワード]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[FTP 密碼]]></value>
|
||||
</item>
|
||||
<item name="msg_dependency_package">
|
||||
<value xml:lang="ko"><![CDATA[이 패키지를 의존하고 있는 다른 패키지가 있기 때문에 삭제할 수 없습니다.]]></value>
|
||||
<value xml:lang="en"><![CDATA[Cannot remove this package because there exists another packages dependent on this.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[このパッケージに依存している他のパッケージがあるため、削除できません。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[無法刪除此 package,因為有其他 package用到。]]></value>
|
||||
</item>
|
||||
<item name="dependant_list">
|
||||
<value xml:lang="ko"><![CDATA[이 패키지에 의존하는 패키지 목록]]></value>
|
||||
|
|
@ -247,20 +256,75 @@
|
|||
<value xml:lang="ko"><![CDATA[이 항목의 새로운 버전이 있습니다.]]></value>
|
||||
<value xml:lang="en"><![CDATA[There is new version for this item.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[この項目の新しいバージョンがあります。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[本項目有新版本。]]></value>
|
||||
</item>
|
||||
<item name="msg_do_you_like_update">
|
||||
<value xml:lang="ko"><![CDATA[업데이트 하시겠습니까?]]></value>
|
||||
<value xml:lang="en"><![CDATA[Would you like to update?]]></value>
|
||||
<value xml:lang="jp"><![CDATA[アップデートしますか?]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[確定要更新嗎?]]></value>
|
||||
</item>
|
||||
<item name="msg_connection_fail">
|
||||
<value xml:lang="ko"><![CDATA[서버 접속이 원활하지 않습니다.]]></value>
|
||||
<value xml:lang="en"><![CDATA[Failed to connect to server.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[サーバに接続できませんでした。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[主機連線錯誤。]]></value>
|
||||
</item>
|
||||
<item name="msg_not_match_server">
|
||||
<value xml:lang="ko"><![CDATA[서버 설정이 올바르지 않습니다.]]></value>
|
||||
<value xml:lang="en"><![CDATA[Server settings are incorrect.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[サーバー設定が正しくありません。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[主機設定不正確。]]></value>
|
||||
</item>
|
||||
<item name="msg_ftp_invalid_auth_info">
|
||||
<value xml:lang="ko"><![CDATA[입력하신 FTP 정보로 로그인을 하지 못했습니다. FTP정보를 확인해주세요.]]></value>
|
||||
<value xml:lang="en"><![CDATA[Cannot log in with the FTP password you entered. Please check if it is correct.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[このFTP情報ではログインできません。FTP情報を確認してください。]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[FTP登录失败。请确认输入的FTP信息。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[FTP登入失敗。請確認輸入的 FTP 資訊。]]></value>
|
||||
<value xml:lang="fr"><![CDATA[입력하신 FTP 정보로 로그인을 하지 못했습니다. FTP정보를 확인해주세요]]></valuevalue xml:lang="de"><![CDATA[Anmeldungsfehler mit der Angabe des FTPs Bitte die Angabe des FTPs festlegen.]]></value>
|
||||
<value xml:lang="es"><![CDATA[Los datos de login para el FTP no son correctos. Veriféquelos.]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Kimlik doğrulama başarısız oldu. Lütfen kullanıcı adını ve şifreyi kontrol ediniz.]]></value>
|
||||
<value xml:lang="vi"><![CDATA[Xác nhận thất bại. Xin vui lòng kiểm tra lại tên sử dụng và mật khẩu.]]></value>
|
||||
<value xml:lang="mn"><![CDATA[Таны оруулсан FTP мэдээллээр нэвтэрч чадсангvй. FTPмэдээллээ шалгана уу.]]></value>
|
||||
</item>
|
||||
<item name="msg_ftp_not_connected">
|
||||
<value xml:lang="ko"><![CDATA[%s로의 FTP 접속 오류가 발생했습니다. FTP 포트 번호를 확인해주시거나 FTP 서비스가 가능한지 확인해주세요.]]></value>
|
||||
<value xml:lang="en"><![CDATA[Connection to the %s via FTP failed. Please check the port number and whether the FTP service is available.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[%sへのFTP接続エラーが発生しました。FTPポート(port)番号をはじめ、FTPサービスが可能であるかを確認してください。]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[发生本地(%s)FTP连接错误。请确认ftp端口号及支持ftp服务与否。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[本地(%s) FTP連線錯誤。請檢查 FTP 埠口並確認是否支援 FTP 功能。]]></value>
|
||||
<value xml:lang="fr"><![CDATA[%s로의 FTP 접속 오류가 발생하였습니다. ftp 포트 번호를 확인해주시거나 ftp 서비스가 가능한지 확인해주세요]]></value>
|
||||
<value xml:lang="de"><![CDATA[Ein Verbindungsfehler des FTPs an %s ist aufgetreten. Bitte FTP_Port checken, oder ob FTP_Service möglich ist.]]></value>
|
||||
<value xml:lang="ru"><![CDATA[Connection to %s via FTP failed. Please check the port number and if FTP service is available.]]></value>
|
||||
<value xml:lang="es"><![CDATA[Ha ocurrico un error de conexión al FTP del %s. Verifique el puerto del FTP y/o el funcionamiento del servicio FTP.]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Yerel web alanına FTP bağlantısı sağlanamadı. Lütfen port numarasını ve FTP servisinin mevcut olup-olmadığını kontrol ediniz .]]></value>
|
||||
<value xml:lang="vi"><![CDATA[Kết nối bằng FTP không thành công. Xin vui lòng kiểm tra lại thông tin tài khoản và cổng kết nối!]]></value>
|
||||
<value xml:lang="mn"><![CDATA[%s-ын FTP холболт амжилтгvй боллоо. FTP дугаараа шалгах буюу эсвэл FTP vйлчилгээг ашиглах боломжтой эсэхээ шалгана уу.]]></value>
|
||||
</item>
|
||||
<item name="msg_delete_file_failed">
|
||||
<value xml:lang="ko"><![CDATA[파일 삭제가 실패했습니다. %s.]]></value>
|
||||
<value xml:lang="en"><![CDATA[Failed to delete the file. %s.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[ファイルを削除できませんでした。]]></value>
|
||||
</item>
|
||||
<item name="msg_delete_dir_failed">
|
||||
<value xml:lang="ko"><![CDATA[디렉터리 삭제가 실패했습니다. %s]]></value>
|
||||
<value xml:lang="en"><![CDATA[Failed to delete the directory. %s]]></value>
|
||||
<value xml:lang="jp"><![CDATA[ディレクトリを削除できませんでした。]]></value>
|
||||
</item>
|
||||
<item name="msg_ftp_password_input">
|
||||
<value xml:lang="ko"><![CDATA[입력된 비밀번호가 없습니다.]]></value>
|
||||
<value xml:lang="en"><![CDATA[No password entered.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[パスワードを入力してください。]]></value>
|
||||
</item>
|
||||
<item name="msg_sftp_not_supported">
|
||||
<value xml:lang="ko"><![CDATA[SFTP 지원이 되지 않는 환경입니다.]]></value>
|
||||
<value xml:lang="en"><![CDATA[SFTP is not supported.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[SFTP非対応環境です。]]></value>
|
||||
</item>
|
||||
<item name="msg_does_not_support_delete">
|
||||
<value xml:lang="ko"><![CDATA[이 패키지가 삭제를 지원하지 않습니다(모듈 클래스에 moduleUninstall()이 없음).]]></value>
|
||||
<value xml:lang="en"><![CDATA[Cannot delete this package (no moduleUninstall() in the module class).]]></value>
|
||||
<value xml:lang="jp"><![CDATA[このパッケージは、削除をサポートしません(モジュールクラスにmoduleUninstall()がありません)。]]></value>
|
||||
</item>
|
||||
</lang>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<input type="hidden" name="act" value="procAutoinstallAdminUpdateinfo" />
|
||||
<p>
|
||||
<block cond="$show_ftp_note">
|
||||
{@$ftp_link = sprintf('<a href="%s#ftpSetup">%s</a>', getUrl('', 'module', 'admin', 'act', 'dispAdminConfig'), $lang->ftp_setup)}
|
||||
{@$ftp_link = sprintf('<a href="%s">%s</a>', getUrl('', 'module', 'admin', 'act', 'dispAdminConfigFtp'), $lang->ftp_setup)}
|
||||
{sprintf($lang->description_ftp_note, $ftp_link)}
|
||||
</block>
|
||||
{@$btnUpdate = sprintf('<input type="submit" value="%s" class="text" />', $lang->status_update)}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
<block cond="!$package->installed || $package->need_update">
|
||||
<block cond="$show_ftp_note">
|
||||
<p>{$lang->description_download}. (<a href="{getUrl('', 'module', 'admin', 'act', 'dispAdminConfig')}#ftpSetup">FTP Setup</a>)</p>
|
||||
<p>{$lang->description_download}. (<a href="{getUrl('', 'module', 'admin', 'act', 'dispAdminConfigFtp')}">FTP Setup</a>)</p>
|
||||
<p>{$lang->path}: {$package->path}</p>
|
||||
<p><a href="{_XE_DOWNLOAD_SERVER_}?module=resourceapi&act=procResourceapiDownload&package_srl={$package->package_srl}">{$lang->cmd_download}</a>
|
||||
</block>
|
||||
|
|
|
|||
|
|
@ -31,18 +31,18 @@
|
|||
</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">{$lang->category}</th>
|
||||
<th scope="col" class="nowr">{$lang->category}</th>
|
||||
<th scope="col">{$lang->thumbnail}</th>
|
||||
<th scope="col" class="title">{$lang->name}</th>
|
||||
<th scope="col">{$lang->distribute_version}</th>
|
||||
<th scope="col">{$lang->current_version}</th>
|
||||
<th scope="col">{$lang->run}</th>
|
||||
<th scope="col" class="nowr">{$lang->distribute_version}</th>
|
||||
<th scope="col" class="nowr">{$lang->current_version}</th>
|
||||
<th scope="col" class="nowr">{$lang->run}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr loop="$item_list => $key, $item">
|
||||
{@ $target_url = $original_site."?mid=download&package_srl=".$item->package_srl; }
|
||||
<td>{$item->category}</td>
|
||||
<td class="nowr">{$item->category}</td>
|
||||
<td><img src="{str_replace('./', $uri, $item->item_screenshot_url)}" alt="" width="100" height="100" /></td>
|
||||
<td class="title">
|
||||
<p><a href="{$target_url}">{htmlspecialchars($item->title)}</a></p>
|
||||
|
|
@ -64,9 +64,9 @@
|
|||
<li loop="$item->deps => $package_srl">{$installed[$package_srl]->title}</li>
|
||||
</ul>
|
||||
</td>
|
||||
<td>{htmlspecialchars($item->item_version)}</td>
|
||||
<td>{htmlspecialchars($item->current_version)}</td>
|
||||
<td>
|
||||
<td class="nowr">{htmlspecialchars($item->item_version)}</td>
|
||||
<td class="nowr">{htmlspecialchars($item->current_version)}</td>
|
||||
<td class="nowr">
|
||||
<a cond="!$item->current_version" href="{getUrl('act','dispAutoinstallAdminInstall','package_srl',$item->package_srl)}">{$lang->install}</a>
|
||||
<a cond="!$show_ftp_note && $item->current_version && $item->avail_remove" href="{getUrl('act','dispAutoinstallAdminUninstall','package_srl',$item->package_srl)}">{$lang->cmd_delete}</a>
|
||||
<a cond="$item->current_version && $item->need_update == 'Y'" href="{getUrl('act','dispAutoinstallAdminInstall','package_srl',$item->package_srl)}">{$lang->update}</a>
|
||||
|
|
|
|||
|
|
@ -31,7 +31,8 @@
|
|||
</block>
|
||||
<block cond="!$package->avail_remove">
|
||||
<div class="message error">
|
||||
<p>{$lang->msg_dependency_package}</p>
|
||||
<p cond="$package->deps">{$lang->msg_dependency_package}</p>
|
||||
<p cond="!$package->deps">{$lang->msg_does_not_support_delete}</p>
|
||||
</div>
|
||||
<p cond="$package->deps">{$lang->dependant_list}:</p>
|
||||
<ul cond="$package->deps">
|
||||
|
|
|
|||
|
|
@ -12,7 +12,143 @@
|
|||
**/
|
||||
function init() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Modify comment(s) status to publish/unpublish if calling module is using Comment Approval System
|
||||
* @return Object
|
||||
*/
|
||||
function procCommentAdminChangePublishedStatusChecked()
|
||||
{ // Error display if none is selected
|
||||
$cart = Context::get('cart');
|
||||
if(!is_array($cart))
|
||||
{
|
||||
$comment_srl_list= explode('|@|', $cart);
|
||||
}
|
||||
else
|
||||
{
|
||||
$comment_srl_list = $cart;
|
||||
}
|
||||
|
||||
$this->procCommentAdminChangeStatus();
|
||||
|
||||
if(!in_array(Context::getRequestMethod(),array('XMLRPC','JSON'))) {
|
||||
$returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispCommentAdminList', 'search_keyword', '');
|
||||
header('location:'.$returnUrl);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
function procCommentAdminChangeStatus()
|
||||
{
|
||||
$will_publish = Context::get('will_publish');
|
||||
|
||||
// Error display if none is selected
|
||||
$cart = Context::get('cart');
|
||||
if(!$cart)
|
||||
{
|
||||
return $this->stop('msg_cart_is_null');
|
||||
}
|
||||
if(!is_array($cart))
|
||||
{
|
||||
$comment_srl_list= explode('|@|', $cart);
|
||||
}
|
||||
else
|
||||
{
|
||||
$comment_srl_list = $cart;
|
||||
}
|
||||
|
||||
$args->status = $will_publish;
|
||||
$args->comment_srls_list = $comment_srl_list;
|
||||
$output = executeQuery('comment.updatePublishedStatus', $args);
|
||||
if(!$output->toBool())
|
||||
{
|
||||
return $output;
|
||||
}
|
||||
else
|
||||
{
|
||||
//update comment count for document
|
||||
$updated_documents_arr = array();
|
||||
// create the controller object of the document
|
||||
$oDocumentController = &getController('document');
|
||||
// create the model object of the document
|
||||
$oDocumentModel = &getModel('document');
|
||||
// create the comment model object
|
||||
$oCommentModel = &getModel('comment');
|
||||
//get admin info
|
||||
$logged_info = Context::get('logged_info');
|
||||
//$oMemberModule = &getModel("member");
|
||||
//$logged_info = $oMemberModule->getMemberInfoByMemberSrl($logged_member_srl);
|
||||
$new_status = ($will_publish) ? "published" : "unpublished";
|
||||
foreach($comment_srl_list as $comment_srl)
|
||||
{
|
||||
// check if comment already exists
|
||||
$comment = $oCommentModel->getComment($comment_srl);
|
||||
if($comment->comment_srl != $comment_srl) return new Object(-1, 'msg_invalid_request');
|
||||
$document_srl = $comment->document_srl;
|
||||
if (!in_array($document_srl,$updated_documents_arr))
|
||||
{
|
||||
$updated_documents_arr[] = $document_srl;
|
||||
// update the number of comments
|
||||
$comment_count = $oCommentModel->getCommentCount($document_srl);
|
||||
// update comment count of the article posting
|
||||
$output = $oDocumentController->updateCommentCount($document_srl, $comment_count, null, false);
|
||||
|
||||
$oDocument = $oDocumentModel->getDocument($document_srl);
|
||||
$author_email=$oDocument->variables['email_address'];
|
||||
|
||||
$oModuleModel = &getModel("module");
|
||||
$module_info = $oModuleModel->getModuleInfoByModuleSrl($comment->module_srl);
|
||||
$already_sent = array();
|
||||
|
||||
// send email to comment's author, all admins and thread(document) subscribers - START
|
||||
// -------------------------------------------------------
|
||||
$oMail = new Mail();
|
||||
$mail_title = "[XE - ".$module_info->mid."] comment(s) status changed to ".$new_status." on document: \"".$oDocument->getTitleText()."\"";
|
||||
$oMail->setTitle($mail_title);
|
||||
$mail_content = "
|
||||
The comment #".$comment_srl." on document \"".$oDocument->getTitleText()."\" has been ".$new_status." by admin of <strong><i>". strtoupper($module_info->mid)."</i></strong> module.
|
||||
<br />
|
||||
<br />Comment content:
|
||||
".$comment->content."
|
||||
<br />
|
||||
";
|
||||
$oMail->setContent($mail_content);
|
||||
$oMail->setSender($logged_info->user_name, $logged_info->email_address);
|
||||
|
||||
$document_author_email = $oDocument->variables['email_address'];
|
||||
|
||||
//mail to author of thread - START
|
||||
if($document_author_email != $comment->email_address && $logged_info->email_address != $document_author_email) {
|
||||
$oMail->setReceiptor($document_author_email, $document_author_email);
|
||||
$oMail->send();
|
||||
$already_sent[] = $document_author_email;
|
||||
}
|
||||
//mail to author of thread - STOP
|
||||
|
||||
//mail to all emails set for administrators - START
|
||||
if($module_info->admin_mail)
|
||||
{
|
||||
$target_mail = explode(',',$module_info->admin_mail);
|
||||
for($i=0;$i<count($target_mail);$i++) {
|
||||
$email_address = trim($target_mail[$i]);
|
||||
if(!$email_address) continue;
|
||||
if($author_email != $email_address) {
|
||||
$oMail->setReceiptor($email_address, $email_address);
|
||||
$oMail->send();
|
||||
}
|
||||
}
|
||||
}
|
||||
//mail to all emails set for administrators - STOP
|
||||
}
|
||||
// ----------------------------------------------------------
|
||||
// send email to comment's author, all admins and thread(document) subscribers - STOP
|
||||
}
|
||||
// call a trigger for calling "send mail to subscribers" (for moment just for forum)
|
||||
ModuleHandler::triggerCall("comment.procCommentAdminChangeStatus","after",$comment_srl_list);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Delete the selected comment from the administrator page
|
||||
**/
|
||||
|
|
|
|||
|
|
@ -25,18 +25,35 @@
|
|||
$args->sort_index = 'list_order'; // /< Sorting values
|
||||
|
||||
$args->module_srl = Context::get('module_srl');
|
||||
|
||||
/*
|
||||
$search_target = Context::get('search_target');
|
||||
$search_keyword = Context::get('search_keyword');
|
||||
if ($search_target == 'is_published' && $search_keyword == 'Y')
|
||||
{
|
||||
$args->status = 1;
|
||||
}
|
||||
if ($search_target == 'is_published' && $search_keyword == 'N')
|
||||
{
|
||||
$args->status = 0;
|
||||
}
|
||||
*/
|
||||
|
||||
// get a list by using comment->getCommentList.
|
||||
$oCommentModel = &getModel('comment');
|
||||
$secretNameList = $oCommentModel->getSecretNameList();
|
||||
$columnList = array('comment_srl', 'document_srl', 'is_secret', 'content', 'comments.member_srl', 'comments.nick_name', 'comments.regdate', 'ipaddress');
|
||||
$columnList = array('comment_srl', 'document_srl', 'is_secret', 'status', 'content', 'comments.member_srl', 'comments.nick_name', 'comments.regdate', 'ipaddress');
|
||||
$output = $oCommentModel->getTotalCommentList($args, $columnList);
|
||||
|
||||
|
||||
$oCommentModel = &getModel("comment");
|
||||
$modules = $oCommentModel->getDistinctModules();
|
||||
$modules_list = $modules;
|
||||
|
||||
// set values in the return object of comment_model:: getTotalCommentList() in order to use a template.
|
||||
Context::set('total_count', $output->total_count);
|
||||
Context::set('total_page', $output->total_page);
|
||||
Context::set('page', $output->page);
|
||||
Context::set('comment_list', $output->data);
|
||||
Context::set('modules_list', $modules_list);
|
||||
Context::set('page_navigation', $output->page_navigation);
|
||||
Context::set('secret_name_list', $secretNameList);
|
||||
// set the template
|
||||
|
|
|
|||
|
|
@ -57,7 +57,16 @@
|
|||
|
||||
if (!$oDB->isIndexExists("comments", "idx_module_list_order"))
|
||||
return true;
|
||||
|
||||
//2012. 02. 24 add comment published status column and index
|
||||
if(!$oDB->isColumnExists("comments", "status"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (!$oDB->isIndexExists("comments", "idx_status"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -93,7 +102,7 @@
|
|||
}
|
||||
if(!$oDB->isColumnExists("comment_voted_log", "point"))
|
||||
$oDB->addColumn('comment_voted_log', 'point', 'number', 11, 0, true);
|
||||
|
||||
|
||||
if (!$oDB->isIndexExists("comments", "idx_module_list_order"))
|
||||
$oDB->addIndex
|
||||
(
|
||||
|
|
@ -103,6 +112,19 @@
|
|||
true
|
||||
);
|
||||
|
||||
//2012. 02. 24 add comment published status column and index
|
||||
if(!$oDB->isColumnExists("comments", "status")) {
|
||||
$oDB->addColumn("comments", "status", "number", 1, 1, true);
|
||||
}
|
||||
if (!$oDB->isIndexExists("comments", "idx_status"))
|
||||
$oDB->addIndex
|
||||
(
|
||||
"comments",
|
||||
"idx_status",
|
||||
array("status", "comment_srl", "module_srl", "document_srl"),
|
||||
true
|
||||
);
|
||||
|
||||
return new Object(0, 'success_updated');
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -98,11 +98,62 @@
|
|||
$_SESSION['own_comment'][$comment_srl] = true;
|
||||
}
|
||||
|
||||
/**
|
||||
*@brief Check if module is using comment validation system
|
||||
* @param number $document_srl
|
||||
* @return boolean
|
||||
*/
|
||||
function isModuleUsingPublishValidation($document_srl=null, $module_srl=null)
|
||||
{
|
||||
$oModuleModel = &getModel('module');
|
||||
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl);
|
||||
$module_part_config = $oModuleModel->getModulePartConfig('comment',$module_info->module_srl);
|
||||
$use_validation = false;
|
||||
if (isset($module_part_config->use_comment_validation) && $module_part_config->use_comment_validation == "Y")
|
||||
{
|
||||
$use_validation = true;
|
||||
}
|
||||
return $use_validation;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Enter comments
|
||||
**/
|
||||
function insertComment($obj, $manual_inserted = false) {
|
||||
$obj->__isupdate = false;
|
||||
|
||||
// check if comment's module is using comment validation and set the publish status to 0 (false)
|
||||
// for inserting query, otherwise default is 1 (true - means comment is published)
|
||||
$using_validation = $this->isModuleUsingPublishValidation($obj->module_srl);
|
||||
if(Context::get('is_logged'))
|
||||
{
|
||||
$logged_info = Context::get('logged_info');
|
||||
if ($logged_info->is_admin == 'Y')
|
||||
{
|
||||
$is_admin = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$is_admin = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$using_validation)
|
||||
{
|
||||
$obj->status = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($is_admin)
|
||||
{
|
||||
$obj->status = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$obj->status = 0;
|
||||
}
|
||||
}
|
||||
|
||||
$obj->__isupdate = false;
|
||||
// call a trigger (before)
|
||||
$output = ModuleHandler::triggerCall('comment.insertComment', 'before', $obj);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
|
@ -195,7 +246,7 @@
|
|||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$output = executeQuery('comment.insertCommentList', $list_args);
|
||||
if(!$output->toBool()) return $output;
|
||||
// insert comment
|
||||
|
|
@ -211,7 +262,17 @@
|
|||
// create the controller object of the document
|
||||
$oDocumentController = &getController('document');
|
||||
// Update the number of comments in the post
|
||||
$output = $oDocumentController->updateCommentCount($document_srl, $comment_count, $obj->nick_name, true);
|
||||
if (!$using_validation)
|
||||
{
|
||||
$output = $oDocumentController->updateCommentCount($document_srl, $comment_count, $obj->nick_name, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($is_admin)
|
||||
{
|
||||
$output = $oDocumentController->updateCommentCount($document_srl, $comment_count, $obj->nick_name, true);
|
||||
}
|
||||
}
|
||||
// grant autority of the comment
|
||||
$this->addGrant($obj->comment_srl);
|
||||
// call a trigger(after)
|
||||
|
|
@ -238,6 +299,8 @@
|
|||
}
|
||||
}
|
||||
|
||||
$this->sendEmailToAdminAfterInsertComment($obj);
|
||||
|
||||
|
||||
$output->add('comment_srl', $obj->comment_srl);
|
||||
//remove from cache
|
||||
|
|
@ -249,7 +312,128 @@
|
|||
}
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Send email to module's admins after a new comment was interted successfully
|
||||
* if Comments Approval System is used
|
||||
* @param type $obj
|
||||
*/
|
||||
function sendEmailToAdminAfterInsertComment($obj)
|
||||
{
|
||||
$using_validation = $this->isModuleUsingPublishValidation($obj->module_srl);
|
||||
|
||||
$oDocumentModel = &getModel('document');
|
||||
$oDocument = $oDocumentModel->getDocument($obj->document_srl);
|
||||
|
||||
$oMemberModel = &getModel("member");
|
||||
if (isset($obj->member_srl) && !is_null($obj->member_srl))
|
||||
{
|
||||
$member_info = $oMemberModel->getMemberInfoByMemberSrl($obj->member_srl);
|
||||
}
|
||||
else
|
||||
{
|
||||
$member_info->is_admin = "N";
|
||||
$member_info->nick_name = $obj->nick_name;
|
||||
$member_info->user_name = $obj->user_name;
|
||||
$member_info->email_address = $obj->email_address;
|
||||
}
|
||||
|
||||
$oCommentModel = &getModel("comment");
|
||||
$nr_comments_not_approved = $oCommentModel->getCommentAllCount(null,false);
|
||||
$oModuleModel = &getModel("module");
|
||||
$module_info = $oModuleModel->getModuleInfoByDocumentSrl($obj->document_srl);
|
||||
// If there is no problem to register comment then send an email to all admin were set in module admin panel
|
||||
if($module_info->admin_mail && $member_info->is_admin != 'Y')
|
||||
{
|
||||
$oMail = new Mail();
|
||||
$oMail->setSender($obj->email_address, $obj->email_address);
|
||||
$mail_title = "[XE - ".Context::get('mid')."] A new comment was posted on document: \"".$oDocument->getTitleText()."\"";
|
||||
$oMail->setTitle($mail_title);
|
||||
if ($using_validation)
|
||||
{
|
||||
$url_approve = getFullUrl('','module','comment','act','procCommentAdminChangePublishedStatusChecked','cart[]',$obj->comment_srl,'will_publish','1','search_target','is_published','search_keyword','N');
|
||||
$url_trash = getFullUrl('','module','comment','act','procCommentAdminDeleteChecked','cart[]',$obj->comment_srl,'search_target','is_trash','search_keyword','true');
|
||||
$mail_content = "
|
||||
A new comment on the document \"".$oDocument->getTitleText()."\" is waiting for your approval.
|
||||
<br />
|
||||
<br />
|
||||
Author: ".$member_info->nick_name."
|
||||
<br />Author e-mail: ".$member_info->email_address."
|
||||
<br />Comment:
|
||||
<br />\"".$obj->content."\"
|
||||
<br />
|
||||
<br />
|
||||
Approve it: <a href=\"".$url_approve."\">".$url_approve."</a>
|
||||
<br />Trash it: <a href=\"".$url_trash."\">".$url_trash."</a>
|
||||
<br />Currently ".$nr_comments_not_approved." comments on \"".Context::get('mid')."\" module are waiting for approval. Please visit the moderation panel:
|
||||
<br /><a href=\"".getFullUrl('','module','admin','act','dispCommentAdminList','search_target','module','search_keyword',$obj->module_srl)."\">".getFullUrl('','module','admin','act','dispCommentAdminList','search_target','module','search_keyword',$obj->module_srl)."</a>
|
||||
";
|
||||
$oMail->setContent($mail_content);
|
||||
}
|
||||
else
|
||||
{
|
||||
$mail_content = "
|
||||
Author: ".$member_info->nick_name."
|
||||
<br />Author e-mail: ".$member_info->email_address."
|
||||
<br />Comment:
|
||||
<br />\"".$obj->content."\"
|
||||
";
|
||||
$oMail->setContent($mail_content);
|
||||
// get email of thread's author
|
||||
$document_author_email = $oDocument->variables['email_address'];
|
||||
//get admin info
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
//mail to author of thread - START
|
||||
if($document_author_email != $obj->email_address && $logged_info->email_address != $document_author_email) {
|
||||
$oMail->setReceiptor($document_author_email, $document_author_email);
|
||||
$oMail->send();
|
||||
}
|
||||
// mail to author of thread - STOP
|
||||
}
|
||||
|
||||
// get all admins emails
|
||||
$admins_emails = $module_info->admin_mail;
|
||||
$target_mail = explode(',',$admins_emails);
|
||||
|
||||
// send email to all admins - START
|
||||
for($i=0;$i<count($target_mail);$i++)
|
||||
{
|
||||
$email_address = trim($target_mail[$i]);
|
||||
if(!$email_address) continue;
|
||||
$oMail->setReceiptor($email_address, $email_address);
|
||||
$oMail->send();
|
||||
}
|
||||
// send email to all admins - STOP
|
||||
}
|
||||
|
||||
$comment_srl_list = array(0 => $obj->comment_srl);
|
||||
// call a trigger for calling "send mail to subscribers" (for moment just for forum)
|
||||
ModuleHandler::triggerCall("comment.sendEmailToAdminAfterInsertComment","after",$comment_srl_list);
|
||||
|
||||
/*
|
||||
// send email to author - START
|
||||
$oMail = new Mail();
|
||||
$mail_title = "[XE - ".Context::get('mid')."] your comment on document: \"".$oDocument->getTitleText()."\" have to be approved";
|
||||
$oMail->setTitle($mail_title);
|
||||
//$mail_content = sprintf("From : <a href=\"%s?document_srl=%s&comment_srl=%s#comment_%d\">%s?document_srl=%s&comment_srl=%s#comment_%d</a><br/>\r\n%s ", getFullUrl(''),$comment->document_srl,$comment->comment_srl,$comment->comment_srl, getFullUrl(''),$comment->document_srl,$comment->comment_srl,$comment->comment_srl,$comment>content);
|
||||
$mail_content = "
|
||||
Your comment #".$obj->comment_srl." on document \"".$oDocument->getTitleText()."\" have to be approved by admin of <strong><i>". strtoupper($module_info->mid)."</i></strong> module before to be publish.
|
||||
<br />
|
||||
<br />Comment content:
|
||||
".$obj->content."
|
||||
<br />
|
||||
";
|
||||
$oMail->setContent($mail_content);
|
||||
$oMail->setSender($obj->email_address, $obj->email_address);
|
||||
$oMail->setReceiptor($obj->email_address, $obj->email_address);
|
||||
$oMail->send();
|
||||
// send email to author - START
|
||||
*/
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief fix the comment
|
||||
**/
|
||||
|
|
@ -403,15 +587,15 @@
|
|||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief remove all comment relation log
|
||||
**/
|
||||
function deleteCommentLog()
|
||||
{
|
||||
$this->_deleteDeclaredComments($args);
|
||||
$this->_deleteVotedComments($args);
|
||||
return new Object(0, 'success');
|
||||
}
|
||||
/**
|
||||
* @brief remove all comment relation log
|
||||
**/
|
||||
function deleteCommentLog()
|
||||
{
|
||||
$this->_deleteDeclaredComments($args);
|
||||
$this->_deleteVotedComments($args);
|
||||
return new Object(0, 'success');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief remove all comments of the article
|
||||
|
|
@ -636,7 +820,10 @@
|
|||
|
||||
$comment_config->use_vote_down = Context::get('use_vote_down');
|
||||
if(!$comment_config->use_vote_down) $comment_config->use_vote_down = 'Y';
|
||||
|
||||
|
||||
$comment_config->use_comment_validation = Context::get('use_comment_validation');
|
||||
if(!$comment_config->use_comment_validation) $comment_config->use_comment_validation = 'N';
|
||||
|
||||
for($i=0;$i<count($module_srl);$i++) {
|
||||
$srl = trim($module_srl[$i]);
|
||||
if(!$srl) continue;
|
||||
|
|
@ -658,35 +845,35 @@
|
|||
return new Object();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief get comment all list
|
||||
**/
|
||||
function procCommentGetList()
|
||||
{
|
||||
if(!Context::get('is_logged')) return new Object(-1,'msg_not_permitted');
|
||||
$commentSrls = Context::get('comment_srls');
|
||||
if($commentSrls) $commentSrlList = explode(',', $commentSrls);
|
||||
/**
|
||||
* @brief get comment all list
|
||||
**/
|
||||
function procCommentGetList()
|
||||
{
|
||||
if(!Context::get('is_logged')) return new Object(-1,'msg_not_permitted');
|
||||
$commentSrls = Context::get('comment_srls');
|
||||
if($commentSrls) $commentSrlList = explode(',', $commentSrls);
|
||||
|
||||
if(count($commentSrlList) > 0) {
|
||||
$oCommentModel = &getModel('comment');
|
||||
$commentList = $oCommentModel->getComments($commentSrlList);
|
||||
if(count($commentSrlList) > 0) {
|
||||
$oCommentModel = &getModel('comment');
|
||||
$commentList = $oCommentModel->getComments($commentSrlList);
|
||||
|
||||
if(is_array($commentList))
|
||||
if(is_array($commentList))
|
||||
{
|
||||
foreach($commentList AS $key=>$value)
|
||||
{
|
||||
foreach($commentList AS $key=>$value)
|
||||
{
|
||||
$value->content = strip_tags($value->content);
|
||||
}
|
||||
$value->content = strip_tags($value->content);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
global $lang;
|
||||
$commentList = array();
|
||||
$this->setMessage($lang->no_documents);
|
||||
}
|
||||
|
||||
$this->add('comment_list', $commentList);
|
||||
}
|
||||
else
|
||||
{
|
||||
global $lang;
|
||||
$commentList = array();
|
||||
$this->setMessage($lang->no_documents);
|
||||
}
|
||||
|
||||
$this->add('comment_list', $commentList);
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -183,12 +183,17 @@
|
|||
}
|
||||
// if additional information which can access contents is set
|
||||
if($add_content_info) {
|
||||
$memberSrl = $this->get('member_srl');
|
||||
if($memberSrl < 0)
|
||||
{
|
||||
$memberSrl = 0;
|
||||
}
|
||||
$content = sprintf(
|
||||
'<!--BeforeComment(%d,%d)--><div class="comment_%d_%d xe_content">%s</div><!--AfterComment(%d,%d)-->',
|
||||
$this->comment_srl, $this->get('member_srl'),
|
||||
$this->comment_srl, $this->get('member_srl'),
|
||||
$this->comment_srl, $memberSrl,
|
||||
$this->comment_srl, $memberSrl,
|
||||
$content,
|
||||
$this->comment_srl, $this->get('member_srl')
|
||||
$this->comment_srl, $memberSrl
|
||||
);
|
||||
// xe_content class name should be specified although content access is not necessary.
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@
|
|||
if(is_array($comment_srl_list)) $comment_srls = implode(',',$comment_srl_list);
|
||||
// fetch from a database
|
||||
$args->comment_srls = $comment_srls;
|
||||
$output = executeQuery('comment.getComments', $args, $columnList);
|
||||
$output = executeQuery('comment.getComments', $args, $columnList);
|
||||
if(!$output->toBool()) return;
|
||||
$comment_list = $output->data;
|
||||
if(!$comment_list) return;
|
||||
|
|
@ -143,6 +143,23 @@
|
|||
**/
|
||||
function getCommentCount($document_srl) {
|
||||
$args->document_srl = $document_srl;
|
||||
|
||||
// get the number of comments on the document module
|
||||
$oDocumentModel = &getModel('document');
|
||||
$columnList = array('document_srl', 'module_srl');
|
||||
$oDocument = $oDocumentModel->getDocument($document_srl, false, true, $columnList);
|
||||
// return if no doc exists.
|
||||
if(!$oDocument->isExists()) return;
|
||||
// get a list of comments
|
||||
$module_srl = $oDocument->get('module_srl');
|
||||
//check if module is using validation system
|
||||
$oCommentController = &getController('comment');
|
||||
$using_validation = $oCommentController->isModuleUsingPublishValidation($module_srl);
|
||||
if($using_validation)
|
||||
{
|
||||
$args->status = 1;
|
||||
}
|
||||
|
||||
$output = executeQuery('comment.getCommentCount', $args);
|
||||
$total_count = $output->data->count;
|
||||
return (int)$total_count;
|
||||
|
|
@ -164,14 +181,52 @@
|
|||
/**
|
||||
* @brief get the total number of comments in corresponding with module_srl.
|
||||
**/
|
||||
function getCommentAllCount($module_srl) {
|
||||
function getCommentAllCount($module_srl,$published=null) {
|
||||
$args->module_srl = $module_srl;
|
||||
|
||||
if(is_null($published))
|
||||
{
|
||||
// check if module is using comment validation system
|
||||
$oCommentController = &getController("comment");
|
||||
$is_using_validation = $oCommentController->isModuleUsingPublishValidation($module_srl);
|
||||
if($is_using_validation)
|
||||
{
|
||||
$args->status = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($published)
|
||||
{
|
||||
$args->status = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$args->status = 0;
|
||||
}
|
||||
}
|
||||
$output = executeQuery('comment.getCommentCount', $args);
|
||||
$total_count = $output->data->count;
|
||||
|
||||
return (int)$total_count;
|
||||
}
|
||||
|
||||
function getDistinctModules()
|
||||
{
|
||||
$output = executeQuery('comment.getDistinctModules');
|
||||
$module_srls = $output->data;
|
||||
$oModuleModel = &getModel('module');
|
||||
$result = array();
|
||||
if($module_srls)
|
||||
{
|
||||
foreach($module_srls as $module)
|
||||
{
|
||||
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module->module_srl);
|
||||
$result[$module->module_srl] = $module_info->mid;
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief get the comment in corresponding with mid.
|
||||
|
|
@ -195,6 +250,17 @@
|
|||
$output = $oCacheHandler->get($cache_key);
|
||||
}
|
||||
if(!$output){
|
||||
|
||||
if(strpos($args->module_srl,",")===false)
|
||||
{
|
||||
// check if module is using comment validation system
|
||||
$oCommentController = &getController("comment");
|
||||
$is_using_validation = $oCommentController->isModuleUsingPublishValidation($obj->module_srl);
|
||||
if($is_using_validation)
|
||||
{
|
||||
$args->status = 1;
|
||||
}
|
||||
}
|
||||
$output = executeQuery('comment.getNewestCommentList', $args, $columnList);
|
||||
if($oCacheHandler->isSupport()) $oCacheHandler->put($cache_key,$output);
|
||||
}
|
||||
|
|
@ -255,6 +321,16 @@
|
|||
$args->list_count = $comment_count;
|
||||
$args->page = $page;
|
||||
$args->page_count = 10;
|
||||
|
||||
//check if module is using validation system
|
||||
$oCommentController = &getController('comment');
|
||||
$using_validation = $oCommentController->isModuleUsingPublishValidation($module_srl);
|
||||
if($using_validation)
|
||||
{
|
||||
$args->status = 1;
|
||||
}
|
||||
|
||||
|
||||
$output = executeQueryArray('comment.getCommentPageList', $args);
|
||||
// return if an error occurs in the query results
|
||||
if(!$output->toBool()) return;
|
||||
|
|
@ -366,6 +442,15 @@
|
|||
$args->page_count = $obj->page_count?$obj->page_count:10;
|
||||
$args->s_module_srl = $obj->module_srl;
|
||||
$args->exclude_module_srl = $obj->exclude_module_srl;
|
||||
|
||||
// check if module is using comment validation system
|
||||
$oCommentController = &getController("comment");
|
||||
$is_using_validation = $oCommentController->isModuleUsingPublishValidation($obj->module_srl);
|
||||
if ($is_using_validation)
|
||||
{
|
||||
$args->s_is_published = 1;
|
||||
}
|
||||
|
||||
// Search options
|
||||
$search_target = $obj->search_target?$obj->search_target:trim(Context::get('search_target'));
|
||||
$search_keyword = $obj->search_keyword?$obj->search_keyword:trim(Context::get('search_keyword'));
|
||||
|
|
@ -408,7 +493,20 @@
|
|||
break;
|
||||
case 'is_secret' :
|
||||
$args->s_is_secret= $search_keyword;
|
||||
break;
|
||||
case 'is_published' :
|
||||
if($search_keyword == 'Y')
|
||||
{
|
||||
$args->s_is_published = 1;
|
||||
}
|
||||
if($search_keyword == 'N')
|
||||
{
|
||||
$args->s_is_published = 0;
|
||||
}
|
||||
break;
|
||||
case 'module':
|
||||
$args->s_module_srl = (int)$search_keyword;
|
||||
break;
|
||||
case 'member_srl' :
|
||||
$args->{"s_".$search_target} = (int)$search_keyword;
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<title xml:lang="vi">Bình luận</title>
|
||||
<title xml:lang="es">Commentarios</title>
|
||||
<title xml:lang="ru">Комментарии</title>
|
||||
<title xml:lang="zh-TW">評論</title>
|
||||
<title xml:lang="zh-TW">回覆</title>
|
||||
<title xml:lang="tr">Yorum</title>
|
||||
<description xml:lang="ko">게시판이나 블로그등의 댓글을 관리하는 모듈입니다.</description>
|
||||
<description xml:lang="jp">掲示板やブログなどのコメントを管理するモジュールです。</description>
|
||||
|
|
@ -16,7 +16,7 @@
|
|||
<description xml:lang="vi">Module quản lý bình luận của bài viết và sổ lưu niệm</description>
|
||||
<description xml:lang="es">Es el módulo para manejar commentarios en blog o boletínes.</description>
|
||||
<description xml:lang="ru">Модуль для управления комментариями форума/блога.</description>
|
||||
<description xml:lang="zh-TW">管理討論板或部落格評論的模組。</description>
|
||||
<description xml:lang="zh-TW">管理討論板或部落格回覆的模組。</description>
|
||||
<description xml:lang="tr">Pano ve blog yorumlarını yönetme modülü</description>
|
||||
<version>0.1</version>
|
||||
<date>2007-02-28</date>
|
||||
|
|
|
|||
|
|
@ -1,24 +1,27 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<module>
|
||||
<grants />
|
||||
<permissions>
|
||||
<grants />
|
||||
<permissions>
|
||||
<permission action="procCommentAdminAddCart" target="manager" />
|
||||
<permission action="procCommentGetList" target="manager" />
|
||||
</permissions>
|
||||
<actions>
|
||||
<action name="getCommentMenu" type="model" standalone="true" />
|
||||
<action name="dispCommentAdminList" type="view" admin_index="true" standalone="true" menu_name="comment" menu_index="true" />
|
||||
<action name="dispCommentAdminDeclared" type="view" standalone="true" menu_name="comment" />
|
||||
<action name="procCommentVoteUp" type="controller" standalone="true" />
|
||||
<action name="procCommentVoteDown" type="controller" standalone="true" />
|
||||
<action name="procCommentDeclare" type="controller" standalone="true" />
|
||||
<action name="getCommentVotedMemberList" type="model" standalone="true" />
|
||||
<action name="procCommentInsertModuleConfig" type="controller" standalone="true" ruleset="insertCommentModuleConfig" />
|
||||
<action name="procCommentAdminDeleteChecked" type="controller" standalone="true" ruleset="deleteChecked" />
|
||||
<action name="procCommentAdminCancelDeclare" type="controller" standalone="true" />
|
||||
<action name="procCommentAdminAddCart" type="controller" standalone="true" />
|
||||
<action name="procCommentGetList" type="controller" standalone="true" />
|
||||
</actions>
|
||||
</permissions>
|
||||
<actions>
|
||||
<action name="getCommentMenu" type="model" standalone="true" />
|
||||
<action name="dispCommentAdminList" type="view" admin_index="true" standalone="true" menu_name="comment" menu_index="true" />
|
||||
<action name="dispCommentAdminDeclared" type="view" standalone="true" menu_name="comment" />
|
||||
<action name="procCommentVoteUp" type="controller" standalone="true" />
|
||||
<action name="procCommentVoteDown" type="controller" standalone="true" />
|
||||
<action name="procCommentDeclare" type="controller" standalone="true" />
|
||||
<action name="getCommentVotedMemberList" type="model" standalone="true" />
|
||||
<action name="procCommentInsertModuleConfig" type="controller" standalone="true" ruleset="insertCommentModuleConfig" />
|
||||
<action name="procCommentAdminDeleteChecked" type="controller" standalone="true" ruleset="deleteChecked" />
|
||||
<action name="procCommentAdminChangeStatus" type="controller" standalone="true"/>
|
||||
<action name="procCommentAdminChangePublishedStatusChecked" type="controller" standalone="true" />
|
||||
<action name="isModuleUsingPublishValidation" type="controller" standalone="true" />
|
||||
<action name="procCommentAdminCancelDeclare" type="controller" standalone="true" />
|
||||
<action name="procCommentAdminAddCart" type="controller" standalone="true" />
|
||||
<action name="procCommentGetList" type="controller" standalone="true" />
|
||||
</actions>
|
||||
<menus>
|
||||
<menu name="comment">
|
||||
<title xml:lang="en">Comment</title>
|
||||
|
|
@ -28,7 +31,7 @@
|
|||
<title xml:lang="es">Comment</title>
|
||||
<title xml:lang="ru">Comment</title>
|
||||
<title xml:lang="fr">Comment</title>
|
||||
<title xml:lang="zh-TW">Comment</title>
|
||||
<title xml:lang="zh-TW">回覆</title>
|
||||
<title xml:lang="vi">Comment</title>
|
||||
<title xml:lang="mn">Comment</title>
|
||||
<title xml:lang="tr">Comment</title>
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
<value xml:lang="en"><![CDATA[I want to]]></value>
|
||||
<value xml:lang="jp"><![CDATA[このコメントを…]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[将把此评论..]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[將此評論..]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[將此回覆..]]></value>
|
||||
<value xml:lang="fr"><![CDATA[Vous voudriez...]]></value>
|
||||
<value xml:lang="ru"><![CDATA[Эту запись...]]></value>
|
||||
<value xml:lang="es"><![CDATA[Usted ...]]></value>
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
<value xml:lang="en"><![CDATA[Comments List]]></value>
|
||||
<value xml:lang="jp"><![CDATA[コメントリスト]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[评论列表]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[評論列表]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[回覆列表]]></value>
|
||||
<value xml:lang="fr"><![CDATA[Liste des Commentaires]]></value>
|
||||
<value xml:lang="ru"><![CDATA[Список записей]]></value>
|
||||
<value xml:lang="es"><![CDATA[Comentarios Lista]]></value>
|
||||
|
|
@ -29,7 +29,7 @@
|
|||
<value xml:lang="en"><![CDATA[Invert Selection]]></value>
|
||||
<value xml:lang="jp"><![CDATA[選択項目の反転]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[反选]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[反選]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[反向選擇]]></value>
|
||||
<value xml:lang="fr"><![CDATA[Renverser les choisis]]></value>
|
||||
<value xml:lang="ru"><![CDATA[Изменить выбранное]]></value>
|
||||
</item>
|
||||
|
|
@ -49,18 +49,20 @@
|
|||
<value xml:lang="ko"><![CDATA[휴지통]]></value>
|
||||
<value xml:lang="en"><![CDATA[Recycle Bin]]></value>
|
||||
<value xml:lang="jp"><![CDATA[ゴミ箱]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[回收桶]]></value>
|
||||
</item>
|
||||
<item name="cmd_trash">
|
||||
<value xml:lang="ko"><![CDATA[휴지통으로 이동]]></value>
|
||||
<value xml:lang="en"><![CDATA[Move to Recycle Bin]]></value>
|
||||
<value xml:lang="jp"><![CDATA[ゴミ箱へ移動]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[移至回收桶]]></value>
|
||||
</item>
|
||||
<item name="comment_count">
|
||||
<value xml:lang="ko"><![CDATA[댓글 수]]></value>
|
||||
<value xml:lang="en"><![CDATA[Number of Comments]]></value>
|
||||
<value xml:lang="jp"><![CDATA[コメント数]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[每页评论数]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[每頁評論數]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[每頁回覆數]]></value>
|
||||
<value xml:lang="fr"><![CDATA[Limite de Commentaires]]></value>
|
||||
<value xml:lang="de"><![CDATA[Kommentare]]></value>
|
||||
<value xml:lang="ru"><![CDATA[Количество ответов]]></value>
|
||||
|
|
@ -73,7 +75,7 @@
|
|||
<value xml:lang="en"><![CDATA[Display comments and if the number of them is over a specified number, move to the comment list.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[コメントを指定した数だけ表示し、それ以上はリスト化します。]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[可以指定要显示的每页评论数。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[可以指定要顯示的每頁評論數。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[可以指定要顯示的每頁回覆數。]]></value>
|
||||
<value xml:lang="fr"><![CDATA[Quand il y a plus de commentaires, ils seront bougés sur le liste.]]></value>
|
||||
<value xml:lang="ru"><![CDATA[Отображается указанное количество ответов, после превышения этого количества производится переход к списку.]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Yorumları, kullanıcının girdiği rakam kadar gösterin. Eğer yorum sayısı belirlenen sayıyı aşarsa, yorum Liste'ye taşınır.]]></value>
|
||||
|
|
@ -84,7 +86,7 @@
|
|||
<value xml:lang="en"><![CDATA[Please select an article to delete.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[削除するコメントを選択してください。]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[请选择要删除的评论。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[請選擇要刪除的評論。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[請選擇要刪除的回覆。]]></value>
|
||||
<value xml:lang="fr"><![CDATA[Choisissez un article à supprimer, S.V.P.]]></value>
|
||||
<value xml:lang="ru"><![CDATA[Пожалуйста, выберите записи для удаления.]]></value>
|
||||
<value xml:lang="es"><![CDATA[Selecciona el commentario que desea eliminar]]></value>
|
||||
|
|
@ -96,7 +98,7 @@
|
|||
<value xml:lang="en"><![CDATA[%d comment(s) is(are) successfully deleted.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[%d個のコメントを削除しました。]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[已删除%d个评论。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[已刪除%d個評論。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[已刪除 %d 個回覆。]]></value>
|
||||
<value xml:lang="fr"><![CDATA[%d commentaire(s) est(sont) supprimé(s) avec succés.]]></value>
|
||||
<value xml:lang="ru"><![CDATA[%d записьуспешно удалена]]></value>
|
||||
<value xml:lang="es"><![CDATA[%d comentario eliminado correctamente.]]></value>
|
||||
|
|
@ -211,7 +213,7 @@
|
|||
<value xml:lang="en"><![CDATA[IP Address]]></value>
|
||||
<value xml:lang="jp"><![CDATA[IPアドレス]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[IP 地址]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[IP位址]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[IP 位址]]></value>
|
||||
<value xml:lang="fr"><![CDATA[Adresse IP]]></value>
|
||||
<value xml:lang="ru"><![CDATA[IP-адрес]]></value>
|
||||
<value xml:lang="es"><![CDATA[Dirección IP]]></value>
|
||||
|
|
@ -222,12 +224,14 @@
|
|||
<value xml:lang="ko"><![CDATA[상태]]></value>
|
||||
<value xml:lang="en"><![CDATA[Status]]></value>
|
||||
<value xml:lang="jp"><![CDATA[状態]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[狀態]]></value>
|
||||
</item>
|
||||
</item>
|
||||
<item name="no_text_comment">
|
||||
<value xml:lang="ko"><![CDATA[글자가 없는 댓글입니다.]]></value>
|
||||
<value xml:lang="en"><![CDATA[No text in this comment.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[テキストのないコメントです。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[此回覆無內容。]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Bu yorumda herhangi bir metin yok.]]></value>
|
||||
</item>
|
||||
<item name="secret_name_list" type="array">
|
||||
|
|
@ -235,21 +239,48 @@
|
|||
<value xml:lang="ko"><![CDATA[비밀]]></value>
|
||||
<value xml:lang="en"><![CDATA[Secret]]></value>
|
||||
<value xml:lang="jp"><![CDATA[非公開]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[秘密]]></value>
|
||||
</item>
|
||||
<item name="N">
|
||||
<value xml:lang="ko"><![CDATA[공개]]></value>
|
||||
<value xml:lang="en"><![CDATA[Public]]></value>
|
||||
<value xml:lang="jp"><![CDATA[公開]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[公開]]></value>
|
||||
</item>
|
||||
</item>
|
||||
<item name="published_name_list" type="array">
|
||||
<item name="Y">
|
||||
<value xml:lang="en"><![CDATA[Published]]></value>
|
||||
</item>
|
||||
<item name="N">
|
||||
<value xml:lang="en"><![CDATA[Unpublished]]></value>
|
||||
</item>
|
||||
</item>
|
||||
<item name="comment_manager">
|
||||
<value xml:lang="ko"><![CDATA[선택한 댓글 관리]]></value>
|
||||
<value xml:lang="en"><![CDATA[Manage Selected Comment]]></value>
|
||||
<value xml:lang="jp"><![CDATA[選択コメントを管理]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[管理所選回覆]]></value>
|
||||
</item>
|
||||
<item name="selected_comment">
|
||||
<value xml:lang="ko"><![CDATA[선택한 댓글]]></value>
|
||||
<value xml:lang="en"><![CDATA[Selected Comment]]></value>
|
||||
<value xml:lang="jp"><![CDATA[選択したコメント]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[已選回覆]]></value>
|
||||
</item>
|
||||
<item name="cmd_comment_validation">
|
||||
<value xml:lang="en"><![CDATA[Use comment validation]]></value>
|
||||
</item>
|
||||
<item name="about_comment_validation">
|
||||
<value xml:lang="en"><![CDATA[If you want to use comment validation before displaying on your module frontend select USE, otherwise select NOT USE.]]></value>
|
||||
</item>
|
||||
<item name="published">
|
||||
<value xml:lang="en"><![CDATA[Publish status]]></value>
|
||||
</item>
|
||||
<item name="cmd_publish">
|
||||
<value xml:lang="en"><![CDATA[Publish]]></value>
|
||||
</item>
|
||||
<item name="cmd_unpublish">
|
||||
<value xml:lang="en"><![CDATA[Unpublish]]></value>
|
||||
</item>
|
||||
</lang>
|
||||
|
|
@ -6,7 +6,8 @@
|
|||
<column name="count(*)" alias="count" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="document_srl" var="document_srl" filter="number" />
|
||||
<condition operation="equal" column="status" var="status" />
|
||||
<condition operation="equal" column="document_srl" var="document_srl" filter="number" pipe="and" />
|
||||
<condition operation="in" column="module_srl" var="module_srl" filter="number" pipe="and" />
|
||||
<condition operation="like_prefix" column="regdate" var="regDate" pipe="and" />
|
||||
</conditions>
|
||||
|
|
|
|||
|
|
@ -8,12 +8,14 @@
|
|||
<column name="comments_list.depth" alias="depth" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="comments_list.document_srl" var="document_srl" notnull="notnull" pipe="and" />
|
||||
<condition operation="equal" column="comments.status" var="status" pipe="and" />
|
||||
<condition operation="equal" column="comments_list.document_srl" var="document_srl" notnull="notnull" pipe="and" />
|
||||
<condition operation="equal" column="comments_list.comment_srl" var="comments.comment_srl" filter="number" pipe="and" />
|
||||
<condition operation="more" column="comments_list.head" default="0" pipe="and" />
|
||||
<condition operation="more" column="comments_list.arrange" default="0" pipe="and" />
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="list_order" default="comments.status" order="desc" />
|
||||
<index var="list_order" default="comments_list.head" order="asc" />
|
||||
<index var="list_order" default="comments_list.arrange" order="asc" />
|
||||
<list_count var="list_count" default="list_count" />
|
||||
|
|
|
|||
8
modules/comment/queries/getDistinctModules.xml
Normal file
8
modules/comment/queries/getDistinctModules.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<query id="getDistinctModules" action="select">
|
||||
<tables>
|
||||
<table name="comments" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="DISTINCT(module_srl)" />
|
||||
</columns>
|
||||
</query>
|
||||
|
|
@ -6,9 +6,11 @@
|
|||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="in" column="module_srl" var="module_srl" filter="number" />
|
||||
<condition operation="equal" column="status" var="status" pipe="and" />
|
||||
<condition operation="in" column="module_srl" var="module_srl" filter="number" pipe="and" />
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="status" order="desc" />
|
||||
<index var="sort_index" default="list_order" order="asc" />
|
||||
<list_count var="list_count" default="20" />
|
||||
</navigation>
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
<condition operation="in" column="module_srl" var="s_module_srl" />
|
||||
<condition operation="notin" column="module_srl" var="exclude_module_srl" pipe="and" />
|
||||
<condition operation="equal" column="is_secret" var="s_is_secret" pipe="and" />
|
||||
<condition operation="equal" column="status" var="s_is_published" pipe="and" />
|
||||
<group pipe="and">
|
||||
<condition operation="like" column="content" var="s_content" pipe="or" />
|
||||
<condition operation="like" column="user_name" var="s_user_name" pipe="or" />
|
||||
|
|
|
|||
|
|
@ -17,12 +17,13 @@
|
|||
<column name="user_id" var="user_id" default="" />
|
||||
<column name="user_name" var="user_name" default="" />
|
||||
<column name="member_srl" var="member_srl" default="0" filter="number" />
|
||||
<column name="email_address" var="email_address" filter="email" maxlength="250" />
|
||||
<column name="homepage" var="homepage" filter="homepage" maxlength="250" />
|
||||
<column name="email_address" var="email_address" filter="email" maxlength="250" default="" />
|
||||
<column name="homepage" var="homepage" filter="homepage" maxlength="250" default="" />
|
||||
<column name="uploaded_count" var="uploaded_count" default="0" />
|
||||
<column name="regdate" var="regdate" default="curdate()" />
|
||||
<column name="last_update" var="last_update" default="curdate()" />
|
||||
<column name="ipaddress" var="ipaddress" default="ipaddress()" />
|
||||
<column name="list_order" var="list_order" default="0" />
|
||||
<column name="status" var="status" notnull="notnull" default="0" />
|
||||
</columns>
|
||||
</query>
|
||||
|
|
|
|||
12
modules/comment/queries/updatePublishedStatus.xml
Normal file
12
modules/comment/queries/updatePublishedStatus.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<query id="updatePublishedStatus" action="update">
|
||||
<tables>
|
||||
<table name="comments" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="status" var="status" notnull="notnull" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="in" column="comment_srl" var="comment_srls_list" notnull="notnull" pipe="or" />
|
||||
<condition operation="in" column="parent_srl" var="comment_srls_list" notnull="notnull" pipe="or" />
|
||||
</conditions>
|
||||
</query>
|
||||
|
|
@ -20,4 +20,5 @@
|
|||
<column name="last_update" type="date" index="idx_last_update" />
|
||||
<column name="ipaddress" type="varchar" size="128" notnull="notnull" index="idx_ipaddress" />
|
||||
<column name="list_order" type="number" size="11" notnull="notnull" index="idx_list_order" />
|
||||
<column name="status" type="number" size="1" default="1" notnull="notnull" index="idx_status" />
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
<!--#include("header.html")-->
|
||||
<script type="text/javascript">
|
||||
xe.lang.msg_empty_search_target = '{$lang->msg_empty_search_target}';
|
||||
xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
|
||||
|
|
@ -10,9 +11,21 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
|
|||
<h1 class="h1">{$lang->comment}</h1>
|
||||
<div class="table even">
|
||||
<div class="cnb">
|
||||
<a href="{getUrl('','act','dispCommentAdminList', 'Y')}" <!--@if($search_keyword == '')-->class="active"<!--@end-->>{$lang->all}</a>
|
||||
<a href="{getUrl('search_keyword','','act','dispCommentAdminList', 'Y')}" <!--@if($search_keyword == '')-->class="active"<!--@end-->>{$lang->all}</a>
|
||||
| <a href="{getUrl('search_target','is_secret','search_keyword', 'N')}" <!--@if($search_target == 'is_secret' && $search_keyword == 'N')-->class="active"<!--@end-->>{$secret_name_list['N']}</a>
|
||||
| <a href="{getUrl('search_target','is_secret','search_keyword', 'Y')}" <!--@if($search_target == 'is_secret' && $search_keyword == 'Y')-->class="active"<!--@end-->>{$secret_name_list['Y']}</a>
|
||||
| <a href="{getUrl('search_target','is_published','search_keyword', 'N')}" <!--@if($search_target == 'is_published' && $search_keyword == 'N')-->class="active"<!--@end-->>{$lang->published_name_list['N']}</a>
|
||||
| <a href="{getUrl('search_target','is_published','search_keyword', 'Y')}" <!--@if($search_target == 'is_published' && $search_keyword == 'Y')-->class="active"<!--@end-->>{$lang->published_name_list['Y']}</a>
|
||||
|
||||
<block cond="$modules_list">
|
||||
| <label for="comment_modules" <!--@if($search_target == 'module')-->class="active"<!--@end-->>Select Module:
|
||||
<select id="comment_modules" name="comment_modules" onchange="location.href='{getUrl('search_target','module','search_keyword','')}&search_keyword='+this.value">
|
||||
<option></option>
|
||||
<!--@foreach($modules_list as $key => $node)-->
|
||||
<option value="{$key}"<!--@if($key==$search_keyword)-->selected<!--@end-->>{$node}</option>
|
||||
<!--@end-->
|
||||
</select></label>
|
||||
</block>
|
||||
</div>
|
||||
<table width="100%" border="1" cellspacing="0" id="commentListTable">
|
||||
<caption>
|
||||
|
|
@ -22,6 +35,10 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
|
|||
{$secret_name_list['N']}
|
||||
<!--@elseif($search_target == 'is_secret' && $search_keyword == 'Y')-->
|
||||
{$secret_name_list['Y']}
|
||||
<!--@elseif($search_target == 'is_published' && $search_keyword == 'N')-->
|
||||
{$published_name_list['N']}
|
||||
<!--@elseif($search_target == 'is_published' && $search_keyword == 'Y')-->
|
||||
{$published_name_list['Y']}
|
||||
<!--@end-->
|
||||
({number_format($total_count)})
|
||||
<div class="side">
|
||||
|
|
@ -31,22 +48,24 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
|
|||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="text">{$lang->comment}</th>
|
||||
<th scope="col">{$lang->writer}</th>
|
||||
<th scope="col">{$lang->cmd_vote}(+/-)</th>
|
||||
<th scope="col">{$lang->date}</th>
|
||||
<th scope="col">{$lang->ipaddress}</th>
|
||||
<th scope="col">{$lang->status}</th>
|
||||
<th scope="col" class="nowr">{$lang->writer}</th>
|
||||
<th scope="col" class="nowr">{$lang->cmd_vote}(+/-)</th>
|
||||
<th scope="col" class="nowr">{$lang->date}</th>
|
||||
<th scope="col" class="nowr">{$lang->ipaddress}</th>
|
||||
<th scope="col" class="nowr">{$lang->status}</th>
|
||||
<th scope="col">{$lang->published}</th>
|
||||
<th scope="col"><input type="checkbox" data-name="cart" title="Check All" /></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<th scope="col" class="text">{$lang->comment}</th>
|
||||
<th scope="col">{$lang->writer}</th>
|
||||
<th scope="col">{$lang->cmd_vote}(+/-)</th>
|
||||
<th scope="col">{$lang->date}</th>
|
||||
<th scope="col">{$lang->ipaddress}</th>
|
||||
<th scope="col">{$lang->status}</th>
|
||||
<th scope="col" class="nowr">{$lang->writer}</th>
|
||||
<th scope="col" class="nowr">{$lang->cmd_vote}(+/-)</th>
|
||||
<th scope="col" class="nowr">{$lang->date}</th>
|
||||
<th scope="col" class="nowr">{$lang->ipaddress}</th>
|
||||
<th scope="col" class="nowr">{$lang->status}</th>
|
||||
<th scope="col">{$lang->published}</th>
|
||||
<th scope="col"><input type="checkbox" data-name="cart" title="Check All" /></th>
|
||||
</tr>
|
||||
</tfoot>
|
||||
|
|
@ -55,11 +74,12 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
|
|||
{@ $comment = cut_str(trim(strip_tags($val->content)), 200, '...')}
|
||||
<tr>
|
||||
<td class="text"><a href="{getUrl('','document_srl',$val->document_srl)}#comment_{$val->comment_srl}" target="_blank"><!--@if(strlen($comment))-->{$comment}<!--@else--><em>{$lang->no_text_comment}</em><!--@end--></a></td>
|
||||
<td><a href="#popup_menu_area" class="member_{$val->member_srl}">{$val->nick_name}</a></td>
|
||||
<td>0/0</td>
|
||||
<td>{(zdate($val->regdate,"Y-m-d\nH:i:s"))}</td>
|
||||
<td><a href="{getUrl('search_target','ipaddress','search_keyword',$val->ipaddress)}">{$val->ipaddress}</a></td>
|
||||
<td><!--@if($val->isSecret())-->{$secret_name_list['Y']}<!--@else-->{$secret_name_list['N']}<!--@end--></td>
|
||||
<td class="nowr"><a href="#popup_menu_area" class="member_{$val->member_srl}">{$val->nick_name}</a></td>
|
||||
<td class="nowr">0/0</td>
|
||||
<td class="nowr">{(zdate($val->regdate,"Y-m-d\nH:i:s"))}</td>
|
||||
<td class="nowr"><a href="{getUrl('search_target','ipaddress','search_keyword',$val->ipaddress)}">{$val->ipaddress}</a></td>
|
||||
<td class="nowr"><!--@if($val->isSecret())-->{$secret_name_list['Y']}<!--@else-->{$secret_name_list['N']}<!--@end--></td>
|
||||
<td class="nowr"><!--@if($val->status)-->{$lang->published_name_list['Y']}<!--@else-->{$lang->published_name_list['N']}<!--@end--></td>
|
||||
<td><input type="checkbox" name="cart" value="{$val->comment_srl}" /></td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
|
|
@ -76,6 +96,7 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
|
|||
<input type="hidden" name="act" value="procCommentAdminDeleteChecked" />
|
||||
<input type="hidden" name="page" value="{$page}" />
|
||||
<input type="hidden" name="is_trash" value="false" />
|
||||
<input type="hidden" name="will_publish" value="0" />
|
||||
<input type="hidden" name="search_target" value="{$search_target}" />
|
||||
<input type="hidden" name="search_keyword" value="{$search_keyword}" />
|
||||
<h2 class="h2">{$lang->comment_manager}</h2>
|
||||
|
|
@ -87,8 +108,9 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
|
|||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="title">{$lang->comment}</th>
|
||||
<th scope="col">{$lang->writer}</th>
|
||||
<th scope="col">{$lang->status}</th>
|
||||
<th scope="col" class="nowr">{$lang->writer}</th>
|
||||
<th scope="col" class="nowr">{$lang->status}</th>
|
||||
<th scope="col">{$lang->published}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
|
@ -97,9 +119,17 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
|
|||
</div>
|
||||
<p class="q"><label for="message">{$lang->message_notice}</label></p>
|
||||
<p>
|
||||
<textarea cols="42" rows="3" name="message_content" id="message" style="width:98%"></textarea>
|
||||
<textarea rows="8" cols="42" name="message_content" id="message" style="width:98%"></textarea>
|
||||
</p>
|
||||
<div class="btnArea">
|
||||
<!--@if ($search_target=='is_published' && $search_keyword=="N")-->
|
||||
<span class="btn"><button type="submit" name="will_publish" value="1" onclick="doChangePublishedStatus(this.value);">{$lang->cmd_publish}</button></span>
|
||||
<!--@elseif ($search_target=='is_published' && $search_keyword=="Y")-->
|
||||
<span class="btn"><button type="submit" name="will_publish" value="0" onclick="doChangePublishedStatus(this.value);">{$lang->cmd_unpublish}</button></span>
|
||||
<!--@else-->
|
||||
<span class="btn"><button type="submit" name="will_publish" value="1" onclick="doChangePublishedStatus(this.value);">{$lang->cmd_publish}</button></span>
|
||||
<span class="btn"><button type="submit" name="will_publish" value="0" onclick="doChangePublishedStatus(this.value);">{$lang->cmd_unpublish}</button></span>
|
||||
<!--@end-->
|
||||
<span class="btn"><button type="submit" name="is_trash" value="true">{$lang->cmd_trash}</button></span>
|
||||
<span class="btn"><button type="submit" name="is_trash" value="false">{$lang->cmd_delete}</button></span>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -32,6 +32,16 @@
|
|||
<option value="N" selected="selected"|cond="$comment_config->use_vote_down=='N'">{$lang->notuse}</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><label for="use_comment_validation">{$lang->cmd_comment_validation}</label></th>
|
||||
<td>
|
||||
<select name="use_comment_validation">
|
||||
<option value="N" selected="selected"|cond="$comment_config->use_comment_validation=='N'">{$lang->notuse}</option>
|
||||
<option value="Y" selected="selected"|cond="$comment_config->use_comment_validation=='Y'">{$lang->use}</option>
|
||||
</select>
|
||||
<p>{$lang->about_comment_validation}</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
<h3 class="xeAdmin">{$lang->comment} <span class="gray">{$lang->cmd_management}</span></h3>
|
||||
|
||||
<div class="header4 gap1">
|
||||
<div class="header4">
|
||||
<ul class="localNavigation">
|
||||
<li <!--@if($act=='dispCommentAdminList')-->class="on"<!--@end-->><a href="{getUrl('act','dispCommentAdminList')}">{$lang->comment_list}</a></li>
|
||||
<li <!--@if($act=='dispCommentAdminDeclared')-->class="on"<!--@end-->><a href="{getUrl('act','dispCommentAdminDeclared')}">{$lang->cmd_declared_list}</a></li>
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ function completeGetCommentList(ret_obj, response_tags)
|
|||
{
|
||||
var htmlListBuffer = '';
|
||||
var statusNameList = {"N":"Public", "Y":"Secret"};
|
||||
|
||||
var publishedStatusList = {0:'Unpublished', 1:'Published'};
|
||||
if(ret_obj['comment_list'] == null)
|
||||
{
|
||||
htmlListBuffer = '<tr>' +
|
||||
|
|
@ -56,8 +56,9 @@ function completeGetCommentList(ret_obj, response_tags)
|
|||
var objComment = comment_list[x];
|
||||
htmlListBuffer += '<tr>' +
|
||||
'<td class="title">'+ objComment.content +'</td>' +
|
||||
'<td>'+ objComment.nick_name +'</td>' +
|
||||
'<td>'+ statusNameList[objComment.is_secret] +'</td>' +
|
||||
'<td class="nowr">'+ objComment.nick_name +'</td>' +
|
||||
'<td class="nowr">'+ statusNameList[objComment.is_secret] +'</td>' +
|
||||
'<td>'+ publishedStatusList[objComment.status] +'</td>' +
|
||||
'</tr>' +
|
||||
'<input type="hidden" name="cart[]" value="'+objComment.comment_srl+'" />';
|
||||
}
|
||||
|
|
@ -66,6 +67,16 @@ function completeGetCommentList(ret_obj, response_tags)
|
|||
jQuery('#commentManageListTable>tbody').html(htmlListBuffer);
|
||||
}
|
||||
|
||||
function doChangePublishedStatus(new_status)
|
||||
{
|
||||
container_div = jQuery("#listManager");
|
||||
var act = container_div.find("input[name=act]");
|
||||
var will_publish = container_div.find("input[name=will_publish]");
|
||||
var action = "procCommentAdminChangePublishedStatusChecked";
|
||||
will_publish.val(new_status);
|
||||
act.val(action);
|
||||
}
|
||||
|
||||
function checkSearch(form)
|
||||
{
|
||||
if(form.search_target.value == '')
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@
|
|||
if($logged_info->is_admin != 'Y') {
|
||||
if($receiver_member_info->allow_message == 'F') {
|
||||
if(!$oCommunicationModel->isFriend($receiver_member_info->member_srl)) return new object(-1, 'msg_allow_message_to_friend');
|
||||
} elseif($receiver_member_info->allow_messge == 'N') {
|
||||
} elseif($receiver_member_info->allow_message == 'N') {
|
||||
return new object(-1, 'msg_disallow_message');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,6 +34,11 @@
|
|||
// Error appears if not logged-in
|
||||
if(!Context::get('is_logged')) return $this->stop('msg_not_logged');
|
||||
$logged_info = Context::get('logged_info');
|
||||
if(!array_key_exists('dispCommunicationMessages', $logged_info->menu_list))
|
||||
{
|
||||
return $this->stop('msg_invalid_request');
|
||||
}
|
||||
|
||||
// Set the variables
|
||||
$message_srl = Context::get('message_srl');
|
||||
$message_type = Context::get('message_type');
|
||||
|
|
@ -106,8 +111,13 @@
|
|||
if(!Context::get('is_logged')) return $this->stop('msg_not_logged');
|
||||
$logged_info = Context::get('logged_info');
|
||||
// get receipient's information
|
||||
|
||||
// check inalid request
|
||||
$receiver_srl = Context::get('receiver_srl');
|
||||
if(!$receiver_srl || $logged_info->member_srl == $receiver_srl) return $this->stop('msg_not_logged');
|
||||
if(!$receiver_srl) return $this->stop('msg_invalid_request');
|
||||
|
||||
// check receiver and sender are same
|
||||
if($logged_info->member_srl == $receiver_srl) return $this->stop('msg_cannot_send_to_yourself');
|
||||
// get message_srl of the original message if it is a reply
|
||||
$message_srl = Context::get('message_srl');
|
||||
if($message_srl) {
|
||||
|
|
@ -120,6 +130,11 @@
|
|||
}
|
||||
|
||||
$receiver_info = $oMemberModel->getMemberInfoByMemberSrl($receiver_srl);
|
||||
if(!$receiver_info)
|
||||
{
|
||||
return $this->stop('msg_invalid_request');
|
||||
}
|
||||
|
||||
Context::set('receiver_info', $receiver_info);
|
||||
// set a signiture by calling getEditor of the editor module
|
||||
$oEditorModel = &getModel('editor');
|
||||
|
|
|
|||
|
|
@ -277,6 +277,11 @@
|
|||
<value xml:lang="tr"><![CDATA[Mesaj yok]]></value>
|
||||
<value xml:lang="vi"><![CDATA[Không có tin nhắn nào.]]></value>
|
||||
</item>
|
||||
<item name="msg_cannot_send_to_yourself">
|
||||
<value xml:lang="ko"><![CDATA[자기 자신에게 쪽지를 보낼 수 없습니다.]]></value>
|
||||
<value xml:lang="en"><![CDATA[Cannot send a message to yourself.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[自分自身へのメッセージ送信はできません。]]></value>
|
||||
</item>
|
||||
<item name="message_received">
|
||||
<value xml:lang="ko"><![CDATA[쪽지가 왔습니다.]]></value>
|
||||
<value xml:lang="en"><![CDATA[You have a new message.]]></value>
|
||||
|
|
@ -354,4 +359,4 @@
|
|||
<value xml:lang="en"><![CDATA[Send a message to the author about this. If you don't write a message, it is not sent.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[作成者にメッセージを送信し、知らせます。作成しなければ送信されません。]]></value>
|
||||
</item>
|
||||
</lang>
|
||||
</lang>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<option value="{$val->friend_group_srl}" <!--@if($val->friend_group_srl == $friend_group_srl)-->selected="selected"<!--@end--> >{$val->title}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<button type="button" onclick="doRenameFriendGroup();return false;">{$lang->cmd_modify}</button>
|
||||
<button type="button" onclick="doRenameFriendGroup();return false;">{$lang->cmd_modify}...</button>
|
||||
<button type="button" onclick="doDeleteFriendGroup();return false;">{$lang->cmd_delete}</button>
|
||||
<a href="{getUrl('','module','communication','act','dispCommunicationAddFriendGroup')}" onclick="popopen(this.href);return false;">{$lang->cmd_add_friend_group}</a>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@
|
|||
</th>
|
||||
<th scope="col">{$lang->regdate}</th>
|
||||
<th scope="col">{$lang->readed_date}</th>
|
||||
<th scope="col"><input name="check_all" type="checkbox" onclick="XE.checkboxToggleAll('message_srl_list', { wrap:'fo_message_list' });" /></th>
|
||||
<th scope="col"><input name="check_all" type="checkbox" onclick="XE.checkboxToggleAll('message_srl_list[]', { wrap:'fo_message_list' }); return false;" /></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
</div>
|
||||
<form ruleset="sendMessage" action="./" method="get">
|
||||
<form ruleset="sendMessage" action="./" method="post">
|
||||
<input type="hidden" name="module" value="communication" />
|
||||
<input type="hidden" name="act" value="procCommunicationSendMessage" />
|
||||
<input type="hidden" name="content" value="{htmlspecialchars($source_message->content)}" />
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@
|
|||
<title xml:lang="es">Document</title>
|
||||
<title xml:lang="ru">Document</title>
|
||||
<title xml:lang="fr">Document</title>
|
||||
<title xml:lang="zh-TW">Document</title>
|
||||
<title xml:lang="zh-TW">文章</title>
|
||||
<title xml:lang="vi">Document</title>
|
||||
<title xml:lang="mn">Document</title>
|
||||
<title xml:lang="tr">Document</title>
|
||||
|
|
|
|||
|
|
@ -183,6 +183,31 @@
|
|||
$oDB = &DB::getInstance();
|
||||
$oDB->begin();
|
||||
|
||||
$triggerObj->document_srls = implode(',',$document_srl_list);
|
||||
$triggerObj->module_srl = $module_srl;
|
||||
$triggerObj->category_srl = $category_srl;
|
||||
// Call a trigger (before)
|
||||
$output = ModuleHandler::triggerCall('document.copyDocumentModule', 'before', $triggerObj);
|
||||
if(!$output->toBool()) {
|
||||
$oDB->rollback();
|
||||
return $output;
|
||||
}
|
||||
|
||||
$extraVarsList = $oDocumentModel->getDocumentExtraVarsFromDB($document_srl_list);
|
||||
$extraVarsListByDocumentSrl = array();
|
||||
if(is_array($extraVarsList->data))
|
||||
{
|
||||
foreach($extraVarsList->data AS $key=>$value)
|
||||
{
|
||||
if(!isset($extraVarsListByDocumentSrl[$value->document_srl]))
|
||||
{
|
||||
$extraVarsListByDocumentSrl[$value->document_srl] = array();
|
||||
}
|
||||
|
||||
array_push($extraVarsListByDocumentSrl[$value->document_srl], $value);
|
||||
}
|
||||
}
|
||||
|
||||
for($i=count($document_srl_list)-1;$i>=0;$i--) {
|
||||
$document_srl = $document_srl_list[$i];
|
||||
$oDocument = $oDocumentModel->getDocument($document_srl);
|
||||
|
|
@ -190,6 +215,18 @@
|
|||
|
||||
$obj = null;
|
||||
$obj = $oDocument->getObjectVars();
|
||||
|
||||
$extraVars = $extraVarsListByDocumentSrl[$document_srl];
|
||||
if($module_srl == $obj->module_srl)
|
||||
{
|
||||
if(is_array($extraVars))
|
||||
{
|
||||
foreach($extraVars as $extraItem)
|
||||
{
|
||||
if($extraItem->var_idx >= 0) $obj->{'extra_vars'.$extraItem->var_idx} = $extraItem->value;
|
||||
}
|
||||
}
|
||||
}
|
||||
$obj->module_srl = $module_srl;
|
||||
$obj->document_srl = getNextSequence();
|
||||
$obj->category_srl = $category_srl;
|
||||
|
|
@ -224,6 +261,24 @@
|
|||
$oDB->rollback();
|
||||
return $output;
|
||||
}
|
||||
|
||||
// copy multi language contents
|
||||
if(is_array($extraVars))
|
||||
{
|
||||
foreach($extraVars AS $key=>$value)
|
||||
{
|
||||
if($value->idx >= 0 && $value->lang_code == Context::getLangType())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if( $value->var_idx < 0 || ($module_srl == $value->module_srl && $value->var_idx >= 0) )
|
||||
{
|
||||
$oDocumentController->insertDocumentExtraVar($value->module_srl, $obj->document_srl, $value->var_idx, $value->value, $value->eid, $value->lang_code);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Move the comments
|
||||
if($oDocument->getCommentCount()) {
|
||||
$oCommentModel = &getModel('comment');
|
||||
|
|
@ -293,6 +348,14 @@
|
|||
|
||||
$copied_srls[$document_srl] = $obj->document_srl;
|
||||
}
|
||||
|
||||
// Call a trigger (before)
|
||||
$output = ModuleHandler::triggerCall('document.copyDocumentModule', 'after', $triggerObj);
|
||||
if(!$output->toBool()) {
|
||||
$oDB->rollback();
|
||||
return $output;
|
||||
}
|
||||
|
||||
$oDB->commit();
|
||||
|
||||
$output = new Object();
|
||||
|
|
|
|||
|
|
@ -112,6 +112,9 @@
|
|||
// 2011. 10. 25 status index check
|
||||
if(!$oDB->isIndexExists("documents", "idx_module_status")) return true;
|
||||
|
||||
// 2012. 02. 27 Add a trigger to copy extra keys when the module is copied
|
||||
if(!$oModuleModel->getTrigger('module.procModuleAdminCopyModule', 'document', 'controller', 'triggerCopyModuleExtraKeys', 'after')) return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -293,6 +296,12 @@
|
|||
if(!$oDB->isIndexExists("documents", "idx_module_status"))
|
||||
$oDB->addIndex("documents", "idx_module_status", array("module_srl","status"));
|
||||
|
||||
// 2012. 02. 27 Add a trigger to copy extra keys when the module is copied
|
||||
if(!$oModuleModel->getTrigger('module.procModuleAdminCopyModule', 'document', 'controller', 'triggerCopyModuleExtraKeys', 'after'))
|
||||
{
|
||||
$oModuleController->insertTrigger('module.procModuleAdminCopyModule', 'document', 'controller', 'triggerCopyModuleExtraKeys', 'after');
|
||||
}
|
||||
|
||||
return new Object(0,'success_updated');
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -113,8 +113,8 @@ class documentController extends document {
|
|||
$oDocumentController = &getController('document');
|
||||
$output = $oDocumentController->deleteModuleCategory($module_srl);
|
||||
if(!$output->toBool()) return $output;
|
||||
// Delete extra variable
|
||||
$this->deleteDocumentExtraVars($module_srl);
|
||||
// Delete extra key and variable, because module deleted
|
||||
$this->deleteDocumentExtraKeys($module_srl);
|
||||
|
||||
// remove aliases
|
||||
$this->deleteDocumentAliasByModule($module_srl);
|
||||
|
|
@ -166,6 +166,10 @@ class documentController extends document {
|
|||
// Set to 0 if the category_srl doesn't exist
|
||||
if($obj->category_srl) {
|
||||
$category_list = $oDocumentModel->getCategoryList($obj->module_srl);
|
||||
if(!$category_list[$obj->category_srl]->grant)
|
||||
{
|
||||
return new Object(-1, 'msg_not_permitted');
|
||||
}
|
||||
if(!$category_list[$obj->category_srl]) $obj->category_srl = 0;
|
||||
}
|
||||
// Set the read counts and update order.
|
||||
|
|
@ -707,10 +711,41 @@ class documentController extends document {
|
|||
if(!$module_srl) return new Object(-1,'msg_invalid_request');
|
||||
$obj->module_srl = $module_srl;
|
||||
if(!is_null($var_idx)) $obj->var_idx = $var_idx;
|
||||
$output = executeQuery('document.deleteDocumentExtraKeys', $obj);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
return executeQuery('document.deleteDocumentExtraVars', $obj);
|
||||
$oDB = DB::getInstance();
|
||||
$oDB->begin();
|
||||
|
||||
$output = $oDB->executeQuery('document.deleteDocumentExtraKeys', $obj);
|
||||
if(!$output->toBool())
|
||||
{
|
||||
$oDB->rollback();
|
||||
return $output;
|
||||
}
|
||||
|
||||
$output = $oDB->executeQuery('document.updateDocumentExtraKeyIdxOrder', $obj);
|
||||
if(!$output->toBool())
|
||||
{
|
||||
$oDB->rollback();
|
||||
return $output;
|
||||
}
|
||||
|
||||
$output = executeQuery('document.deleteDocumentExtraVars', $obj);
|
||||
if(!$output->toBool())
|
||||
{
|
||||
$oDB->rollback();
|
||||
return $output;
|
||||
}
|
||||
|
||||
$output = $oDB->executeQuery('document.updateDocumentExtraVarIdxOrder', $obj);
|
||||
if(!$output->toBool())
|
||||
{
|
||||
$oDB->rollback();
|
||||
return $output;
|
||||
}
|
||||
|
||||
$oDB->commit();
|
||||
|
||||
return new Object();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1107,7 +1142,7 @@ class documentController extends document {
|
|||
|
||||
foreach($extra_keys as $idx => $val) {
|
||||
$js_code[] = sprintf('validator.cast("ADD_MESSAGE", ["extra_vars%s","%s"]);', $val->idx, $val->name);
|
||||
if($val->is_required == 'Y' && $logged_info->is_admin != 'Y') $js_code[] = sprintf('validator.cast("ADD_EXTRA_FIELD", ["extra_vars%s", { required:true }]);', $val->idx);
|
||||
if($val->is_required == 'Y') $js_code[] = sprintf('validator.cast("ADD_EXTRA_FIELD", ["extra_vars%s", { required:true }]);', $val->idx);
|
||||
}
|
||||
|
||||
$js_code[] = '})(jQuery);';
|
||||
|
|
@ -1598,7 +1633,7 @@ class documentController extends document {
|
|||
* @brief Move/ Delete the document in the seession
|
||||
**/
|
||||
function procDocumentManageCheckedDocument() {
|
||||
set_time_limit(50);
|
||||
set_time_limit(0);
|
||||
if(!Context::get('is_logged')) return new Object(-1,'msg_not_permitted');
|
||||
|
||||
$type = Context::get('type');
|
||||
|
|
@ -1831,5 +1866,26 @@ class documentController extends document {
|
|||
if(!$obj->status && $obj->is_secret == 'Y') $obj->status = $this->getConfigStatus('secret');
|
||||
if(!$obj->status && $obj->is_secret != 'Y') $obj->status = $this->getConfigStatus('public');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief copy extra keys when module copied
|
||||
**/
|
||||
function triggerCopyModuleExtraKeys(&$obj)
|
||||
{
|
||||
$oDocumentModel = &getModel('document');
|
||||
$documentExtraKeys = $oDocumentModel->getExtraKeys($obj->originModuleSrl);
|
||||
|
||||
if(is_array($documentExtraKeys) && is_array($obj->moduleSrlList))
|
||||
{
|
||||
$oDocumentController=&getController('document');
|
||||
foreach($obj->moduleSrlList AS $key=>$value)
|
||||
{
|
||||
foreach($documentExtraKeys AS $extraItem)
|
||||
{
|
||||
$oDocumentController->insertDocumentExtraKey($value, $extraItem->idx, $extraItem->name, $extraItem->type, $extraItem->is_required , $extraItem->search , $extraItem->default , $extraItem->desc, $extraItem->eid) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
var $columnList = array();
|
||||
var $allowscriptaccessList = array();
|
||||
var $allowscriptaccessKey = 0;
|
||||
var $uploadedFiles = array();
|
||||
|
||||
function documentItem($document_srl = 0, $load_extra_vars = true, $columnList = array()) {
|
||||
$this->document_srl = $document_srl;
|
||||
|
|
@ -338,13 +339,18 @@
|
|||
}
|
||||
// If additional content information is set
|
||||
if($add_content_info) {
|
||||
$memberSrl = $this->get('member_srl');
|
||||
if($memberSrl < 0)
|
||||
{
|
||||
$memberSrl = 0;
|
||||
}
|
||||
$content = sprintf(
|
||||
'<!--BeforeDocument(%d,%d)--><div class="document_%d_%d xe_content">%s</div><!--AfterDocument(%d,%d)-->',
|
||||
$this->document_srl, $this->get('member_srl'),
|
||||
$this->document_srl, $this->get('member_srl'),
|
||||
$this->document_srl, $memberSrl,
|
||||
$this->document_srl, $memberSrl,
|
||||
$content,
|
||||
$this->document_srl, $this->get('member_srl'),
|
||||
$this->document_srl, $this->get('member_srl')
|
||||
$this->document_srl, $memberSrl,
|
||||
$this->document_srl, $memberSrl
|
||||
);
|
||||
// Add xe_content class although accessing content is not required
|
||||
} else {
|
||||
|
|
@ -474,7 +480,7 @@
|
|||
|
||||
function getExtraValueHTML($idx) {
|
||||
$extra_vars = $this->getExtraVars();
|
||||
if(array_key_exists($idx,$extra_vars)){
|
||||
if(is_array($extra_vars) && array_key_exists($idx,$extra_vars)){
|
||||
return $extra_vars[$idx]->getValueHTML();
|
||||
}else{
|
||||
return '';
|
||||
|
|
@ -518,7 +524,14 @@
|
|||
if(!$this->getCommentCount()) return;
|
||||
if(!$this->isGranted() && $this->isSecret()) return;
|
||||
// cpage is a number of comment pages
|
||||
$cpage = Context::get('cpage');
|
||||
$cpageStr = sprintf('%d_cpage', $this->document_srl);
|
||||
$cpage = Context::get($cpageStr);
|
||||
|
||||
if(!$cpage)
|
||||
{
|
||||
$cpage = Context::get('cpage');
|
||||
}
|
||||
|
||||
// Get a list of comments
|
||||
$oCommentModel = &getModel('comment');
|
||||
$output = $oCommentModel->getCommentList($this->document_srl, $cpage, $is_admin);
|
||||
|
|
@ -526,6 +539,7 @@
|
|||
// Create commentItem object from a comment list
|
||||
// If admin priviledge is granted on parent posts, you can read its child posts.
|
||||
$accessible = array();
|
||||
$comment_list = array();
|
||||
foreach($output->data as $key => $val) {
|
||||
$oCommentItem = new commentItem();
|
||||
$oCommentItem->setAttribute($val);
|
||||
|
|
@ -538,6 +552,7 @@
|
|||
$comment_list[$val->comment_srl] = $oCommentItem;
|
||||
}
|
||||
// Variable setting to be displayed on the skin
|
||||
Context::set($cpageStr, $output->page_navigation->cur_page);
|
||||
Context::set('cpage', $output->page_navigation->cur_page);
|
||||
if($output->total_page>1) $this->comment_page_navigation = $output->page_navigation;
|
||||
|
||||
|
|
@ -725,16 +740,21 @@
|
|||
return $this->get('uploaded_count')? true : false;
|
||||
}
|
||||
|
||||
function getUploadedFiles() {
|
||||
if(!$this->document_srl) return;
|
||||
function getUploadedFiles($sortIndex = 'file_srl')
|
||||
{
|
||||
if(!$this->document_srl) return;
|
||||
|
||||
if($this->isSecret() && !$this->isGranted()) return;
|
||||
if(!$this->get('uploaded_count')) return;
|
||||
if($this->isSecret() && !$this->isGranted()) return;
|
||||
if(!$this->get('uploaded_count')) return;
|
||||
|
||||
$oFileModel = &getModel('file');
|
||||
$file_list = $oFileModel->getFiles($this->document_srl, $is_admin);
|
||||
return $file_list;
|
||||
}
|
||||
if(!$this->uploadedFiles[$sortIndex])
|
||||
{
|
||||
$oFileModel = &getModel('file');
|
||||
$this->uploadedFiles[$sortIndex] = $oFileModel->getFiles($this->document_srl, array(), $sortIndex);
|
||||
}
|
||||
|
||||
return $this->uploadedFiles[$sortIndex];
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return Editor html
|
||||
|
|
@ -831,5 +851,23 @@
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function getTranslationLangCodes()
|
||||
{
|
||||
$obj->document_srl = $this->document_srl;
|
||||
// -2 is an index for content. We are interested if content has other translations.
|
||||
$obj->var_idx = -2;
|
||||
$output = executeQueryArray('document.getDocumentTranslationLangCodes', $obj);
|
||||
|
||||
if (!$output->data)
|
||||
{
|
||||
$output->data = array();
|
||||
}
|
||||
// add original page's lang code as well
|
||||
$origLangCode->lang_code = $this->getLangCode();
|
||||
$output->data[] = $origLangCode;
|
||||
|
||||
return $output->data;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -19,6 +19,18 @@
|
|||
return $_SESSION['own_document'][$document_srl];
|
||||
}
|
||||
|
||||
function getDocumentExtraVarsFromDB($documentSrls)
|
||||
{
|
||||
if(!is_array($documentSrls) || count($documentSrls) == 0)
|
||||
{
|
||||
return new Object(-1, 'msg_invalid_request');
|
||||
}
|
||||
|
||||
$args->document_srl = $documentSrls;
|
||||
$output = executeQueryArray('document.getDocumentExtraVars', $args);
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief extra variables for each article will not be processed bulk select and apply the macro city
|
||||
**/
|
||||
|
|
@ -36,8 +48,8 @@
|
|||
// If the document number, return detected
|
||||
if(!count($document_srls)) return;
|
||||
// Expand variables mijijeongdoen article about a current visitor to the extension of the language code, the search variable
|
||||
$obj->document_srl = implode(',',$document_srls);
|
||||
$output = executeQueryArray('document.getDocumentExtraVars', $obj);
|
||||
//$obj->document_srl = implode(',',$document_srls);
|
||||
$output = $this->getDocumentExtraVarsFromDB($document_srls);
|
||||
if($output->toBool() && $output->data) {
|
||||
foreach($output->data as $key => $val) {
|
||||
if(!isset($val->value)) continue;
|
||||
|
|
@ -60,6 +72,7 @@
|
|||
// Expand the variable processing
|
||||
if(count($extra_keys)) {
|
||||
foreach($extra_keys as $idx => $key) {
|
||||
$extra_keys[$idx] = clone($key);
|
||||
$val = $vars[$idx];
|
||||
if(isset($val[$user_lang_code])) $v = $val[$user_lang_code];
|
||||
else if(isset($val[$document_lang_code])) $v = $val[$document_lang_code];
|
||||
|
|
@ -329,7 +342,6 @@
|
|||
}
|
||||
// Return if no result or an error occurs
|
||||
if(!$output->toBool()||!count($output->data)) return $output;
|
||||
|
||||
$idx = 0;
|
||||
$data = $output->data;
|
||||
unset($output->data);
|
||||
|
|
@ -417,6 +429,51 @@
|
|||
$obj->sort_index = 'var_idx';
|
||||
$obj->order = 'asc';
|
||||
$output = executeQueryArray('document.getDocumentExtraKeys', $obj);
|
||||
|
||||
// correcting index order
|
||||
$isFixed = FALSE;
|
||||
if(is_array($output->data))
|
||||
{
|
||||
$prevIdx = 0;
|
||||
foreach($output->data as $no => $value)
|
||||
{
|
||||
// case first
|
||||
if($prevIdx == 0 && $value->idx != 1)
|
||||
{
|
||||
$args = new stdClass();
|
||||
$args->module_srl = $module_srl;
|
||||
$args->var_idx = $value->idx;
|
||||
$args->new_idx = 1;
|
||||
executeQuery('document.updateDocumentExtraKeyIdx', $args);
|
||||
executeQuery('document.updateDocumentExtraVarIdx', $args);
|
||||
$prevIdx = 1;
|
||||
$isFixed = TRUE;
|
||||
continue;
|
||||
}
|
||||
|
||||
// case others
|
||||
if($prevIdx > 0 && $prevIdx + 1 != $value->idx)
|
||||
{
|
||||
$args = new stdClass();
|
||||
$args->module_srl = $module_srl;
|
||||
$args->var_idx = $value->idx;
|
||||
$args->new_idx = $prevIdx + 1;
|
||||
executeQuery('document.updateDocumentExtraKeyIdx', $args);
|
||||
executeQuery('document.updateDocumentExtraVarIdx', $args);
|
||||
$prevIdx += 1;
|
||||
$isFixed = TRUE;
|
||||
continue;
|
||||
}
|
||||
|
||||
$prevIdx = $value->idx;
|
||||
}
|
||||
}
|
||||
|
||||
if($isFixed)
|
||||
{
|
||||
$output = executeQueryArray('document.getDocumentExtraKeys', $obj);
|
||||
}
|
||||
|
||||
$oExtraVar->setExtraVarKeys($output->data);
|
||||
$keys = $oExtraVar->getExtraVars();
|
||||
if(!$keys) $keys = array();
|
||||
|
|
@ -572,6 +629,7 @@
|
|||
else $args->regdate = $oDocument->get('regdate');
|
||||
break;
|
||||
case 'voted_count' :
|
||||
case 'blamed_count' :
|
||||
case 'readed_count' :
|
||||
case 'comment_count' :
|
||||
case 'title' :
|
||||
|
|
@ -586,6 +644,34 @@
|
|||
$args->sort_index = $opt->sort_index;
|
||||
$args->order_type = $opt->order_type;
|
||||
|
||||
if($opt->statusList) $args->statusList = $opt->statusList;
|
||||
else
|
||||
{
|
||||
$logged_info = Context::get('logged_info');
|
||||
if($logged_info->is_admin == 'Y' && !$args->module_srl)
|
||||
{
|
||||
$args->statusList = array($this->getConfigStatus('secret'), $this->getConfigStatus('public'), $this->getConfigStatus('temp'));
|
||||
}
|
||||
else
|
||||
{
|
||||
$args->statusList = array($this->getConfigStatus('secret'), $this->getConfigStatus('public'));
|
||||
}
|
||||
}
|
||||
|
||||
// Category is selected, further sub-categories until all conditions
|
||||
if($opt->category_srl)
|
||||
{
|
||||
$categoryList = $this->getCategoryList($opt->module_srl);
|
||||
|
||||
if(array_key_exists($opt->category_srl, $categoryList))
|
||||
{
|
||||
$categoryInfo = $categoryList[$opt->category_srl];
|
||||
|
||||
$args->categorySrlList = $categoryInfo->childs;
|
||||
array_push($args->categorySrlList, $opt->category_srl);
|
||||
}
|
||||
}
|
||||
|
||||
// Guhanhu total number of the article search page
|
||||
$output = executeQuery('document.getDocumentPage', $args);
|
||||
$count = $output->data->count;
|
||||
|
|
@ -816,7 +902,7 @@
|
|||
$extra_keys = $this->getExtraKeys($module_srl);
|
||||
Context::set('extra_keys', $extra_keys);
|
||||
$security = new Security();
|
||||
$security->encodeHTML('extra_keys..name','extra_keys..eid');
|
||||
$security->encodeHTML('extra_keys..eid');
|
||||
|
||||
// Get information of module_grants
|
||||
$oTemplate = &TemplateHandler::getInstance();
|
||||
|
|
@ -880,7 +966,6 @@
|
|||
// tpl template file directly compile and will return a variable and puts it on.
|
||||
$oTemplate = &TemplateHandler::getInstance();
|
||||
$tpl = $oTemplate->compile('./modules/document/tpl', 'category_info');
|
||||
$tpl = str_replace("\n",'',$tpl);
|
||||
// Changing user-defined language
|
||||
$oModuleController = &getController('module');
|
||||
$oModuleController->replaceDefinedLangCode($tpl);
|
||||
|
|
@ -983,6 +1068,7 @@
|
|||
case 'member_srl' :
|
||||
case 'readed_count' :
|
||||
case 'voted_count' :
|
||||
case 'blamed_count' :
|
||||
case 'comment_count' :
|
||||
case 'trackback_count' :
|
||||
case 'uploaded_count' :
|
||||
|
|
@ -1065,7 +1151,7 @@
|
|||
{
|
||||
$sortIndex = $obj->sort_index;
|
||||
$isExtraVars = false;
|
||||
if(!in_array($sortIndex, array('list_order','regdate','last_update','update_order','readed_count','voted_count','comment_count','trackback_count','uploaded_count','title','category_srl')))
|
||||
if(!in_array($sortIndex, array('list_order','regdate','last_update','update_order','readed_count','voted_count','blamed_count','comment_count','trackback_count','uploaded_count','title','category_srl')))
|
||||
{
|
||||
// get module_srl extra_vars list
|
||||
if ($load_extra_vars)
|
||||
|
|
@ -1145,6 +1231,9 @@
|
|||
case 'uploaded_count' :
|
||||
$args->{"s_".$search_target} = (int)$search_keyword;
|
||||
break;
|
||||
case 'blamed_count' :
|
||||
$args->{"s_".$search_target} = (int)$search_keyword * -1;
|
||||
break;
|
||||
case 'regdate' :
|
||||
case 'last_update' :
|
||||
case 'ipaddress' :
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
<value xml:lang="en"><![CDATA[Documents List]]></value>
|
||||
<value xml:lang="jp"><![CDATA[ドキュメントリスト]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[主题列表]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[主題列表]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[文章列表]]></value>
|
||||
<value xml:lang="fr"><![CDATA[Liste des Documents]]></value>
|
||||
<value xml:lang="ru"><![CDATA[Список документов]]></value>
|
||||
<value xml:lang="es"><![CDATA[Document list]]></value>
|
||||
|
|
@ -28,7 +28,7 @@
|
|||
<value xml:lang="en"><![CDATA[Crop (to a specific size)]]></value>
|
||||
<value xml:lang="jp"><![CDATA[トリミングする]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[裁减(按指定大小裁剪图片)]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[裁減]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[裁切]]></value>
|
||||
<value xml:lang="fr"><![CDATA[Rogner]]></value>
|
||||
<value xml:lang="ru"><![CDATA[Обрезать]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Kırpılmış]]></value>
|
||||
|
|
@ -248,7 +248,7 @@
|
|||
<value xml:lang="en"><![CDATA[Invert Selection]]></value>
|
||||
<value xml:lang="jp"><![CDATA[選択項目反転]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[反选]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[反選]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[反向選擇]]></value>
|
||||
<value xml:lang="fr"><![CDATA[Renverser les choisis]]></value>
|
||||
<value xml:lang="ru"><![CDATA[Перевернуть выбранные объекты]]></value>
|
||||
<value xml:lang="es"><![CDATA[Invertir los elementos seleccionados]]></value>
|
||||
|
|
@ -272,7 +272,7 @@
|
|||
<value xml:lang="en"><![CDATA[I want to]]></value>
|
||||
<value xml:lang="jp"><![CDATA[この書き込みを..]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[将把此主题..]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[將此主題..]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[將此文章..]]></value>
|
||||
<value xml:lang="fr"><![CDATA[Vous voudriez..]]></value>
|
||||
<value xml:lang="ru"><![CDATA[Эту запись...]]></value>
|
||||
<value xml:lang="es"><![CDATA[Usted ..]]></value>
|
||||
|
|
@ -320,7 +320,7 @@
|
|||
<value xml:lang="en"><![CDATA[%d article(s) was(were) deleted.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[%d個の書き込みが削除されました。]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[删除了%d个文章。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[刪除%d個文章。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[刪除 %d 個文章。]]></value>
|
||||
<value xml:lang="fr"><![CDATA[%d article(s) est(sont) supprimé(s)]]></value>
|
||||
<value xml:lang="ru"><![CDATA[%d записей удалено]]></value>
|
||||
<value xml:lang="es"><![CDATA[Total de %d documentos han sido eliminados]]></value>
|
||||
|
|
@ -489,12 +489,15 @@
|
|||
<value xml:lang="tr"><![CDATA[Oylama Sayısı (over)]]></value>
|
||||
<value xml:lang="vi"><![CDATA[Lượt bình chọn]]></value>
|
||||
</item>
|
||||
<item name="blamed_count">
|
||||
<value xml:lang="ko"><![CDATA[비추천 수 (이상)]]></value>
|
||||
</item>
|
||||
<item name="comment_count ">
|
||||
<value xml:lang="ko"><![CDATA[댓글 수 (이상)]]></value>
|
||||
<value xml:lang="en"><![CDATA[Number of Comments (over)]]></value>
|
||||
<value xml:lang="jp"><![CDATA[コメント数(以上)]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[评论数(以上)]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[評論數(以上)]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[回覆數(以上)]]></value>
|
||||
<value xml:lang="fr"><![CDATA[Commentaires (surplus)]]></value>
|
||||
<value xml:lang="ru"><![CDATA[Количество записей (свыше)]]></value>
|
||||
<value xml:lang="es"><![CDATA[Número de comentarios (sobre)]]></value>
|
||||
|
|
@ -554,7 +557,7 @@
|
|||
<value xml:lang="en"><![CDATA[IP Address]]></value>
|
||||
<value xml:lang="jp"><![CDATA[IPアドレス]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[IP 地址]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[IP位址]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[IP 位址]]></value>
|
||||
<value xml:lang="fr"><![CDATA[Adresse IP]]></value>
|
||||
<value xml:lang="ru"><![CDATA[IP-Адрес]]></value>
|
||||
<value xml:lang="es"><![CDATA[Dirección IP]]></value>
|
||||
|
|
@ -566,6 +569,7 @@
|
|||
<value xml:lang="ko"><![CDATA[별칭(Alias)]]></value>
|
||||
<value xml:lang="en"><![CDATA[Alias]]></value>
|
||||
<value xml:lang="jp"><![CDATA[アリアス(Alias)]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[別名]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Diğer Adıyla]]></value>
|
||||
<value xml:lang="vi"><![CDATA[Bí danh]]></value>
|
||||
</item>
|
||||
|
|
@ -604,7 +608,7 @@
|
|||
<value xml:lang="en"><![CDATA[Recycle Bin]]></value>
|
||||
<value xml:lang="jp"><![CDATA[ゴミ箱]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[回收箱]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[垃圾桶]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[回收桶]]></value>
|
||||
<value xml:lang="ru"><![CDATA[Корзина]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Çöp Kutusu]]></value>
|
||||
<value xml:lang="vi"><![CDATA[Thùng rác]]></value>
|
||||
|
|
@ -634,7 +638,7 @@
|
|||
<value xml:lang="en"><![CDATA[Recycle Bin]]></value>
|
||||
<value xml:lang="jp"><![CDATA[ゴミ箱]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[回收箱]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[垃圾桶]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[回收桶]]></value>
|
||||
<value xml:lang="ru"><![CDATA[Корзина]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Çöp Kutusu]]></value>
|
||||
<value xml:lang="vi"><![CDATA[Thùng rác]]></value>
|
||||
|
|
@ -778,7 +782,7 @@
|
|||
<value xml:lang="en"><![CDATA[Successfully moved to Recycle Bin.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[ごみ箱に移動しました。]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[已成功移除到回收箱。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[成功地移到垃圾桶]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[成功地移到回收桶]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Başarıyla silindi]]></value>
|
||||
<value xml:lang="vi"><![CDATA[Đã chuyển tới thùng rác thành công.]]></value>
|
||||
</item>
|
||||
|
|
@ -786,72 +790,85 @@
|
|||
<value xml:lang="ko"><![CDATA[선택된 문서가 없습니다.]]></value>
|
||||
<value xml:lang="en"><![CDATA[There are no selected articles.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[選択された書き込みがありません。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[尚未選擇主題]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[尚未選擇文章]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Hiçbir makale seçilmedi.]]></value>
|
||||
</item>
|
||||
<item name="status">
|
||||
<value xml:lang="ko"><![CDATA[상태]]></value>
|
||||
<value xml:lang="en"><![CDATA[Status]]></value>
|
||||
<value xml:lang="jp"><![CDATA[状態]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[狀態]]></value>
|
||||
</item>
|
||||
<item name="status_name_list" type="array">
|
||||
<item name="PRIVATE">
|
||||
<value xml:lang="ko"><![CDATA[비공개]]></value>
|
||||
<value xml:lang="en"><![CDATA[Private]]></value>
|
||||
<value xml:lang="jp"><![CDATA[非公開]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[不公開]]></value>
|
||||
</item>
|
||||
<item name="PUBLIC">
|
||||
<value xml:lang="ko"><![CDATA[공개]]></value>
|
||||
<value xml:lang="en"><![CDATA[Public]]></value>
|
||||
<value xml:lang="jp"><![CDATA[公開]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[公開]]></value>
|
||||
</item>
|
||||
<item name="SECRET">
|
||||
<value xml:lang="ko"><![CDATA[비밀]]></value>
|
||||
<value xml:lang="en"><![CDATA[Secret]]></value>
|
||||
<value xml:lang="jp"><![CDATA[非公開]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[秘密]]></value>
|
||||
</item>
|
||||
<item name="TEMP">
|
||||
<value xml:lang="ko"><![CDATA[임시]]></value>
|
||||
<value xml:lang="en"><![CDATA[Temporary]]></value>
|
||||
<value xml:lang="jp"><![CDATA[テンポラリ]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[暫存]]></value>
|
||||
</item>
|
||||
</item>
|
||||
<item name="document_manager">
|
||||
<value xml:lang="ko"><![CDATA[선택한 글 관리]]></value>
|
||||
<value xml:lang="en"><![CDATA[Manage selected articles]]></value>
|
||||
<value xml:lang="jp"><![CDATA[選択した書き込みを管理]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[管理所選主題]]></value>
|
||||
</item>
|
||||
<item name="selected_document">
|
||||
<value xml:lang="ko"><![CDATA[선택한 글]]></value>
|
||||
<value xml:lang="en"><![CDATA[Selected articles]]></value>
|
||||
<value xml:lang="jp"><![CDATA[選択した書き込み]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[已選文章數]]></value>
|
||||
</item>
|
||||
<item name="selected_document_move">
|
||||
<value xml:lang="ko"><![CDATA[선택한 글을 다음 위치로 옮기거나 복사할 수 있습니다.]]></value>
|
||||
<value xml:lang="en"><![CDATA[You can move or copy the selected articles to the following position.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[選択した書き込みを次の位置へ移動したり、コピーしたりできます。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[可移動或複製所選擇的文章到下列位置。]]></value>
|
||||
</item>
|
||||
<item name="select_module">
|
||||
<value xml:lang="ko"><![CDATA[모듈을 선택하세요.]]></value>
|
||||
<value xml:lang="en"><![CDATA[Select a module.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[モジュールを選択してください。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[選擇模組]]></value>
|
||||
</item>
|
||||
<item name="select_module_id">
|
||||
<value xml:lang="ko"><![CDATA[모듈 아이디를 선택하세요.]]></value>
|
||||
<value xml:lang="en"><![CDATA[Select a module ID.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[モジュールIDを選択してください。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[選擇模組 ID.]]></value>
|
||||
</item>
|
||||
<item name="select_category">
|
||||
<value xml:lang="ko"><![CDATA[분류를 선택하세요.]]></value>
|
||||
<value xml:lang="en"><![CDATA[Select a category.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[カテゴリを選択してください。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[選擇分類]]></value>
|
||||
</item>
|
||||
<item name="category_description">
|
||||
<value xml:lang="ko"><![CDATA[카테고리 설명]]></value>
|
||||
<value xml:lang="en"><![CDATA[Category Description]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[分類說明]]></value>
|
||||
</item>
|
||||
<item name="no_title_document">
|
||||
<value xml:lang="ko"><![CDATA[제목이 없는 문서입니다.]]></value>
|
||||
<value xml:lang="en"><![CDATA[No title in this document.]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[此文章無標題。]]></value>
|
||||
</item>
|
||||
</lang>
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
<condition operation="equal" column="member_srl" var="s_member_srl" pipe="and" />
|
||||
<condition operation="more" column="readed_count" var="s_readed_count" pipe="or" />
|
||||
<condition operation="more" column="voted_count" var="s_voted_count" pipe="or" />
|
||||
<condition operation="less" column="blamed_count" var="s_blamed_count" pipe="or" />
|
||||
<condition operation="more" column="comment_count" var="s_comment_count" pipe="or" />
|
||||
<condition operation="more" column="trackback_count" var="s_trackback_count" pipe="or" />
|
||||
<condition operation="more" column="uploaded_count" var="s_uploaded_count" pipe="or" />
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@
|
|||
<condition operation="equal" column="member_srl" var="s_member_srl" pipe="and" />
|
||||
<condition operation="more" column="readed_count" var="s_readed_count" pipe="or" />
|
||||
<condition operation="more" column="voted_count" var="s_voted_count" pipe="or" />
|
||||
<condition operation="less" column="blamed_count" var="s_blamed_count" pipe="or" />
|
||||
<condition operation="more" column="comment_count" var="s_comment_count" pipe="or" />
|
||||
<condition operation="more" column="trackback_count" var="s_trackback_count" pipe="or" />
|
||||
<condition operation="more" column="uploaded_count" var="s_uploaded_count" pipe="or" />
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
<condition operation="equal" column="member_srl" var="s_member_srl" pipe="or" />
|
||||
<condition operation="more" column="readed_count" var="s_readed_count" pipe="or" />
|
||||
<condition operation="more" column="voted_count" var="s_voted_count" pipe="or" />
|
||||
<condition operation="less" column="blamed_count" var="s_blamed_count" pipe="or" />
|
||||
<condition operation="more" column="comment_count" var="s_comment_count" pipe="or" />
|
||||
<condition operation="more" column="trackback_count" var="s_trackback_count" pipe="or" />
|
||||
<condition operation="more" column="uploaded_count" var="s_uploaded_count" pipe="or" />
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<query id="getDocumentList" action="select">
|
||||
<query id="getDocumentListExtraSort" action="select">
|
||||
<tables>
|
||||
<table name="documents" alias="d" />
|
||||
<table name="document_extra_vars" alias="ev" />
|
||||
|
|
@ -15,6 +15,7 @@
|
|||
<condition operation="in" column="d.category_srl" var="category_srl" pipe="and" />
|
||||
<condition operation="equal" column="d.is_notice" var="s_is_notice" pipe="and" />
|
||||
<condition operation="equal" column="d.member_srl" var="member_srl" filter="number" pipe="and" />
|
||||
<condition operation="in" column="d.status" var="statusList" pipe="and" />
|
||||
<group pipe="and">
|
||||
<condition operation="more" column="d.list_order" var="division" pipe="and" />
|
||||
<condition operation="below" column="d.list_order" var="last_division" pipe="and" />
|
||||
|
|
@ -32,6 +33,7 @@
|
|||
<condition operation="equal" column="d.member_srl" var="s_member_srl" pipe="or" />
|
||||
<condition operation="more" column="d.readed_count" var="s_readed_count" pipe="or" />
|
||||
<condition operation="more" column="d.voted_count" var="s_voted_count" pipe="or" />
|
||||
<condition operation="less" column="d.blamed_count" var="s_blamed_count" pipe="or" />
|
||||
<condition operation="more" column="d.comment_count" var="s_comment_count" pipe="or" />
|
||||
<condition operation="more" column="d.trackback_count" var="s_trackback_count" pipe="or" />
|
||||
<condition operation="more" column="d.uploaded_count" var="s_uploaded_count" pipe="or" />
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<query id="getDocumentList" action="select">
|
||||
<query id="getDocumentListUseIndex" action="select">
|
||||
<tables>
|
||||
<table name="documents" />
|
||||
</tables>
|
||||
|
|
@ -12,6 +12,7 @@
|
|||
<condition operation="in" column="category_srl" var="category_srl" pipe="and" />
|
||||
<condition operation="equal" column="is_notice" var="s_is_notice" pipe="and" />
|
||||
<condition operation="equal" column="member_srl" var="member_srl" filter="number" pipe="and" />
|
||||
<condition operation="in" column="status" var="statusList" pipe="and" />
|
||||
<group pipe="and">
|
||||
<condition operation="more" column="list_order" var="division" pipe="and" />
|
||||
<condition operation="below" column="list_order" var="last_division" pipe="and" />
|
||||
|
|
@ -28,6 +29,7 @@
|
|||
<condition operation="equal" column="member_srl" var="s_member_srl" pipe="or" />
|
||||
<condition operation="more" column="readed_count" var="s_readed_count" pipe="or" />
|
||||
<condition operation="more" column="voted_count" var="s_voted_count" pipe="or" />
|
||||
<condition operation="less" column="blamed_count" var="s_blamed_count" pipe="or" />
|
||||
<condition operation="more" column="comment_count" var="s_comment_count" pipe="or" />
|
||||
<condition operation="more" column="trackback_count" var="s_trackback_count" pipe="or" />
|
||||
<condition operation="more" column="uploaded_count" var="s_uploaded_count" pipe="or" />
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
<condition operation="equal" column="extra_vars.module_srl" default="documents.module_srl" pipe="and" />
|
||||
<condition operation="equal" column="extra_vars.document_srl" default="documents.document_srl" pipe="and" />
|
||||
<condition operation="equal" column="extra_vars.var_idx" var="var_idx" notnull="notnull" pipe="and" />
|
||||
<condition operation="in" column="documents.status" var="statusList" pipe="and" />
|
||||
<condition operation="like" column="extra_vars.value" var="var_value" notnull="notnull" pipe="and" />
|
||||
</conditions>
|
||||
<navigation>
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
<condition operation="equal" column="documents.category_srl" var="category_srl" pipe="and" />
|
||||
<condition operation="equal" column="documents.document_srl" default="comments.document_srl" notnull="notnull" pipe="and" />
|
||||
<condition operation="equal" column="documents.member_srl" var="member_srl" filter="number" pipe="and" />
|
||||
<condition operation="in" column="documents.status" var="statusList" pipe="and" />
|
||||
<group pipe="and">
|
||||
<condition operation="more" column="documents.list_order" var="division" pipe="and" />
|
||||
<condition operation="below" column="documents.list_order" var="last_division" pipe="and" />
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
<condition operation="equal" column="documents.member_srl" var="member.member_srl" notnull="notnull" pipe="and" />
|
||||
<condition operation="equal" column="documents.module_srl" var="module_srl" filter="number" pipe="and" />
|
||||
<condition operation="equal" column="documents.category_srl" var="category_srl" pipe="and" />
|
||||
<condition operation="in" column="status" var="statusList" pipe="and" />
|
||||
<condition operation="in" column="documents.status" var="statusList" pipe="and" />
|
||||
<group pipe="and">
|
||||
<condition operation="like" column="documents.title" var="s_title" />
|
||||
<condition operation="like" column="documents.content" var="s_content" pipe="or" />
|
||||
|
|
@ -22,6 +22,7 @@
|
|||
<condition operation="equal" column="documents.member_srl" var="s_member_srl" pipe="or" />
|
||||
<condition operation="more" column="documents.readed_count" var="s_readed_count" pipe="or" />
|
||||
<condition operation="more" column="documents.voted_count" var="s_voted_count" pipe="or" />
|
||||
<condition operation="less" column="documents.blamed_count" var="s_blamed_count" pipe="or" />
|
||||
<condition operation="more" column="documents.comment_count" var="s_comment_count" pipe="or" />
|
||||
<condition operation="more" column="documents.trackback_count" var="s_trackback_count" pipe="or" />
|
||||
<condition operation="more" column="documents.uploaded_count" var="s_uploaded_count" pipe="or" />
|
||||
|
|
|
|||
|
|
@ -7,10 +7,13 @@
|
|||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="module_srl" var="module_srl" />
|
||||
<condition operation="in" column="category_srl" var="categorySrlList" pipe="and" />
|
||||
<condition operation="more" column="comment_count" var="comment_count" filter="number" pipe="and" />
|
||||
<condition operation="less" column="comment_count" var="rev_comment_count" filter="number" pipe="and" />
|
||||
<condition operation="more" column="voted_count" var="voted_count" filter="number" pipe="and" />
|
||||
<condition operation="less" column="voted_count" var="rev_voted_count" filter="number" pipe="and" />
|
||||
<condition operation="less" column="blamed_count" var="blamed_count" filter="number" pipe="and" />
|
||||
<condition operation="more" column="blamed_count" var="rev_blamed_count" filter="number" pipe="and" />
|
||||
<condition operation="more" column="readed_count" var="readed_count" filter="number" pipe="and" />
|
||||
<condition operation="less" column="readed_count" var="rev_readed_count" filter="number" pipe="and" />
|
||||
<condition operation="less" column="list_order" var="list_order" filter="number" pipe="and" />
|
||||
|
|
@ -34,6 +37,7 @@
|
|||
<condition operation="equal" column="member_srl" var="s_member_srl" pipe="or" />
|
||||
<condition operation="more" column="readed_count" var="s_readed_count" pipe="or" />
|
||||
<condition operation="more" column="voted_count" var="s_voted_count" pipe="or" />
|
||||
<condition operation="less" column="blamed_count" var="s_blamed_count" pipe="or" />
|
||||
<condition operation="more" column="comment_count" var="s_comment_count" pipe="or" />
|
||||
<condition operation="more" column="trackback_count" var="s_trackback_count" pipe="or" />
|
||||
<condition operation="more" column="uploaded_count" var="s_uploaded_count" pipe="or" />
|
||||
|
|
|
|||
12
modules/document/queries/getDocumentTranslationLangCodes.xml
Normal file
12
modules/document/queries/getDocumentTranslationLangCodes.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<query id="getDocumentTranslationLangCodes" action="select">
|
||||
<tables>
|
||||
<table name="document_extra_vars" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="DISTINCT(lang_code)" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="document_srl" var="document_srl" notnull="notnull" />
|
||||
<condition operation="equal" column="var_idx" var="var_idx" default="-2" notnull="notnull" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
|
|
@ -33,6 +33,7 @@
|
|||
<condition operation="equal" column="documents.member_srl" var="s_member_srl" pipe="or" />
|
||||
<condition operation="more" column="documents.readed_count" var="s_readed_count" pipe="or" />
|
||||
<condition operation="more" column="documents.voted_count" var="s_voted_count" pipe="or" />
|
||||
<condition operation="less" column="documents.blamed_count" var="s_blamed_count" pipe="or" />
|
||||
<condition operation="more" column="documents.comment_count" var="s_comment_count" pipe="or" />
|
||||
<condition operation="more" column="documents.trackback_count" var="s_trackback_count" pipe="or" />
|
||||
<condition operation="more" column="documents.uploaded_count" var="s_uploaded_count" pipe="or" />
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
</tables>
|
||||
<columns>
|
||||
<column name="title" var="title" />
|
||||
<column name="description" var="description" />
|
||||
<column name="description" var="description" default=""/>
|
||||
<column name="list_order" var="list_order" />
|
||||
<column name="last_update" var="last_update" default="curdate()" />
|
||||
<column name="expand" var="expand" />
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<column name="var_type" var="var_type" notnull="notnull" />
|
||||
<column name="var_is_required" var="var_is_required" default="N" notnull="notnull" />
|
||||
<column name="var_search" var="var_search" default="N" notnull="notnull" />
|
||||
<column name="var_default" var="var_default" />
|
||||
<column name="var_default" var="var_default" default="" />
|
||||
<column name="var_desc" var="var_desc" />
|
||||
<column name="eid" var="eid" notnull="notnull" />
|
||||
</columns>
|
||||
|
|
|
|||
12
modules/document/queries/updateDocumentExtraKeyIdxOrder.xml
Normal file
12
modules/document/queries/updateDocumentExtraKeyIdxOrder.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<query id="updateDocumentExtraKeyIdxOrder" action="update">
|
||||
<tables>
|
||||
<table name="document_extra_keys" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="var_idx" default="minus(1)" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="module_srl" var="module_srl" filter="number" notnull="notnull" />
|
||||
<condition operation="excess" column="var_idx" var="var_idx" filter="number" notnull="notnull" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
12
modules/document/queries/updateDocumentExtraVarIdxOrder.xml
Normal file
12
modules/document/queries/updateDocumentExtraVarIdxOrder.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<query id="updateDocumentExtraVarIdxOrder" action="update">
|
||||
<tables>
|
||||
<table name="document_extra_vars" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="var_idx" default="minus(1)" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="module_srl" var="module_srl" filter="number" notnull="notnull" />
|
||||
<condition operation="excess" column="var_idx" var="var_idx" filter="number" notnull="notnull" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
|
|
@ -22,7 +22,7 @@
|
|||
<tr>
|
||||
<th scope="row">{$lang->category_color}</th>
|
||||
<td>
|
||||
<input type="text" name="category_color" value="{htmlspecialchars($category_info->color)}" class="color-indicator inputTypeText" />
|
||||
<input type="text" name="category_color" value="{htmlspecialchars($category_info->color)}" class="color-indicator" />
|
||||
<p>{$lang->about_category_color}</p>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
@ -30,7 +30,7 @@
|
|||
<tr>
|
||||
<th scope="row">{$lang->category_description}</th>
|
||||
<td >
|
||||
<textarea name="category_description" id="category_description" >{htmlspecialchars($category_info->description)}</textarea>
|
||||
<textarea name="category_description" id="category_description" rows="8" cols="42">{htmlspecialchars($category_info->description)}</textarea>
|
||||
<a href="{getUrl('','module','module','act','dispModuleAdminLangcode','target','category_description')}" onclick="popopen(this.href);return false;" class="buttonSet buttonSetting"><span>{$lang->cmd_find_langcode}</span></a>
|
||||
<p>{$lang->about_category_description}</p>
|
||||
</td>
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@
|
|||
<!--%load_js_plugin("ui.tree")-->
|
||||
|
||||
<load target="js/document_category.js" usecdn="true" />
|
||||
<load target="css/document.css" usecdn="true" />
|
||||
<!--%load_js_plugin("ui.colorpicker")-->
|
||||
<script type="text/javascript">
|
||||
var category_title = "{$lang->category}";
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
<!--%import("filter/manage_checked_document.xml")-->
|
||||
<load target="js/document_admin.js" usecdn="true" />
|
||||
<load target="css/document.css" usecdn="true" />
|
||||
<h1 class="h1">{$lang->cmd_manage_document}</h1>
|
||||
<form action="./" method="get" id="fo_management">
|
||||
<input type="hidden" name="module" value="document" />
|
||||
|
|
@ -39,7 +38,7 @@
|
|||
<tr>
|
||||
<th scope="row">{$lang->cmd_send_message}</th>
|
||||
<td>
|
||||
<textarea name="message_content" cols="45" rows="5"></textarea>
|
||||
<textarea name="message_content" rows="8" cols="42"></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -28,22 +28,22 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
|
|||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="title">{$lang->title}</th>
|
||||
<th scope="col">{$lang->writer}</th>
|
||||
<th scope="col">{$lang->cmd_declare}</th>
|
||||
<th scope="col">{$lang->readed_count}</th>
|
||||
<th scope="col">{$lang->cmd_vote}(+/-)</th>
|
||||
<th scope="col">{$lang->date}</th>
|
||||
<th scope="col" class="nowr">{$lang->writer}</th>
|
||||
<th scope="col" class="nowr">{$lang->cmd_declare}</th>
|
||||
<th scope="col" class="nowr">{$lang->readed_count}</th>
|
||||
<th scope="col" class="nowr">{$lang->cmd_vote}(+/-)</th>
|
||||
<th scope="col" class="nowr">{$lang->date}</th>
|
||||
<th scope="col"><input type="checkbox" data-name="cart" title="Check All" /></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<th scope="col" class="title">{$lang->title}</th>
|
||||
<th scope="col">{$lang->writer}</th>
|
||||
<th scope="col">{$lang->cmd_declare}</th>
|
||||
<th scope="col">{$lang->readed_count}</th>
|
||||
<th scope="col">{$lang->cmd_vote}(+/-)</th>
|
||||
<th scope="col">{$lang->date}</th>
|
||||
<th scope="col" class="nowr">{$lang->writer}</th>
|
||||
<th scope="col" class="nowr">{$lang->cmd_declare}</th>
|
||||
<th scope="col" class="nowr">{$lang->readed_count}</th>
|
||||
<th scope="col" class="nowr">{$lang->cmd_vote}(+/-)</th>
|
||||
<th scope="col" class="nowr">{$lang->date}</th>
|
||||
<th scope="col"><input type="checkbox" data-name="cart" title="Check All" /></th>
|
||||
</tr>
|
||||
</tfoot>
|
||||
|
|
@ -51,11 +51,11 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
|
|||
<!--@foreach($document_list as $no => $oDocument)-->
|
||||
<tr>
|
||||
<td class="title"><a href="{getUrl('','document_srl',$oDocument->document_srl)}" target="_blank">{$oDocument->getTitle()}</a></td>
|
||||
<td><a href="#popup_menu_area" class="member_{$oDocument->get('member_srl')}">{$oDocument->getNickName()}</a></td>
|
||||
<td>{$oDocument->get('declared_count')}</td>
|
||||
<td>{$oDocument->get('readed_count')}</td>
|
||||
<td>{$oDocument->get('voted_count')}/{$oDocument->get('blamed_count')}</td>
|
||||
<td>{$oDocument->getRegdate("Y-m-d H:i")}</td>
|
||||
<td class="nowr"><a href="#popup_menu_area" class="member_{$oDocument->get('member_srl')}">{$oDocument->getNickName()}</a></td>
|
||||
<td class="nowr">{$oDocument->get('declared_count')}</td>
|
||||
<td class="nowr">{$oDocument->get('readed_count')}</td>
|
||||
<td class="nowr">{$oDocument->get('voted_count')}/{$oDocument->get('blamed_count')}</td>
|
||||
<td class="nowr">{$oDocument->getRegdate("Y-m-d H:i")}</td>
|
||||
<td><input type="checkbox" name="cart" value="{$oDocument->document_srl}" /></td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
|
|
@ -79,8 +79,8 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
|
|||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="title">{$lang->title}</th>
|
||||
<th scope="col">{$lang->writer}</th>
|
||||
<th scope="col">{$lang->status}</th>
|
||||
<th scope="col" class="nowr">{$lang->writer}</th>
|
||||
<th scope="col" class="nowr">{$lang->status}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
|
@ -109,7 +109,7 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
|
|||
</div>
|
||||
<p class="q"><label for="message">{$lang->message_notice}</label></p>
|
||||
<p>
|
||||
<textarea cols="42" rows="3" name="message_content" id="message" style="width:98%"></textarea>
|
||||
<textarea rows="8" cols="42" name="message_content" id="message" style="width:98%"></textarea>
|
||||
</p>
|
||||
<div class="btnArea">
|
||||
<span class="btn"><button type="submit" name="type" value="trash">{$lang->cmd_trash}</button></span>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
<!--#include("header.html")-->
|
||||
<load target="css/document.css" usecdn="true" />
|
||||
<!--%import("filter/delete_alias.xml")-->
|
||||
|
||||
<form ruleset="deleteAlias" id="deleteForm" action="./" method="post">
|
||||
|
|
|
|||
|
|
@ -37,24 +37,24 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
|
|||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="title">{$lang->title}</th>
|
||||
<th scope="col">{$lang->writer}</th>
|
||||
<th scope="col">{$lang->readed_count}</th>
|
||||
<th scope="col">{$lang->cmd_vote}(+/-)</th>
|
||||
<th scope="col">{$lang->date}</th>
|
||||
<th scope="col">{$lang->ipaddress}</th>
|
||||
<th scope="col">{$lang->status}</th>
|
||||
<th scope="col" class="nowr">{$lang->writer}</th>
|
||||
<th scope="col" class="nowr">{$lang->readed_count}</th>
|
||||
<th scope="col" class="nowr">{$lang->cmd_vote}(+/-)</th>
|
||||
<th scope="col" class="nowr">{$lang->date}</th>
|
||||
<th scope="col" class="nowr">{$lang->ipaddress}</th>
|
||||
<th scope="col" class="nowr">{$lang->status}</th>
|
||||
<th scope="col"><input type="checkbox" data-name="cart" title="Check All" /></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<th scope="col" class="title">{$lang->title}</th>
|
||||
<th scope="col">{$lang->writer}</th>
|
||||
<th scope="col">{$lang->readed_count}</th>
|
||||
<th scope="col">{$lang->cmd_vote}(+/-)</th>
|
||||
<th scope="col">{$lang->date}</th>
|
||||
<th scope="col">{$lang->ipaddress}</th>
|
||||
<th scope="col">{$lang->status}</th>
|
||||
<th scope="col" class="nowr">{$lang->writer}</th>
|
||||
<th scope="col" class="nowr">{$lang->readed_count}</th>
|
||||
<th scope="col" class="nowr">{$lang->cmd_vote}(+/-)</th>
|
||||
<th scope="col" class="nowr">{$lang->date}</th>
|
||||
<th scope="col" class="nowr">{$lang->ipaddress}</th>
|
||||
<th scope="col" class="nowr">{$lang->status}</th>
|
||||
<th scope="col"><input type="checkbox" data-name="cart" title="Check All" /></th>
|
||||
</tr>
|
||||
</tfoot>
|
||||
|
|
@ -62,12 +62,12 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
|
|||
<!--@foreach($document_list as $no => $oDocument)-->
|
||||
<tr>
|
||||
<td class="title"><a href="{getUrl('','document_srl',$oDocument->document_srl)}" target="_blank"><!--@if(trim($oDocument->getTitle()))-->{$oDocument->getTitle()}<!--@else--><em>{$lang->no_title_document}</em><!--@end--></a></td>
|
||||
<td><a href="#popup_menu_area" class="member_{$oDocument->get('member_srl')}">{$oDocument->getNickName()}</a></td>
|
||||
<td>{$oDocument->get('readed_count')}</td>
|
||||
<td>{$oDocument->get('voted_count')}/{$oDocument->get('blamed_count')}</td>
|
||||
<td>{$oDocument->getRegdate("Y-m-d H:i")}</td>
|
||||
<td><a href="{getUrl('search_target','ipaddress','search_keyword',$oDocument->get('ipaddress'))}">{$oDocument->get('ipaddress')}</a></td>
|
||||
<td>{$status_name_list[$oDocument->get('status')]}</td>
|
||||
<td class="nowr"><a href="#popup_menu_area" class="member_{$oDocument->get('member_srl')}">{$oDocument->getNickName()}</a></td>
|
||||
<td class="nowr">{$oDocument->get('readed_count')}</td>
|
||||
<td class="nowr">{$oDocument->get('voted_count')}/{$oDocument->get('blamed_count')}</td>
|
||||
<td class="nowr">{$oDocument->getRegdate("Y-m-d H:i")}</td>
|
||||
<td class="nowr"><a href="{getUrl('search_target','ipaddress','search_keyword',$oDocument->get('ipaddress'))}">{$oDocument->get('ipaddress')}</a></td>
|
||||
<td class="nowr">{$status_name_list[$oDocument->get('status')]}</td>
|
||||
<td><input type="checkbox" name="cart" value="{$oDocument->document_srl}" /></td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
|
|
@ -91,8 +91,8 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
|
|||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="title">{$lang->title}</th>
|
||||
<th scope="col">{$lang->writer}</th>
|
||||
<th scope="col">{$lang->status}</th>
|
||||
<th scope="col" class="nowr">{$lang->writer}</th>
|
||||
<th scope="col" class="nowr">{$lang->status}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
|
@ -121,7 +121,7 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
|
|||
</div>
|
||||
<p class="q"><label for="message">{$lang->message_notice}</label></p>
|
||||
<p>
|
||||
<textarea cols="42" rows="3" name="message_content" id="message" style="width:98%"></textarea>
|
||||
<textarea rows="8" cols="42" name="message_content" id="message" style="width:98%"></textarea>
|
||||
</p>
|
||||
<div class="btnArea">
|
||||
<span class="btn"><button type="submit" name="type" value="trash">{$lang->cmd_trash}</button></span>
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
<tr>
|
||||
<th>{$lang->column_name}</th>
|
||||
<td >
|
||||
<input type="text" name="name" value="{$selected_var->name}" id="name" /><a href="{getUrl('','module','module','act','dispModuleAdminLangcode','target','name')}" onclick="popopen(this.href);return false;" class="buttonSet buttonSetting"><span>{$lang->cmd_find_langcode}</span></a>
|
||||
<input type="text" name="name" value="{htmlspecialchars($selected_var->name)}" id="name" /><a href="{getUrl('','module','module','act','dispModuleAdminLangcode','target','name')}" onclick="popopen(this.href);return false;" class="buttonSet buttonSetting"><span>{$lang->cmd_find_langcode}</span></a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
@ -99,7 +99,7 @@
|
|||
<td rowspan="3">
|
||||
<!--@if($val->idx>1)--><a href="#" onclick="moveVar('up','{$module_srl}','{$val->idx}'); return false;" class="buttonSet buttonUp"><span>{$lang->cmd_move_up}</span></a><!--@end-->
|
||||
<a cond="count($extra_keys) > $val->idx" href="#" onclick="moveVar('down','{$module_srl}','{$val->idx}');return false;" class="buttonSet buttonDown">{$lang->cmd_move_down}</a>
|
||||
<a href="{getUrl('selected_var_idx',$val->idx)}" class="buttonSet buttonSetting"><span>{$lang->cmd_modify}</span></a>
|
||||
<a href="{getUrl('selected_var_idx',$val->idx)}" class="buttonSet buttonSetting"><span>{$lang->cmd_modify}...</span></a>
|
||||
<a href="#" onclick="return doDeleteExtraKey('{$module_srl}','{$val->idx}');" class="buttonSet buttonDelete"><span>{$lang->cmd_delete}</span></a>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ function doManageDocument(type) {
|
|||
/* 선택된 글의 삭제 또는 이동 후 */
|
||||
function completeManageDocument(ret_obj) {
|
||||
if(opener) {
|
||||
opener.window.location.href = opener.window.current_url.setQuery('document_srl','');
|
||||
opener.window.location.href = opener.window.current_url.setQuery('document_srl', '');
|
||||
}
|
||||
alert(ret_obj['message']);
|
||||
window.close();
|
||||
|
|
@ -141,8 +141,8 @@ function completeGetDocumentList(ret_obj, response_tags)
|
|||
var objDocument = document_list[x];
|
||||
htmlListBuffer += '<tr>' +
|
||||
'<td class="title">'+ objDocument.variables.title +'</td>' +
|
||||
'<td>'+ objDocument.variables.nick_name +'</td>' +
|
||||
'<td>'+ statusNameList[objDocument.variables.status] +'</td>' +
|
||||
'<td class="nowr">'+ objDocument.variables.nick_name +'</td>' +
|
||||
'<td class="nowr">'+ statusNameList[objDocument.variables.status] +'</td>' +
|
||||
'</tr>'+
|
||||
'<input type="hidden" name="cart[]" value="'+objDocument.document_srl+'" />';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
<load target="./js/document_admin.js" usecdn="true" />
|
||||
<load target="./css/document.css" usecdn="true" />
|
||||
{$content}
|
||||
<div class="btnArea">
|
||||
<span class="btn"><button type="button" onclick="window.close();return false;">{$lang->cmd_close}</button></span>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
<load target="./js/document_admin.js" usecdn="true" />
|
||||
<load target="./css/document.css" usecdn="true" />
|
||||
<h1 class="h1">{$oDocument->getTitleText()}</h1>
|
||||
<a href="#popup_menu_area" class="member_{$oDocument->get('member_srl')}">{$oDocument->get('nick_name')}</a>
|
||||
{$oDocument->getRegdate()}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
<load target="css/default.css" usecdn="true" />
|
||||
<h1 class="h1">{$lang->cmd_view_saved_document}</h1>
|
||||
<!-- 목록 -->
|
||||
<div class="table">
|
||||
|
|
|
|||
|
|
@ -110,6 +110,13 @@ var slideShow = xe.createPlugin('slideShow', {
|
|||
w1 = im.$obj.prop('width');
|
||||
h1 = im.$obj.prop('height');
|
||||
|
||||
if (w1 == 0){
|
||||
w1 = im.$obj.attr('width');
|
||||
}
|
||||
if(h1 ==0){
|
||||
h1 = im.$obj.attr('height');
|
||||
}
|
||||
|
||||
if(w1 > iwidth - 20) {
|
||||
w2 = iwidth - 20;
|
||||
scale = w2 / w1;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
* @brief Slideshow type image gallery plugin
|
||||
* @author NHN (developers@xpressengine.com)
|
||||
**/
|
||||
(function(k){var m=xe.createPlugin("slideShow",{_holders:{},_thumbs:{},_current:{},init:function(){this._holders={};this._thumbs={};this._current={}},API_SHOW_SLIDE:function(g,e){var b=this,a=e[0],c="@"+a,d,f,j,i,h,l;d=this.cast("GET_IMAGES",[a]);if(d.length){f=k("#zone_slide_gallery_"+a);i=f.find(".slide_gallery_placeholder").css("overflow","hidden");f.find(".slide_gallery_loading_text").remove();j=f.find(".slide_gallery_thumbnail_image_box").show();h=0;for(l=d.length;h<l;h++)d[h].$obj.clone().css({cursor:"pointer",
|
||||
width:"60px",height:"60px",margin:"5px",opacity:0.5}).click({idx:h},function(c){b.cast("SET_SLIDE",[a,c.data.idx])}).appendTo(j);k("#zone_gallery_navigator_status_"+a).click(function(){j.toggle()});f.find(".__prev").click(function(){b.cast("PREV_SLIDE",[a]);return!1}).end().find(".__next").click(function(){b.cast("NEXT_SLIDE",[a]);return!1});this._holders[c]=i;this._thumbs[c]=j;this._current[c]=0;this.cast("SET_SLIDE",[a,0])}},_showSideSlide:function(g,e){var b,a;b=this.cast("GET_IMAGES",[g]);b.length&&
|
||||
(a=this._current["@"+g]+e,a<0?a=b.length-1:a>=b.length&&(a=0),this.cast("SET_SLIDE",[g,a]))},API_NEXT_SLIDE:function(g,e){this._showSideSlide(e[0],1)},API_PREV_SLIDE:function(g,e){this._showSideSlide(e[0],-1)},API_SET_SLIDE:function(g,e){var b=e[0],a=e[1],c,d,f;c=this.cast("GET_IMAGES",[b]);if(c.length&&is_def(d=c[a]))this._current["@"+b]=a,k("#zone_gallery_navigator_status_"+b).text(a+1+"/"+c.length),this._thumbs["@"+b].find("img").eq(a).animate({opacity:1}).end().not(":eq("+a+")").animate({opacity:0.5}),
|
||||
b=this._holders["@"+b],c=b.parent().innerWidth(),a=d.$obj.prop("width"),f=d.$obj.prop("height"),a>c-20&&(c-=20,f=Math.floor(f*(c/a)),a=c,d.$obj.css("cursor","pointer"),d.$obj.attr("rel","xe_gallery")),d.$obj.css({width:a,height:f,margin:"0 10px"}),b.empty().append(d.$obj)}}),i=xe.getApp("Gallery")[0];i&&i.registerPlugin(new m)})(jQuery);
|
||||
(function(k){var m=xe.createPlugin("slideShow",{_holders:{},_thumbs:{},_current:{},init:function(){this._holders={};this._thumbs={};this._current={}},API_SHOW_SLIDE:function(g,f){var b=this,a=f[0],c="@"+a,d,e,j,i,h,l;d=this.cast("GET_IMAGES",[a]);if(d.length){e=k("#zone_slide_gallery_"+a);i=e.find(".slide_gallery_placeholder").css("overflow","hidden");e.find(".slide_gallery_loading_text").remove();j=e.find(".slide_gallery_thumbnail_image_box").show();h=0;for(l=d.length;h<l;h++)d[h].$obj.clone().css({cursor:"pointer",
|
||||
width:"60px",height:"60px",margin:"5px",opacity:0.5}).click({idx:h},function(c){b.cast("SET_SLIDE",[a,c.data.idx])}).appendTo(j);k("#zone_gallery_navigator_status_"+a).click(function(){j.toggle()});e.find(".__prev").click(function(){b.cast("PREV_SLIDE",[a]);return!1}).end().find(".__next").click(function(){b.cast("NEXT_SLIDE",[a]);return!1});this._holders[c]=i;this._thumbs[c]=j;this._current[c]=0;this.cast("SET_SLIDE",[a,0])}},_showSideSlide:function(g,f){var b,a;b=this.cast("GET_IMAGES",[g]);b.length&&
|
||||
(a=this._current["@"+g]+f,0>a?a=b.length-1:a>=b.length&&(a=0),this.cast("SET_SLIDE",[g,a]))},API_NEXT_SLIDE:function(g,f){this._showSideSlide(f[0],1)},API_PREV_SLIDE:function(g,f){this._showSideSlide(f[0],-1)},API_SET_SLIDE:function(g,f){var b=f[0],a=f[1],c,d,e;c=this.cast("GET_IMAGES",[b]);if(c.length&&is_def(d=c[a]))this._current["@"+b]=a,k("#zone_gallery_navigator_status_"+b).text(a+1+"/"+c.length),this._thumbs["@"+b].find("img").eq(a).animate({opacity:1}).end().not(":eq("+a+")").animate({opacity:0.5}),
|
||||
b=this._holders["@"+b],c=b.parent().innerWidth(),a=d.$obj.prop("width"),e=d.$obj.prop("height"),0==a&&(a=d.$obj.attr("width")),0==e&&(e=d.$obj.attr("height")),a>c-20&&(c-=20,e=Math.floor(e*(c/a)),a=c,d.$obj.css("cursor","pointer"),d.$obj.attr("rel","xe_gallery")),d.$obj.css({width:a,height:e,margin:"0 10px"}),b.empty().append(d.$obj)}}),i=xe.getApp("Gallery")[0];i&&i.registerPlugin(new m)})(jQuery);
|
||||
|
|
|
|||
|
|
@ -81,10 +81,10 @@
|
|||
var border = parseInt($form.find('#image_border').val(), 10);
|
||||
var margin = parseInt($form.find('#image_margin').val(), 10);
|
||||
|
||||
if($form.find('#align_normal').attr('checked') == true) align = '';
|
||||
else if($form.find('#align_left').attr('checked') == true) align = 'left';
|
||||
else if($form.find('#align_middle').attr('checked') == true) align = 'middle';
|
||||
else if($form.find('#align_right').attr('checked') == true) align = 'right';
|
||||
if($form.find('#align_normal').attr('checked') == 'checked') align = '';
|
||||
else if($form.find('#align_left').attr('checked') == 'checked') align = 'left';
|
||||
else if($form.find('#align_middle').attr('checked') == 'checked') align = 'middle';
|
||||
else if($form.find('#align_right').attr('checked') == 'checked') align = 'right';
|
||||
|
||||
var width = $form.find('#width').val();
|
||||
var height = $form.find('#height').val();
|
||||
|
|
|
|||
|
|
@ -120,14 +120,7 @@
|
|||
|
||||
$this->setMessage('success_updated');
|
||||
if(!in_array(Context::getRequestMethod(),array('XMLRPC','JSON'))) {
|
||||
global $lang;
|
||||
htmlHeader();
|
||||
alertScript($lang->success_updated);
|
||||
reload(true);
|
||||
closePopupScript();
|
||||
htmlFooter();
|
||||
Context::close();
|
||||
exit;
|
||||
$this->setRedirectUrl(Context::get('error_return_url'));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -157,7 +157,6 @@
|
|||
**/
|
||||
function triggerEditorComponentCompile(&$content) {
|
||||
if(Context::getResponseMethod()!='HTML') return new Object();
|
||||
if(Mobile::isFromMobilePhone()) return new Object();
|
||||
|
||||
$module_info = Context::get('module_info');
|
||||
$module_srl = $module_info->module_srl;
|
||||
|
|
@ -183,7 +182,7 @@
|
|||
$buff = '<style type="text/css"> .xe_content { ';
|
||||
if($content_font) $buff .= 'font-family:'.$content_font.';';
|
||||
if($content_font_size) $buff .= 'font-size:'.$content_font_size.';';
|
||||
$buff .= ' }; </style>';
|
||||
$buff .= ' }</style>';
|
||||
Context::addHtmlHeader($buff);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -195,6 +195,10 @@
|
|||
* Editor's default options
|
||||
**/
|
||||
// Option setting to allow file upload
|
||||
if($upload_target_srl)
|
||||
{
|
||||
$option->editor_sequence = $upload_target_srl;
|
||||
}
|
||||
if(!$option->allow_fileupload) $allow_fileupload = false;
|
||||
else $allow_fileupload = true;
|
||||
// content_style setting
|
||||
|
|
@ -248,8 +252,8 @@
|
|||
**/
|
||||
if($option->editor_sequence) $editor_sequence = $option->editor_sequence;
|
||||
else {
|
||||
if(!$GLOBALS['_editor_sequence_']) $GLOBALS['_editor_sequence_'] = 1;
|
||||
$editor_sequence = $GLOBALS['_editor_sequence_'] ++;
|
||||
if(!$_SESSION['_editor_sequence_']) $_SESSION['_editor_sequence_'] = 1;
|
||||
$editor_sequence = $_SESSION['_editor_sequence_'] ++;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -130,7 +130,6 @@
|
|||
$oModuleModel = &getModel('module');
|
||||
$skin_info = $oModuleModel->loadSkinInfo($this->module_path,$skin);
|
||||
$colorset = $skin_info->colorset;
|
||||
|
||||
Context::set('colorset', $colorset);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1449,14 +1449,14 @@ Bài viết tự động lưu sẽ tự động hủy sau khi bạn hoàn thành
|
|||
<value xml:lang="vi"><![CDATA[Phím nóng]]></value>
|
||||
</item>
|
||||
<item name="lineheight">
|
||||
<value xml:lang="ko"><![CDATA[줄 간격]]></value>
|
||||
<value xml:lang="ko"><![CDATA[줄간격]]></value>
|
||||
<value xml:lang="en"><![CDATA[Line Height]]></value>
|
||||
<value xml:lang="jp"><![CDATA[行間]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[行间距]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[行距]]></value>
|
||||
<value xml:lang="fr"><![CDATA[줄간격]]></value>
|
||||
<value xml:lang="fr"><![CDATA[Line Height]]></value>
|
||||
<value xml:lang="ru"><![CDATA[Высота строки]]></value>
|
||||
<value xml:lang="es"><![CDATA[줄간격]]></value>
|
||||
<value xml:lang="es"><![CDATA[Line Height]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Satır Yüksekliği]]></value>
|
||||
<value xml:lang="vi"><![CDATA[Chiều cao dòng]]></value>
|
||||
</item>
|
||||
|
|
@ -1908,6 +1908,11 @@ Bài viết tự động lưu sẽ tự động hủy sau khi bạn hoàn thành
|
|||
<value xml:lang="tr"><![CDATA[Düzen Formunun Boyutunu Ayarla]]></value>
|
||||
<value xml:lang="vi"><![CDATA[Đặt kích thước mẫu]]></value>
|
||||
</item>
|
||||
<item name="edit_height_auto">
|
||||
<value xml:lang="ko"><![CDATA[입력창 크기 자동조절]]></value>
|
||||
<value xml:lang="en"><![CDATA[Auto-resize editor]]></value>
|
||||
<value xml:lang="jp"><![CDATA[入力ボックスサイズの自動調節]]></value>
|
||||
</item>
|
||||
<item name="merge_cells">
|
||||
<value xml:lang="ko"><![CDATA[셀 병합]]></value>
|
||||
<value xml:lang="en"><![CDATA[Merge Table Cells]]></value>
|
||||
|
|
|
|||
|
|
@ -89,9 +89,9 @@
|
|||
.wArea .buttonArea .info{ display:inline; padding:0 0 0 15px; color:#777;}
|
||||
.wArea .inputTitle{ width:98%; border:1px solid #ddd; background:#fff url(../img/bgInputText.gif) no-repeat; color:#767676; padding:6px 0 0 10px; height:21px; font-size:14px; margin-bottom:10px;}
|
||||
.wArea .inputLink{ width:98%; border:1px solid #ddd; background:#fff url(../img/bgInputText.gif) no-repeat; color:#767676; padding:6px 0 0 10px; height:21px; font-size:11px; margin-bottom:10px;}
|
||||
.wArea .inputText{ width:98%; border:1px solid #ddd; background:#fff url(../img/bgInputText.gif) no-repeat; color:#767676; padding:6px 0 0 10px; height:21px; font-size:12px; margin-bottom:10px;}
|
||||
.wArea .iText{ width:98%; border:1px solid #ddd; background:#fff url(../img/bgInputText.gif) no-repeat; color:#767676; padding:6px 0 0 10px; height:21px; font-size:12px; margin-bottom:10px;}
|
||||
.wArea .inputFile{ width:100%; border:1px solid #ddd; background:#fff url(../img/bgInputText.gif) no-repeat; color:#767676; padding:6px 0 0 10px; height:29px; font-size:12px; margin-bottom:10px;}
|
||||
.wArea .inputTextarea{ width:98%; border:1px solid #ddd; background:#fff url(../img/bgInputText.gif) no-repeat; color:#767676; padding:10px 0 0 10px; height:150px; font-size:12px; line-height:1.5; margin-bottom:10px;}
|
||||
.wArea .iTextArea{ width:98%; border:1px solid #ddd; background:#fff url(../img/bgInputText.gif) no-repeat; color:#767676; padding:10px 0 0 10px; height:150px; font-size:12px; line-height:1.5; margin-bottom:10px;}
|
||||
.wArea .inputRadio{ width:13px; height:13px; vertical-align:middle;}
|
||||
.wArea .hr{ border-top:1px solid #e6e6e6; border-bottom:1px solid #fff; font-size:0; line-height:0; overflow:hidden; height:0; margin:15px -20px;}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<div class="wArea fold">
|
||||
<fieldset>
|
||||
<legend>{$lang->edit->fold}</legend>
|
||||
<input name="" type="text" class="inputText" value="" title="{$lang->edit->fold_default}" />
|
||||
<input name="" type="text" class="iText" value="" title="{$lang->edit->fold_default}" />
|
||||
<div class="buttonArea">
|
||||
<span class="buttonGray medium strong"><button type="button"><img src="iconCheckSmall.gif" width="12" height="8" alt="" class="icon" />{$lang->cmd_confirm}</button></span>
|
||||
<span class="buttonGray medium"><button type="button"><img src="buttonCloseLayerX.gif" width="7" height="7" alt="" class="icon" />{$lang->cmd_cancel}</button></span>
|
||||
|
|
|
|||
|
|
@ -282,9 +282,9 @@
|
|||
<!-- class="wArea link" | class="wArea link open" -->
|
||||
<fieldset>
|
||||
<legend>{$lang->edit->link}</legend>
|
||||
<input name="" type="text" class="inputText" value="" title="{$lang->edit->insert_site_name}" />
|
||||
<input name="" type="text" class="iText" value="" title="{$lang->edit->insert_site_name}" />
|
||||
<input name="" type="text" class="inputLink" value="" title="http://" />
|
||||
<input name="" type="text" class="inputText" value="" title="{$lang->edit->insert_explain}" />
|
||||
<input name="" type="text" class="iText" value="" title="{$lang->edit->insert_explain}" />
|
||||
<div class="buttonArea">
|
||||
<span class="buttonGray medium strong"><button type="button" title="Ctrl+Enter"><img src="img/iconCheckSmall.gif" width="12" height="8" alt="" class="icon" />{$lang->cmd_confirm}</button></span>
|
||||
<span class="buttonGray medium"><button type="button" title="ESC"><img src="img/buttonCloseLayerX.gif" width="7" height="7" alt="" class="icon" />{$lang->cmd_cancel}</button></span>
|
||||
|
|
@ -327,8 +327,8 @@
|
|||
<!-- class="wArea blockquote" | class="wArea blockquote open" -->
|
||||
<fieldset>
|
||||
<legend>{$lang->edit->blockquote}</legend>
|
||||
<textarea name="" cols="50" rows="5" class="inputTextarea" title="{$lang->edit->insert_blockquote}"></textarea>
|
||||
<input name="" type="text" class="inputText" value="" title="{$lang->edit->insert_cite}" />
|
||||
<textarea name="" rows="8" cols="42" class="iTextArea" title="{$lang->edit->insert_blockquote}"></textarea>
|
||||
<input name="" type="text" class="iText" value="" title="{$lang->edit->insert_cite}" />
|
||||
<div class="buttonArea">
|
||||
<span class="buttonGray medium strong"><button type="button" title="Ctrl+Enter"><img src="img/iconCheckSmall.gif" width="12" height="8" alt="" class="icon" />{$lang->cmd_confirm}</button></span>
|
||||
<span class="buttonGray medium"><button type="button" title="ESC"><img src="img/buttonCloseLayerX.gif" width="7" height="7" alt="" class="icon" />{$lang->cmd_cancel}</button></span>
|
||||
|
|
@ -368,7 +368,7 @@
|
|||
</dl>
|
||||
<p class="resizeError">{$lang->edit->resize_error}</p>
|
||||
</div>
|
||||
<input name="" type="text" class="inputText desc" value="" title="{$lang->edit->insert_image_explain}" />
|
||||
<input name="" type="text" class="iText desc" value="" title="{$lang->edit->insert_image_explain}" />
|
||||
<div class="buttonArea">
|
||||
<span class="buttonGray medium strong"><button type="button" title="Ctrl+Enter"><img src="img/iconCheckSmall.gif" width="12" height="8" alt="" class="icon" />{$lang->cmd_confirm}</button></span>
|
||||
<span class="buttonGray medium"><button type="button" title="ESC"><img src="img/buttonCloseLayerX.gif" width="7" height="7" alt="" class="icon" />{$lang->cmd_cancel}</button></span>
|
||||
|
|
@ -384,9 +384,9 @@
|
|||
<!-- class="wArea mov" | class="wArea mov open" -->
|
||||
<fieldset>
|
||||
<legend>{$lang->edit->mov}</legend>
|
||||
<textarea name="" cols="50" rows="5" class="inputTextarea" title="{$lang->edit->insert_mov}"></textarea>
|
||||
<textarea name="" cols="50" rows="5" class="inputTextarea" title="{$lang->edit->insert_mov_explain}"></textarea>
|
||||
<input name="" type="text" class="inputText" value="" title="{$lang->edit->insert_cite}" />
|
||||
<textarea name="" rows="8" cols="42" class="iTextArea" title="{$lang->edit->insert_mov}"></textarea>
|
||||
<textarea name="" rows="8" cols="42" class="iTextArea" title="{$lang->edit->insert_mov_explain}"></textarea>
|
||||
<input name="" type="text" class="iText" value="" title="{$lang->edit->insert_cite}" />
|
||||
<div class="buttonArea">
|
||||
<span class="buttonGray medium strong"><button type="button" title="Ctrl+Enter"><img src="img/iconCheckSmall.gif" width="12" height="8" alt="" class="icon" />{$lang->cmd_confirm}</button></span>
|
||||
<span class="buttonGray medium"><button type="button" title="ESC"><img src="img/buttonCloseLayerX.gif" width="7" height="7" alt="" class="icon" />{$lang->cmd_cancel}</button></span>
|
||||
|
|
@ -431,8 +431,8 @@
|
|||
</dl>
|
||||
<p class="summary">{$lang->edit->file_total} <em class="filesize">{total_filesize}</em></p>
|
||||
<div class="hr"></div>
|
||||
<input name="" type="text" class="inputText" value="" title="{$lang->edit->insert_file_explain}" />
|
||||
<input name="" type="text" class="inputText" value="" title="{$lang->edit->insert_cite}" />
|
||||
<input name="" type="text" class="iText" value="" title="{$lang->edit->insert_file_explain}" />
|
||||
<input name="" type="text" class="iText" value="" title="{$lang->edit->insert_cite}" />
|
||||
<div class="buttonArea">
|
||||
<span class="buttonGray medium strong"><button type="button" title="Ctrl+Enter"><img src="img/iconCheckSmall.gif" width="12" height="8" alt="" class="icon" />{$lang->cmd_confirm}</button></span>
|
||||
<span class="buttonGray medium"><button type="button" title="ESC"><img src="img/buttonCloseLayerX.gif" width="7" height="7" alt="" class="icon" />{$lang->cmd_cancel}</button></span>
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
.xpress-editor li{list-style:none}
|
||||
/* Layout Selector */
|
||||
.xpress-editor{position:relative;background:transparent}
|
||||
.xpress-editor #smart_content{position:relative;clear:both;margin:0 0 10px 0;border:1px solid #c2c2c2;*zoom:1;z-index:5;background:#fff}
|
||||
.xpress-editor #smart_content{position:relative;clear:both;margin:0 0 10px 0;border:1px solid #c2c2c2;*zoom:1;z-index:1;background:#fff}
|
||||
.xpress-editor.black #smart_content {background:transparent}
|
||||
.xpress-editor #smart_footer{position:relative;text-align:center;padding:10px 0}
|
||||
/* Footer */
|
||||
|
|
@ -28,7 +28,7 @@
|
|||
.xpress-editor #smart_footer input{margin:0}
|
||||
.xpress-editor #smart_footer input.reset{width:67px;height:25px;border:0;background:url(../img/btn_cancel.gif) no-repeat;cursor:pointer;margin-left:5px}
|
||||
/* Content > Input Area */
|
||||
.xpress-editor a.skip{position:relative;display:block;top:0;right:0;width:0;height:0;overflow:hidden;clear:both;zoom:1}
|
||||
.xpress-editor a.skip{position:absolute;display:block;top:0;right:0;width:1px;height:1px;overflow:hidden;clear:both;zoom:1}
|
||||
.xpress-editor a.skip:hover,
|
||||
.xpress-editor a.skip:active,
|
||||
.xpress-editor a.skip:focus{position:relative;display:block;padding:5px;right:0;z-index:60;width:auto;height:auto;text-align:right;white-space:nowrap;color:#000;text-decoration:none;letter-spacing:-1px;_zoom:1}
|
||||
|
|
@ -37,8 +37,12 @@
|
|||
.xpress-editor .input_area textarea{display:block;width:100% !important;position:relative;height:100%;border:0 !important;padding:0 !important;overflow:auto}
|
||||
.xpress-editor .input_area textarea{*margin:0 -10px;_margin-bottom:-2px}
|
||||
.xpress-editor .input_area textarea.blind{display:none}
|
||||
.xpress-editor .input_control{position:relative;display:block;width:100%;clear:both;text-align:center;background:#fbfbfb url(../img/btn_expand.gif) no-repeat center center;cursor:n-resize}
|
||||
.xpress-editor .input_control span{display:block;height:10px;visibility:hidden;overflow:visible;font-size:0;line-height:200%;white-space:nowrap;color:#fff}
|
||||
.xpress-editor .input_control{position:relative;display:block;width:100%;clear:both;text-align:center;border-top:1px solid #ccc;background:#f8f8f8 url(../img/btn_expand.gif) no-repeat center center;cursor:n-resize}
|
||||
.xpress-editor .input_control span{display:block;height:21px;visibility:hidden;overflow:visible;font-size:0;line-height:200%;white-space:nowrap;color:#fff}
|
||||
.xpress-editor .input_auto{position:relative;z-index:2;display:inline-block;margin:-20px 0 0 0;padding:3px 0 0 8px;zoom:1}
|
||||
.xpress-editor .input_auto.line{height:17px;margin:0;display:block;border-top:1px solid #ccc;padding:4px 0 0 8px;background:#f8f8f8}
|
||||
.xpress-editor .input_auto input{margin:0;padding:0;width:13px;height:13px;vertical-align:middle;margin:0 4px 0 0}
|
||||
.xpress-editor .input_auto label{font-size:11px;vertical-align:middle;line-height:13px;color:#666}
|
||||
.xpress-editor.black .input_control {background:#111 url(../img/btn_expand.black.gif) no-repeat center center}
|
||||
.xpress-editor.black .input_control span{border-top:1px solid #333; color:#000}
|
||||
.xpress-editor .tool{position:relative;overflow:visible;padding:5px 10px 6px 10px;*padding:5px 10px 8px 10px;z-index:40;clear:both;background:#f8f8f8 url(../img/bg_tool.gif) repeat-x left bottom;border:0;*zoom:1}
|
||||
|
|
@ -56,7 +60,7 @@
|
|||
.xpress-editor .tool ul.extra3{float:left;width:auto;z-index:1;margin-right:1px}
|
||||
.xpress-editor .tool ul.extra3 li{margin-right:4px}
|
||||
.xpress-editor .tool li{position:relative;float:left;margin:0 !important;padding:0 !important;border:0 !important}
|
||||
.xpress-editor .tool li button{width:21px;height:21px;background:url(../img/btn_set.gif) no-repeat 0 0;vertical-align:top}
|
||||
.xpress-editor .tool li button{width:21px;height:21px;background:url(../img/btn_set.gif) no-repeat 0 0;vertical-align:top;float:left}
|
||||
.xpress-editor.black .tool li button{width:21px;height:21px;background:url(../img/btn_set.black.gif) no-repeat 0 0;vertical-align:top}
|
||||
.xpress-editor .tool li button span{position:absolute;top:0;left:0;width:0;height:0;overflow:hidden;visibility:hidden}
|
||||
.xpress-editor .tool li.extensions span.exButton,
|
||||
|
|
@ -77,7 +81,8 @@
|
|||
.xpress-editor .tool li.html span button,
|
||||
.xpress-editor .tool li.preview span button{left:2px;height:21px;background-position:right top;font:11px/21px Tahoma, Sans-serif;padding:0 4px;*overflow:visible;*line-height:20px}
|
||||
.xpress-editor .tool ul.type li{float:none;display:inline;*top:1px}
|
||||
.xpress-editor .tool ul.type li select{height:21px;width:62px}
|
||||
.xpress-editor .tool ul.type li select{height:21px;width:64px;white-space:nowrap}
|
||||
.xpress-editor .tool ul.type li option{white-space:nowrap}
|
||||
.xpress-editor.black .tool ul.type li select{color:#fff;background-color:#000}
|
||||
/* Content > Tool > Button Default */
|
||||
.xpress-editor .tool li.undo button{width:22px;background-position:0 0}
|
||||
|
|
@ -214,7 +219,7 @@
|
|||
.xpress-editor .tool .layer{display:none;position:absolute;left:0;top:20px;background-color:#fbfbfb;border:1px solid #c5c5c5;border-right:1px solid #9f9f9f;border-bottom:1px solid #9f9f9f}
|
||||
.xpress-editor .tool .layer li{float:none;left:0}
|
||||
.xpress-editor .tool .layer button,
|
||||
.xpress-editor.black .tool .layer button{margin:0 !important;width:auto;height:auto;background:none}
|
||||
.xpress-editor.black .tool .layer button{margin:0 !important;width:auto;height:auto;background:none;float:none}
|
||||
.xpress-editor .tool .layer button span{position:absolute;width:0;height:0;font-size:0;line-height:0;overflow:hidden;visibility:hidden}
|
||||
.xpress-editor .tool .btn_area{position:relative;clear:both;text-align:center !important;padding:7px 0 12px 0;width:100%;white-space:nowrap;*zoom:1}
|
||||
.xpress-editor .tool .btn_area *{vertical-align:top}
|
||||
|
|
@ -225,27 +230,27 @@
|
|||
.xpress-editor .tool .layer .btn_area button.cancel{width:38px;height:21px;background:url(../img/btn_layer_cancel.gif) no-repeat}
|
||||
.xpress-editor .tool li.fcolor .layer{width:218px !important;height:auto !important;background-image:none !important;overflow:hidden}
|
||||
.xpress-editor .tool .layer .palette{width:210px;position:relative;left:7px;padding:8px 0 7px 0;margin:0}
|
||||
.xpress-editor .tool .layer .palette li{float:left;margin:0 1px 1px 0;font-size:0;line-height:0}
|
||||
.xpress-editor .tool .layer .palette li{float:left;margin:0 1px 1px 0 !important;font-size:0;line-height:0}
|
||||
.xpress-editor .tool .layer .palette button{position:relative;overflow:hidden;width:11px !important;height:11px !important}
|
||||
.xpress-editor .tool li.bcolor .layer {width:218px;overflow:hidden}
|
||||
.xpress-editor .tool .layer .background{width:210px;position:relative;left:7px;margin:0 0 -2px 0;padding:8px 0 0 0;*padding-bottom:8px;_padding-bottom:4px}
|
||||
.xpress-editor .tool .layer .background li{float:left;margin:0 5px 2px 0}
|
||||
.xpress-editor .tool .layer .background li{float:left;margin:0 5px 2px 0 !important}
|
||||
.xpress-editor .tool .layer .background button{position:relative;overflow:hidden;width:65px;height:19px;text-align:left;padding:4px}
|
||||
.xpress-editor .tool .layer .background button span{position:relative;visibility:visible;font-size:12px;line-height:normal;width:auto;height:auto}
|
||||
.xpress-editor .tool li.style .layer{padding:4px 2px;_overflow:hidden;filter:progid:DXImageTransform.Microsoft.Shadow(color=#dddddd,direction=135,strength=2)}
|
||||
.xpress-editor .tool li.style .layer li{position:relative;background:#fbfbfb}
|
||||
.xpress-editor .tool li.style .layer li button{display:block;width:134px;position:relative}
|
||||
.xpress-editor .tool li.style .layer li button span{display:block;width:130px;text-align:left;letter-spacing:normal}
|
||||
.xpress-editor .tool li.style .layer li.h3 button span{padding:3px 0 1px 4px;height:15px;_height /**/:19px;font-size:16px;font-weight:bold}
|
||||
.xpress-editor .tool li.style .layer li.h4 button span{padding:3px 0 2px 4px;height:13px;_height /**/:18px;font-size:14px;font-weight:bold}
|
||||
.xpress-editor .tool li.style .layer li.h5 button span{padding:3px 0 1px 4px;height:11px;_height /**/:15px;font-size:12px;font-weight:bold}
|
||||
.xpress-editor .tool li.style .layer li.h6 button span{padding:3px 0 1px 4px;height:11px;_height /**/:15px;font-size:12px}
|
||||
.xpress-editor .tool li.style .layer li.p button span{padding:3px 0 1px 4px;height:11px;_height /**/:15px;font-size:12px;color:#5d5d5d}
|
||||
.xpress-editor .tool li.style .layer li.h3 button span{padding:3px 0 1px 4px;height:15px;font-size:16px;font-weight:bold}
|
||||
.xpress-editor .tool li.style .layer li.h4 button span{padding:3px 0 2px 4px;height:13px;font-size:14px;font-weight:bold}
|
||||
.xpress-editor .tool li.style .layer li.h5 button span{padding:3px 0 1px 4px;height:11px;font-size:12px;font-weight:bold}
|
||||
.xpress-editor .tool li.style .layer li.h6 button span{padding:3px 0 1px 4px;height:11px;font-size:12px}
|
||||
.xpress-editor .tool li.style .layer li.p button span{padding:3px 0 1px 4px;height:11px;font-size:12px;color:#5d5d5d}
|
||||
.xpress-editor .tool li.style .layer li button.hover{background:#c1f471;*height:1%}
|
||||
.xpress-editor .tool li.blockquote .layer{padding:6px 5px 6px 7px;left:0;width:288px}
|
||||
.xpress-editor .tool li.blockquote .layer{padding:6px 0 6px 7px;left:0;width:294px}
|
||||
.xpress-editor .tool li.blockquote .layer ul{*zoom:1;margin:0}
|
||||
.xpress-editor .tool li.blockquote .layer ul:after{content:"";display:block;clear:both}
|
||||
.xpress-editor .tool li.blockquote .layer li{position:relative;float:left;overflow:hidden;width:32px;height:34px;margin:0 2px 0 0;border:1px solid #cdcecc;background-image:url(../img/btn_qmark.gif);background-repeat:no-repeat}
|
||||
.xpress-editor .tool li.blockquote .layer li{position:relative;float:left;overflow:hidden;width:32px;height:34px;margin:0 2px 0 0 !important;border:1px solid #cdcecc !important;background-image:url(../img/btn_qmark.gif);background-repeat:no-repeat}
|
||||
.xpress-editor .tool li.blockquote .layer li.q1{background-position:0 0}
|
||||
.xpress-editor .tool li.blockquote .layer li.q2{background-position:-32px 0}
|
||||
.xpress-editor .tool li.blockquote .layer li.q3{background-position:-64px 0}
|
||||
|
|
@ -302,14 +307,14 @@
|
|||
.xpress-editor .tool li.character .layer ul{margin:0}
|
||||
.xpress-editor .tool li.character .layer h3{position:absolute;width:0;height:0;overflow:hidden;visibility:hidden}
|
||||
.xpress-editor .tool li.character .layer .nav{position:absolute;top:11px;left:-1px;overflow:hidden;white-space:nowrap}
|
||||
.xpress-editor .tool li.character .layer .nav li{display:inline;margin:0 -4px 0 0;padding:0 8px;background:url(../img/vr_layer_character.gif) no-repeat 0 0}
|
||||
.xpress-editor .tool li.character .layer .nav li{display:inline;margin:0 -4px 0 0;padding:0 8px !important;background:url(../img/vr_layer_character.gif) no-repeat 0 0}
|
||||
.xpress-editor .tool li.character .layer .nav li a{color:#444;text-decoration:none;letter-spacing:-1px}
|
||||
.xpress-editor .tool li.character .layer .nav li a:hover,
|
||||
.xpress-editor .tool li.character .layer .nav li a:active,
|
||||
.xpress-editor .tool li.character .layer .nav li a:focus{text-decoration:underline}
|
||||
.xpress-editor .tool li.character .layer .nav li a.on{font-weight:bold;color:#004790;display:inline}
|
||||
.xpress-editor .tool li.character .layer .list{position:absolute;left:7px;top:30px;width:421px;height:172px;background:url(../img/bx_character.gif) no-repeat}
|
||||
.xpress-editor .tool li.character .layer .list li{position:relative;top:1px;left:1px;float:left;width:20px;height:18px;margin:0 1px 1px 0}
|
||||
.xpress-editor .tool li.character .layer .list li{position:relative;top:1px;left:1px;float:left;width:20px;height:18px;margin:0 1px 1px 0 !important}
|
||||
.xpress-editor .tool li.character .layer .list li button{width:20px;height:18px}
|
||||
.xpress-editor .tool li.character .layer .list li button.hover{border:2px solid #27c11a}
|
||||
.xpress-editor .tool li.character .layer .list li button span{overflow:visible;font-size:12px;width:auto;height:auto;position:relative;visibility:visible;line-height:normal}
|
||||
|
|
|
|||
1
modules/editor/skins/xpresseditor/css/default.min.css
vendored
Normal file
1
modules/editor/skins/xpresseditor/css/default.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
<div class="xeTextEditor {$editor_class}">
|
||||
<input type="hidden" id="htm_{$editor_sequence}" value="<!--@if($colorset == "white_text_nohtml" || $colorset == "black_text_nohtml")-->n<!--@end--><!--@if($colorset == "white_texteditor" || $colorset == "white_texteditor")-->br<!--@end-->" />
|
||||
<textarea id="editor_{$editor_sequence}" style="height:{$editor_height}px;" cols="50" rows="5" class="inputTextarea"></textarea>
|
||||
<textarea id="editor_{$editor_sequence}" style="height:{$editor_height}px;" rows="8" cols="42" class="iTextArea"></textarea>
|
||||
</div>
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
editorStartTextarea({$editor_sequence}, "{$editor_content_key_name}", "{$editor_primary_key_name}");
|
||||
|
|
@ -422,8 +422,6 @@
|
|||
<li class="html"><span><button class="xpress_xeditor_mode_toggle_button" type="button" title="{$lang->edit->html_editor}">{$lang->edit->html_editor}</button></span></li>
|
||||
<!--// li class="preview"><span><button type="button" class="xpress_xeditor_preview_button" title="{$lang->cmd_preview}">{$lang->cmd_preview}</button></span></li-->
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
<!--@else-->
|
||||
<div class="tool off disable"></div>
|
||||
|
|
@ -431,7 +429,7 @@
|
|||
|
||||
<!-- 에디터 출력 -->
|
||||
<div id="xe-editor-container-{$editor_sequence}" class="input_area xpress_xeditor_editing_area_container">
|
||||
<textarea id="xpress-editor-{$editor_sequence}" cols="10" rows="10"></textarea>
|
||||
<textarea id="xpress-editor-{$editor_sequence}" rows="8" cols="42"></textarea>
|
||||
</div>
|
||||
|
||||
<!--@if($enable_autosave)-->
|
||||
|
|
@ -440,7 +438,7 @@
|
|||
|
||||
<!-- /입력 -->
|
||||
<button type="button" class="input_control xpress_xeditor_editingArea_verticalResizer" title="{$lang->edit->edit_height_control}"><span>{$lang->edit->edit_height_control}</span></button>
|
||||
|
||||
<span class="input_auto xpress_xeditor_ui_editorresize"><input type="checkbox" id="editorresize"><label for="editorresize">{$lang->edit->edit_height_auto}</label></span>
|
||||
</div>
|
||||
|
||||
<div id="fileUploader_{$editor_sequence}" class="fileUploader" cond="$allow_fileupload"><!--File upload zone-->
|
||||
|
|
|
|||
|
|
@ -1370,16 +1370,17 @@ xe.XpressRange = $.Class({
|
|||
oParentNode = xe.DOMFix.parentNode(oNode);
|
||||
|
||||
if(oParentNode.tagName == "SPAN"){
|
||||
var parentText = $(oParentNode).html();
|
||||
// check if the SPAN element is fully contained
|
||||
// do quick checks before trying indexOf() because indexOf() function is very slow
|
||||
oTmpNode = this._getVeryFirstRealChild(oParentNode);
|
||||
if(oTmpNode == oNode) iSIdx = 1;
|
||||
else iSIdx = arAllBottmNodes.indexOf(oTmpNode);
|
||||
|
||||
else iSIdx = parentText.indexOf(oTmpNode);
|
||||
|
||||
if(iSIdx != -1){
|
||||
oTmpNode = this._getVeryLastRealChild(oParentNode);
|
||||
if(oTmpNode == oNode) iEIdx = 1;
|
||||
else iEIdx = arAllBottmNodes.indexOf(oTmpNode);
|
||||
else iEIdx = parentText.indexOf(oTmpNode);
|
||||
}
|
||||
|
||||
if(iSIdx != -1 && iEIdx != -1){
|
||||
|
|
@ -5047,6 +5048,44 @@ xe.XE_EditingModeToggler = $.Class({
|
|||
}
|
||||
}
|
||||
});
|
||||
|
||||
xe.XE_Editorresize = $.Class({
|
||||
name : "XE_Editorresize",
|
||||
$init : function(elAppContainer, oWYSIWYGIFrame){
|
||||
this.inputArea = $('.xpress_xeditor_editing_area_container', elAppContainer).get(0);
|
||||
this.oVerticalResizer = $('.xpress_xeditor_editingArea_verticalResizer', elAppContainer).get(0);
|
||||
this.oCheckBox = $('#editorresize', elAppContainer).get(0);
|
||||
this.oIframe = oWYSIWYGIFrame;
|
||||
var self = this;
|
||||
$(oWYSIWYGIFrame).load(function(){
|
||||
self.oIframeBody = $(oWYSIWYGIFrame).contents().find('body');
|
||||
});
|
||||
},
|
||||
|
||||
$ON_MSG_APP_READY : function(){
|
||||
this.oApp.registerBrowserEvent(this.oCheckBox, 'change', 'XE_TOGGLE_EDITOR_RESIZE');
|
||||
},
|
||||
$ON_XE_TOGGLE_EDITOR_RESIZE : function(){
|
||||
if(this.oCheckBox.checked == true){
|
||||
if(this._prevHeight == undefined)
|
||||
this._prevHeight = this.inputArea.style.height;
|
||||
|
||||
this.oVerticalResizer.style.display = 'none';
|
||||
this.oApp.registerBrowserEvent(this.oIframeBody, 'keydown', 'XE_EDITOR_RESIZE');
|
||||
|
||||
this.inputArea.style.height = this.oIframe.style.height = this.oIframeBody[0].scrollHeight + 'px';
|
||||
}else{
|
||||
$(this.oIframeBody).unbind('keydown');
|
||||
|
||||
this.oVerticalResizer.style.display = 'block';
|
||||
this.inputArea.style.height = this._prevHeight;
|
||||
this.oIframe.style.height = this._prevHeight;
|
||||
}
|
||||
},
|
||||
$ON_XE_EDITOR_RESIZE : function(){
|
||||
this.inputArea.style.height = this.oIframe.style.height = this.oIframeBody[0].scrollHeight + 'px';
|
||||
}
|
||||
});
|
||||
//}
|
||||
/**
|
||||
* @fileOverview This file contains a message mapping(Korean), which is used to map the message code to the actual message
|
||||
|
|
@ -5105,7 +5144,6 @@ xe.XE_XHTMLFormatter = $.Class({
|
|||
|
||||
TO_IR : function(sContent) {
|
||||
var stack = [];
|
||||
|
||||
// remove xeHandled attrs
|
||||
/*
|
||||
sContent = sContent.replace(/xeHandled="YES"/ig,'');
|
||||
|
|
@ -5172,19 +5210,26 @@ xe.XE_XHTMLFormatter = $.Class({
|
|||
|
||||
return '<'+tag+' '+$.trim(attrs)+'>';
|
||||
} else {
|
||||
stack[stack.length] = {tag:tag, state:state};
|
||||
stack.push({tag:tag, state:state});
|
||||
}
|
||||
} else {
|
||||
var tags = [], t = '';
|
||||
|
||||
// remove unnecessary closing tag
|
||||
if (!stack.length) return '';
|
||||
if (!stack.length){
|
||||
return '';
|
||||
}
|
||||
|
||||
do {
|
||||
t = stack.pop();
|
||||
if (t.tag != tag) continue;
|
||||
if (t.state != 'deleted') tags.push('</'+t.tag+'>');
|
||||
} while(stack.length && t.tag != tag);
|
||||
t = stack[stack.length-1];
|
||||
if (t.tag != tag){
|
||||
continue;
|
||||
}
|
||||
if (t.state != 'deleted'){
|
||||
tags.push('</'+t.tag+'>');
|
||||
}
|
||||
stack.pop();
|
||||
} while(stack.length && t.tag == tag);
|
||||
|
||||
return tags.join('');
|
||||
}
|
||||
|
|
@ -5199,8 +5244,13 @@ xe.XE_XHTMLFormatter = $.Class({
|
|||
t = stack.pop();
|
||||
if (t.state != 'deleted') sContent += '</'+t.tag+'>';
|
||||
} while(stack.length);
|
||||
|
||||
}
|
||||
|
||||
// add new line after </p>
|
||||
regex = /<\/p>[ \t]*(\n)?/ig;
|
||||
sContent = sContent.replace(regex, "</p>\n");
|
||||
|
||||
return sContent;
|
||||
},
|
||||
|
||||
|
|
@ -5248,7 +5298,7 @@ xe.XE_Extension = $.Class({
|
|||
|
||||
$(doc).find('img,div[editor_component]').each(function(){
|
||||
var obj = $(this);
|
||||
if(this.nodeName == 'IMG' && !obj.attr('editor_component')) {
|
||||
if(this.nodeName == 'IMG' && !obj.attr('editor_component') && !obj.attr('widget')) {
|
||||
obj.attr('editor_component','image_link');
|
||||
}
|
||||
if(this.last_doc != doc) {
|
||||
|
|
@ -5763,4 +5813,15 @@ xe.XE_Table = $.Class({
|
|||
}
|
||||
}).extend(xe.XE_Table);
|
||||
|
||||
// Auto Resize Checkbox Toggle Class
|
||||
$('.input_auto>input').change(function(){
|
||||
setTimeout(function(){
|
||||
if($('.input_control').is(':hidden')){
|
||||
$('.input_auto').addClass('line');
|
||||
} else {
|
||||
$('.input_auto').removeClass('line');
|
||||
}
|
||||
},1);
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
|
|
|
|||
|
|
@ -11,8 +11,8 @@ function editorStart_xe(editor_sequence, primary_key, content_key, editor_height
|
|||
var target_src = request_uri+'modules/editor/styles/'+content_style+'/editor.html';
|
||||
|
||||
var textarea = jQuery("#xpress-editor-"+editor_sequence);
|
||||
var iframe = jQuery('<iframe id="editor_iframe_'+editor_sequence+'" allowTransparency="true" frameborder="0" src="'+target_src+'" scrolling="yes" style="width:100%;height:'+editor_height+'px">');
|
||||
var htmlsrc = jQuery('<textarea rows="10" cols="20" class="input_syntax '+colorset+'" style="display:none"></textarea>');
|
||||
var iframe = jQuery('<iframe id="editor_iframe_'+editor_sequence+'" allowTransparency="true" frameborder="0" src="'+target_src+'" scrolling="yes" style="width:100%;height:'+editor_height+'px"></iframe>');
|
||||
var htmlsrc = jQuery('<textarea rows="8" cols="42" class="input_syntax '+colorset+'" style="display:none"></textarea>');
|
||||
var form = textarea.get(0).form;
|
||||
form.setAttribute('editor_sequence', editor_sequence);
|
||||
textarea.css("display","none");
|
||||
|
|
@ -63,7 +63,7 @@ function editorStart_xe(editor_sequence, primary_key, content_key, editor_height
|
|||
|
||||
oEditor.registerPlugin(new xe.XE_PreservTemplate(jQuery("#xpress-editor-"+editor_sequence).val()));
|
||||
oEditor.registerPlugin(new xe.StringConverterManager());
|
||||
oEditor.registerPlugin(new xe.XE_EditingAreaManager("WYSIWYG", oIRTextarea, {nHeight:parseInt(editor_height), nMinHeight:205}, null, elAppContainer));
|
||||
oEditor.registerPlugin(new xe.XE_EditingAreaManager("WYSIWYG", oIRTextarea, {nHeight:parseInt(editor_height), nMinHeight:100}, null, elAppContainer));
|
||||
oEditor.registerPlugin(new xe.XE_EditingArea_HTMLSrc(oHTMLSrcTextarea));
|
||||
oEditor.registerPlugin(new xe.XE_EditingAreaVerticalResizer(elAppContainer));
|
||||
oEditor.registerPlugin(new xe.Utils());
|
||||
|
|
@ -101,7 +101,9 @@ function editorStart_xe(editor_sequence, primary_key, content_key, editor_height
|
|||
oEditor.registerPlugin(new xe.XE_EditingModeToggler(elAppContainer));
|
||||
}
|
||||
|
||||
|
||||
if(jQuery("#editorresize").length) {
|
||||
oEditor.registerPlugin(new xe.XE_Editorresize(elAppContainer, oWYSIWYGIFrame));
|
||||
}
|
||||
//oEditor.registerPlugin(new xe.XE_Preview(elAppContainer));
|
||||
|
||||
if (!jQuery.browser.msie && !jQuery.browser.opera) {
|
||||
|
|
@ -119,6 +121,7 @@ function editorStart_xe(editor_sequence, primary_key, content_key, editor_height
|
|||
if (doc.location == 'about:blank') throw 'blank';
|
||||
|
||||
// get innerHTML
|
||||
doc.body.innerHTML = doc.body.innerHTML.trim();
|
||||
str = doc.body.innerHTML;
|
||||
|
||||
// register plugin
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue