mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-11 14:53:15 +09:00
Merge branch 'develop' into pr/member-phone-number
This commit is contained in:
commit
c09d2a773d
2041 changed files with 23045 additions and 18189 deletions
|
|
@ -1,5 +1,5 @@
|
|||
<div class="x_page-header">
|
||||
<h1>{$lang->installed_addons} <a class="x_icon-question-sign" href="./common/manual/admin/index.html#UMAN_advanced_installed_addon" target="_blank">{$lang->help}</a></h1>
|
||||
<h1>{$lang->installed_addons}</h1>
|
||||
</div>
|
||||
<p>{$lang->about_installed_addon}</p>
|
||||
<form action="./" method="post">
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
</div>
|
||||
<table class="x_table x_table-striped x_table-hover dsTg">
|
||||
<caption>
|
||||
<strong>All({$addon_count})</strong>
|
||||
<strong>{lang('all')} ({$addon_count})</strong>
|
||||
<div class="x_pull-right x_btn-group">
|
||||
<button type="button" class="x_btn x_active __simple">{$lang->simple_view}</button>
|
||||
<button type="button" class="x_btn __detail">{$lang->detail_view}</button>
|
||||
|
|
@ -23,8 +23,8 @@
|
|||
<tr>
|
||||
<th class="title">{$lang->addon_name}</th>
|
||||
<th class="nowr">{$lang->version}</th>
|
||||
<th class="nowr">{$lang->author}</th>
|
||||
<th class="nowr">{$lang->installed_path}</th>
|
||||
<th class="nowr rx_detail_marks">{$lang->author}</th>
|
||||
<th class="nowr rx_detail_marks">{$lang->installed_path}</th>
|
||||
<th class="nowr">{$lang->cmd_setup}</th>
|
||||
<th class="nowr">PC</th>
|
||||
<th class="nowr">Mobile</th>
|
||||
|
|
@ -41,18 +41,18 @@
|
|||
</p>
|
||||
</td>
|
||||
<td><span style="color:#aaa"|cond="$addon->isBlacklisted">{$addon->version}</span></td>
|
||||
<td class="nowr">
|
||||
<td class="nowr rx_detail_marks">
|
||||
<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><span style="color:#aaa"|cond="$addon->isBlacklisted">{$addon->path}</span></td>
|
||||
<td class="rx_detail_marks"><span style="color:#aaa"|cond="$addon->isBlacklisted">{$addon->path}</span></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, ENT_COMPAT | ENT_HTML401, 'UTF-8', false)}" checked="checked"|cond="$addon->activated && !$addon->isBlacklisted" disabled="disabled"|cond="$addon->isBlacklisted" /></td>
|
||||
<td><input type="checkbox" name="mobile_on[]" title="Mobile" value="{htmlspecialchars($addon->addon_name, ENT_COMPAT | ENT_HTML401, 'UTF-8', false)}" checked="checked"|cond="$addon->mactivated && !$addon->isBlacklisted" disabled="disabled"|cond="$addon->isBlacklisted" /></td>
|
||||
<td><input type="checkbox" name="pc_on[]" title="PC" value="{escape($addon->addon_name, false)}" checked="checked"|cond="$addon->activated && !$addon->isBlacklisted" disabled="disabled"|cond="$addon->isBlacklisted" /></td>
|
||||
<td><input type="checkbox" name="mobile_on[]" title="Mobile" value="{escape($addon->addon_name, false)}" checked="checked"|cond="$addon->mactivated && !$addon->isBlacklisted" disabled="disabled"|cond="$addon->isBlacklisted" /></td>
|
||||
<td><a cond="$addon->remove_url" href="{$addon->remove_url}&return_url={urlencode(getRequestUriByServerEnviroment())}">{$lang->cmd_delete}</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
|
|||
|
|
@ -55,8 +55,8 @@
|
|||
<div class="x_control-group">
|
||||
<label class="x_control-label" for="{$var->name}"|cond="$var->type != 'textarea'" for="lang_{$var->name}"|cond="$var->type == 'textarea'">{$var->title}</label>
|
||||
<div class="x_controls">
|
||||
<input cond="$var->type == 'text'" type="text" name="{$var->name}" id="{$var->name}" value="{htmlspecialchars($var->value, ENT_COMPAT | ENT_HTML401, 'UTF-8', false)}">
|
||||
<textarea cond="$var->type == 'textarea'" name="{$var->name}" id="{$var->name}" class="lang_code" rows="8" cols="42">{htmlspecialchars($var->value, ENT_COMPAT | ENT_HTML401, 'UTF-8', false)}</textarea>
|
||||
<input cond="$var->type == 'text'" type="text" name="{$var->name}" id="{$var->name}" value="{escape($var->value)}">
|
||||
<textarea cond="$var->type == 'textarea'" name="{$var->name}" id="{$var->name}" class="lang_code" rows="8" cols="42">{escape($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>
|
||||
|
|
|
|||
|
|
@ -18,11 +18,9 @@ class adminAdminController extends admin
|
|||
function init()
|
||||
{
|
||||
// forbit access if the user is not an administrator
|
||||
$oMemberModel = getModel('member');
|
||||
$logged_info = $oMemberModel->getLoggedInfo();
|
||||
if($logged_info->is_admin != 'Y')
|
||||
if (!$this->user->isAdmin())
|
||||
{
|
||||
return $this->stop("admin.msg_is_not_administrator");
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted('admin.msg_is_not_administrator');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -35,7 +33,7 @@ class adminAdminController extends admin
|
|||
$menuSrl = Context::get('menu_srl');
|
||||
if(!$menuSrl)
|
||||
{
|
||||
return $this->stop('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
$oMenuAdminController = getAdminController('menu');
|
||||
|
|
@ -382,57 +380,15 @@ class adminAdminController extends admin
|
|||
*/
|
||||
function procAdminUpdateConfig()
|
||||
{
|
||||
$adminTitle = Context::get('adminTitle');
|
||||
$file = $_FILES['adminLogo'];
|
||||
|
||||
$oModuleModel = getModel('module');
|
||||
$oAdminConfig = $oModuleModel->getModuleConfig('admin');
|
||||
|
||||
if(!is_object($oAdminConfig))
|
||||
{
|
||||
$oAdminConfig = new stdClass();
|
||||
}
|
||||
|
||||
if($file['tmp_name'])
|
||||
{
|
||||
$target_path = 'files/attach/images/admin/';
|
||||
FileHandler::makeDir($target_path);
|
||||
|
||||
// Get file information
|
||||
list($width, $height, $type, $attrs) = @getimagesize($file['tmp_name']);
|
||||
if($type == 3)
|
||||
{
|
||||
$ext = 'png';
|
||||
}
|
||||
elseif($type == 2)
|
||||
{
|
||||
$ext = 'jpg';
|
||||
}
|
||||
else
|
||||
{
|
||||
$ext = 'gif';
|
||||
}
|
||||
|
||||
$target_filename = sprintf('%s%s.%s.%s', $target_path, 'adminLogo', date('YmdHis'), $ext);
|
||||
@move_uploaded_file($file['tmp_name'], $target_filename);
|
||||
|
||||
$oAdminConfig->adminLogo = $target_filename;
|
||||
}
|
||||
if($adminTitle)
|
||||
{
|
||||
$oAdminConfig->adminTitle = strip_tags($adminTitle);
|
||||
}
|
||||
else
|
||||
{
|
||||
unset($oAdminConfig->adminTitle);
|
||||
}
|
||||
|
||||
if($oAdminConfig)
|
||||
{
|
||||
$oModuleController = getController('module');
|
||||
$oModuleController->insertModuleConfig('admin', $oAdminConfig);
|
||||
}
|
||||
|
||||
$oModuleController = getController('module');
|
||||
$oModuleController->insertModuleConfig('admin', $oAdminConfig);
|
||||
$this->setMessage('success_updated', 'info');
|
||||
|
||||
$returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispAdminSetup');
|
||||
|
|
@ -519,7 +475,7 @@ class adminAdminController extends admin
|
|||
}
|
||||
else
|
||||
{
|
||||
return $this->setError('fail_to_delete');
|
||||
throw new Rhymix\Framework\Exception('fail_to_delete');
|
||||
}
|
||||
$this->setMessage('success_deleted');
|
||||
}
|
||||
|
|
@ -543,7 +499,7 @@ class adminAdminController extends admin
|
|||
Rhymix\Framework\Config::set('use_sso', $vars->use_sso === 'Y');
|
||||
if (!Rhymix\Framework\Config::save())
|
||||
{
|
||||
return $this->setError('msg_failed_to_save_config');
|
||||
throw new Rhymix\Framework\Exception('msg_failed_to_save_config');
|
||||
}
|
||||
|
||||
$this->setMessage('success_updated');
|
||||
|
|
@ -563,19 +519,19 @@ class adminAdminController extends admin
|
|||
// Validate the mail sender's information.
|
||||
if (!$vars->mail_default_name)
|
||||
{
|
||||
return $this->setError('msg_advanced_mailer_sender_name_is_empty');
|
||||
throw new Rhymix\Framework\Exception('msg_advanced_mailer_sender_name_is_empty');
|
||||
}
|
||||
if (!$vars->mail_default_from)
|
||||
{
|
||||
return $this->setError('msg_advanced_mailer_sender_email_is_empty');
|
||||
throw new Rhymix\Framework\Exception('msg_advanced_mailer_sender_email_is_empty');
|
||||
}
|
||||
if (!Mail::isVaildMailAddress($vars->mail_default_from))
|
||||
{
|
||||
return $this->setError('msg_advanced_mailer_sender_email_is_invalid');
|
||||
throw new Rhymix\Framework\Exception('msg_advanced_mailer_sender_email_is_invalid');
|
||||
}
|
||||
if ($vars->mail_default_reply_to && !Mail::isVaildMailAddress($vars->mail_default_reply_to))
|
||||
{
|
||||
return $this->setError('msg_advanced_mailer_reply_to_is_invalid');
|
||||
throw new Rhymix\Framework\Exception('msg_advanced_mailer_reply_to_is_invalid');
|
||||
}
|
||||
|
||||
// Validate the mail driver.
|
||||
|
|
@ -583,7 +539,7 @@ class adminAdminController extends admin
|
|||
$mail_driver = $vars->mail_driver;
|
||||
if (!array_key_exists($mail_driver, $mail_drivers))
|
||||
{
|
||||
return $this->setError('msg_advanced_mailer_sending_method_is_invalid');
|
||||
throw new Rhymix\Framework\Exception('msg_advanced_mailer_sending_method_is_invalid');
|
||||
}
|
||||
|
||||
// Validate the mail driver settings.
|
||||
|
|
@ -593,7 +549,7 @@ class adminAdminController extends admin
|
|||
$conf_value = $vars->{'mail_' . $mail_driver . '_' . $conf_name} ?: null;
|
||||
if (!$conf_value)
|
||||
{
|
||||
return $this->setError('msg_advanced_mailer_smtp_host_is_invalid');
|
||||
throw new Rhymix\Framework\Exception('msg_advanced_mailer_smtp_host_is_invalid');
|
||||
}
|
||||
$mail_driver_config[$conf_name] = $conf_value;
|
||||
}
|
||||
|
|
@ -603,7 +559,7 @@ class adminAdminController extends admin
|
|||
$sms_driver = $vars->sms_driver;
|
||||
if (!array_key_exists($sms_driver, $sms_drivers))
|
||||
{
|
||||
return $this->setError('msg_advanced_mailer_sending_method_is_invalid');
|
||||
throw new Rhymix\Framework\Exception('msg_advanced_mailer_sending_method_is_invalid');
|
||||
}
|
||||
|
||||
// Validate the SMS driver settings.
|
||||
|
|
@ -613,7 +569,7 @@ class adminAdminController extends admin
|
|||
$conf_value = $vars->{'sms_' . $sms_driver . '_' . $conf_name} ?: null;
|
||||
if (!$conf_value)
|
||||
{
|
||||
return $this->setError('msg_advanced_mailer_smtp_host_is_invalid');
|
||||
throw new Rhymix\Framework\Exception('msg_advanced_mailer_smtp_host_is_invalid');
|
||||
}
|
||||
$sms_driver_config[$conf_name] = $conf_value;
|
||||
}
|
||||
|
|
@ -652,7 +608,7 @@ class adminAdminController extends admin
|
|||
Rhymix\Framework\Config::set("sms.allow_split.lms", toBool($vars->allow_split_lms));
|
||||
if (!Rhymix\Framework\Config::save())
|
||||
{
|
||||
return $this->setError('msg_failed_to_save_config');
|
||||
throw new Rhymix\Framework\Exception('msg_failed_to_save_config');
|
||||
}
|
||||
|
||||
$this->setMessage('success_updated');
|
||||
|
|
@ -707,7 +663,7 @@ class adminAdminController extends admin
|
|||
return $item !== '';
|
||||
}));
|
||||
if (!Rhymix\Framework\Filters\IpFilter::validateRanges($allowed_ip)) {
|
||||
return $this->setError('msg_invalid_ip');
|
||||
throw new Rhymix\Framework\Exception('msg_invalid_ip');
|
||||
}
|
||||
|
||||
$denied_ip = array_map('trim', preg_split('/[\r\n]/', $vars->admin_denied_ip));
|
||||
|
|
@ -715,13 +671,13 @@ class adminAdminController extends admin
|
|||
return $item !== '';
|
||||
}));
|
||||
if (!Rhymix\Framework\Filters\IpFilter::validateRanges($denied_ip)) {
|
||||
return $this->setError('msg_invalid_ip');
|
||||
throw new Rhymix\Framework\Exception('msg_invalid_ip');
|
||||
}
|
||||
|
||||
$oMemberAdminModel = getAdminModel('member');
|
||||
if (!$oMemberAdminModel->getMemberAdminIPCheck($allowed_ip, $denied_ip))
|
||||
{
|
||||
return $this->setError('msg_current_ip_will_be_denied');
|
||||
throw new Rhymix\Framework\Exception('msg_current_ip_will_be_denied');
|
||||
}
|
||||
|
||||
Rhymix\Framework\Config::set('admin.allow', array_values($allowed_ip));
|
||||
|
|
@ -729,11 +685,13 @@ class adminAdminController extends admin
|
|||
Rhymix\Framework\Config::set('session.use_keys', $vars->use_session_keys === 'Y');
|
||||
Rhymix\Framework\Config::set('session.use_ssl', $vars->use_session_ssl === 'Y');
|
||||
Rhymix\Framework\Config::set('session.use_ssl_cookies', $vars->use_cookies_ssl === 'Y');
|
||||
Rhymix\Framework\Config::set('security.check_csrf_token', $vars->check_csrf_token === 'Y');
|
||||
Rhymix\Framework\Config::set('security.nofollow', $vars->use_nofollow === 'Y');
|
||||
|
||||
// Save
|
||||
if (!Rhymix\Framework\Config::save())
|
||||
{
|
||||
return $this->setError('msg_failed_to_save_config');
|
||||
throw new Rhymix\Framework\Exception('msg_failed_to_save_config');
|
||||
}
|
||||
|
||||
$this->setMessage('success_updated');
|
||||
|
|
@ -776,7 +734,7 @@ class adminAdminController extends admin
|
|||
}
|
||||
if (!Rhymix\Framework\Cache::getDriverInstance($vars->object_cache_type, $cache_servers))
|
||||
{
|
||||
return $this->setError('msg_cache_handler_not_supported');
|
||||
throw new Rhymix\Framework\Exception('msg_cache_handler_not_supported');
|
||||
}
|
||||
Rhymix\Framework\Config::set('cache', array(
|
||||
'type' => $vars->object_cache_type,
|
||||
|
|
@ -827,6 +785,7 @@ class adminAdminController extends admin
|
|||
Rhymix\Framework\Config::set('use_rewrite', $vars->use_rewrite === 'Y');
|
||||
Rhymix\Framework\Config::set('session.delay', $vars->delay_session === 'Y');
|
||||
Rhymix\Framework\Config::set('session.use_db', $vars->use_db_session === 'Y');
|
||||
Rhymix\Framework\Config::set('view.manager_layout', $vars->manager_layout ?: 'module');
|
||||
Rhymix\Framework\Config::set('view.minify_scripts', $vars->minify_scripts ?: 'common');
|
||||
Rhymix\Framework\Config::set('view.concat_scripts', $vars->concat_scripts ?: 'none');
|
||||
Rhymix\Framework\Config::set('view.server_push', $vars->use_server_push === 'Y');
|
||||
|
|
@ -835,7 +794,7 @@ class adminAdminController extends admin
|
|||
// Save
|
||||
if (!Rhymix\Framework\Config::save())
|
||||
{
|
||||
return $this->setError('msg_failed_to_save_config');
|
||||
throw new Rhymix\Framework\Exception('msg_failed_to_save_config');
|
||||
}
|
||||
|
||||
$this->setMessage('success_updated');
|
||||
|
|
@ -849,13 +808,18 @@ class adminAdminController extends admin
|
|||
{
|
||||
$vars = Context::getRequestVars();
|
||||
|
||||
// Save display type settings
|
||||
$display_type = array_values(array_filter($vars->debug_display_type, function($str) {
|
||||
return in_array($str, ['panel', 'comment', 'file']);
|
||||
}));
|
||||
|
||||
// Debug settings
|
||||
Rhymix\Framework\Config::set('debug.enabled', $vars->debug_enabled === 'Y');
|
||||
Rhymix\Framework\Config::set('debug.log_slow_queries', max(0, floatval($vars->debug_log_slow_queries)));
|
||||
Rhymix\Framework\Config::set('debug.log_slow_triggers', max(0, floatval($vars->debug_log_slow_triggers)));
|
||||
Rhymix\Framework\Config::set('debug.log_slow_widgets', max(0, floatval($vars->debug_log_slow_widgets)));
|
||||
Rhymix\Framework\Config::set('debug.log_slow_remote_requests', max(0, floatval($vars->debug_log_slow_remote_requests)));
|
||||
Rhymix\Framework\Config::set('debug.display_type', strval($vars->debug_display_type) ?: 'comment');
|
||||
Rhymix\Framework\Config::set('debug.display_type', $display_type);
|
||||
Rhymix\Framework\Config::set('debug.display_to', strval($vars->debug_display_to) ?: 'admin');
|
||||
Rhymix\Framework\Config::set('debug.write_error_log', strval($vars->debug_write_error_log) ?: 'fatal');
|
||||
|
||||
|
|
@ -873,15 +837,15 @@ class adminAdminController extends admin
|
|||
), $log_filename);
|
||||
if (file_exists(RX_BASEDIR . $log_filename_today) && !is_writable(RX_BASEDIR . $log_filename_today))
|
||||
{
|
||||
return $this->setError('msg_debug_log_filename_not_writable');
|
||||
throw new Rhymix\Framework\Exception('msg_debug_log_filename_not_writable');
|
||||
}
|
||||
if (!file_exists(dirname(RX_BASEDIR . $log_filename)) && !FileHandler::makeDir(dirname(RX_BASEDIR . $log_filename)))
|
||||
{
|
||||
return $this->setError('msg_debug_log_filename_not_writable');
|
||||
throw new Rhymix\Framework\Exception('msg_debug_log_filename_not_writable');
|
||||
}
|
||||
if (!is_writable(dirname(RX_BASEDIR . $log_filename)))
|
||||
{
|
||||
return $this->setError('msg_debug_log_filename_not_writable');
|
||||
throw new Rhymix\Framework\Exception('msg_debug_log_filename_not_writable');
|
||||
}
|
||||
Rhymix\Framework\Config::set('debug.log_filename', $log_filename);
|
||||
|
||||
|
|
@ -891,14 +855,14 @@ class adminAdminController extends admin
|
|||
return $item !== '';
|
||||
}));
|
||||
if (!Rhymix\Framework\Filters\IpFilter::validateRanges($allowed_ip)) {
|
||||
return $this->setError('msg_invalid_ip');
|
||||
throw new Rhymix\Framework\Exception('msg_invalid_ip');
|
||||
}
|
||||
Rhymix\Framework\Config::set('debug.allow', array_values($allowed_ip));
|
||||
|
||||
// Save
|
||||
if (!Rhymix\Framework\Config::save())
|
||||
{
|
||||
return $this->setError('msg_failed_to_save_config');
|
||||
throw new Rhymix\Framework\Exception('msg_failed_to_save_config');
|
||||
}
|
||||
|
||||
$this->setMessage('success_updated');
|
||||
|
|
@ -931,7 +895,7 @@ class adminAdminController extends admin
|
|||
// Save
|
||||
if (!Rhymix\Framework\Config::save())
|
||||
{
|
||||
return $this->setError('msg_failed_to_save_config');
|
||||
throw new Rhymix\Framework\Exception('msg_failed_to_save_config');
|
||||
}
|
||||
|
||||
$this->setMessage('success_updated');
|
||||
|
|
@ -952,7 +916,7 @@ class adminAdminController extends admin
|
|||
|
||||
if (!Rhymix\Framework\Filters\IpFilter::validateRanges($allowed_ip))
|
||||
{
|
||||
return $this->setError('msg_invalid_ip');
|
||||
throw new Rhymix\Framework\Exception('msg_invalid_ip');
|
||||
}
|
||||
|
||||
Rhymix\Framework\Config::set('lock.locked', $vars->sitelock_locked === 'Y');
|
||||
|
|
@ -961,7 +925,7 @@ class adminAdminController extends admin
|
|||
Rhymix\Framework\Config::set('lock.allow', array_values($allowed_ip));
|
||||
if (!Rhymix\Framework\Config::save())
|
||||
{
|
||||
return $this->setError('msg_failed_to_save_config');
|
||||
throw new Rhymix\Framework\Exception('msg_failed_to_save_config');
|
||||
}
|
||||
|
||||
$this->setMessage('success_updated');
|
||||
|
|
@ -982,7 +946,7 @@ class adminAdminController extends admin
|
|||
$domain_info = getModel('module')->getSiteInfo($domain_srl);
|
||||
if ($domain_info->domain_srl != $domain_srl)
|
||||
{
|
||||
return $this->setError('msg_domain_not_found');
|
||||
throw new Rhymix\Framework\Exception('msg_domain_not_found');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -991,7 +955,7 @@ class adminAdminController extends admin
|
|||
$vars->subtitle = utf8_trim($vars->subtitle);
|
||||
if ($vars->title === '')
|
||||
{
|
||||
return $this->setError('msg_site_title_is_empty');
|
||||
throw new Rhymix\Framework\Exception('msg_site_title_is_empty');
|
||||
}
|
||||
|
||||
// Validate the domain.
|
||||
|
|
@ -1009,12 +973,12 @@ class adminAdminController extends admin
|
|||
}
|
||||
if (!$vars->domain)
|
||||
{
|
||||
return $this->setError('msg_invalid_domain');
|
||||
throw new Rhymix\Framework\Exception('msg_invalid_domain');
|
||||
}
|
||||
$existing_domain = getModel('module')->getSiteInfoByDomain($vars->domain);
|
||||
if ($existing_domain && $existing_domain->domain == $vars->domain && (!$domain_info || $existing_domain->domain_srl != $domain_info->domain_srl))
|
||||
{
|
||||
return $this->setError('msg_domain_already_exists');
|
||||
throw new Rhymix\Framework\Exception('msg_domain_already_exists');
|
||||
}
|
||||
|
||||
// Validate the ports.
|
||||
|
|
@ -1028,11 +992,11 @@ class adminAdminController extends admin
|
|||
}
|
||||
if ($vars->http_port !== 0 && ($vars->http_port < 1 || $vars->http_port > 65535 || $vars->http_port == 443))
|
||||
{
|
||||
return $this->setError('msg_invalid_http_port');
|
||||
throw new Rhymix\Framework\Exception('msg_invalid_http_port');
|
||||
}
|
||||
if ($vars->https_port !== 0 && ($vars->https_port < 1 || $vars->https_port > 65535 || $vars->https_port == 80))
|
||||
{
|
||||
return $this->setError('msg_invalid_https_port');
|
||||
throw new Rhymix\Framework\Exception('msg_invalid_https_port');
|
||||
}
|
||||
|
||||
// Validate the security setting.
|
||||
|
|
@ -1046,7 +1010,7 @@ class adminAdminController extends admin
|
|||
$module_info = getModel('module')->getModuleInfoByModuleSrl(intval($vars->index_module_srl));
|
||||
if (!$module_info || $module_info->module_srl != $vars->index_module_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_index_module_srl');
|
||||
throw new Rhymix\Framework\Exception('msg_invalid_index_module_srl');
|
||||
}
|
||||
|
||||
// Validate the index document setting.
|
||||
|
|
@ -1055,11 +1019,11 @@ class adminAdminController extends admin
|
|||
$oDocument = getModel('document')->getDocument($vars->index_document_srl);
|
||||
if (!$oDocument || !$oDocument->isExists())
|
||||
{
|
||||
return $this->setError('msg_invalid_index_document_srl');
|
||||
throw new Rhymix\Framework\Exception('msg_invalid_index_document_srl');
|
||||
}
|
||||
if (intval($oDocument->get('module_srl')) !== intval($vars->index_module_srl))
|
||||
{
|
||||
return $this->setError('msg_invalid_index_document_srl_module_srl');
|
||||
throw new Rhymix\Framework\Exception('msg_invalid_index_document_srl_module_srl');
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -1071,14 +1035,14 @@ class adminAdminController extends admin
|
|||
$enabled_lang = Rhymix\Framework\Config::get('locale.enabled_lang');
|
||||
if (!in_array($vars->default_lang, $enabled_lang))
|
||||
{
|
||||
return $this->setError('msg_lang_is_not_enabled');
|
||||
throw new Rhymix\Framework\Exception('msg_lang_is_not_enabled');
|
||||
}
|
||||
|
||||
// Validate the default time zone.
|
||||
$timezone_list = Rhymix\Framework\DateTime::getTimezoneList();
|
||||
if (!isset($timezone_list[$vars->default_timezone]))
|
||||
{
|
||||
return $this->setError('msg_invalid_timezone');
|
||||
throw new Rhymix\Framework\Exception('msg_invalid_timezone');
|
||||
}
|
||||
|
||||
// Clean up the header and footer scripts.
|
||||
|
|
@ -1201,16 +1165,16 @@ class adminAdminController extends admin
|
|||
$domain_srl = strval(Context::get('domain_srl'));
|
||||
if ($domain_srl === '')
|
||||
{
|
||||
return $this->setError('msg_domain_not_found');
|
||||
throw new Rhymix\Framework\Exception('msg_domain_not_found');
|
||||
}
|
||||
$domain_info = getModel('module')->getSiteInfo($domain_srl);
|
||||
if ($domain_info->domain_srl != $domain_srl)
|
||||
{
|
||||
return $this->setError('msg_domain_not_found');
|
||||
throw new Rhymix\Framework\Exception('msg_domain_not_found');
|
||||
}
|
||||
if ($domain_info->is_default_domain === 'Y')
|
||||
{
|
||||
return $this->setError('msg_cannot_delete_default_domain');
|
||||
throw new Rhymix\Framework\Exception('msg_cannot_delete_default_domain');
|
||||
}
|
||||
|
||||
// Delete the domain.
|
||||
|
|
@ -1243,19 +1207,19 @@ class adminAdminController extends admin
|
|||
{
|
||||
if (!($conn = @ftp_connect($vars->ftp_host, $vars->ftp_port, 3)))
|
||||
{
|
||||
return $this->setError('msg_ftp_not_connected');
|
||||
throw new Rhymix\Framework\Exception('msg_ftp_not_connected');
|
||||
}
|
||||
if (!@ftp_login($conn, $vars->ftp_user, $vars->ftp_pass))
|
||||
{
|
||||
return $this->setError('msg_ftp_invalid_auth_info');
|
||||
throw new Rhymix\Framework\Exception('msg_ftp_invalid_auth_info');
|
||||
}
|
||||
if (!@ftp_pasv($conn, $vars->ftp_pasv === 'Y'))
|
||||
{
|
||||
return $this->setError('msg_ftp_cannot_set_passive_mode');
|
||||
throw new Rhymix\Framework\Exception('msg_ftp_cannot_set_passive_mode');
|
||||
}
|
||||
if (!@ftp_chdir($conn, $vars->ftp_path))
|
||||
{
|
||||
return $this->setError('msg_ftp_invalid_path');
|
||||
throw new Rhymix\Framework\Exception('msg_ftp_invalid_path');
|
||||
}
|
||||
ftp_close($conn);
|
||||
}
|
||||
|
|
@ -1263,23 +1227,23 @@ class adminAdminController extends admin
|
|||
{
|
||||
if (!function_exists('ssh2_connect'))
|
||||
{
|
||||
return $this->setError('disable_sftp_support');
|
||||
throw new Rhymix\Framework\Exception('disable_sftp_support');
|
||||
}
|
||||
if (!($conn = ssh2_connect($vars->ftp_host, $vars->ftp_port)))
|
||||
{
|
||||
return $this->setError('msg_ftp_not_connected');
|
||||
throw new Rhymix\Framework\Exception('msg_ftp_not_connected');
|
||||
}
|
||||
if (!@ssh2_auth_password($conn, $vars->ftp_user, $vars->ftp_pass))
|
||||
{
|
||||
return $this->setError('msg_ftp_invalid_auth_info');
|
||||
throw new Rhymix\Framework\Exception('msg_ftp_invalid_auth_info');
|
||||
}
|
||||
if (!@($sftp = ssh2_sftp($conn)))
|
||||
{
|
||||
return $this->setError('msg_ftp_sftp_error');
|
||||
throw new Rhymix\Framework\Exception('msg_ftp_sftp_error');
|
||||
}
|
||||
if (!@ssh2_sftp_stat($sftp, $vars->ftp_path . 'common/defaults/config.php'))
|
||||
{
|
||||
return $this->setError('msg_ftp_invalid_path');
|
||||
throw new Rhymix\Framework\Exception('msg_ftp_invalid_path');
|
||||
}
|
||||
unset($sftp, $conn);
|
||||
}
|
||||
|
|
@ -1294,7 +1258,7 @@ class adminAdminController extends admin
|
|||
Rhymix\Framework\Config::set('ftp.sftp', $vars->ftp_sftp === 'Y');
|
||||
if (!Rhymix\Framework\Config::save())
|
||||
{
|
||||
return $this->setError('msg_failed_to_save_config');
|
||||
throw new Rhymix\Framework\Exception('msg_failed_to_save_config');
|
||||
}
|
||||
|
||||
$this->setMessage('success_updated');
|
||||
|
|
@ -1315,7 +1279,7 @@ class adminAdminController extends admin
|
|||
Rhymix\Framework\Config::set('ftp.sftp', false);
|
||||
if (!Rhymix\Framework\Config::save())
|
||||
{
|
||||
return $this->setError('msg_failed_to_save_config');
|
||||
throw new Rhymix\Framework\Exception('msg_failed_to_save_config');
|
||||
}
|
||||
|
||||
$this->setMessage('success_deleted');
|
||||
|
|
@ -1348,7 +1312,7 @@ class adminAdminController extends admin
|
|||
$image_filepath = 'files/attach/xeicon/';
|
||||
if ($domain_srl)
|
||||
{
|
||||
$image_filepath .= intval($domain_srl) . '/';
|
||||
$image_filepath .= ($virtual_site = intval($domain_srl) . '/');
|
||||
}
|
||||
|
||||
if ($deleteIcon)
|
||||
|
|
|
|||
|
|
@ -36,11 +36,9 @@ class adminAdminView extends admin
|
|||
function init()
|
||||
{
|
||||
// forbit access if the user is not an administrator
|
||||
$oMemberModel = getModel('member');
|
||||
$logged_info = $oMemberModel->getLoggedInfo();
|
||||
if($logged_info->is_admin != 'Y')
|
||||
if (!$this->user->isAdmin())
|
||||
{
|
||||
return $this->stop("admin.msg_is_not_administrator");
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted('admin.msg_is_not_administrator');
|
||||
}
|
||||
|
||||
// change into administration layout
|
||||
|
|
@ -81,6 +79,11 @@ class adminAdminView extends admin
|
|||
config('crypto.session_key', Rhymix\Framework\Security::getRandom(64, 'alnum'));
|
||||
$changed = true;
|
||||
}
|
||||
if (config('file.folder_structure') === null)
|
||||
{
|
||||
config('file.folder_structure', 1);
|
||||
$changed = true;
|
||||
}
|
||||
|
||||
// Save new configuration.
|
||||
if ($changed)
|
||||
|
|
@ -197,14 +200,6 @@ class adminAdminView extends admin
|
|||
}
|
||||
}
|
||||
|
||||
// Admin logo, title setup
|
||||
$objConfig = $oModuleModel->getModuleConfig('admin');
|
||||
$gnbTitleInfo = new stdClass();
|
||||
$gnbTitleInfo->adminTitle = $objConfig->adminTitle ? $objConfig->adminTitle : 'Admin';
|
||||
$gnbTitleInfo->adminLogo = $objConfig->adminLogo ? $objConfig->adminLogo : '';
|
||||
|
||||
$browserTitle = $gnbTitleInfo->adminTitle . ' - ' . ($subMenuTitle ? $subMenuTitle : 'Dashboard');
|
||||
|
||||
// Get list of favorite
|
||||
$oAdminAdminModel = getAdminModel('admin');
|
||||
$output = $oAdminAdminModel->getFavoriteList(0, true);
|
||||
|
|
@ -255,7 +250,7 @@ class adminAdminView extends admin
|
|||
Context::set('gnbUrlList', $menu->list);
|
||||
Context::set('parentSrl', $parentSrl);
|
||||
Context::set('gnb_title_info', $gnbTitleInfo);
|
||||
Context::addBrowserTitle($browserTitle);
|
||||
Context::addBrowserTitle($subMenuTitle ? $subMenuTitle : 'Dashboard');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -454,6 +449,8 @@ class adminAdminView extends admin
|
|||
Context::set('use_session_keys', Rhymix\Framework\Config::get('session.use_keys'));
|
||||
Context::set('use_session_ssl', Rhymix\Framework\Config::get('session.use_ssl'));
|
||||
Context::set('use_cookies_ssl', Rhymix\Framework\Config::get('session.use_ssl_cookies'));
|
||||
Context::set('check_csrf_token', Rhymix\Framework\Config::get('security.check_csrf_token'));
|
||||
Context::set('use_nofollow', Rhymix\Framework\Config::get('security.nofollow'));
|
||||
|
||||
$this->setTemplateFile('config_security');
|
||||
}
|
||||
|
|
@ -544,6 +541,7 @@ class adminAdminView extends admin
|
|||
Context::set('use_ssl', Rhymix\Framework\Config::get('url.ssl'));
|
||||
Context::set('delay_session', Rhymix\Framework\Config::get('session.delay'));
|
||||
Context::set('use_db_session', Rhymix\Framework\Config::get('session.use_db'));
|
||||
Context::set('manager_layout', Rhymix\Framework\Config::get('view.manager_layout'));
|
||||
Context::set('minify_scripts', Rhymix\Framework\Config::get('view.minify_scripts'));
|
||||
Context::set('concat_scripts', Rhymix\Framework\Config::get('view.concat_scripts'));
|
||||
Context::set('use_server_push', Rhymix\Framework\Config::get('view.server_push'));
|
||||
|
|
@ -565,7 +563,7 @@ class adminAdminView extends admin
|
|||
Context::set('debug_log_slow_widgets', Rhymix\Framework\Config::get('debug.log_slow_widgets'));
|
||||
Context::set('debug_log_slow_remote_requests', Rhymix\Framework\Config::get('debug.log_slow_remote_requests'));
|
||||
Context::set('debug_log_filename', Rhymix\Framework\Config::get('debug.log_filename') ?: 'files/debug/YYYYMMDD.php');
|
||||
Context::set('debug_display_type', Rhymix\Framework\Config::get('debug.display_type'));
|
||||
Context::set('debug_display_type', (array)Rhymix\Framework\Config::get('debug.display_type'));
|
||||
Context::set('debug_display_content', Rhymix\Framework\Config::get('debug.display_content'));
|
||||
Context::set('debug_display_to', Rhymix\Framework\Config::get('debug.display_to'));
|
||||
Context::set('debug_write_error_log', Rhymix\Framework\Config::get('debug.write_error_log'));
|
||||
|
|
@ -636,7 +634,7 @@ class adminAdminView extends admin
|
|||
$domain_info = getModel('module')->getSiteInfo($domain_srl);
|
||||
if ($domain_info->domain_srl != $domain_srl)
|
||||
{
|
||||
return $this->setError('msg_domain_not_found');
|
||||
throw new Rhymix\Framework\Exception('msg_domain_not_found');
|
||||
}
|
||||
}
|
||||
Context::set('domain_info', $domain_info);
|
||||
|
|
@ -708,7 +706,6 @@ class adminAdminView extends admin
|
|||
function dispAdminSetup()
|
||||
{
|
||||
$oModuleModel = getModel('module');
|
||||
$configObject = $oModuleModel->getModuleConfig('admin');
|
||||
|
||||
$oAdmin = getClass('admin');
|
||||
$oMenuAdminModel = getAdminModel('menu');
|
||||
|
|
@ -716,7 +713,6 @@ class adminAdminView extends admin
|
|||
|
||||
Context::set('menu_srl', $output->menu_srl);
|
||||
Context::set('menu_title', $output->title);
|
||||
Context::set('config_object', $configObject);
|
||||
$this->setTemplateFile('admin_setup');
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -144,6 +144,11 @@ $lang->msg_invalid_timezone = 'The selected time zone is not usable on this serv
|
|||
$lang->use_db_session = 'Store Session in DB';
|
||||
$lang->about_db_session = 'Store PHP sessions in the database. This setting must be turned on if you want to see current users or get detailed statistics.<br>Unnecessary use may decrease server performance.';
|
||||
$lang->qmail_compatibility = 'Enable Qmail';
|
||||
$lang->manager_layout = 'Module Setting Screen';
|
||||
$lang->cmd_manager_layout_module = 'Use module layout';
|
||||
$lang->cmd_manager_layout_admin = 'Use admin layout';
|
||||
$lang->view_in_manager_layout = 'View in admin screen';
|
||||
$lang->about_manager_layout = 'Force module setting screen to use the admin layout instead of the module\'s own layout.';
|
||||
$lang->minify_scripts = 'Minify scripts';
|
||||
$lang->cmd_minify_all = 'All files';
|
||||
$lang->cmd_minify_common = 'Common files only';
|
||||
|
|
@ -158,13 +163,17 @@ $lang->about_concat_scripts = 'Automatically combine CSS and JS scripts into as
|
|||
$lang->use_server_push = 'Use HTTP/2 Server Push';
|
||||
$lang->use_gzip = 'gzip Compression';
|
||||
$lang->delay_session = 'Delay session start';
|
||||
$lang->about_delay_session = 'To improve performance when using a caching proxy server such as Varnish, do not issue sessions to visitors until they log in.<br>Selecting this option may cause view counts and visitor counts to become inaccurate.';
|
||||
$lang->about_delay_session = 'To improve performance when using a caching proxy server such as Varnish, do not issue sessions to visitors until they log in.<br>Selecting this option may interfere with autologin, and visitor counts may become inaccurate.';
|
||||
$lang->use_session_keys = 'Use session security keys';
|
||||
$lang->about_use_session_keys = 'Use additional security keys to guard against session theft. This setting is highly recommended if you don\'t use SSL-only sessions.<br>This setting may cause some users to become logged out.';
|
||||
$lang->use_session_ssl = 'Use SSL-only session';
|
||||
$lang->about_use_session_ssl = 'Force the session to be SSL-only.<br>This helps improve security if your site always uses SSL.';
|
||||
$lang->use_cookies_ssl = 'Use SSL-only cookies';
|
||||
$lang->about_use_cookies_ssl = 'Force all cookies to be SSL-only.';
|
||||
$lang->check_csrf_token = 'Use CSRF tokens';
|
||||
$lang->about_check_csrf_token = 'Use CSRF tokens to validate requests. This is more secure but may break some functionality.<br>If not selected, Rhymix will use only the Referer header to defend against CSRF attacks.';
|
||||
$lang->use_nofollow = 'Use nofollow attribute';
|
||||
$lang->about_use_nofollow = 'Add rel="nofollow" to all links submitted by users in order to reduce the effectiveness of spamming.<br>This does not apply to content submitted by the administrator.';
|
||||
$lang->use_object_cache = 'Use Cache';
|
||||
$lang->cache_default_ttl = 'Cache default TTL';
|
||||
$lang->cache_host = 'Host';
|
||||
|
|
|
|||
|
|
@ -145,6 +145,11 @@ $lang->msg_invalid_timezone = '사용할 수 없는 표준 시간대입니다.';
|
|||
$lang->use_db_session = '인증 세션 DB 사용';
|
||||
$lang->about_db_session = '세션을 DB에 저장합니다. 현재 접속자를 파악하려면 이 기능을 켜야 합니다.<br>불필요하게 사용하면 서버 성능에 악영향을 줄 수 있으니 주의하십시오.';
|
||||
$lang->qmail_compatibility = '큐메일(Qmail) 사용';
|
||||
$lang->manager_layout = '모듈 설정 화면';
|
||||
$lang->cmd_manager_layout_module = '해당 모듈 레이아웃 사용';
|
||||
$lang->cmd_manager_layout_admin = '관리자 레이아웃 사용';
|
||||
$lang->view_in_manager_layout = '관리자 화면에서 보기';
|
||||
$lang->about_manager_layout = '배경이 어두운 레이아웃 등에서 모듈 설정 화면을 이용하기 어려울 경우 관리자 레이아웃을 강제 적용할 수 있습니다.';
|
||||
$lang->minify_scripts = '스크립트 자동 압축';
|
||||
$lang->cmd_minify_all = '모든 파일을 압축';
|
||||
$lang->cmd_minify_common = '공통 파일만 압축';
|
||||
|
|
@ -159,13 +164,17 @@ $lang->about_concat_scripts = 'CSS, JS 파일들을 하나로 합쳐서 전송
|
|||
$lang->use_server_push = 'Server Push 사용';
|
||||
$lang->use_gzip = 'gzip 압축';
|
||||
$lang->delay_session = '세션 시작 지연';
|
||||
$lang->about_delay_session = 'Varnish 등의 프록시 캐싱 서버 사용시 성능 개선을 위해, 로그인하지 않은 사용자에게는 인증 세션을 부여하지 않습니다.<br>이 옵션을 선택할 경우 방문자 수 및 조회수 집계가 정확하게 이루어지지 않을 수 있습니다.';
|
||||
$lang->about_delay_session = 'Varnish 등의 프록시 캐싱 서버 사용시 성능 개선을 위해, 로그인하지 않은 사용자에게는 인증 세션을 부여하지 않습니다.<br>이 옵션을 사용하면 자동 로그인이 되지 않으며, 방문자 수 집계가 정확하게 이루어지지 않을 수 있습니다.';
|
||||
$lang->use_session_keys = '세션 보안키 사용';
|
||||
$lang->about_use_session_keys = '세션 탈취를 방지하기 위한 보안키를 사용합니다. SSL 전용 세션을 사용하지 않을 경우 반드시 보안키를 사용하시기를 권장합니다.<br>사용자 환경에 따라 로그인이 풀리는 문제가 발생할 수 있습니다.';
|
||||
$lang->use_session_ssl = 'SSL 전용 세션 사용';
|
||||
$lang->about_use_session_ssl = '세션을 SSL 전용으로 지정하여 SSL이 아닌 페이지에서는 사용할 수 없도록 합니다.<br>SSL을 항상 사용하도록 설정되어 있는 경우에만 활성화됩니다.';
|
||||
$lang->use_cookies_ssl = 'SSL 전용 쿠키 사용';
|
||||
$lang->about_use_cookies_ssl = '세션뿐 아니라 모든 쿠키를 SSL 전용으로 지정합니다.<br>SSL을 항상 사용하도록 설정되어 있는 경우에만 활성화됩니다.';
|
||||
$lang->check_csrf_token = 'CSRF 토큰 사용';
|
||||
$lang->about_check_csrf_token = 'CSRF 토큰을 사용하여 정상적인 요청 여부를 확인합니다. 보안이 향상되지만, 일부 서드파티 자료와 호환되지 않을 수 있습니다.<br>사용하지 않을 경우 리퍼러 헤더 확인만으로 CSRF 공격에 방어합니다.';
|
||||
$lang->use_nofollow = 'Nofollow 속성 사용';
|
||||
$lang->about_use_nofollow = '사용자들이 작성한 글에 포함된 모든 링크에 rel="nofollow" 속성을 추가하여 스팸으로 인한 사이트 신뢰도 저하를 방지합니다.<br>관리자가 작성한 글에는 적용되지 않습니다.';
|
||||
$lang->use_object_cache = '캐시 사용';
|
||||
$lang->cache_default_ttl = '캐시 기본 TTL';
|
||||
$lang->cache_host = '호스트';
|
||||
|
|
@ -334,7 +343,7 @@ $lang->msg_php_warning_notice = '이 서버는 안전하지 않은 PHP 버전을
|
|||
$lang->msg_php_warning_notice_explain = '<li>매우 심각한 PHP 보안 문제 및 공격에 노출될 수 있습니다.</li><li>Rhymix 최신 버전을 사용할 수 없습니다.</li><li>Rhymix 최신 버전 이상에서 지원하는 확장 기능을 사용할 수 없습니다.</li><li>일부 확장 기능이 동작하지 않거나, 이로 인해 장애가 발생할 수 있습니다.</li>';
|
||||
$lang->msg_php_warning_now_version = '이 서버의 PHP 버전';
|
||||
$lang->msg_php_warning_latest_version_check = 'PHP 최신 안정버전 확인하기';
|
||||
$lang->admin_setup = '관리자 설정';
|
||||
$lang->admin_setup = '관리자 화면 설정';
|
||||
$lang->open_all = '모두 펼치기';
|
||||
$lang->close_all = '모두 접기';
|
||||
$lang->desktop_settings = 'PC 설정';
|
||||
|
|
|
|||
9
modules/admin/tpl/_admin_common.html
Normal file
9
modules/admin/tpl/_admin_common.html
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<config autoescape="on" />
|
||||
|
||||
<load target="css/admin.bootstrap.css" />
|
||||
<load target="css/admin.iefix.css" />
|
||||
<load target="./../../../common/css/xeicon/xeicon.css" />
|
||||
<load target="css/admin.css" />
|
||||
<load target="js/admin.js" />
|
||||
<load target="js/jquery.tmpl.js" />
|
||||
<load target="js/jquery.jstree.js" />
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
<config autoescape="on" />
|
||||
<load target="js/dashboard_counter.js" />
|
||||
|
||||
<div>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
<config autoescape="on" />
|
||||
|
||||
<div>
|
||||
<section class="member">
|
||||
<h2>{$lang->member}</h2>
|
||||
|
|
@ -12,7 +14,7 @@
|
|||
<dl>
|
||||
<dt>{$lang->menu_gnb['user']}: </dt><dd><a href="{getUrl('', 'module', 'admin', 'act', 'dispMemberAdminList')}">{number_format($status->member->totalCount)} (<!--@if($status->member->todayCount > 0)-->+<!--@end-->{number_format($status->member->todayCount)})</a></dd>
|
||||
</dl>
|
||||
<a href="{getUrl('', 'module', 'admin', 'act', 'dispMemberAdminList')}"><i>›</i> {$lang->more}</a>
|
||||
<a href="{getUrl('', 'module', 'admin', 'act', 'dispMemberAdminList')}"><i class="xi-angle-right"></i><span>{$lang->more}</span></a>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
|
@ -40,7 +42,7 @@
|
|||
<dl>
|
||||
<dt>{$lang->menu_gnb_sub['document']}: </dt><dd><a href="{getUrl('', 'module', 'admin', 'act', 'dispDocumentAdminList')}">{number_format($status->document->totalCount)} (<!--@if($status->document->todayCount > 0)-->+<!--@end-->{number_format($status->document->todayCount)})</a></dd>
|
||||
</dl>
|
||||
<a href="{getUrl('', 'module', 'admin', 'act', 'dispDocumentAdminList')}"><i>›</i> {$lang->more}</a>
|
||||
<a href="{getUrl('', 'module', 'admin', 'act', 'dispDocumentAdminList')}"><i class="xi-angle-right"></i><span>{$lang->more}</span></a>
|
||||
</div>
|
||||
</section>
|
||||
<section class="reply">
|
||||
|
|
@ -60,7 +62,7 @@
|
|||
</li>
|
||||
<li cond="!is_array($latestCommentList) || count($latestCommentList) < 1">{$lang->no_data}</li>
|
||||
</ul>
|
||||
<p class="more"><a href="{getUrl('', 'module', 'admin', 'act', 'dispCommentAdminList')}"><i>›</i> {$lang->more}</a></p>
|
||||
<p class="more"><a href="{getUrl('', 'module', 'admin', 'act', 'dispCommentAdminList')}"><i class="xi-angle-right"></i><span>{$lang->more}</span></a></p>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,20 +1,22 @@
|
|||
<config autoescape="on" />
|
||||
|
||||
</div>
|
||||
<!-- /BODY -->
|
||||
<footer class="footer">
|
||||
<footer class="footer" cond="$this->user->isAdmin()">
|
||||
<p class="power">
|
||||
Powered by <strong>Rhymix {__XE_VERSION__}</strong>
|
||||
Powered by <strong>Rhymix {\RX_VERSION}</strong>
|
||||
<!--@if(isset($released_version))-->
|
||||
<span class="vr">|</span> Latest version: <a href="{htmlspecialchars(html_entity_decode($download_link), ENT_COMPAT | ENT_HTML401, 'UTF-8', false)}" target="_blank">{$released_version}</a>
|
||||
<span class="vr">|</span> Latest version: <a href="{$download_link}" target="_blank">{$released_version}</a>
|
||||
<!--@end-->
|
||||
</p>
|
||||
<p class="cache">
|
||||
<button type="button" class="x_btn-link" onclick="doResetAdminMenu();">{$lang->cmd_admin_menu_reset}</button> <span class="vr">|</span>
|
||||
<button type="button" class="x_btn-link" onclick="doRecompileCacheFile();">{$lang->cmd_remake_cache}</button> <span class="vr">|</span>
|
||||
<button type="button" class="x_btn-link" onclick="doClearSession();">{$lang->cmd_clear_session}</button> <span class="vr">|</span>
|
||||
<a href="./index.php?module=admin&act=dispAdminViewServerEnv" style="vertical-align:middle">{$lang->cmd_view_server_env}</a> <span class="vr">|</span>
|
||||
<a href="https://github.com/rhymix/rhymix/issues" target="_blank" style="vertical-align:middle">{$lang->bug_report}</a>
|
||||
<button type="button" class="x_btn-link" onclick="doResetAdminMenu();">{lang('admin.cmd_admin_menu_reset')}</button> <span class="vr">|</span>
|
||||
<button type="button" class="x_btn-link" onclick="doRecompileCacheFile();">{lang('common.cmd_remake_cache')}</button> <span class="vr">|</span>
|
||||
<button type="button" class="x_btn-link" onclick="doClearSession();">{lang('admin.cmd_clear_session')}</button> <span class="vr">|</span>
|
||||
<a href="./index.php?module=admin&act=dispAdminViewServerEnv" style="vertical-align:middle">{lang('admin.cmd_view_server_env')}</a> <span class="vr">|</span>
|
||||
<a href="https://github.com/rhymix/rhymix/issues" target="_blank" style="vertical-align:middle">{lang('admin.bug_report')}</a>
|
||||
</p>
|
||||
<load target="../../session/tpl/js/session.js" />
|
||||
</footer>
|
||||
</div>
|
||||
<load target="./js/config.js" usecdn="true" />
|
||||
<load target="../../session/tpl/js/session.js" usecdn="true" />
|
||||
<load target="./js/config.js" />
|
||||
|
|
|
|||
|
|
@ -1,10 +1,7 @@
|
|||
<load target="css/admin.bootstrap.css" />
|
||||
<load target="css/admin.iefix.css" />
|
||||
<load target="css/admin.css" />
|
||||
<load target="js/admin.js" />
|
||||
<load target="js/jquery.tmpl.js" />
|
||||
<load target="js/jquery.jstree.js" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<config autoescape="on" />
|
||||
|
||||
<include target="./_admin_common.html" />
|
||||
{Context::addMetaTag("viewport", "width=device-width, user-scalable=yes")}
|
||||
<script>
|
||||
var admin_menu_srl = "{$admin_menu_srl}";
|
||||
xe.cmd_find = "{$lang->cmd_find}";
|
||||
|
|
@ -14,17 +11,33 @@
|
|||
xe.lang.confirm_run = "{$lang->confirm_run}";
|
||||
xe.lang.confirm_reset_admin_menu = "{$lang->confirm_reset_admin_menu}";
|
||||
</script>
|
||||
{@ $module_manager = $current_module_info->module !== 'admin'}
|
||||
<div class="x">
|
||||
<p class="skipNav"><a href="#content">{$lang->skip_to_content}</a></p>
|
||||
<header class="header">
|
||||
<!--@if($module_manager)-->
|
||||
<h1>
|
||||
<a href="{getUrl('','module','admin')}"><img cond="$gnb_title_info->adminLogo" src="{getUrl('')}{$gnb_title_info->adminLogo}" alt="{$gnb_title_info->adminTitle}" /> {$gnb_title_info->adminTitle}</a>
|
||||
<a class="default_header" href="javascript:void()"><i class="xi xi-cog"></i></a>
|
||||
</h1>
|
||||
<p class="site"><a href="{$xe_default_url}">{$xe_default_url}</a></p>
|
||||
<p class="site" cond="$this->user->isAdmin()">
|
||||
<a href="{getUrl('module', 'admin', 'act', $act, 'module_srl', $module_info->module_srl, 'mid', '')}">{lang('admin.view_in_manager_layout')}</a>
|
||||
</p>
|
||||
<!--@else-->
|
||||
<h1>
|
||||
<a class="default_header" href="{getUrl('','module','admin')}"><i class="xi xi-cog"></i></a>
|
||||
<a class="mobile_menu_open" href="#gnbNav"><i class="xi xi-bars"></i></a>
|
||||
</h1>
|
||||
<p class="site"><a href="{$xe_default_url}">{$site_module_info->settings->title ?: $xe_default_url|autolang}</a></p>
|
||||
<!--@end-->
|
||||
<div class="account">
|
||||
<ul>
|
||||
<li><a href="{getUrl('', 'module', 'admin', 'act', 'dispMemberAdminInfo', 'is_admin', 'Y', 'member_srl', $logged_info->member_srl)}">{$logged_info->email_address}</a></li>
|
||||
<li><a href="{getUrl('', 'module','admin','act','procAdminLogout')}">{$lang->cmd_logout}</a></li>
|
||||
<!--@if($module_manager)-->
|
||||
<li><a href="{getUrl('', 'mid', $mid, 'act', 'dispMemberInfo')}">{$logged_info->nick_name}</a></li>
|
||||
<li><a href="{getUrl('', 'mid', $mid, 'act', 'dispMemberLogout')}">{$lang->cmd_logout}</a></li>
|
||||
<!--@else-->
|
||||
<li><a href="{getUrl('', 'module', 'admin', 'act', 'dispMemberAdminInfo', 'member_srl', $logged_info->member_srl)}">{$logged_info->nick_name}</a></li>
|
||||
<li><a href="{getUrl('', 'module', 'admin', 'act', 'procAdminLogout')}">{$lang->cmd_logout}</a></li>
|
||||
<!--@end-->
|
||||
<li><a href="#lang" class="lang" data-toggle>{$lang_supported[$lang_type]}</a>
|
||||
<ul id="lang" class="x_dropdown-menu">
|
||||
<li loop="$lang_supported=>$key,$val" class="x_active"|cond="$key==$lang_type"><a href="{getUrl('l',$key)}" data-langcode="{$key}" onclick="doChangeLangType('{$key}'); return false;">{$val}</a></li>
|
||||
|
|
@ -34,9 +47,9 @@
|
|||
</div>
|
||||
</header>
|
||||
<!-- BODY -->
|
||||
<div class="body <!--@if($_COOKIE['__xe_admin_gnb_status'] == 'close')-->wide<!--@end-->">
|
||||
<div class="body <!--@if($_COOKIE['__xe_admin_gnb_status'] == 'close')-->wide<!--@end-->" style="padding-left:0"|cond="$module_manager">
|
||||
<!-- GNB -->
|
||||
<nav class="gnb <!--@if($_COOKIE['__xe_admin_gnb_status'] == 'open')-->open<!--@end-->" id="gnb">
|
||||
<nav class="gnb <!--@if($_COOKIE['__xe_admin_gnb_status'] == 'open')-->open<!--@end-->" id="gnb" cond="!$module_manager">
|
||||
<a href="#gnbNav"><i class="x_icon-align-justify x_icon-white"></i><b></b> Menu Open/Close</a>
|
||||
<ul id="gnbNav" class="ex">
|
||||
<script>
|
||||
|
|
@ -66,7 +79,7 @@
|
|||
</ul>
|
||||
</li>
|
||||
<!--@end-->
|
||||
<li class="<!--@if($parentSrl==$key || $value['href']=='index.php?module=admin' && !$mid && !$act)-->active open<!--@elseif($_COOKIE['__xe_admin_gnb_tx_' . md5($value['href'])] == 'open')-->open<!--@end-->">
|
||||
<li class="<!--@if(($parentSrl==$key || $value['href']=='index.php?module=admin') && !$mid && !$act)-->active open<!--@elseif($_COOKIE['__xe_admin_gnb_tx_' . md5($value['href'])] == 'open')-->open<!--@end-->">
|
||||
<script>
|
||||
__xe_admin_gnb_txs.push('{'__xe_admin_gnb_tx_' . md5($value['href'])}');
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -1,42 +1,12 @@
|
|||
<config autoescape="on" />
|
||||
|
||||
<load target="./js/menu_setup.js" usecdn="true" />
|
||||
<div class="x_page-header">
|
||||
<h1>{$lang->admin_setup} <a class="x_icon-question-sign" href="./common/manual/admin/index.html#UMAN_config_admin" target="_blank">{$lang->help}</a></h1>
|
||||
<h1>{$lang->admin_setup}</h1>
|
||||
</div>
|
||||
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/admin/tpl/admin_setup/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
</div>
|
||||
<section class="section">
|
||||
<h1>{$lang->admin_title}</h1>
|
||||
<form action="./" method="post" enctype="multipart/form-data" class="x_form-horizontal">
|
||||
<input type="hidden" name="module" value="admin" />
|
||||
<input type="hidden" name="act" value="procAdminUpdateConfig" />
|
||||
<input type="hidden" name="xe_validator_id" value="modules/admin/tpl/admin_setup/1" />
|
||||
<div class="x_control-group">
|
||||
<label class="x_control-label">{$lang->admin_logo}</label>
|
||||
<div class="x_controls">
|
||||
<!--@if($config_object->adminLogo)-->
|
||||
<img src="{getUrl('').$config_object->adminLogo}" />
|
||||
<button type="submit" value="procAdminDeleteLogo" name="act" class="x_btn">{$lang->cmd_delete}</button>
|
||||
<!--@else-->
|
||||
<img src="{getUrl('')}{$gnb_title_info->adminLogo}" />
|
||||
<!--@end-->
|
||||
<input type="file" name="adminLogo" id="adminLogo" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="x_control-group">
|
||||
<label class="x_control-label" for="adminTitle">{$lang->admin_title}</label>
|
||||
<div class="x_controls">
|
||||
<input type="text" name="adminTitle" id="adminTitle" value="{$config_object->adminTitle}" placeholder="Rhymix Admin" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="x_clearfix btnArea">
|
||||
<div class="x_pull-right">
|
||||
<button type="submit" class="x_btn x_btn-primary">{$lang->cmd_save}</button>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</section>
|
||||
<section class="section">
|
||||
<h1>{$lang->admin_menu_setup}</h1>
|
||||
<form id="listForm" action="./" method="post" class="adminMap">
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
<config autoescape="on" />
|
||||
|
||||
<include target="config_header.html" />
|
||||
|
||||
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/admin/tpl/config_advanced/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
</div>
|
||||
|
|
@ -163,6 +166,15 @@
|
|||
<p class="x_help-block">{$lang->about_cache_truncate_method}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="x_control-group">
|
||||
<label class="x_control-label">{$lang->manager_layout}</label>
|
||||
<div class="x_controls">
|
||||
<label for="manager_layout_module" class="x_inline"><input type="radio" name="manager_layout" id="manager_layout_module" value="module" checked="checked"|cond="$manager_layout != 'admin'" /> {$lang->cmd_manager_layout_module}</label>
|
||||
<label for="manager_layout_admin" class="x_inline"><input type="radio" name="manager_layout" id="manager_layout_admin" value="admin" checked="checked"|cond="$manager_layout == 'admin'" /> {$lang->cmd_manager_layout_admin}</label>
|
||||
<br />
|
||||
<p class="x_help-block">{$lang->about_manager_layout}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="x_control-group">
|
||||
<label class="x_control-label">{$lang->minify_scripts}</label>
|
||||
<div class="x_controls">
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
<config autoescape="on" />
|
||||
|
||||
<include target="config_header.html" />
|
||||
|
||||
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/admin/tpl/config_debug/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
</div>
|
||||
|
|
@ -45,9 +48,9 @@
|
|||
<div class="x_control-group">
|
||||
<label class="x_control-label" for="debug_log_slow_widgets">{$lang->debug_display_type}</label>
|
||||
<div class="x_controls">
|
||||
<label for="debug_display_type_comment" class="x_inline"><input type="radio" name="debug_display_type" id="debug_display_type_comment" value="comment" checked="checked"|cond="$debug_display_type=='comment'" /> {$lang->debug_display_type_comment}</label>
|
||||
<label for="debug_display_type_panel" class="x_inline"><input type="radio" name="debug_display_type" id="debug_display_type_panel" value="panel" checked="checked"|cond="$debug_display_type=='panel'" /> {$lang->debug_display_type_panel}</label>
|
||||
<label for="debug_display_type_file" class="x_inline"><input type="radio" name="debug_display_type" id="debug_display_type_file" value="file" checked="checked"|cond="$debug_display_type=='file'" /> {$lang->debug_display_type_file}</label>
|
||||
<label for="debug_display_type_comment" class="x_inline"><input type="checkbox" name="debug_display_type[]" id="debug_display_type_comment" value="comment" checked="checked"|cond="in_array('comment', $debug_display_type)" /> {$lang->debug_display_type_comment}</label>
|
||||
<label for="debug_display_type_panel" class="x_inline"><input type="checkbox" name="debug_display_type[]" id="debug_display_type_panel" value="panel" checked="checked"|cond="in_array('panel', $debug_display_type)" /> {$lang->debug_display_type_panel}</label>
|
||||
<label for="debug_display_type_file" class="x_inline"><input type="checkbox" name="debug_display_type[]" id="debug_display_type_file" value="file" checked="checked"|cond="in_array('file', $debug_display_type)" /> {$lang->debug_display_type_file}</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="x_control-group">
|
||||
|
|
|
|||
|
|
@ -1,34 +1,43 @@
|
|||
<config autoescape="on" />
|
||||
|
||||
<include target="config_header.html" />
|
||||
|
||||
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/admin/tpl/config_domains/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
</div>
|
||||
<section class="section">
|
||||
|
||||
<table id="domain_list" class="x_table x_table-striped x_table-hover">
|
||||
<table id="domain_list" class="x_table x_table-striped x_table-hover dsTg">
|
||||
<caption>
|
||||
<div class="x_pull-right x_btn-group">
|
||||
<button class="x_btn x_active __simple">{$lang->simple_view}</button>
|
||||
<button class="x_btn __detail">{$lang->detail_view}</button>
|
||||
</div>
|
||||
</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="nowr">{$lang->site_title}</th>
|
||||
<th scope="col" class="nowr">{$lang->domain}</th>
|
||||
<th scope="col" class="nowr">{$lang->use_ssl}</th>
|
||||
<th scope="col" class="nowr">{$lang->cmd_index_module_srl}</th>
|
||||
<th scope="col" class="nowr">{$lang->cmd_index_document_srl}</th>
|
||||
<th scope="col" class="nowr rx_detail_marks">{$lang->use_ssl}</th>
|
||||
<th scope="col" class="nowr rx_detail_marks">{$lang->cmd_index_module_srl}</th>
|
||||
<th scope="col" class="nowr rx_detail_marks">{$lang->cmd_index_document_srl}</th>
|
||||
<th scope="col" class="nowr">{$lang->cmd_modify} / {$lang->cmd_delete}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr loop="$domain_list->data => $domain">
|
||||
<td class="nowr">
|
||||
{$domain->settings->title}
|
||||
{$domain->settings->title|autolang}
|
||||
<i cond="$domain->is_default_domain === 'Y'" class="x_icon-home" title="{$lang->cmd_is_default_domain}">{$lang->cmd_is_default_domain}</i>
|
||||
</td>
|
||||
<td class="nowr">{$domain->domain}</td>
|
||||
<td class="nowr">{preg_replace('/\\(.+$/', '', $lang->ssl_options[$domain->security ?: 'none'])}</td>
|
||||
<td class="nowr">
|
||||
<td class="nowr rx_detail_marks">{preg_replace('/\\(.+$/', '', $lang->ssl_options[$domain->security ?: 'none'])}</td>
|
||||
<td class="nowr rx_detail_marks">
|
||||
<a href="{getSiteUrl($domain->domain, '', 'mid', $module_list[$domain->index_module_srl]->mid)}" cond="$domain->index_module_srl && $module_list[$domain->index_module_srl]" target="_blank">
|
||||
{($domain->index_module_srl && $module_list[$domain->index_module_srl]) ? $module_list[$domain->index_module_srl]->browser_title : ''}
|
||||
</a>
|
||||
</td>
|
||||
<td class="nowr">
|
||||
<td class="nowr rx_detail_marks">
|
||||
<a href="{getSiteUrl($domain->domain, '', 'mid', $module_list[$domain->index_module_srl]->mid, 'document_srl', $domain->index_document_srl)}" cond="$domain->index_document_srl" target="_blank">
|
||||
{$domain->index_document_srl ?: ''}
|
||||
</a>
|
||||
|
|
@ -115,7 +124,7 @@
|
|||
event.preventDefault();
|
||||
var domain = $(this).data("domain");
|
||||
var domain_srl = $(this).data("domain-srl");
|
||||
if (confirm({$lang->cmd_delete_domain|json} + "\n" + domain)) {
|
||||
if (confirm({$lang->cmd_delete_domain|json|noescape} + "\n" + domain)) {
|
||||
exec_json('admin.procAdminDeleteDomain', { domain_srl: domain_srl }, function() {
|
||||
window.location.reload();
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
<config autoescape="on" />
|
||||
|
||||
<include target="config_header.html" />
|
||||
|
||||
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/admin/tpl/config_domains_edit/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
</div>
|
||||
|
|
@ -8,7 +11,6 @@
|
|||
<input type="hidden" name="act" value="procAdminInsertDomain" />
|
||||
<input type="hidden" name="xe_validator_id" value="modules/admin/tpl/config_domains_edit/1" />
|
||||
<input type="hidden" name="domain_srl" value="{$domain_info ? $domain_info->domain_srl : ''}" />
|
||||
|
||||
<div class="x_control-group">
|
||||
<label class="x_control-label">{$lang->site_title}</label>
|
||||
<div class="x_controls">
|
||||
|
|
|
|||
|
|
@ -1,7 +1,10 @@
|
|||
<config autoescape="on" />
|
||||
|
||||
<load target="./js/config.js" />
|
||||
<load target="../../session/tpl/js/session.js" />
|
||||
|
||||
<div class="x_page-header">
|
||||
<h1>{$lang->menu_gnb_sub['adminConfigurationFtp']} <a class="x_icon-question-sign" href="./common/manual/admin/index.html#UMAN_config_ftp" target="_blank">{$lang->help}</a></h1>
|
||||
<h1>{$lang->menu_gnb_sub['adminConfigurationFtp']}</h1>
|
||||
</div>
|
||||
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/admin/tpl/config_ftp/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
<config autoescape="on" />
|
||||
|
||||
<load target="./js/config.js" />
|
||||
<load target="../../session/tpl/js/session.js" />
|
||||
<div class="x_page-header">
|
||||
<h1>{$lang->menu_gnb_sub['adminConfigurationGeneral']} <a class="x_icon-question-sign" href="./common/manual/admin/index.html#UMAN_config_general" target="_blank">{$lang->help}</a></h1>
|
||||
<h1>{$lang->menu_gnb_sub['adminConfigurationGeneral']}</h1>
|
||||
</div>
|
||||
<ul class="x_nav x_nav-tabs">
|
||||
<li class="x_active"|cond="$act == 'dispAdminConfigGeneral' || preg_match('/^dispAdmin.+Domain/', $act)"><a href="{getUrl('', 'module', 'admin', 'act', 'dispAdminConfigGeneral')}">{$lang->subtitle_site_info}</a></li>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,8 @@
|
|||
<config autoescape="on" />
|
||||
|
||||
<include target="config_header.html" />
|
||||
<load target="js/notification_config.js" />
|
||||
|
||||
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/admin/tpl/config_notification/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
</div>
|
||||
|
|
@ -23,7 +26,7 @@
|
|||
<div class="x_controls">
|
||||
<input type="text" name="mail_default_name" id="mail_default_name" value="{escape($member_config->webmaster_name) ?: $module_config->siteTitle}" />
|
||||
<br />
|
||||
<p class="x_help-block">{$lang->cmd_admin_default_from_name_help}</p>
|
||||
<p class="x_help-block" style="margin-top:10px">{$lang->cmd_admin_default_from_name_help}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -37,7 +40,7 @@
|
|||
{$lang->cmd_admin_force_default_sender}
|
||||
</label>
|
||||
<br />
|
||||
<p class="x_help-block">{$lang->cmd_admin_default_from_email_help}</p>
|
||||
<p class="x_help-block" style="margin-top:10px">{$lang->cmd_admin_default_from_email_help}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -46,7 +49,7 @@
|
|||
<div class="x_controls">
|
||||
<input type="text" name="mail_default_reply_to" id="mail_default_reply_to" value="{escape($advanced_mailer_config->reply_to ?: config('mail.default_reply_to'))}" />
|
||||
<br />
|
||||
<p class="x_help-block">{$lang->cmd_admin_default_reply_to_help}</p>
|
||||
<p class="x_help-block" style="margin-top:10px">{$lang->cmd_admin_default_reply_to_help}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -58,9 +61,12 @@
|
|||
<option value="{$driver_name}" selected="selected"|cond="$mail_driver === $driver_name">{$driver_definition['name']}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<p class="x_help-block hidden-by-default show-for-dummy">
|
||||
<p class="x_help-block hidden-by-default show-for-dummy" style="margin-top:10px">
|
||||
{$lang->msg_advanced_mailer_about_dummy}<br />{$lang->msg_advanced_mailer_about_dummy_exceptions}
|
||||
</p>
|
||||
<p class="x_help-block hidden-by-default show-for-mailfunction" style="margin-top:10px">
|
||||
{$lang->msg_advanced_mailer_about_mailfunction}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -213,7 +219,7 @@
|
|||
{$lang->cmd_admin_force_default_sender}
|
||||
</label>
|
||||
<br />
|
||||
<p class="x_help-block">{$lang->cmd_admin_default_from_phone_help}</p>
|
||||
<p class="x_help-block" style="margin-top:10px">{$lang->cmd_admin_default_from_phone_help}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -225,7 +231,7 @@
|
|||
<option value="{$driver_name}" selected="selected"|cond="$sms_driver === $driver_name">{$driver_definition['name']}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<p class="x_help-block hidden-by-default show-for-dummy">
|
||||
<p class="x_help-block hidden-by-default show-for-dummy" style="margin-top:10px">
|
||||
{$lang->cmd_admin_sms_dummy_driver_help}
|
||||
</p>
|
||||
</div>
|
||||
|
|
@ -289,7 +295,6 @@
|
|||
<label class="x_control-label" for="sms_{$driver_name}_sender_key">{$lang->cmd_advanced_mailer_sender_key}</label>
|
||||
<div class="x_controls">
|
||||
<input type="password" name="sms_{$driver_name}_sender_key" id="sms_{$driver_name}_sender_key" value="{$conf_value}" />
|
||||
<br />
|
||||
<p class="x_help-block">{$lang->cmd_admin_sms_sender_key_help}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
<config autoescape="on" />
|
||||
|
||||
<include target="config_header.html" />
|
||||
|
||||
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/admin/tpl/config_security/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
</div>
|
||||
|
|
@ -66,6 +69,24 @@
|
|||
<p class="x_help-block">{$lang->about_use_cookies_ssl}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="x_control-group">
|
||||
<label class="x_control-label">{$lang->check_csrf_token}</label>
|
||||
<div class="x_controls">
|
||||
<label for="check_csrf_token_y" class="x_inline"><input type="radio" name="check_csrf_token" id="check_csrf_token_y" value="Y" checked="checked"|cond="$check_csrf_token" /> {$lang->cmd_yes}</label>
|
||||
<label for="check_csrf_token_n" class="x_inline"><input type="radio" name="check_csrf_token" id="check_csrf_token_n" value="N" checked="checked"|cond="!$check_csrf_token" /> {$lang->cmd_no}</label>
|
||||
<br />
|
||||
<p class="x_help-block">{$lang->about_check_csrf_token}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="x_control-group">
|
||||
<label class="x_control-label">{$lang->use_nofollow}</label>
|
||||
<div class="x_controls">
|
||||
<label for="use_nofollow_y" class="x_inline"><input type="radio" name="use_nofollow" id="use_nofollow_y" value="Y" checked="checked"|cond="$use_nofollow" /> {$lang->cmd_yes}</label>
|
||||
<label for="use_nofollow_n" class="x_inline"><input type="radio" name="use_nofollow" id="use_nofollow_n" value="N" checked="checked"|cond="!$use_nofollow" /> {$lang->cmd_no}</label>
|
||||
<br />
|
||||
<p class="x_help-block">{$lang->about_use_nofollow}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="x_clearfix btnArea">
|
||||
<div class="x_pull-right">
|
||||
<button type="submit" class="x_btn x_btn-primary">{$lang->cmd_save}</button>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
<config autoescape="on" />
|
||||
|
||||
<include target="config_header.html" />
|
||||
|
||||
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/admin/tpl/config_seo/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
<config autoescape="on" />
|
||||
|
||||
<include target="config_header.html" />
|
||||
|
||||
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/admin/tpl/config_sitelock/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
</div>
|
||||
|
|
@ -9,7 +12,7 @@
|
|||
<input type="hidden" name="xe_validator_id" value="modules/admin/tpl/config_sitelock/1" />
|
||||
|
||||
<div class="x_control-group">
|
||||
<label class="x_control-label">{$lang->use_sitelock} <a class="x_icon-question-sign" href="./common/manual/admin/index.html#UMAN_config_general_sitelock" target="_blank">{$lang->help}</a></label>
|
||||
<label class="x_control-label">{$lang->use_sitelock}</label>
|
||||
<div class="x_controls">
|
||||
<label for="sitelock_locked_y" class="x_inline"><input type="radio" name="sitelock_locked" id="sitelock_locked_y" value="Y" checked="checked"|cond="$sitelock_locked" /> {$lang->cmd_yes}</label>
|
||||
<label for="sitelock_locked_n" class="x_inline"><input type="radio" name="sitelock_locked" id="sitelock_locked_n" value="N" checked="checked"|cond="!$sitelock_locked" /> {$lang->cmd_no}</label>
|
||||
|
|
@ -17,7 +20,7 @@
|
|||
</div>
|
||||
|
||||
<div class="x_control-group">
|
||||
<label class="x_control-label" for="sitelock_allowed_ip">{$lang->sitelock_whitelist} <a class="x_icon-question-sign" href="./common/manual/admin/index.html#UMAN_config_general_sitelock_whitelist" target="_blank">{$lang->help}</a></label>
|
||||
<label class="x_control-label" for="sitelock_allowed_ip">{$lang->sitelock_whitelist}</label>
|
||||
<div class="x_controls">
|
||||
<textarea name="sitelock_allowed_ip" id="sitelock_allowed_ip" rows="4" cols="42" style="margin-right:10px">{$sitelock_allowed_ip}</textarea>
|
||||
<span class="x_help-block">{$lang->your_ip} : {$remote_addr}</span>
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@
|
|||
.x .x_clearfix:after{clear:both}
|
||||
.x .x_hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}
|
||||
.x .x_input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}
|
||||
.x a{color:#0088cc;text-decoration:none}
|
||||
.x a{color:#1a87ff;text-decoration:none}
|
||||
.x a:hover{color:#005580;text-decoration:underline}
|
||||
.x .x_img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}
|
||||
.x .x_img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.1)}
|
||||
|
|
@ -524,7 +524,7 @@
|
|||
.x .x_control-group.x_info .x_input-append .x_add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad}
|
||||
.x input:focus:invalid,
|
||||
.x textarea:focus:invalid,
|
||||
.x select:focus:invalid{color:#b94a48;border-color:#ee5f5b}
|
||||
.x select:focus:invalid{color:#b94a48;border-color:#ff534a}
|
||||
.x input:focus:invalid:focus,
|
||||
.x textarea:focus:invalid:focus,
|
||||
.x select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}
|
||||
|
|
@ -748,8 +748,36 @@
|
|||
.x .x_table-hover tbody tr.x_error:hover td{background-color:#ebcccc}
|
||||
.x .x_table-hover tbody tr.x_warning:hover td{background-color:#faf2cc}
|
||||
.x .x_table-hover tbody tr.x_info:hover td{background-color:#c4e3f3}
|
||||
@font-face {
|
||||
font-family: 'xeicon';
|
||||
src:url('../../../../../common/css/xeicon/fonts/xeicon.eot?v=1.0.4');
|
||||
src:url('../../../../../common/css/xeicon/fonts/xeicon.eot?#iefix&v=1.0.4') format('embedded-opentype'),
|
||||
url('../../../../../common/css/xeicon/fonts/xeicon.woff2?v=1.0.4') format('woff2'),
|
||||
url('../../../../../common/css/xeicon/fonts/xeicon.woff?v=1.0.4') format('woff'),
|
||||
url('../../../../../common/css/xeicon/fonts/xeicon.ttf?v=1.0.4') format('truetype'),
|
||||
url('../../../../../common/css/xeicon/fonts/xeicon.svg?v=1.0.4#xeicon') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
.x [class^="x_icon-"],
|
||||
.x [class*=" x_icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}
|
||||
.x [class*=" x_icon-"]{
|
||||
display:inline-block;
|
||||
width:14px;
|
||||
height:14px;
|
||||
font-size:14px;
|
||||
font-family: 'xeicon'!important;
|
||||
background: transparent !important;
|
||||
speak: none;
|
||||
text-indent:0;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-variant: normal;
|
||||
text-transform: none;
|
||||
line-height: 1;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
color: #000;
|
||||
}
|
||||
/* White icons with optional class, or on hover/active states of certain elements */
|
||||
#gnb.gnb.open .x_icon-white,
|
||||
.x .x_nav-pills>.x_active>a>[class^="x_icon-"],
|
||||
|
|
@ -763,147 +791,153 @@
|
|||
.x .x_dropdown-menu>.x_active>a>[class^="x_icon-"],
|
||||
.x .x_dropdown-menu>.x_active>a>[class*=" x_icon-"],
|
||||
.x .x_dropdown-submenu:hover>a>[class^="x_icon-"],
|
||||
.x .x_dropdown-submenu:hover>a>[class*=" x_icon-"]{background-image:url("../img/glyphicons-halflings-white.png")}
|
||||
.x .x_icon-glass{background-position:0 0}
|
||||
.x .x_icon-music{background-position:-24px 0}
|
||||
.x .x_icon-search{background-position:-48px 0}
|
||||
.x .x_icon-envelope{background-position:-72px 0}
|
||||
.x .x_icon-heart{background-position:-96px 0}
|
||||
.x .x_icon-star{background-position:-120px 0}
|
||||
.x .x_icon-star-empty{background-position:-144px 0}
|
||||
.x .x_icon-user{background-position:-168px 0}
|
||||
.x .x_icon-film{background-position:-192px 0}
|
||||
.x .x_icon-th-large{background-position:-216px 0}
|
||||
.x .x_icon-th{background-position:-240px 0}
|
||||
.x .x_icon-th-list{background-position:-264px 0}
|
||||
.x .x_icon-ok{background-position:-288px 0}
|
||||
.x .x_icon-remove{background-position:-312px 0}
|
||||
.x .x_icon-zoom-in{background-position:-336px 0}
|
||||
.x .x_icon-zoom-out{background-position:-360px 0}
|
||||
.x .x_icon-off{background-position:-384px 0}
|
||||
.x .x_icon-signal{background-position:-408px 0}
|
||||
.x .x_icon-cog{background-position:-432px 0}
|
||||
.x .x_icon-trash{background-position:-456px 0}
|
||||
.x .x_icon-home{background-position:0 -24px}
|
||||
.x .x_icon-file{background-position:-24px -24px}
|
||||
.x .x_icon-time{background-position:-48px -24px}
|
||||
.x .x_icon-road{background-position:-72px -24px}
|
||||
.x .x_icon-download-alt{background-position:-96px -24px}
|
||||
.x .x_icon-download{background-position:-120px -24px}
|
||||
.x .x_icon-upload{background-position:-144px -24px}
|
||||
.x .x_icon-inbox{background-position:-168px -24px}
|
||||
.x .x_icon-play-circle{background-position:-192px -24px}
|
||||
.x .x_icon-repeat{background-position:-216px -24px}
|
||||
.x .x_icon-refresh{background-position:-240px -24px}
|
||||
.x .x_icon-list-alt{background-position:-264px -24px}
|
||||
.x .x_icon-lock{background-position:-287px -24px}
|
||||
.x .x_icon-flag{background-position:-312px -24px}
|
||||
.x .x_icon-headphones{background-position:-336px -24px}
|
||||
.x .x_icon-volume-off{background-position:-360px -24px}
|
||||
.x .x_icon-volume-down{background-position:-384px -24px}
|
||||
.x .x_icon-volume-up{background-position:-408px -24px}
|
||||
.x .x_icon-qrcode{background-position:-432px -24px}
|
||||
.x .x_icon-barcode{background-position:-456px -24px}
|
||||
.x .x_icon-tag{background-position:0 -48px}
|
||||
.x .x_icon-tags{background-position:-25px -48px}
|
||||
.x .x_icon-book{background-position:-48px -48px}
|
||||
.x .x_icon-bookmark{background-position:-72px -48px}
|
||||
.x .x_icon-print{background-position:-96px -48px}
|
||||
.x .x_icon-camera{background-position:-120px -48px}
|
||||
.x .x_icon-font{background-position:-144px -48px}
|
||||
.x .x_icon-bold{background-position:-167px -48px}
|
||||
.x .x_icon-italic{background-position:-192px -48px}
|
||||
.x .x_icon-text-height{background-position:-216px -48px}
|
||||
.x .x_icon-text-width{background-position:-240px -48px}
|
||||
.x .x_icon-align-left{background-position:-264px -48px}
|
||||
.x .x_icon-align-center{background-position:-288px -48px}
|
||||
.x .x_icon-align-right{background-position:-312px -48px}
|
||||
.x .x_icon-align-justify{background-position:-336px -48px}
|
||||
.x .x_icon-list{background-position:-360px -48px}
|
||||
.x .x_icon-indent-left{background-position:-384px -48px}
|
||||
.x .x_icon-indent-right{background-position:-408px -48px}
|
||||
.x .x_icon-facetime-video{background-position:-432px -48px}
|
||||
.x .x_icon-picture{background-position:-456px -48px}
|
||||
.x .x_icon-pencil{background-position:0 -72px}
|
||||
.x .x_icon-map-marker{background-position:-24px -72px}
|
||||
.x .x_icon-adjust{background-position:-48px -72px}
|
||||
.x .x_icon-tint{background-position:-72px -72px}
|
||||
.x .x_icon-edit{background-position:-96px -72px}
|
||||
.x .x_icon-share{background-position:-120px -72px}
|
||||
.x .x_icon-check{background-position:-144px -72px}
|
||||
.x .x_icon-move{background-position:-168px -72px}
|
||||
.x .x_icon-step-backward{background-position:-192px -72px}
|
||||
.x .x_icon-fast-backward{background-position:-216px -72px}
|
||||
.x .x_icon-backward{background-position:-240px -72px}
|
||||
.x .x_icon-play{background-position:-264px -72px}
|
||||
.x .x_icon-pause{background-position:-288px -72px}
|
||||
.x .x_icon-stop{background-position:-312px -72px}
|
||||
.x .x_icon-forward{background-position:-336px -72px}
|
||||
.x .x_icon-fast-forward{background-position:-360px -72px}
|
||||
.x .x_icon-step-forward{background-position:-384px -72px}
|
||||
.x .x_icon-eject{background-position:-408px -72px}
|
||||
.x .x_icon-chevron-left{background-position:-432px -72px}
|
||||
.x .x_icon-chevron-right{background-position:-456px -72px}
|
||||
.x .x_icon-plus-sign{background-position:0 -96px}
|
||||
.x .x_icon-minus-sign{background-position:-24px -96px}
|
||||
.x .x_icon-remove-sign{background-position:-48px -96px}
|
||||
.x .x_icon-ok-sign{background-position:-72px -96px}
|
||||
.x .x_icon-question-sign{background-position:-96px -96px}
|
||||
.x .x_icon-info-sign{background-position:-120px -96px}
|
||||
.x .x_icon-screenshot{background-position:-144px -96px}
|
||||
.x .x_icon-remove-circle{background-position:-168px -96px}
|
||||
.x .x_icon-ok-circle{background-position:-192px -96px}
|
||||
.x .x_icon-ban-circle{background-position:-216px -96px}
|
||||
.x .x_icon-arrow-left{background-position:-240px -96px}
|
||||
.x .x_icon-arrow-right{background-position:-264px -96px}
|
||||
.x .x_icon-arrow-up{background-position:-289px -96px}
|
||||
.x .x_icon-arrow-down{background-position:-312px -96px}
|
||||
.x .x_icon-share-alt{background-position:-336px -96px}
|
||||
.x .x_icon-resize-full{background-position:-360px -96px}
|
||||
.x .x_icon-resize-small{background-position:-384px -96px}
|
||||
.x .x_icon-plus{background-position:-408px -96px}
|
||||
.x .x_icon-minus{background-position:-433px -96px}
|
||||
.x .x_icon-asterisk{background-position:-456px -96px}
|
||||
.x .x_icon-exclamation-sign{background-position:0 -120px}
|
||||
.x .x_icon-gift{background-position:-24px -120px}
|
||||
.x .x_icon-leaf{background-position:-48px -120px}
|
||||
.x .x_icon-fire{background-position:-72px -120px}
|
||||
.x .x_icon-eye-open{background-position:-96px -120px}
|
||||
.x .x_icon-eye-close{background-position:-120px -120px}
|
||||
.x .x_icon-warning-sign{background-position:-144px -120px}
|
||||
.x .x_icon-plane{background-position:-168px -120px}
|
||||
.x .x_icon-calendar{background-position:-192px -120px}
|
||||
.x .x_icon-random{width:16px;background-position:-216px -120px}
|
||||
.x .x_icon-comment{background-position:-240px -120px}
|
||||
.x .x_icon-magnet{background-position:-264px -120px}
|
||||
.x .x_icon-chevron-up{background-position:-288px -120px}
|
||||
.x .x_icon-chevron-down{background-position:-313px -119px}
|
||||
.x .x_icon-retweet{background-position:-336px -120px}
|
||||
.x .x_icon-shopping-cart{background-position:-360px -120px}
|
||||
.x .x_icon-folder-close{background-position:-384px -120px}
|
||||
.x .x_icon-folder-open{width:16px;background-position:-408px -120px}
|
||||
.x .x_icon-resize-vertical{background-position:-432px -119px}
|
||||
.x .x_icon-resize-horizontal{background-position:-456px -118px}
|
||||
.x .x_icon-hdd{background-position:0 -144px}
|
||||
.x .x_icon-bullhorn{background-position:-24px -144px}
|
||||
.x .x_icon-bell{background-position:-48px -144px}
|
||||
.x .x_icon-certificate{background-position:-72px -144px}
|
||||
.x .x_icon-thumbs-up{background-position:-96px -144px}
|
||||
.x .x_icon-thumbs-down{background-position:-120px -144px}
|
||||
.x .x_icon-hand-right{background-position:-144px -144px}
|
||||
.x .x_icon-hand-left{background-position:-168px -144px}
|
||||
.x .x_icon-hand-up{background-position:-192px -144px}
|
||||
.x .x_icon-hand-down{background-position:-216px -144px}
|
||||
.x .x_icon-circle-arrow-right{background-position:-240px -144px}
|
||||
.x .x_icon-circle-arrow-left{background-position:-264px -144px}
|
||||
.x .x_icon-circle-arrow-up{background-position:-288px -144px}
|
||||
.x .x_icon-circle-arrow-down{background-position:-312px -144px}
|
||||
.x .x_icon-globe{background-position:-336px -144px}
|
||||
.x .x_icon-wrench{background-position:-360px -144px}
|
||||
.x .x_icon-tasks{background-position:-384px -144px}
|
||||
.x .x_icon-filter{background-position:-408px -144px}
|
||||
.x .x_icon-briefcase{background-position:-432px -144px}
|
||||
.x .x_icon-fullscreen{background-position:-456px -144px}
|
||||
.x .x_dropdown-submenu:hover>a>[class*=" x_icon-"]{color: #fff;}
|
||||
.x .x_icon-glass::before{content: "\e872";}
|
||||
.x .x_icon-music::before{content: "\e744";}
|
||||
.x .x_icon-search::before{content: "\e63b";}
|
||||
.x .x_icon-envelope::before{content: "\e6cc";}
|
||||
.x .x_icon-heart::before{content: "\e6ff";}
|
||||
.x .x_icon-star::before{content: "\e6fe";}
|
||||
.x .x_icon-star-empty::before{content: "\e6fe";}
|
||||
.x .x_icon-user::before{content: "\e68a";}
|
||||
.x .x_icon-film::before{content: "\e733";}
|
||||
.x .x_icon-th-large::before{content: "\e697";}
|
||||
.x .x_icon-th::before{content: "\e6b2";}
|
||||
.x .x_icon-th-list::before{content: "\e6a5";}
|
||||
.x .x_icon-ok::before{content: "\e6e0";}
|
||||
.x .x_icon-remove::before{content: "\e616";}
|
||||
.x .x_icon-zoom-in::before{content: "\e63d";}
|
||||
.x .x_icon-zoom-out::before{content: "\e65e";}
|
||||
.x .x_icon-off::before{content: "\e643";}
|
||||
.x .x_icon-signal::before{content: "\e66a";}
|
||||
.x .x_icon-cog::before{content: "\e686";}
|
||||
.x .x_icon-trash::before{content: "\e662";}
|
||||
.x .x_icon-home::before{content: "\e606";}
|
||||
.x .x_icon-file::before{content: "\e7b1";}
|
||||
.x .x_icon-time::before{content: "\e790";}
|
||||
.x .x_icon-road::before{content: "\e752";}
|
||||
.x .x_icon-download-alt::before{content: "\e622";}
|
||||
.x .x_icon-download::before{content: "\e651";}
|
||||
.x .x_icon-upload::before{content: "\e652";}
|
||||
.x .x_icon-inbox::before{content: "\e655";}
|
||||
.x .x_icon-play-circle::before{content: "\e71d";}
|
||||
.x .x_icon-repeat::before{content: "\e671";}
|
||||
.x .x_icon-refresh::before{content: "\e642";}
|
||||
.x .x_icon-list-alt::before{content: "\e6af";}
|
||||
.x .x_icon-lock::before{content: "\e66b";}
|
||||
.x .x_icon-flag::before{content: "\e750";}
|
||||
.x .x_icon-headphones::before{content: "\e736";}
|
||||
.x .x_icon-volume-off::before{content: "\e740";}
|
||||
.x .x_icon-volume-down::before{content: "\e73c";}
|
||||
.x .x_icon-volume-up::before{content: "\e73a";}
|
||||
.x .x_icon-qrcode::before{content: "\e857";}
|
||||
.x .x_icon-barcode::before{content: "\e803";}
|
||||
.x .x_icon-tag::before{content: "\e70a";}
|
||||
.x .x_icon-tags::before{content: "\e70b";}
|
||||
.x .x_icon-book::before{content: "\e70f";}
|
||||
.x .x_icon-bookmark::before{content: "\e70d";}
|
||||
.x .x_icon-print::before{content: "\e785";}
|
||||
.x .x_icon-camera::before{content: "\e72c";}
|
||||
.x .x_icon-font::before{content: "\e66d";}
|
||||
.x .x_icon-bold::before{content: "\e69e";}
|
||||
.x .x_icon-italic::before{content: "\e6a0";}
|
||||
.x .x_icon-text-height::before{content: "\e688";}
|
||||
.x .x_icon-text-width::before{content: "\e63e";}
|
||||
.x .x_icon-align-left::before{content: "\e691";}
|
||||
.x .x_icon-align-center::before{content: "\e692";}
|
||||
.x .x_icon-align-right::before{content: "\e693";}
|
||||
.x .x_icon-align-justify::before{content: "\e690";}
|
||||
.x .x_icon-list::before{content: "\e6a4";}
|
||||
.x .x_icon-indent-left::before{content: "\e706";}
|
||||
.x .x_icon-indent-right::before{content: "\e705";}
|
||||
.x .x_icon-facetime-video::before{content: "\e72a";}
|
||||
.x .x_icon-picture::before{content: "\e729";}
|
||||
.x .x_icon-pencil::before{content: "\e673";}
|
||||
.x .x_icon-map-marker::before{content: "\e763";}
|
||||
.x .x_icon-adjust::before{content: "\e72d";}
|
||||
.x .x_icon-tint::before{
|
||||
content: "\e60f";
|
||||
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
|
||||
-webkit-transform: rotate(180deg);
|
||||
-ms-transform: rotate(180deg);
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
.x .x_icon-edit::before{content: "\e67a";}
|
||||
.x .x_icon-share::before{content: "\e664";}
|
||||
.x .x_icon-check::before{content: "\e6e2";}
|
||||
.x .x_icon-move::before{content: "\e639";}
|
||||
.x .x_icon-step-backward::before{content: "\e705";}
|
||||
.x .x_icon-fast-backward::before{content: "\e707";}
|
||||
.x .x_icon-backward::before{content: "\e720";}
|
||||
.x .x_icon-play::before{content: "\e71d";}
|
||||
.x .x_icon-pause::before{content: "\e72e";}
|
||||
.x .x_icon-stop::before{content: "\e709";}
|
||||
.x .x_icon-forward::before{content: "\e71f";}
|
||||
.x .x_icon-fast-forward::before{content: "\e708";}
|
||||
.x .x_icon-step-forward::before{content: "\e706";}
|
||||
.x .x_icon-eject::before{content: "\e72f";}
|
||||
.x .x_icon-chevron-left::before{content: "\e60b";}
|
||||
.x .x_icon-chevron-right::before{content: "\e60d";}
|
||||
.x .x_icon-plus-sign::before{content: "\e611";}
|
||||
.x .x_icon-minus-sign::before{content: "\e614";}
|
||||
.x .x_icon-remove-sign::before{content: "\e617";}
|
||||
.x .x_icon-ok-sign::before{content: "\e6e4";}
|
||||
.x .x_icon-question-sign::before{content: "\e719";}
|
||||
.x .x_icon-info-sign::before{content: "\e727";}
|
||||
.x .x_icon-screenshot::before{content: "\e68f";}
|
||||
.x .x_icon-remove-circle::before{content: "\e617";}
|
||||
.x .x_icon-ok-circle::before{content: "\e6e3";}
|
||||
.x .x_icon-ban-circle::before{content: "\e60a";}
|
||||
.x .x_icon-arrow-left::before{content: "\e625";}
|
||||
.x .x_icon-arrow-right::before{content: "\e626";}
|
||||
.x .x_icon-arrow-up::before{content: "\e627";}
|
||||
.x .x_icon-arrow-down::before{content: "\e628";}
|
||||
.x .x_icon-share-alt::before{content: "\e64f";}
|
||||
.x .x_icon-resize-full::before{content: "\e61c";}
|
||||
.x .x_icon-resize-small::before{content: "\e63c";}
|
||||
.x .x_icon-plus::before{content: "\e603";}
|
||||
.x .x_icon-minus::before{content: "\e613";}
|
||||
.x .x_icon-asterisk::before{content: "\e815";}
|
||||
.x .x_icon-exclamation-sign::before{content: "\e71a";}
|
||||
.x .x_icon-gift::before{content: "\e755";}
|
||||
.x .x_icon-leaf::before{content: "\e894";}
|
||||
.x .x_icon-fire::before{content: "\e874";}
|
||||
.x .x_icon-eye-open::before{content: "\e64a";}
|
||||
.x .x_icon-eye-close::before{content: "\e61f";}
|
||||
.x .x_icon-warning-sign::before{content: "\e6f8";}
|
||||
.x .x_icon-plane::before{content: "\e75d";}
|
||||
.x .x_icon-calendar::before{content: "\e7a9";}
|
||||
.x .x_icon-random{content: "\e60c";}
|
||||
.x .x_icon-comment::before{content: "\e6de";}
|
||||
.x .x_icon-magnet::before{content: "\e67d";}
|
||||
.x .x_icon-chevron-up::before{content: "\e60e";}
|
||||
.x .x_icon-chevron-down::before{content: "\e619";}
|
||||
.x .x_icon-retweet::before{content: "\e670";}
|
||||
.x .x_icon-shopping-cart::before{content: "\e7fe";}
|
||||
.x .x_icon-folder-close::before{content: "\e7c2";}
|
||||
.x .x_icon-folder-open{content: "\e7c3";}
|
||||
.x .x_icon-resize-vertical::before{content: "\e63f";}
|
||||
.x .x_icon-resize-horizontal::before{content: "\e63e";}
|
||||
.x .x_icon-hdd::before{content: "\e78a";}
|
||||
.x .x_icon-bullhorn::before{content: "\e608";}
|
||||
.x .x_icon-bell::before{content: "\e798";}
|
||||
.x .x_icon-certificate::before{content: "\e700";}
|
||||
.x .x_icon-thumbs-up::before{content: "\e6fc";}
|
||||
.x .x_icon-thumbs-down::before{content: "\e6fd";}
|
||||
.x .x_icon-hand-right::before{content: "\e626";}
|
||||
.x .x_icon-hand-left::before{content: "\e625";}
|
||||
.x .x_icon-hand-up::before{content: "\e627";}
|
||||
.x .x_icon-hand-down::before{content: "\e628";}
|
||||
.x .x_icon-circle-arrow-right::before{content: "\e61d";}
|
||||
.x .x_icon-circle-arrow-left::before{content: "\e61a";}
|
||||
.x .x_icon-circle-arrow-up::before{content: "\e620";}
|
||||
.x .x_icon-circle-arrow-down::before{content: "\e623";}
|
||||
.x .x_icon-globe::before{content: "\e7f6";}
|
||||
.x .x_icon-wrench::before{content: "\e68b";}
|
||||
.x .x_icon-tasks::before{content: "\e607";}
|
||||
.x .x_icon-filter::before{content: "\e7f7";}
|
||||
.x .x_icon-briefcase::before{content: "\e7f9";}
|
||||
.x .x_icon-fullscreen::before{content: "\e61c";}
|
||||
.x .x_dropup,
|
||||
.x .x_dropdown{position:relative}
|
||||
.x .x_dropdown-toggle{*margin-bottom:-3px}
|
||||
|
|
@ -917,9 +951,9 @@
|
|||
.x .x_dropdown-menu li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333333;white-space:nowrap}
|
||||
.x .x_dropdown-menu li>a:hover,
|
||||
.x .x_dropdown-menu li>a:focus,
|
||||
.x .x_dropdown-submenu:hover>a{color:#ffffff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top, #0088cc, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));background-image:-webkit-linear-gradient(top, #0088cc, #0077b3);background-image:-o-linear-gradient(top, #0088cc, #0077b3);background-image:linear-gradient(to bottom, #0088cc, #0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0077b3', GradientType=0)}
|
||||
.x .x_dropdown-submenu:hover>a{color:#ffffff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top, #1a87ff, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#1a87ff), to(#0077b3));background-image:-webkit-linear-gradient(top, #1a87ff, #0077b3);background-image:-o-linear-gradient(top, #1a87ff, #0077b3);background-image:linear-gradient(to bottom, #1a87ff, #0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1a87ff', endColorstr='#0077b3', GradientType=0)}
|
||||
.x .x_dropdown-menu .x_active>a,
|
||||
.x .x_dropdown-menu .x_active>a:hover{color:#ffffff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top, #0088cc, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));background-image:-webkit-linear-gradient(top, #0088cc, #0077b3);background-image:-o-linear-gradient(top, #0088cc, #0077b3);background-image:linear-gradient(to bottom, #0088cc, #0077b3);background-repeat:repeat-x;outline:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0077b3', GradientType=0)}
|
||||
.x .x_dropdown-menu .x_active>a:hover{color:#ffffff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top, #1a87ff, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#1a87ff), to(#0077b3));background-image:-webkit-linear-gradient(top, #1a87ff, #0077b3);background-image:-o-linear-gradient(top, #1a87ff, #0077b3);background-image:linear-gradient(to bottom, #1a87ff, #0077b3);background-repeat:repeat-x;outline:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1a87ff', endColorstr='#0077b3', GradientType=0)}
|
||||
.x .x_dropdown-menu .x_disabled>a,
|
||||
.x .x_dropdown-menu .x_disabled>a:hover{color:#999999}
|
||||
.x .x_dropdown-menu .x_disabled>a:hover{text-decoration:none;cursor:default;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}
|
||||
|
|
@ -987,47 +1021,47 @@
|
|||
.x .x_btn-info.x_active,
|
||||
.x .x_btn-inverse.x_active{color:rgba(255, 255, 255, 0.75)}
|
||||
.x .x_btn{border-color:#c5c5c5;border-color:rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25)}
|
||||
.x .x_btn-primary{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#006dcc;*background-color:#0044cc;background-image:-moz-linear-gradient(top, #0088cc, #0044cc);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));background-image:-webkit-linear-gradient(top, #0088cc, #0044cc);background-image:-o-linear-gradient(top, #0088cc, #0044cc);background-image:linear-gradient(to bottom, #0088cc, #0044cc);background-repeat:repeat-x;border-color:#0044cc #0044cc #002a80;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}
|
||||
.x .x_btn-primary{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#007aff;background-image:-moz-linear-gradient(top, #1a87ff, #007aff);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#1a87ff), to(#007aff));background-image:-webkit-linear-gradient(top, #1a87ff, #007aff);background-image:-o-linear-gradient(top, #1a87ff, #007aff);background-image:linear-gradient(to bottom, #1a87ff, #007aff);background-repeat:repeat-x;border-color:#007aff #007aff #002a80;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1a87ff', endColorstr='#007aff', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}
|
||||
.x .x_btn-primary:hover,
|
||||
.x .x_btn-primary:active,
|
||||
.x .x_btn-primary.x_active,
|
||||
.x .x_btn-primary.x_disabled,
|
||||
.x .x_btn-primary[disabled]{color:#ffffff;background-color:#0044cc;*background-color:#003bb3}
|
||||
.x .x_btn-primary[disabled]{color:#ffffff;background-color:#007aff;*background-color:#003bb3}
|
||||
.x .x_btn-primary:active,
|
||||
.x .x_btn-primary.x_active{background-color:#003399 \9}
|
||||
.x .x_btn-warning{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#faa732;*background-color:#f89406;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}
|
||||
.x .x_btn-warning{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#ff9500;background-image:-moz-linear-gradient(top, #ffa01a, #ff9500);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffa01a), to(#ff9500));background-image:-webkit-linear-gradient(top, #ffa01a, #ff9500);background-image:-o-linear-gradient(top, #ffa01a, #ff9500);background-image:linear-gradient(to bottom, #ffa01a, #ff9500);background-repeat:repeat-x;border-color:#ff9500 #ff9500 #ad6704;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa01a', endColorstr='#ff9500', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}
|
||||
.x .x_btn-warning:hover,
|
||||
.x .x_btn-warning:active,
|
||||
.x .x_btn-warning.x_active,
|
||||
.x .x_btn-warning.x_disabled,
|
||||
.x .x_btn-warning[disabled]{color:#ffffff;background-color:#f89406;*background-color:#df8505}
|
||||
.x .x_btn-warning[disabled]{color:#ffffff;background-color:#ff9500;*background-color:#df8505}
|
||||
.x .x_btn-warning:active,
|
||||
.x .x_btn-warning.x_active{background-color:#c67605 \9}
|
||||
.x .x_btn-danger{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#da4f49;*background-color:#bd362f;background-image:-moz-linear-gradient(top, #ee5f5b, #bd362f);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));background-image:-webkit-linear-gradient(top, #ee5f5b, #bd362f);background-image:-o-linear-gradient(top, #ee5f5b, #bd362f);background-image:linear-gradient(to bottom, #ee5f5b, #bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}
|
||||
.x .x_btn-danger{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#ff3b30;background-image:-moz-linear-gradient(top, #ff534a, #ff3b30);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ff534a), to(#ff3b30));background-image:-webkit-linear-gradient(top, #ff534a, #ff3b30);background-image:-o-linear-gradient(top, #ff534a, #ff3b30);background-image:linear-gradient(to bottom, #ff534a, #ff3b30);background-repeat:repeat-x;border-color:#ff3b30 #ff3b30 #802420;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff534a', endColorstr='#ff3b30', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}
|
||||
.x .x_btn-danger:hover,
|
||||
.x .x_btn-danger:active,
|
||||
.x .x_btn-danger.x_active,
|
||||
.x .x_btn-danger.x_disabled,
|
||||
.x .x_btn-danger[disabled]{color:#ffffff;background-color:#bd362f;*background-color:#a9302a}
|
||||
.x .x_btn-danger[disabled]{color:#ffffff;background-color:#ff3b30;*background-color:#a9302a}
|
||||
.x .x_btn-danger:active,
|
||||
.x .x_btn-danger.x_active{background-color:#942a25 \9}
|
||||
.x .x_btn-success{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#5bb75b;*background-color:#51a351;background-image:-moz-linear-gradient(top, #62c462, #51a351);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));background-image:-webkit-linear-gradient(top, #62c462, #51a351);background-image:-o-linear-gradient(top, #62c462, #51a351);background-image:linear-gradient(to bottom, #62c462, #51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}
|
||||
.x .x_btn-success{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#4cd964;background-image:-moz-linear-gradient(top, #61dd76, #4cd964);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#61dd76), to(#4cd964));background-image:-webkit-linear-gradient(top, #61dd76, #4cd964);background-image:-o-linear-gradient(top, #61dd76, #4cd964);background-image:linear-gradient(to bottom, #61dd76, #4cd964);background-repeat:repeat-x;border-color:#4cd964 #4cd964 #387038;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#61dd76', endColorstr='#4cd964', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}
|
||||
.x .x_btn-success:hover,
|
||||
.x .x_btn-success:active,
|
||||
.x .x_btn-success.x_active,
|
||||
.x .x_btn-success.x_disabled,
|
||||
.x .x_btn-success[disabled]{color:#ffffff;background-color:#51a351;*background-color:#499249}
|
||||
.x .x_btn-success[disabled]{color:#ffffff;background-color:#4cd964;*background-color:#499249}
|
||||
.x .x_btn-success:active,
|
||||
.x .x_btn-success.x_active{background-color:#408140 \9}
|
||||
.x .x_btn-info{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#49afcd;*background-color:#2f96b4;background-image:-moz-linear-gradient(top, #5bc0de, #2f96b4);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));background-image:-webkit-linear-gradient(top, #5bc0de, #2f96b4);background-image:-o-linear-gradient(top, #5bc0de, #2f96b4);background-image:linear-gradient(to bottom, #5bc0de, #2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}
|
||||
.x .x_btn-info{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0277BD;background-image:-moz-linear-gradient(top, #0288D1, #0277BD);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0288D1), to(#0277BD));background-image:-webkit-linear-gradient(top, #0288D1, #0277BD);background-image:-o-linear-gradient(top, #0288D1, #0277BD);background-image:linear-gradient(to bottom, #0288D1, #0277BD);background-repeat:repeat-x;border-color:#0277BD #0277BD #1f6377;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0288D1', endColorstr='#0277BD', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}
|
||||
.x .x_btn-info:hover,
|
||||
.x .x_btn-info:active,
|
||||
.x .x_btn-info.x_active,
|
||||
.x .x_btn-info.x_disabled,
|
||||
.x .x_btn-info[disabled]{color:#ffffff;background-color:#2f96b4;*background-color:#2a85a0}
|
||||
.x .x_btn-info[disabled]{color:#ffffff;background-color:#0277BD;*background-color:#2a85a0}
|
||||
.x .x_btn-info:active,
|
||||
.x .x_btn-info.x_active{background-color:#24748c \9}
|
||||
.x .x_btn-inverse{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#363636;*background-color:#222222;background-image:-moz-linear-gradient(top, #444444, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));background-image:-webkit-linear-gradient(top, #444444, #222222);background-image:-o-linear-gradient(top, #444444, #222222);background-image:linear-gradient(to bottom, #444444, #222222);background-repeat:repeat-x;border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#444444', endColorstr='#222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}
|
||||
.x .x_btn-inverse{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#222222;background-image:-moz-linear-gradient(top, #444444, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));background-image:-webkit-linear-gradient(top, #444444, #222222);background-image:-o-linear-gradient(top, #444444, #222222);background-image:linear-gradient(to bottom, #444444, #222222);background-repeat:repeat-x;border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#444444', endColorstr='#222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}
|
||||
.x .x_btn-inverse:hover,
|
||||
.x .x_btn-inverse:active,
|
||||
.x .x_btn-inverse.x_active,
|
||||
|
|
@ -1048,7 +1082,7 @@
|
|||
.x .x_btn-link,
|
||||
.x .x_btn-link:active,
|
||||
.x .x_btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}
|
||||
.x .x_btn-link{color:#0088cc;cursor:pointer;border-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
|
||||
.x .x_btn-link{color:#1a87ff;cursor:pointer;border-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
|
||||
.x .x_btn-link:hover{color:#005580;text-decoration:underline;background-color:transparent}
|
||||
.x .x_btn-link[disabled]:hover{color:#333333;text-decoration:none}
|
||||
.x .x_btn-group{position:relative;display:inline-block;*display:inline;*margin-left:.3em;font-size:0;white-space:nowrap;vertical-align:middle;*zoom:1}
|
||||
|
|
@ -1084,11 +1118,11 @@
|
|||
.x .x_btn-group>.x_btn-large+.x_dropdown-toggle{*padding-top:7px;padding-right:12px;*padding-bottom:7px;padding-left:12px}
|
||||
.x .x_btn-group.x_open .x_dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05)}
|
||||
.x .x_btn-group.x_open .x_btn.x_dropdown-toggle{background-color:#e6e6e6}
|
||||
.x .x_btn-group.x_open .x_btn-primary.x_dropdown-toggle{background-color:#0044cc}
|
||||
.x .x_btn-group.x_open .x_btn-warning.x_dropdown-toggle{background-color:#f89406}
|
||||
.x .x_btn-group.x_open .x_btn-danger.x_dropdown-toggle{background-color:#bd362f}
|
||||
.x .x_btn-group.x_open .x_btn-success.x_dropdown-toggle{background-color:#51a351}
|
||||
.x .x_btn-group.x_open .x_btn-info.x_dropdown-toggle{background-color:#2f96b4}
|
||||
.x .x_btn-group.x_open .x_btn-primary.x_dropdown-toggle{background-color:#007aff}
|
||||
.x .x_btn-group.x_open .x_btn-warning.x_dropdown-toggle{background-color:#ff9500}
|
||||
.x .x_btn-group.x_open .x_btn-danger.x_dropdown-toggle{background-color:#ff3b30}
|
||||
.x .x_btn-group.x_open .x_btn-success.x_dropdown-toggle{background-color:#4cd964}
|
||||
.x .x_btn-group.x_open .x_btn-info.x_dropdown-toggle{background-color:#0277BD}
|
||||
.x .x_btn-group.x_open .x_btn-inverse.x_dropdown-toggle{background-color:#222222}
|
||||
.x .x_btn .x_caret{margin-top:8px;margin-left:0}
|
||||
.x .x_btn-mini .x_caret,
|
||||
|
|
@ -1109,7 +1143,7 @@
|
|||
.x .x_btn-group-vertical>.x_btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}
|
||||
.x .x_btn-group-vertical>.x_btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}
|
||||
.x .x_btn-group-vertical>.x_btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}
|
||||
.x .x_alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}
|
||||
.x .x_alert{padding:6px 30px 6px 10px;margin-top:6px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}
|
||||
.x .x_alert,
|
||||
.x .x_alert h4{color:#c09853}
|
||||
.x .x_alert h4{margin:0}
|
||||
|
|
@ -1138,7 +1172,7 @@
|
|||
.x .x_nav-list .x_nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5)}
|
||||
.x .x_nav-list>li>a{padding:3px 15px}
|
||||
.x .x_nav-list>.x_active>a,
|
||||
.x .x_nav-list>.x_active>a:hover{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.2);background-color:#0088cc}
|
||||
.x .x_nav-list>.x_active>a:hover{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.2);background-color:#1a87ff}
|
||||
.x .x_nav-list [class^="x_icon-"],
|
||||
.x .x_nav-list [class*=" x_icon-"]{margin-right:2px}
|
||||
.x .x_nav-list .x_divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff}
|
||||
|
|
@ -1162,7 +1196,7 @@
|
|||
.x .x_nav-tabs>.x_active>a:hover{color:#555555;cursor:default;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent}
|
||||
.x .x_nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}
|
||||
.x .x_nav-pills>.x_active>a,
|
||||
.x .x_nav-pills>.x_active>a:hover{color:#ffffff;background-color:#0088cc}
|
||||
.x .x_nav-pills>.x_active>a:hover{color:#ffffff;background-color:#1a87ff}
|
||||
.x .x_nav-stacked>li{float:none}
|
||||
.x .x_nav-stacked>li>a{margin-right:0}
|
||||
.x .x_nav-tabs.x_nav-stacked{border-bottom:0}
|
||||
|
|
@ -1174,7 +1208,7 @@
|
|||
.x .x_nav-pills.x_nav-stacked>li:last-child>a{margin-bottom:1px}
|
||||
.x .x_nav-tabs .x_dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}
|
||||
.x .x_nav-pills .x_dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}
|
||||
.x .x_nav .x_dropdown-toggle .x_caret{margin-top:6px;border-top-color:#0088cc;border-bottom-color:#0088cc}
|
||||
.x .x_nav .x_dropdown-toggle .x_caret{margin-top:6px;border-top-color:#1a87ff;border-bottom-color:#1a87ff}
|
||||
.x .x_nav .x_dropdown-toggle:hover .x_caret{border-top-color:#005580;border-bottom-color:#005580}
|
||||
/* move down carets for tabs */
|
||||
.x .x_nav-tabs .x_dropdown-toggle .x_caret{margin-top:8px}
|
||||
|
|
@ -1422,7 +1456,7 @@
|
|||
.x .x_modal-header h3{margin:0;line-height:30px}
|
||||
.x .x_modal-body{position:relative;max-height:400px;padding:15px;overflow-y:auto}
|
||||
.x .x_modal-form{margin-bottom:0}
|
||||
.x .x_modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff}
|
||||
.x .x_modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff}
|
||||
.x .x_modal-footer:before,
|
||||
.x .x_modal-footer:after{display:table;line-height:0;content:""}
|
||||
.x .x_modal-footer:after{clear:both}
|
||||
|
|
@ -1467,7 +1501,7 @@
|
|||
.x .x_row-fluid .x_thumbnails{margin-left:0}
|
||||
.x .x_thumbnails>li{float:left;margin-bottom:20px;margin-left:20px}
|
||||
.x .x_thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}
|
||||
.x a.x_thumbnail:hover{border-color:#0088cc;-webkit-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);-moz-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);box-shadow:0 1px 4px rgba(0, 105, 214, 0.25)}
|
||||
.x a.x_thumbnail:hover{border-color:#1a87ff;-webkit-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);-moz-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);box-shadow:0 1px 4px rgba(0, 105, 214, 0.25)}
|
||||
.x .x_thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}
|
||||
.x .x_thumbnail .x_caption{padding:9px;color:#555555}
|
||||
.x .x_media,
|
||||
|
|
@ -1493,7 +1527,7 @@
|
|||
.x .x_label-important[href],
|
||||
.x .x_badge-important[href]{background-color:#953b39}
|
||||
.x .x_label-warning,
|
||||
.x .x_badge-warning{background-color:#f89406}
|
||||
.x .x_badge-warning{background-color:#ff9500}
|
||||
.x .x_label-warning[href],
|
||||
.x .x_badge-warning[href]{background-color:#c67605}
|
||||
.x .x_label-success,
|
||||
|
|
@ -1538,21 +1572,21 @@ to{background-position:0 0}
|
|||
.x .x_progress-striped .x_bar{background-color:#149bdf;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}
|
||||
.x .x_progress.x_active .x_bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}
|
||||
.x .x_progress-danger .x_bar,
|
||||
.x .x_progress .x_bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(to bottom, #ee5f5b, #c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0)}
|
||||
.x .x_progress .x_bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top, #ff534a, #c43c35);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ff534a), to(#c43c35));background-image:-webkit-linear-gradient(top, #ff534a, #c43c35);background-image:-o-linear-gradient(top, #ff534a, #c43c35);background-image:linear-gradient(to bottom, #ff534a, #c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff534a', endColorstr='#c43c35', GradientType=0)}
|
||||
.x .x_progress-danger.x_progress-striped .x_bar,
|
||||
.x .x_progress-striped .x_bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent)}
|
||||
.x .x_progress-striped .x_bar-danger{background-color:#ff534a;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent)}
|
||||
.x .x_progress-success .x_bar,
|
||||
.x .x_progress .x_bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(to bottom, #62c462, #57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0)}
|
||||
.x .x_progress .x_bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top, #61dd76, #57a957);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#61dd76), to(#57a957));background-image:-webkit-linear-gradient(top, #61dd76, #57a957);background-image:-o-linear-gradient(top, #61dd76, #57a957);background-image:linear-gradient(to bottom, #61dd76, #57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#61dd76', endColorstr='#57a957', GradientType=0)}
|
||||
.x .x_progress-success.x_progress-striped .x_bar,
|
||||
.x .x_progress-striped .x_bar-success{background-color:#62c462;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent)}
|
||||
.x .x_progress-striped .x_bar-success{background-color:#61dd76;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent)}
|
||||
.x .x_progress-info .x_bar,
|
||||
.x .x_progress .x_bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(to bottom, #5bc0de, #339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0)}
|
||||
.x .x_progress .x_bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top, #0288D1, #339bb9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0288D1), to(#339bb9));background-image:-webkit-linear-gradient(top, #0288D1, #339bb9);background-image:-o-linear-gradient(top, #0288D1, #339bb9);background-image:linear-gradient(to bottom, #0288D1, #339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0288D1', endColorstr='#339bb9', GradientType=0)}
|
||||
.x .x_progress-info.x_progress-striped .x_bar,
|
||||
.x .x_progress-striped .x_bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent)}
|
||||
.x .x_progress-striped .x_bar-info{background-color:#0288D1;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent)}
|
||||
.x .x_progress-warning .x_bar,
|
||||
.x .x_progress .x_bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0)}
|
||||
.x .x_progress .x_bar-warning{background-color:#E64A19;background-image:-moz-linear-gradient(top, #ffa01a, #ff9500);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffa01a), to(#ff9500));background-image:-webkit-linear-gradient(top, #ffa01a, #ff9500);background-image:-o-linear-gradient(top, #ffa01a, #ff9500);background-image:linear-gradient(to bottom, #ffa01a, #ff9500);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa01a', endColorstr='#ff9500', GradientType=0)}
|
||||
.x .x_progress-warning.x_progress-striped .x_bar,
|
||||
.x .x_progress-striped .x_bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent)}
|
||||
.x .x_progress-striped .x_bar-warning{background-color:#ffa01a;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent)}
|
||||
.x .x_accordion{margin-bottom:20px}
|
||||
.x .x_accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}
|
||||
.x .x_accordion-heading{border-bottom:0}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -1,3 +1,5 @@
|
|||
<config autoescape="on" />
|
||||
|
||||
<script>
|
||||
<!--@if($msg)-->
|
||||
parent.alertUploadMessage('{$msg}');
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
<config autoescape="on" />
|
||||
|
||||
<include target="./_header.html" />
|
||||
|
||||
<load target="./js/excanvas.min.js" targetie="lt IE 9" />
|
||||
<load target="./js/jquery.jqplot.min.js" />
|
||||
<load target="./js/jqplot.barRenderer.min.js" />
|
||||
|
|
@ -8,7 +11,7 @@
|
|||
|
||||
<div class="content" id="content">
|
||||
<div class="x_page-header">
|
||||
<h1>{$lang->control_panel} <a class="x_icon-question-sign" href="./common/manual/admin/index.html#UMAN_dashboard" target="_blank">{$lang->help}</a></h1>
|
||||
<h1>{$lang->control_panel}</h1>
|
||||
</div>
|
||||
|
||||
<div id="checkBrowserMessage" class="message error" style="display:none;">
|
||||
|
|
|
|||
|
|
@ -91,7 +91,6 @@ jQuery(function($){
|
|||
var $xBody = $('.x>.body');
|
||||
var $xGnb = $xBody.find('>.gnb');
|
||||
var $xContent = $xBody.children('#content.content');
|
||||
$xContent.width('99.99%');
|
||||
setTimeout(function(){
|
||||
$xContent.removeAttr('style');
|
||||
if($xGnb.height() > $xContent.height()){
|
||||
|
|
@ -103,7 +102,7 @@ jQuery(function($){
|
|||
$.fn.gnb = function(){
|
||||
var $xBody = $('.x>.body');
|
||||
var $xGnb = $xBody.find('>.gnb');
|
||||
var $xGnb_li = $xGnb.find('>ul>li');
|
||||
var $xGnb_li = $xGnb.find('>ul>li:not(.active_clone)');
|
||||
|
||||
var d365 = new Date();
|
||||
d365.setTime(d365.getTime() + 60*60*24*356);
|
||||
|
|
@ -115,8 +114,6 @@ jQuery(function($){
|
|||
$xGnb_li.each(function(index){
|
||||
$(this).attr('data-index', index+1);
|
||||
});
|
||||
var parentIndex = $xGnb_li.find('>ul>li.active_').closest('li.active').attr('data-index');
|
||||
$xGnb_li.find('>ul>li.active_').clone().addClass('active').attr('data-index', parentIndex).prependTo('#gnbNav').find('>a').prepend('<i />');
|
||||
// GNB Click toggle
|
||||
$xGnb_li.find('>a').click(function(){
|
||||
var $this = $(this);
|
||||
|
|
@ -145,8 +142,17 @@ jQuery(function($){
|
|||
}
|
||||
});
|
||||
// GNB Mobile Toggle
|
||||
$("a.mobile_menu_open").click(function(){
|
||||
$xGnb.toggleClass('open');
|
||||
if($(this).parent('.gnb').hasClass('open')){
|
||||
setCookie('__xe_admin_gnb_status', 'open', d365);
|
||||
}else{
|
||||
setCookie('__xe_admin_gnb_status', 'close', d365);
|
||||
}
|
||||
return false;
|
||||
});
|
||||
$xGnb.find('>a[href="#gnbNav"]').click(function(){
|
||||
$(this).parent('.gnb').toggleClass('open');
|
||||
$xGnb.toggleClass('open');
|
||||
$xBody.toggleClass('wide');
|
||||
if($(window).width() <= 980 && !$xGnb.hasClass('open')){
|
||||
$('#gnbNav').removeClass('ex');
|
||||
|
|
@ -1426,17 +1432,27 @@ jQuery(function($){
|
|||
$t.addClass('tg').find('>*:not(:first-child)').hide();
|
||||
}
|
||||
});
|
||||
var details = $('.x .dsTg td.tg>*:not(:first-child)');
|
||||
simpleBtn.click(function(){
|
||||
var details = $('.x .dsTg td.tg>*:not(:first-child), .x .dsTg .rx_detail_marks').hide();
|
||||
var simples = $('.x .dsTg .rx_simple_marks').show();
|
||||
var simpleBtnFn = function(){
|
||||
details.hide();
|
||||
simples.show();
|
||||
detailBtn.removeClass('x_active');
|
||||
simpleBtn.addClass('x_active');
|
||||
});
|
||||
detailBtn.click(function(){
|
||||
};
|
||||
var detailBtnFn = function(){
|
||||
details.show();
|
||||
simples.hide();
|
||||
detailBtn.addClass('x_active');
|
||||
simpleBtn.removeClass('x_active');
|
||||
});
|
||||
};
|
||||
simpleBtn.click(simpleBtnFn);
|
||||
detailBtn.click(detailBtnFn);
|
||||
if($(window).width() > 980) {
|
||||
detailBtnFn();
|
||||
} else {
|
||||
simpleBtnFn();
|
||||
}
|
||||
});
|
||||
|
||||
// Multilingual Window
|
||||
|
|
@ -2042,7 +2058,7 @@ jQuery(function($){
|
|||
$.xeMenuSelectorVar = {bMultiSelect: false};
|
||||
|
||||
$.template('menuSelector_menuTree', '<ul>{{html Nodes}}</ul>');
|
||||
$.template('menuSelector_menuTreeNode', '<li> <a href="#" class="_nodeType_${NodeType} _menu_node _menu_url_${MenuUrl}" data-param=\'{ "sMenuId":"${MenuId}", "sMenuUrl":"${MenuUrl}", "sMenuTitle":"${MenuTitle}", "sType":"${MenuType}", "sModuleSrl":"${ModuleSrl}" }\'>${MenuTitle}</a> {{html SubTree}} </li>'); //data-param=\'{ "sMenuId":"${MenuId}", "sMenuUrl":"${MenuUrl}", "sMenuTitle":"${MenuTitle}" }\'
|
||||
$.template('menuSelector_menuTreeNode', '<li> <a href="#" class="_nodeType_${NodeType} _menu_node _menu_url_${MenuUrl}" data-param=\'{ "sMenuId":"${MenuId}", "sMenuUrl":"${MenuUrl}", "sMenuTitle":"${eMenuTitle}", "sType":"${MenuType}", "sModuleSrl":"${ModuleSrl}" }\'>${MenuTitle}</a> {{html SubTree}} </li>'); //data-param=\'{ "sMenuId":"${MenuId}", "sMenuUrl":"${MenuUrl}", "sMenuTitle":"${MenuTitle}" }\'
|
||||
function onSiteMapReceived(htData){
|
||||
var $ = jQuery;
|
||||
|
||||
|
|
@ -2271,7 +2287,7 @@ jQuery(function($){
|
|||
nNodeType = 3;
|
||||
}
|
||||
|
||||
var $node = $.tmpl( sMenuTreeNode, {MenuTitleWithHome:sTextWithIcons,MenuTitle:sText,MenuId:sNodeSrl,MenuUrl:sURL,NodeType:nNodeType,MenuType:sModuleType,SubTree:sSubTree,Target:sTargetPanel,ModuleSrl:sModuleSrl} )
|
||||
var $node = $.tmpl( sMenuTreeNode, {MenuTitleWithHome:sTextWithIcons,MenuTitle:sText,eMenuTitle:sText.replace(/\"/g, "\\\""),MenuId:sNodeSrl,MenuUrl:sURL,NodeType:nNodeType,MenuType:sModuleType,SubTree:sSubTree,Target:sTargetPanel,ModuleSrl:sModuleSrl} )
|
||||
.data('sMenuId', sNodeSrl).data('sMenuUrl', sURL).data('sMenuTitle', sText).data('sMenuType', sModuleType);
|
||||
//data-param=\'{ "sMenuId":"${MenuId}", "sMenuUrl":"${MenuUrl}", "sMenuTitle":"${MenuTitle}" }\'
|
||||
//console.log($node);
|
||||
|
|
@ -2373,7 +2389,7 @@ jQuery(function($){
|
|||
for(var i=0; i<nLen; i++){
|
||||
$SiteSelector.append($("<option>").val(aSiteList[i].site_srl).html(aSiteList[i].domain));
|
||||
}
|
||||
$SiteSelector.show();
|
||||
$SiteSelector.hide();
|
||||
}
|
||||
$.xeShowMenuSelector($container, "0");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
<config autoescape="on" />
|
||||
|
||||
<include target="./_header.html" />
|
||||
<div class="content" id="content">
|
||||
<div cond="Context::isBlacklistedPlugin($blacklisted_plugin_name = strtolower(preg_replace('/^disp([A-Z][a-z0-9_]+)[A-Z].+$/', '$1', $act)))" class="message error" style="margin-top:15px">
|
||||
|
|
@ -6,7 +8,7 @@
|
|||
{$lang->get('admin.msg_blacklisted_reason.'.$blacklisted_plugin_name)}
|
||||
</p>
|
||||
</div>
|
||||
{$content}
|
||||
{$content|noescape}
|
||||
</div>
|
||||
<include target="./_footer.html" />
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,9 @@
|
|||
<load target="css/admin.bootstrap.css" />
|
||||
<load target="css/admin.iefix.css" />
|
||||
<load target="css/admin.css" />
|
||||
<load target="js/admin.js" />
|
||||
<load target="js/jquery.tmpl.js" />
|
||||
<load target="js/jquery.jstree.js" />
|
||||
<config autoescape="on" />
|
||||
|
||||
<include target="./_admin_common.html" />
|
||||
<div class="x">
|
||||
<div class="content" id="content">
|
||||
{$content}
|
||||
{$content|noescape}
|
||||
</div>
|
||||
</div>
|
||||
<script>opener.top.fullSetupWinLoaded();</script>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
<config autoescape="on" />
|
||||
|
||||
<load target="./js/menu_setup.js" usecdn="true" />
|
||||
|
||||
<div class="x_page-header">
|
||||
<h1>{$lang->server_env}</h1>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ class adminloggingController extends adminlogging
|
|||
$logged_info = $oMemberModel->getLoggedInfo();
|
||||
if($logged_info->is_admin != 'Y')
|
||||
{
|
||||
return $this->stop("admin.msg_is_not_administrator");
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted('admin.msg_is_not_administrator');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ class Advanced_MailerAdminController extends Advanced_Mailer
|
|||
{
|
||||
if ($method !== 'default' && !isset($sending_methods[$method]))
|
||||
{
|
||||
return $this->setError('msg_advanced_mailer_sending_method_is_invalid');
|
||||
throw new Rhymix\Framework\Exception('msg_advanced_mailer_sending_method_is_invalid');
|
||||
}
|
||||
if ($method !== 'default')
|
||||
{
|
||||
|
|
@ -69,7 +69,7 @@ class Advanced_MailerAdminController extends Advanced_Mailer
|
|||
{
|
||||
if (!Rhymix\Framework\Config::get("mail.$method.$conf_name"))
|
||||
{
|
||||
return $this->setError('msg_advanced_mailer_sending_method_is_not_configured', lang('cmd_advanced_mailer_sending_method_' . $method));
|
||||
throw new Rhymix\Framework\Exception(sprintf('msg_advanced_mailer_sending_method_is_not_configured', lang('cmd_advanced_mailer_sending_method_' . $method)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -155,11 +155,11 @@ class Advanced_MailerAdminController extends Advanced_Mailer
|
|||
$clear_before_days = intval(Context::get('clear_before_days'));
|
||||
if (!in_array($status, array('success', 'error')))
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
if ($clear_before_days < 0)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
$obj = new stdClass();
|
||||
|
|
@ -186,11 +186,11 @@ class Advanced_MailerAdminController extends Advanced_Mailer
|
|||
$clear_before_days = intval(Context::get('clear_before_days'));
|
||||
if (!in_array($status, array('success', 'error')))
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
if ($clear_before_days < 0)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
$obj = new stdClass();
|
||||
|
|
|
|||
|
|
@ -78,8 +78,9 @@ $lang->cmd_advanced_mailer_exception_group = 'Exception Group';
|
|||
$lang->cmd_advanced_mailer_use_exceptions = 'Exception domains';
|
||||
$lang->cmd_advanced_mailer_use_exceptions_yes = 'Test with exceptions as configured';
|
||||
$lang->cmd_advanced_mailer_use_exceptions_no = 'Ignore exceptions and only test the default sending method';
|
||||
$lang->msg_advanced_mailer_about_dummy = 'Dummy does not actually send any email. It only records them. Use this option for testing.';
|
||||
$lang->msg_advanced_mailer_about_dummy_exceptions = 'Caution: if you have set up exception domains, email will be sent to those domains.';
|
||||
$lang->msg_advanced_mailer_about_dummy = 'Dummy does not actually send any email, but logs them. Use this option for testing.';
|
||||
$lang->msg_advanced_mailer_about_dummy_exceptions = 'Caution: if you have set up exception domains, unwanted email may be sent using other methods.';
|
||||
$lang->msg_advanced_mailer_about_mailfunction = 'This method uses the mail() function that comes with PHP itself. It has very low deliverability.<br /><span style="color:red">This option may be deprecated in the future, so please use a different sending method if at all possible.</span>';
|
||||
$lang->msg_advanced_mailer_sending_method_is_invalid = 'Please select a valid sending method.';
|
||||
$lang->msg_advanced_mailer_sending_method_is_not_configured = 'The selected sending method (%s) has not been fully configured. Please return to General Settings and finish configuring it.';
|
||||
$lang->msg_advanced_mailer_smtp_host_is_invalid = 'Please enter a valid SMTP server name.';
|
||||
|
|
@ -125,4 +126,5 @@ $lang->cmd_advanced_mailer_country_code_help = 'Please leave the country code em
|
|||
$lang->cmd_advanced_mailer_test_content = 'This is an SMS test from Rhymix.';
|
||||
$lang->msg_advanced_mailer_recipient_number_is_empty = 'Please enter a phone number for the recipient.';
|
||||
$lang->msg_advanced_mailer_content_is_empty = 'Please enter the content for your test SMS.';
|
||||
$lang->msg_advanced_mailer_test_success_sms = 'The test was successful. Please check your SMS.';
|
||||
$lang->msg_advanced_mailer_test_success_sms = 'The test was successful. Please check your SMS.';
|
||||
$lang->cmd_advanced_mailer_not_rhymix = 'This module is for XE. It is incompatible with Rhymix. Please use the version included with Rhymix.';
|
||||
|
|
|
|||
|
|
@ -78,8 +78,9 @@ $lang->cmd_advanced_mailer_exception_group = '예외 그룹';
|
|||
$lang->cmd_advanced_mailer_use_exceptions = '예외 도메인 설정';
|
||||
$lang->cmd_advanced_mailer_use_exceptions_yes = '예외 설정을 적용하여 테스트';
|
||||
$lang->cmd_advanced_mailer_use_exceptions_no = '무시하고 기본 발송 방법만 테스트';
|
||||
$lang->msg_advanced_mailer_about_dummy = '더미는 실제로 메일을 발송하지 않고 기록만 하는 옵션입니다. 테스트에 사용하십시오.';
|
||||
$lang->msg_advanced_mailer_about_dummy_exceptions = '더미를 선택하더라도 예외 도메인을 지정한 경우 메일이 발송될 수 있으니 주의하십시오.';
|
||||
$lang->msg_advanced_mailer_about_dummy = '메일을 발송하지 않고 로그 기록만 하도록 강제합니다. 테스트 중 원치 않는 메일이 발송되는 것을 막기 위해 사용할 수 있습니다.';
|
||||
$lang->msg_advanced_mailer_about_dummy_exceptions = '이 옵션을 선택하더라도 예외 도메인을 지정한 경우 메일이 발송될 수 있으니 주의하십시오.';
|
||||
$lang->msg_advanced_mailer_about_mailfunction = 'PHP에 내장된 mail() 함수를 사용합니다. 발송 성공률이 매우 낮습니다.<br/><span style="color:red">이 옵션은 추후 지원되지 않을 수 있으니, 가능하면 다른 방식을 선택하시기 바랍니다.</span>';
|
||||
$lang->msg_advanced_mailer_sending_method_is_invalid = '올바른 발송 방법을 선택해 주십시오.';
|
||||
$lang->msg_advanced_mailer_sending_method_is_not_configured = '선택한 발송 방법(%s)이 완전히 설정되지 않았습니다. 기본 설정 페이지로 돌아가서 설정을 마쳐 주십시오.';
|
||||
$lang->msg_advanced_mailer_smtp_host_is_invalid = '올바른 SMTP 서버 이름을 입력해 주십시오.';
|
||||
|
|
@ -125,4 +126,5 @@ $lang->cmd_advanced_mailer_country_code_help = '국내 번호로 발송하실
|
|||
$lang->cmd_advanced_mailer_test_content = '라이믹스 SMS 발송 테스트입니다.';
|
||||
$lang->msg_advanced_mailer_recipient_number_is_empty = '받는이 전화번호를 입력해 주십시오.';
|
||||
$lang->msg_advanced_mailer_content_is_empty = 'SMS 내용을 입력해 주십시오.';
|
||||
$lang->msg_advanced_mailer_test_success_sms = '테스트에 성공하였습니다. SMS를 확인해 보시기 바랍니다.';
|
||||
$lang->msg_advanced_mailer_test_success_sms = '테스트에 성공하였습니다. SMS를 확인해 보시기 바랍니다.';
|
||||
$lang->cmd_advanced_mailer_not_rhymix = '이 모듈은 XE용으로, 라이믹스와는 호환되지 않습니다. 라이믹스에 기본 포함된 버전을 사용하시기 바랍니다.';
|
||||
|
|
|
|||
|
|
@ -414,7 +414,7 @@ class autoinstallAdminView extends autoinstall
|
|||
|
||||
if(!$updateDate)
|
||||
{
|
||||
return $this->stop('msg_connection_fail');
|
||||
throw new Rhymix\Framework\Exception('msg_connection_fail');
|
||||
}
|
||||
|
||||
$oModel = getModel('autoinstall');
|
||||
|
|
@ -535,13 +535,13 @@ class autoinstallAdminView extends autoinstall
|
|||
|
||||
if(!$type || $type == "core")
|
||||
{
|
||||
return $this->stop("msg_invalid_request");
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
$config_file = $oModel->getConfigFilePath($type);
|
||||
if(!$config_file)
|
||||
{
|
||||
return $this->stop("msg_invalid_request");
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
$output = $oAdminModel->checkUseDirectModuleInstall($installedPackage);
|
||||
|
|
@ -579,7 +579,7 @@ class autoinstallAdminView extends autoinstall
|
|||
}
|
||||
else
|
||||
{
|
||||
return $this->stop('msg_connection_fail');
|
||||
throw new Rhymix\Framework\Exception('msg_connection_fail');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<ul class="x_nav x_nav-tabs">
|
||||
<li class="x_active"|cond="$act == 'dispAutoinstallAdminIndex'"><a href="{getUrl('', 'module', 'admin', 'act', 'dispAutoinstallAdminIndex')}">All({$tCount})</a></li>
|
||||
<li class="x_active"|cond="$act == 'dispAutoinstallAdminIndex'"><a href="{getUrl('', 'module', 'admin', 'act', 'dispAutoinstallAdminIndex')}">{lang('all')} ({$tCount})</a></li>
|
||||
<li class="x_active"|cond="$act == 'dispAutoinstallAdminInstalledPackages'"><a href="{getUrl('', 'module', 'admin', 'act', 'dispAutoinstallAdminInstalledPackages')}">Installed({$iCount})</a></li>
|
||||
</ul>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<load target="./css/autoinstall.css" index="11" />
|
||||
<div class="x_page-header">
|
||||
<h1>{$lang->autoinstall} <a class="x_icon-question-sign" href="./common/manual/admin/index.html#UMAN_advanced_easyinstall" target="_blank">{$lang->help}</a></h1>
|
||||
<h1>{$lang->autoinstall}</h1>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -168,7 +168,7 @@ class boardAdminController extends board {
|
|||
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl);
|
||||
if($module_info->mid != $mid)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
$module_info->hide_category = Context::get('hide_category') == 'Y' ? 'Y' : 'N';
|
||||
|
|
|
|||
|
|
@ -39,7 +39,10 @@ class boardAdminView extends board {
|
|||
}
|
||||
}
|
||||
|
||||
if($module_info && $module_info->module != 'board') return $this->stop("msg_invalid_request");
|
||||
if($module_info && $module_info->module != 'board')
|
||||
{
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
// get the module category list
|
||||
$module_category = $oModuleModel->getModuleCategories();
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ class boardController extends board
|
|||
// check grant
|
||||
if(!$this->grant->write_document)
|
||||
{
|
||||
return $this->setError('msg_not_permitted');
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
|
||||
// setup variables
|
||||
|
|
@ -35,14 +35,14 @@ class boardController extends board
|
|||
// Return error if content is empty.
|
||||
if (is_empty_html_content($obj->content))
|
||||
{
|
||||
return $this->setError('msg_empty_content');
|
||||
throw new Rhymix\Framework\Exception('msg_empty_content');
|
||||
}
|
||||
|
||||
// Return error if content is too large.
|
||||
$document_length_limit = ($this->module_info->document_length_limit ?: 1024) * 1024;
|
||||
if (strlen($obj->content) > $document_length_limit && !$this->grant->manager)
|
||||
{
|
||||
return $this->setError('msg_content_too_long');
|
||||
throw new Rhymix\Framework\Exception('msg_content_too_long');
|
||||
}
|
||||
|
||||
// unset document style if not manager
|
||||
|
|
@ -107,14 +107,14 @@ class boardController extends board
|
|||
{
|
||||
if(!$oDocument->isGranted())
|
||||
{
|
||||
return $this->setError('msg_not_permitted');
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
|
||||
// Protect admin document
|
||||
$member_info = getModel('member')->getMemberInfoByMemberSrl($oDocument->get('member_srl'));
|
||||
if($member_info->is_admin == 'Y' && $logged_info->is_admin != 'Y')
|
||||
{
|
||||
return $this->setError('msg_admin_document_no_modify');
|
||||
throw new Rhymix\Framework\Exception('msg_admin_document_no_modify');
|
||||
}
|
||||
|
||||
// if document status is temp
|
||||
|
|
@ -138,7 +138,7 @@ class boardController extends board
|
|||
{
|
||||
if($oDocument->get('comment_count') > 0 && !$this->grant->manager)
|
||||
{
|
||||
return $this->setError('msg_protect_update_content');
|
||||
throw new Rhymix\Framework\Exception('msg_protect_update_content');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -147,7 +147,7 @@ class boardController extends board
|
|||
{
|
||||
if($oDocument->get('regdate') < date('YmdHis', strtotime('-' . $this->module_info->protect_document_regdate . ' day')))
|
||||
{
|
||||
return $this->setError(sprintf(lang('msg_protect_regdate_document'), $this->module_info->protect_document_regdate));
|
||||
throw new Rhymix\Framework\Exception(sprintf(lang('msg_protect_regdate_document'), $this->module_info->protect_document_regdate));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -235,7 +235,7 @@ class boardController extends board
|
|||
$logged_info = Context::get('logged_info');
|
||||
if(!$update_id)
|
||||
{
|
||||
return $this->setError('msg_no_update_id');
|
||||
throw new Rhymix\Framework\Exception('msg_no_update_id');
|
||||
}
|
||||
|
||||
$oDocumentModel = getModel('document');
|
||||
|
|
@ -247,13 +247,13 @@ class boardController extends board
|
|||
$Exists_log = $oDocumentModel->getUpdateLogAdminisExists($update_log->document_srl);
|
||||
if($Exists_log === true)
|
||||
{
|
||||
return $this->setError('msg_admin_update_log');
|
||||
throw new Rhymix\Framework\Exception('msg_admin_update_log');
|
||||
}
|
||||
}
|
||||
|
||||
if(!$update_log)
|
||||
{
|
||||
return $this->setError('msg_no_update_log');
|
||||
throw new Rhymix\Framework\Exception('msg_no_update_log');
|
||||
}
|
||||
|
||||
$oDocument = $oDocumentModel->getDocument($update_log->document_srl);
|
||||
|
|
@ -282,7 +282,7 @@ class boardController extends board
|
|||
// if the document is not existed
|
||||
if(!$document_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_document');
|
||||
throw new Rhymix\Framework\Exception('msg_invalid_document');
|
||||
}
|
||||
|
||||
$oDocumentModel = &getModel('document');
|
||||
|
|
@ -292,7 +292,7 @@ class boardController extends board
|
|||
{
|
||||
if($oDocument->get('comment_count') > 0 && $this->grant->manager == false)
|
||||
{
|
||||
return $this->setError('msg_protect_delete_content');
|
||||
throw new Rhymix\Framework\Exception('msg_protect_delete_content');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -302,7 +302,7 @@ class boardController extends board
|
|||
{
|
||||
$format = lang('msg_protect_regdate_document');
|
||||
$massage = sprintf($format, $this->module_info->protect_document_regdate);
|
||||
return $this->setError($massage);
|
||||
throw new Rhymix\Framework\Exception($massage);
|
||||
}
|
||||
}
|
||||
// generate document module controller object
|
||||
|
|
@ -356,7 +356,7 @@ class boardController extends board
|
|||
// check grant
|
||||
if(!$this->grant->write_comment)
|
||||
{
|
||||
return $this->setError('msg_not_permitted');
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
|
|
@ -367,14 +367,14 @@ class boardController extends board
|
|||
// Return error if content is empty.
|
||||
if (is_empty_html_content($obj->content))
|
||||
{
|
||||
return $this->setError('msg_empty_content');
|
||||
throw new Rhymix\Framework\Exception('msg_empty_content');
|
||||
}
|
||||
|
||||
// Return error if content is too large.
|
||||
$comment_length_limit = ($this->module_info->comment_length_limit ?: 128) * 1024;
|
||||
if (strlen($obj->content) > $comment_length_limit && !$this->grant->manager)
|
||||
{
|
||||
return $this->setError('msg_content_too_long');
|
||||
throw new Rhymix\Framework\Exception('msg_content_too_long');
|
||||
}
|
||||
|
||||
if(!$this->module_info->use_status) $this->module_info->use_status = 'PUBLIC';
|
||||
|
|
@ -398,7 +398,7 @@ class boardController extends board
|
|||
$oDocument = $oDocumentModel->getDocument($obj->document_srl);
|
||||
if(!$oDocument->isExists())
|
||||
{
|
||||
return $this->setError('msg_not_founded');
|
||||
throw new Rhymix\Framework\Exceptions\TargetNotFound;
|
||||
}
|
||||
|
||||
// For anonymous use, remove writer's information and notifying information
|
||||
|
|
@ -436,7 +436,7 @@ class boardController extends board
|
|||
$childs = $oCommentModel->getChildComments($obj->comment_srl);
|
||||
if(count($childs) > 0)
|
||||
{
|
||||
return $this->setError('msg_board_update_protect_comment');
|
||||
throw new Rhymix\Framework\Exception('msg_board_update_protect_comment');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -446,7 +446,7 @@ class boardController extends board
|
|||
|
||||
if($member_info->is_admin == 'Y' && $logged_info->is_admin != 'Y')
|
||||
{
|
||||
return $this->setError('msg_admin_comment_no_modify');
|
||||
throw new Rhymix\Framework\Exception('msg_admin_comment_no_modify');
|
||||
}
|
||||
|
||||
// INSERT if comment_srl does not exist.
|
||||
|
|
@ -461,7 +461,7 @@ class boardController extends board
|
|||
$parent_comment = $oCommentModel->getComment($obj->parent_srl);
|
||||
if(!$parent_comment->comment_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\TargetNotFound;
|
||||
}
|
||||
if($parent_comment->isSecret() && $this->module_info->secret === 'Y')
|
||||
{
|
||||
|
|
@ -490,13 +490,13 @@ class boardController extends board
|
|||
{
|
||||
$format = lang('msg_protect_regdate_comment');
|
||||
$massage = sprintf($format, $this->module_info->protect_document_regdate);
|
||||
return $this->setError($massage);
|
||||
throw new Rhymix\Framework\Exception($massage);
|
||||
}
|
||||
}
|
||||
// check the grant
|
||||
if(!$comment->isGranted())
|
||||
{
|
||||
return $this->setError('msg_not_permitted');
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
$obj->parent_srl = $comment->parent_srl;
|
||||
$output = $oCommentController->updateComment($obj, $this->grant->manager);
|
||||
|
|
@ -530,7 +530,7 @@ class boardController extends board
|
|||
|
||||
if(!$comment_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
$oCommentModel = getModel('comment');
|
||||
|
|
@ -540,7 +540,7 @@ class boardController extends board
|
|||
$childs = $oCommentModel->getChildComments($comment_srl);
|
||||
if(count($childs) > 0)
|
||||
{
|
||||
return $this->setError('msg_board_delete_protect_comment');
|
||||
throw new Rhymix\Framework\Exception('msg_board_delete_protect_comment');
|
||||
}
|
||||
}
|
||||
$comment = $oCommentModel->getComment($comment_srl, $this->grant->manager);
|
||||
|
|
@ -550,7 +550,7 @@ class boardController extends board
|
|||
{
|
||||
$format = lang('msg_protect_regdate_comment');
|
||||
$massage = sprintf($format, $this->module_info->protect_document_regdate);
|
||||
return $this->setError($massage);
|
||||
throw new Rhymix\Framework\Exception($massage);
|
||||
}
|
||||
}
|
||||
// generate comment controller object
|
||||
|
|
@ -662,13 +662,13 @@ class boardController extends board
|
|||
$oComment = $oCommentModel->getComment($comment_srl);
|
||||
if(!$oComment->isExists())
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\TargetNotFound;
|
||||
}
|
||||
|
||||
// compare the comment password and the user input password
|
||||
if(!$oMemberModel->isValidPassword($oComment->get('password'),$password))
|
||||
{
|
||||
return $this->setError('msg_invalid_password');
|
||||
throw new Rhymix\Framework\Exception('msg_invalid_password');
|
||||
}
|
||||
|
||||
$oComment->setGrantForSession();
|
||||
|
|
@ -678,13 +678,13 @@ class boardController extends board
|
|||
$oDocument = $oDocumentModel->getDocument($document_srl);
|
||||
if(!$oDocument->isExists())
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\TargetNotFound;
|
||||
}
|
||||
|
||||
// compare the document password and the user input password
|
||||
if(!$oMemberModel->isValidPassword($oDocument->get('password'),$password))
|
||||
{
|
||||
return $this->setError('msg_invalid_password');
|
||||
throw new Rhymix\Framework\Exception('msg_invalid_password');
|
||||
}
|
||||
|
||||
$oDocument->setGrantForSession();
|
||||
|
|
|
|||
|
|
@ -61,27 +61,9 @@ class boardMobile extends boardView
|
|||
$this->consultation = false;
|
||||
}
|
||||
|
||||
$oDocumentModel = getModel('document');
|
||||
$extra_keys = $oDocumentModel->getExtraKeys($this->module_info->module_srl);
|
||||
Context::set('extra_keys', $extra_keys);
|
||||
|
||||
if($this->module_info->mskin === '/USE_RESPONSIVE/')
|
||||
{
|
||||
$template_path = sprintf("%sskins/%s/",$this->module_path, $this->module_info->skin);
|
||||
if(!is_dir($template_path)||!$this->module_info->skin)
|
||||
{
|
||||
$template_path = sprintf("%sskins/%s/",$this->module_path, 'default');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$template_path = sprintf("%sm.skins/%s/",$this->module_path, $this->module_info->mskin);
|
||||
if(!is_dir($template_path)||!$this->module_info->mskin)
|
||||
{
|
||||
$template_path = sprintf("%sm.skins/%s/",$this->module_path, 'default');
|
||||
}
|
||||
}
|
||||
$this->setTemplatePath($template_path);
|
||||
Context::addJsFilter($this->module_path.'tpl/filter', 'input_password.xml');
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -90,17 +90,6 @@ class boardView extends board
|
|||
$this->consultation = FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* setup the template path based on the skin
|
||||
* the default skin is default
|
||||
**/
|
||||
$template_path = sprintf("%sskins/%s/",$this->module_path, $this->module_info->skin);
|
||||
if(!is_dir($template_path)||!$this->module_info->skin)
|
||||
{
|
||||
$template_path = sprintf("%sskins/%s/",$this->module_path, 'default');
|
||||
}
|
||||
$this->setTemplatePath($template_path);
|
||||
|
||||
/**
|
||||
* use context::set to setup extra variables
|
||||
**/
|
||||
|
|
@ -262,7 +251,7 @@ class boardView extends board
|
|||
// if the module srl is not consistent
|
||||
if($oDocument->get('module_srl')!=$this->module_info->module_srl )
|
||||
{
|
||||
return $this->stop('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\TargetNotFound;
|
||||
}
|
||||
|
||||
// check the manage grant
|
||||
|
|
@ -383,7 +372,11 @@ class boardView extends board
|
|||
|
||||
if(is_array($file_module_config->download_grant) && $downloadGrantCount>0)
|
||||
{
|
||||
if(!Context::get('is_logged')) return $this->stop('msg_not_permitted_download');
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted('msg_not_permitted_download');
|
||||
}
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
if($logged_info->is_admin != 'Y')
|
||||
{
|
||||
|
|
@ -406,7 +399,10 @@ class boardView extends board
|
|||
break;
|
||||
}
|
||||
}
|
||||
if(!$is_permitted) return $this->stop('msg_not_permitted_download');
|
||||
if(!$is_permitted)
|
||||
{
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted('msg_not_permitted_download');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -672,18 +668,18 @@ class boardView extends board
|
|||
$document_srl = Context::get('document_srl');
|
||||
if(!$document_srl)
|
||||
{
|
||||
return $this->setError("msg_invalid_request");
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
if($this->grant->view == false || ($this->module_info->consultation == 'Y' && !$this->grant->manager && !$this->grant->consultation_read))
|
||||
{
|
||||
return $this->setError("msg_not_permitted");
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
|
||||
$oDocument = getModel('document')->getDocument($document_srl);
|
||||
if(!$oDocument->isExists())
|
||||
{
|
||||
return $this->setError("msg_invalid_request");
|
||||
throw new Rhymix\Framework\Exceptions\TargetNotFound;
|
||||
}
|
||||
Context::set('oDocument', $oDocument);
|
||||
|
||||
|
|
@ -780,20 +776,20 @@ class boardView extends board
|
|||
{
|
||||
$format = lang('msg_protect_regdate_document');
|
||||
$massage = sprintf($format, $this->module_info->protect_document_regdate);
|
||||
return $this->setError($massage);
|
||||
throw new Rhymix\Framework\Exception($massage);
|
||||
}
|
||||
}
|
||||
if($this->module_info->protect_content == "Y" || $this->module_info->protect_update_content == 'Y')
|
||||
{
|
||||
if($oDocument->get('comment_count') > 0 && $this->grant->manager == false)
|
||||
{
|
||||
return $this->setError('msg_protect_update_content');
|
||||
throw new Rhymix\Framework\Exception('msg_protect_update_content');
|
||||
}
|
||||
}
|
||||
}
|
||||
if($member_info->is_admin == 'Y' && $logged_info->is_admin != 'Y')
|
||||
{
|
||||
return $this->setError('msg_admin_document_no_modify');
|
||||
throw new Rhymix\Framework\Exception('msg_admin_document_no_modify');
|
||||
}
|
||||
|
||||
// if the document is not granted, then back to the password input form
|
||||
|
|
@ -913,7 +909,7 @@ class boardView extends board
|
|||
{
|
||||
$format = lang('msg_protect_regdate_document');
|
||||
$massage = sprintf($format, $this->module_info->protect_document_regdate);
|
||||
return $this->setError($massage);
|
||||
throw new Rhymix\Framework\Exception($massage);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -921,7 +917,7 @@ class boardView extends board
|
|||
{
|
||||
if($oDocument->get('comment_count')>0 && $this->grant->manager == false)
|
||||
{
|
||||
return $this->setError('msg_protect_delete_content');
|
||||
throw new Rhymix\Framework\Exception('msg_protect_delete_content');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -953,7 +949,7 @@ class boardView extends board
|
|||
$oDocument = $oDocumentModel->getDocument($document_srl);
|
||||
if(!$oDocument->isExists())
|
||||
{
|
||||
return $this->dispBoardMessage('msg_invalid_request');
|
||||
return $this->dispBoardMessage('msg_not_founded');
|
||||
}
|
||||
|
||||
// Check allow comment
|
||||
|
|
@ -998,7 +994,7 @@ class boardView extends board
|
|||
// if the parent comment is not existed
|
||||
if(!$parent_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
// get the comment
|
||||
|
|
@ -1008,11 +1004,11 @@ class boardView extends board
|
|||
// if the comment is not existed, opoup an error message
|
||||
if(!$oSourceComment->isExists())
|
||||
{
|
||||
return $this->dispBoardMessage('msg_invalid_request');
|
||||
return $this->dispBoardMessage('msg_not_founded');
|
||||
}
|
||||
if(Context::get('document_srl') && $oSourceComment->get('document_srl') != Context::get('document_srl'))
|
||||
{
|
||||
return $this->dispBoardMessage('msg_invalid_request');
|
||||
return $this->dispBoardMessage('msg_not_founded');
|
||||
}
|
||||
|
||||
// Check allow comment
|
||||
|
|
@ -1060,7 +1056,7 @@ class boardView extends board
|
|||
// if the comment is not existed
|
||||
if(!$comment_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
// get comment information
|
||||
|
|
@ -1075,7 +1071,7 @@ class boardView extends board
|
|||
{
|
||||
$format = lang('msg_protect_regdate_comment');
|
||||
$massage = sprintf($format, $this->module_info->protect_document_regdate);
|
||||
return $this->setError($massage);
|
||||
throw new Rhymix\Framework\Exception($massage);
|
||||
}
|
||||
}
|
||||
if($this->module_info->protect_update_comment === 'Y' && $this->grant->manager == false)
|
||||
|
|
@ -1083,19 +1079,19 @@ class boardView extends board
|
|||
$childs = $oCommentModel->getChildComments($comment_srl);
|
||||
if(count($childs) > 0)
|
||||
{
|
||||
return $this->setError('msg_board_update_protect_comment');
|
||||
throw new Rhymix\Framework\Exception('msg_board_update_protect_comment');
|
||||
}
|
||||
}
|
||||
|
||||
if($member_info->is_admin == 'Y' && $logged_info->is_admin != 'Y')
|
||||
{
|
||||
return $this->setError('msg_admin_comment_no_modify');
|
||||
throw new Rhymix\Framework\Exception('msg_admin_comment_no_modify');
|
||||
}
|
||||
|
||||
// if the comment is not exited, alert an error message
|
||||
if(!$oComment->isExists())
|
||||
{
|
||||
return $this->dispBoardMessage('msg_invalid_request');
|
||||
return $this->dispBoardMessage('msg_not_founded');
|
||||
}
|
||||
|
||||
// if the comment is not granted, then back to the password input form
|
||||
|
|
@ -1143,7 +1139,7 @@ class boardView extends board
|
|||
{
|
||||
$format = lang('msg_protect_regdate_comment');
|
||||
$massage = sprintf($format, $this->module_info->protect_document_regdate);
|
||||
return $this->setError($massage);
|
||||
throw new Rhymix\Framework\Exception($massage);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1153,7 +1149,7 @@ class boardView extends board
|
|||
$childs = $oCommentModel->getChildComments($comment_srl);
|
||||
if(count($childs) > 0)
|
||||
{
|
||||
return $this->setError('msg_board_delete_protect_comment');
|
||||
throw new Rhymix\Framework\Exception('msg_board_delete_protect_comment');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1233,7 +1229,7 @@ class boardView extends board
|
|||
|
||||
if($this->grant->update_view !== true)
|
||||
{
|
||||
return $this->setError('msg_not_permitted');
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
|
||||
$updatelog = $oDocumentModel->getDocumentUpdateLog($document_srl);
|
||||
|
|
@ -1253,7 +1249,7 @@ class boardView extends board
|
|||
|
||||
if($this->grant->update_view !== true)
|
||||
{
|
||||
return $this->setError('msg_not_permitted');
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
|
||||
$update_log = $oDocumentModel->getUpdateLog($update_id);
|
||||
|
|
@ -1289,7 +1285,7 @@ class boardView extends board
|
|||
{
|
||||
iF($this->grant->vote_log_view !== true)
|
||||
{
|
||||
return $this->setError('msg_not_permitted');
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
|
||||
$oMemberModel = getModel('member');
|
||||
|
|
@ -1310,7 +1306,7 @@ class boardView extends board
|
|||
}
|
||||
else
|
||||
{
|
||||
return $this->setError('msg_not_target');
|
||||
throw new Rhymix\Framework\Exception('msg_not_target');
|
||||
}
|
||||
|
||||
$output = executeQueryArray($queryId, $args);
|
||||
|
|
|
|||
|
|
@ -57,13 +57,13 @@
|
|||
</grants>
|
||||
<actions>
|
||||
<action name="dispBoardContent" type="view" permission="list" standalone="false" index="true" />
|
||||
<action name="dispBoardWrite" type="view" permission="write_document" standalone="false" />
|
||||
<action name="dispBoardDelete" type="view" permission="write_document" standalone="false" />
|
||||
<action name="dispBoardWriteComment" type="view" permission="write_comment" standalone="false" />
|
||||
<action name="dispBoardReplyComment" type="view" permission="write_comment" standalone="false" />
|
||||
<action name="dispBoardModifyComment" type="view" permission="write_comment" standalone="false" />
|
||||
<action name="dispBoardDeleteComment" type="view" permission="write_comment" standalone="false" />
|
||||
<action name="dispBoardDeleteTrackback" type="view" permission="list,view" standalone="false" />
|
||||
<action name="dispBoardWrite" type="view" permission="write_document" standalone="false" meta-noindex="true" />
|
||||
<action name="dispBoardDelete" type="view" permission="write_document" standalone="false" meta-noindex="true" />
|
||||
<action name="dispBoardWriteComment" type="view" permission="write_comment" standalone="false" meta-noindex="true" />
|
||||
<action name="dispBoardReplyComment" type="view" permission="write_comment" standalone="false" meta-noindex="true" />
|
||||
<action name="dispBoardModifyComment" type="view" permission="write_comment" standalone="false" meta-noindex="true" />
|
||||
<action name="dispBoardDeleteComment" type="view" permission="write_comment" standalone="false" meta-noindex="true" />
|
||||
<action name="dispBoardDeleteTrackback" type="view" permission="list,view" standalone="false" meta-noindex="true" />
|
||||
<action name="dispBoardContentList" type="view" permission="list" standalone="false" />
|
||||
<action name="dispBoardContentView" type="view" permission="view" standalone="false" />
|
||||
<action name="dispBoardUpdateLog" type="view" permission="update_view" standalone="false" />
|
||||
|
|
|
|||
|
|
@ -88,8 +88,8 @@
|
|||
<a cond="$oDocument->getVoted() > 0" href="#" onclick="doCallModuleAction('document','procDocumentVoteUpCancel','{$oDocument->document_srl}');return false;" class="voted"> <i class="xi-thumbs-up"></i><br>{$lang->cmd_vote} {$oDocument->get('voted_count')}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a cond="$oDocument->getVoted() === false || $oDocument->getVoted() > 0" herf="#" onclick="doCallModuleAction('document','procDocumentVoteDown','{$oDocument->document_srl}');return false;" class="voted"> <i class="xi-thumbs-down"></i><br>{$lang->cmd_vote_down} {$oDocument->get('blamed_count')}</a>
|
||||
<a cond="$oDocument->getVoted() < 0" herf="#" onclick="doCallModuleAction('document','procDocumentVoteDownCancel','{$oDocument->document_srl}');return false;" class="voted"> <i class="xi-thumbs-down"></i><br>{$lang->cmd_vote_down} {$oDocument->get('blamed_count')}</a>
|
||||
<a cond="$oDocument->getVoted() === false || $oDocument->getVoted() > 0" href="#" onclick="doCallModuleAction('document','procDocumentVoteDown','{$oDocument->document_srl}');return false;" class="voted"> <i class="xi-thumbs-down"></i><br>{$lang->cmd_vote_down} {$oDocument->get('blamed_count')}</a>
|
||||
<a cond="$oDocument->getVoted() < 0" href="#" onclick="doCallModuleAction('document','procDocumentVoteDownCancel','{$oDocument->document_srl}');return false;" class="voted"> <i class="xi-thumbs-down"></i><br>{$lang->cmd_vote_down} {$oDocument->get('blamed_count')}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
<config autoescape="on" />
|
||||
<include target="header.html" />
|
||||
<load target="../../module/tpl/js/multi_order.js" />
|
||||
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/board/tpl/board_insert/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
|
|
@ -24,7 +25,7 @@
|
|||
<div class="x_control-group">
|
||||
<label class="x_control-label" for="lang_browser_title">{$lang->browser_title}</label>
|
||||
<div class="x_controls">
|
||||
<input type="text" name="browser_title" id="browser_title" value="<!--@if(strpos($module_info->browser_title, '$user_lang->') === false)-->{$module_info->browser_title}<!--@else-->{htmlspecialchars($module_info->browser_title)}<!--@end-->" class="lang_code" />
|
||||
<input type="text" name="browser_title" id="browser_title" value="{$module_info->browser_title}" class="lang_code" />
|
||||
<a href="#browser_title_help" class="x_icon-question-sign" data-toggle>{$lang->help}</a>
|
||||
<p id="browser_title_help" class="x_help-block" hidden>{$lang->about_browser_title}</p>
|
||||
</div>
|
||||
|
|
@ -32,13 +33,13 @@
|
|||
<div class="x_control-group">
|
||||
<label class="x_control-label" for="lang_meta_keywords">{$lang->meta_keywords}</label>
|
||||
<div class="x_controls">
|
||||
<input type="text" name="meta_keywords" id="meta_keywords" value="<!--@if(strpos($module_info->meta_keywords, '$user_lang->') === false)-->{$module_info->meta_keywords}<!--@else-->{htmlspecialchars($module_info->meta_keywords)}<!--@end-->" class="lang_code" />
|
||||
<input type="text" name="meta_keywords" id="meta_keywords" value="{$module_info->meta_keywords}" class="lang_code" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="x_control-group">
|
||||
<label class="x_control-label" for="lang_meta_description">{$lang->meta_description}</label>
|
||||
<div class="x_controls">
|
||||
<input type="text" name="meta_description" id="meta_description" value="<!--@if(strpos($module_info->meta_description, '$user_lang->') === false)-->{$module_info->meta_description}<!--@else-->{htmlspecialchars($module_info->meta_description)}<!--@end-->" class="lang_code" />
|
||||
<input type="text" name="meta_description" id="meta_description" value="{$module_info->meta_description}" class="lang_code" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="x_control-group">
|
||||
|
|
@ -84,14 +85,14 @@
|
|||
<div class="x_control-group">
|
||||
<label class="x_control-label" for="lang_header_text">{$lang->header_text}</label>
|
||||
<div class="x_controls">
|
||||
<textarea name="header_text" id="header_text" class="lang_code" rows="8" cols="42"><!--@if(strpos($module_info->header_text, '$user_lang->') === false)-->{$module_info->header_text}<!--@else-->{htmlspecialchars($module_info->header_text)}<!--@end--></textarea>
|
||||
<textarea name="header_text" id="header_text" class="lang_code" rows="8" cols="42">{$module_info->header_text}</textarea>
|
||||
<p id="header_text_help" class="x_help-block">{$lang->about_header_text}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="x_control-group">
|
||||
<label class="x_control-label" for="lang_footer_text">{$lang->footer_text}</label>
|
||||
<div class="x_controls">
|
||||
<textarea name="footer_text" id="footer_text" class="lang_code" rows="8" cols="42"><!--@if(strpos($module_info->footer_text, '$user_lang->') === false)-->{$module_info->footer_text}<!--@else-->{htmlspecialchars($module_info->footer_text)}<!--@end--></textarea>
|
||||
<textarea name="footer_text" id="footer_text" class="lang_code" rows="8" cols="42">{$module_info->footer_text}</textarea>
|
||||
<p id="footer_text_help" class="x_help-block">{$lang->about_footer_text}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -149,14 +150,14 @@
|
|||
<div class="x_control-group">
|
||||
<label class="x_control-label" for="lang_mobile_header_text">{$lang->mobile_header_text}</label>
|
||||
<div class="x_controls">
|
||||
<textarea name="mobile_header_text" id="mobile_header_text" class="lang_code" rows="8" cols="42"><!--@if(strpos($module_info->footer_text, '$user_lang->') === false)-->{$module_info->mobile_header_text}<!--@else-->{htmlspecialchars($module_info->mobile_header_text)}<!--@end--></textarea>
|
||||
<textarea name="mobile_header_text" id="mobile_header_text" class="lang_code" rows="8" cols="42">{$module_info->mobile_header_text}</textarea>
|
||||
<p id="mobile_header_text_help" class="x_help-block">{$lang->about_mobile_header_text}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="x_control-group">
|
||||
<label class="x_control-label" for="lang_mobile_footer_text">{$lang->mobile_footer_text}</label>
|
||||
<div class="x_controls">
|
||||
<textarea name="mobile_footer_text" id="mobile_footer_text" class="lang_code" rows="8" cols="42"><!--@if(strpos($module_info->footer_text, '$user_lang->') === false)-->{$module_info->mobile_footer_text}<!--@else-->{htmlspecialchars($module_info->mobile_footer_text)}<!--@end--></textarea>
|
||||
<textarea name="mobile_footer_text" id="mobile_footer_text" class="lang_code" rows="8" cols="42">{$module_info->mobile_footer_text}</textarea>
|
||||
<p id="mobile_footer_text_help" class="x_help-block">{$lang->about_mobile_footer_text}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -358,7 +359,7 @@
|
|||
<div class="x_control-group">
|
||||
<label class="x_control-label" for="description">{$lang->description}</label>
|
||||
<div class="x_controls">
|
||||
<textarea name="description" id="description" rows="4" cols="42" placeholder="{$lang->about_description}" style="vertical-align:top">{htmlspecialchars($module_info->description)}</textarea>
|
||||
<textarea name="description" id="description" rows="4" cols="42" placeholder="{$lang->about_description}" style="vertical-align:top">{$module_info->description}</textarea>
|
||||
<a href="#description_help" class="x_icon-question-sign" data-toggle>{$lang->help}</a>
|
||||
<p id="description_help" class="x_help-block" hidden>{$lang->about_description}</p>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@
|
|||
</label>
|
||||
<div class="x_controls">
|
||||
<div class="x_input-append" style="margin-bottom:8px">
|
||||
<select name="_admin_member" multiple="multiple" size="{count($admin_member)?count($admin_member):1}">
|
||||
<select name="_admin_member" multiple="multiple" size="{countobj($admin_member) ?: 1}">
|
||||
<option loop="$admin_member => $key, $val" value="{$val->email_address}"|cond="$member_config->identifier=='email_address'" value="{$val->user_id}"|cond="$member_config->identifier!='email_address'">
|
||||
{$val->nick_name} (<block cond="$member_config->identifier=='email_address'">{$val->email_address}</block><block cond="$member_config->identifier!='email_address'">{$val->user_id}</block>)
|
||||
</option>
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ class commentAdminController extends comment
|
|||
$cart = Context::get('cart');
|
||||
if(!$cart)
|
||||
{
|
||||
return $this->stop('msg_cart_is_null');
|
||||
throw new Rhymix\Framework\Exception('msg_cart_is_null');
|
||||
}
|
||||
if(!is_array($cart))
|
||||
{
|
||||
|
|
@ -96,7 +96,7 @@ class commentAdminController extends comment
|
|||
$comment = $oCommentModel->getComment($comment_srl);
|
||||
if($comment->comment_srl != $comment_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
$document_srl = $comment->document_srl;
|
||||
if(!in_array($document_srl, $updated_documents_arr))
|
||||
|
|
@ -171,7 +171,7 @@ class commentAdminController extends comment
|
|||
$cart = Context::get('cart');
|
||||
if(!$cart)
|
||||
{
|
||||
return $this->stop('msg_cart_is_null');
|
||||
throw new Rhymix\Framework\Exception('msg_cart_is_null');
|
||||
}
|
||||
if(!is_array($cart))
|
||||
{
|
||||
|
|
@ -184,7 +184,7 @@ class commentAdminController extends comment
|
|||
$comment_count = count($comment_srl_list);
|
||||
if(!$comment_count)
|
||||
{
|
||||
return $this->stop('msg_cart_is_null');
|
||||
throw new Rhymix\Framework\Exception('msg_cart_is_null');
|
||||
}
|
||||
|
||||
$oCommentController = getController('comment');
|
||||
|
|
@ -220,7 +220,7 @@ class commentAdminController extends comment
|
|||
continue;
|
||||
}
|
||||
|
||||
$output = $oCommentController->deleteComment($comment_srl, TRUE, $isTrash);
|
||||
$output = $oCommentController->deleteComment($comment_srl, TRUE, toBool($isTrash));
|
||||
if(!$output->toBool())
|
||||
{
|
||||
$oDB->rollback();
|
||||
|
|
@ -310,6 +310,16 @@ class commentAdminController extends comment
|
|||
$oDB->rollback();
|
||||
return $output;
|
||||
}
|
||||
|
||||
$obj = new stdClass;
|
||||
$obj->comment_srl = $oComment->get('comment_srl');
|
||||
$obj->module_srl = $oComment->get('module_srl');
|
||||
$obj->document_srl = $oComment->get('document_srl');
|
||||
$obj->parent_srl = $oComment->get('parent_srl');
|
||||
$obj->member_srl = $oComment->get('member_srl');
|
||||
$obj->regdate = $oComment->get('regdate');
|
||||
$obj->last_update = $oComment->get('last_update');
|
||||
ModuleHandler::triggerCall('comment.moveCommentToTrash', 'after', $obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -329,7 +339,7 @@ class commentAdminController extends comment
|
|||
$oCommentController = getController('comment');
|
||||
$oComment = $oCommentModel->getComment($comment_srl, false);
|
||||
|
||||
if(!$oComment->isGranted()) return $this->stop('msg_not_permitted');
|
||||
if(!$oComment->isGranted()) throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
|
||||
$message_content = "";
|
||||
$this->_moveCommentToTrash(array($comment_srl), $oCommentController, $oDB, $message_content);
|
||||
|
|
@ -425,33 +435,18 @@ class commentAdminController extends comment
|
|||
{
|
||||
$originObject = (object) $originObject;
|
||||
}
|
||||
|
||||
$obj = new stdClass();
|
||||
$obj->document_srl = $originObject->document_srl;
|
||||
$obj->comment_srl = $originObject->comment_srl;
|
||||
$obj->parent_srl = $originObject->parent_srl;
|
||||
$obj->content = $originObject->content;
|
||||
$obj->password = $originObject->password;
|
||||
$obj->nick_name = $originObject->nick_name;
|
||||
$obj->member_srl = $originObject->member_srl;
|
||||
$obj->email_address = $originObject->email_address;
|
||||
$obj->homepage = $originObject->homepage;
|
||||
$obj->is_secret = $originObject->is_secret;
|
||||
$obj->notify_message = $originObject->notify_message;
|
||||
$obj->module_srl = $originObject->module_srl;
|
||||
|
||||
|
||||
$oCommentController = getController('comment');
|
||||
$oCommentModel = getModel('comment');
|
||||
|
||||
$oComment = $oCommentModel->getComment($originObject->comment_srl);
|
||||
|
||||
if($oComment->isExists())
|
||||
{
|
||||
$output = $oCommentController->updateCommentByRestore($obj);
|
||||
$output = $oCommentController->updateCommentByRestore($originObject);
|
||||
}
|
||||
else
|
||||
{
|
||||
$output = $oCommentController->insertComment($obj, true);
|
||||
$output = $oCommentController->insertComment($originObject, true);
|
||||
}
|
||||
|
||||
return $output;
|
||||
|
|
|
|||
|
|
@ -27,15 +27,18 @@ class commentController extends comment
|
|||
*/
|
||||
function procCommentVoteUp()
|
||||
{
|
||||
if(!Context::get('is_logged'))
|
||||
if($this->module_info->non_login_vote !== 'Y')
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
}
|
||||
|
||||
$comment_srl = Context::get('target_srl');
|
||||
if(!$comment_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
$oCommentModel = getModel('comment');
|
||||
|
|
@ -43,14 +46,14 @@ class commentController extends comment
|
|||
$module_srl = $oComment->get('module_srl');
|
||||
if(!$module_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
$oModuleModel = getModel('module');
|
||||
$comment_config = $oModuleModel->getModulePartConfig('comment', $module_srl);
|
||||
if($comment_config->use_vote_up == 'N')
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\FeatureDisabled;
|
||||
}
|
||||
|
||||
$point = 1;
|
||||
|
|
@ -61,16 +64,22 @@ class commentController extends comment
|
|||
|
||||
function procCommentVoteUpCancel()
|
||||
{
|
||||
if(!Context::get('logged_info')) return $this->setError('msg_invalid_request');
|
||||
if($this->module_info->non_login_vote !== 'Y')
|
||||
{
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
}
|
||||
|
||||
$comment_srl = Context::get('target_srl');
|
||||
if(!$comment_srl) return $this->setError('msg_invalid_request');
|
||||
if(!$comment_srl) throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
|
||||
$oCommentModel = getModel('comment');
|
||||
$oComment = $oCommentModel->getComment($comment_srl, FALSE, FALSE);
|
||||
if($oComment->get('voted_count') <= 0)
|
||||
{
|
||||
return $this->setError('msg_comment_voted_cancel_not');
|
||||
throw new Rhymix\Framework\Exception('failed_voted_canceled');
|
||||
}
|
||||
$point = 1;
|
||||
$output = $this->updateVotedCountCancel($comment_srl, $oComment, $point);
|
||||
|
|
@ -88,15 +97,18 @@ class commentController extends comment
|
|||
*/
|
||||
function procCommentVoteDown()
|
||||
{
|
||||
if(!Context::get('is_logged'))
|
||||
if($this->module_info->non_login_vote !== 'Y')
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
}
|
||||
|
||||
$comment_srl = Context::get('target_srl');
|
||||
if(!$comment_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
$oCommentModel = getModel('comment');
|
||||
|
|
@ -104,14 +116,14 @@ class commentController extends comment
|
|||
$module_srl = $oComment->get('module_srl');
|
||||
if(!$module_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
$oModuleModel = getModel('module');
|
||||
$comment_config = $oModuleModel->getModulePartConfig('comment', $module_srl);
|
||||
if($comment_config->use_vote_down == 'N')
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\FeatureDisabled;
|
||||
}
|
||||
|
||||
$point = -1;
|
||||
|
|
@ -122,16 +134,22 @@ class commentController extends comment
|
|||
|
||||
function procCommentVoteDownCancel()
|
||||
{
|
||||
if(!Context::get('logged_info')) return $this->setError('msg_invalid_request');
|
||||
if($this->module_info->non_login_vote !== 'Y')
|
||||
{
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
}
|
||||
|
||||
$comment_srl = Context::get('target_srl');
|
||||
if(!$comment_srl) return $this->setError('msg_invalid_request');
|
||||
if(!$comment_srl) throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
|
||||
$oCommentModel = getModel('comment');
|
||||
$oComment = $oCommentModel->getComment($comment_srl, FALSE, FALSE);
|
||||
if($oComment->get('blamed_count') >= 0)
|
||||
{
|
||||
return $this->setError('msg_comment_blamed_cancel_not');
|
||||
throw new Rhymix\Framework\Exception('failed_blamed_canceled');
|
||||
}
|
||||
$point = -1;
|
||||
$output = $this->updateVotedCountCancel($comment_srl, $oComment, $point);
|
||||
|
|
@ -145,19 +163,58 @@ class commentController extends comment
|
|||
function updateVotedCountCancel($comment_srl, $oComment, $point)
|
||||
{
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
// Check if the current user has voted previously.
|
||||
$args = new stdClass;
|
||||
$args->comment_srl = $comment_srl;
|
||||
$args->point = $point;
|
||||
if($logged_info->member_srl)
|
||||
{
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
}
|
||||
else
|
||||
{
|
||||
$args->ipaddress = $_SERVER['REMOTE_ADDR'];
|
||||
}
|
||||
$output = executeQuery('comment.getCommentVotedLogInfo', $args);
|
||||
if(!$output->data->count)
|
||||
{
|
||||
return new BaseObject(-1, $point > 0 ? 'failed_voted_canceled' : 'failed_blamed_canceled');
|
||||
}
|
||||
|
||||
// Call a trigger (before)
|
||||
$trigger_obj = new stdClass;
|
||||
$trigger_obj->member_srl = $oComment->get('member_srl');
|
||||
$trigger_obj->module_srl = $oComment->get('module_srl');
|
||||
$trigger_obj->document_srl = $oComment->get('document_srl');
|
||||
$trigger_obj->comment_srl = $oComment->get('comment_srl');
|
||||
$trigger_obj->update_target = ($point < 0) ? 'blamed_count' : 'voted_count';
|
||||
$trigger_obj->point = $point;
|
||||
$trigger_obj->before_point = ($point < 0) ? $oComment->get('blamed_count') : $oComment->get('voted_count');
|
||||
$trigger_obj->after_point = $trigger_obj->before_point - $point;
|
||||
$trigger_obj->cancel = true;
|
||||
$trigger_output = ModuleHandler::triggerCall('comment.updateVotedCountCancel', 'before', $trigger_obj);
|
||||
if(!$trigger_output->toBool())
|
||||
{
|
||||
return $trigger_output;
|
||||
}
|
||||
|
||||
// begin transaction
|
||||
$oDB = DB::getInstance();
|
||||
$oDB->begin();
|
||||
|
||||
$args = new stdClass();
|
||||
$d_args = new stdClass();
|
||||
$args->comment_srl = $d_args->comment_srl = $comment_srl;
|
||||
$d_args->member_srl = $logged_info->member_srl;
|
||||
if($point > 0)
|
||||
if ($trigger_obj->update_target === 'voted_count')
|
||||
{
|
||||
$args->voted_count = $oComment->get('voted_count') - $point;
|
||||
$args->voted_count = $trigger_obj->after_point;
|
||||
$output = executeQuery('comment.updateVotedCount', $args);
|
||||
}
|
||||
else
|
||||
{
|
||||
$args->blamed_count = $oComment->get('blamed_count') - $point;
|
||||
$args->blamed_count = $trigger_obj->after_point;
|
||||
$output = executeQuery('comment.updateBlamedCount', $args);
|
||||
}
|
||||
$d_output = executeQuery('comment.deleteCommentVotedLog', $d_args);
|
||||
|
|
@ -165,22 +222,10 @@ class commentController extends comment
|
|||
|
||||
//session reset
|
||||
$_SESSION['voted_comment'][$comment_srl] = false;
|
||||
|
||||
// begin transaction
|
||||
$oDB = DB::getInstance();
|
||||
$oDB->begin();
|
||||
|
||||
$obj = new stdClass();
|
||||
$obj->member_srl = $oComment->get('member_srl');
|
||||
$obj->module_srl = $oComment->get('module_srl');
|
||||
$obj->comment_srl = $oComment->get('comment_srl');
|
||||
$obj->update_target = ($point < 0) ? 'blamed_count' : 'voted_count';
|
||||
$obj->point = $point;
|
||||
$obj->before_point = ($point < 0) ? $oComment->get('blamed_count') : $oComment->get('voted_count');
|
||||
$obj->after_point = ($point < 0) ? $args->blamed_count : $args->voted_count;
|
||||
$obj->cancel = 1;
|
||||
|
||||
ModuleHandler::triggerCall('comment.updateVotedCountCancel', 'after', $obj);
|
||||
// Call a trigger (after)
|
||||
ModuleHandler::triggerCall('comment.updateVotedCountCancel', 'after', $trigger_obj);
|
||||
|
||||
$oDB->commit();
|
||||
return $output;
|
||||
}
|
||||
|
|
@ -193,13 +238,13 @@ class commentController extends comment
|
|||
{
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
|
||||
$comment_srl = Context::get('target_srl');
|
||||
if(!$comment_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
// if an user select message from options, message would be the option.
|
||||
|
|
@ -297,7 +342,7 @@ class commentController extends comment
|
|||
{
|
||||
if(!$manual_inserted && !checkCSRF())
|
||||
{
|
||||
return new BaseObject(-1, 'msg_invalid_request');
|
||||
return new BaseObject(-1, 'msg_security_violation');
|
||||
}
|
||||
|
||||
if(!is_object($obj))
|
||||
|
|
@ -348,6 +393,12 @@ class commentController extends comment
|
|||
// Remove manual member info to prevent forgery. This variable can be set by triggers only.
|
||||
unset($obj->manual_member_info);
|
||||
|
||||
// Sanitize variables
|
||||
$obj->comment_srl = intval($obj->comment_srl);
|
||||
$obj->module_srl = intval($obj->module_srl);
|
||||
$obj->document_srl = intval($obj->document_srl);
|
||||
$obj->parent_srl = intval($obj->parent_srl);
|
||||
|
||||
// call a trigger (before)
|
||||
$output = ModuleHandler::triggerCall('comment.insertComment', 'before', $obj);
|
||||
if(!$output->toBool())
|
||||
|
|
@ -389,7 +440,7 @@ class commentController extends comment
|
|||
|
||||
if($obj->homepage)
|
||||
{
|
||||
$obj->homepage = removeHackTag($obj->homepage);
|
||||
$obj->homepage = escape($obj->homepage);
|
||||
if(!preg_match('/^[a-z]+:\/\//i',$obj->homepage))
|
||||
{
|
||||
$obj->homepage = 'http://'.$obj->homepage;
|
||||
|
|
@ -494,7 +545,7 @@ class commentController extends comment
|
|||
// return if no parent comment exists
|
||||
if(!$parent_output->toBool() || !$parent_output->data)
|
||||
{
|
||||
return $parent_output;
|
||||
return new BaseObject(-1, 'parent comment does not exist');
|
||||
}
|
||||
|
||||
$parent = $parent_output->data;
|
||||
|
|
@ -544,14 +595,12 @@ class commentController extends comment
|
|||
return $output;
|
||||
}
|
||||
|
||||
// get the number of all comments in the posting
|
||||
$comment_count = $oCommentModel->getCommentCount($document_srl);
|
||||
|
||||
// create the controller object of the document
|
||||
$oDocumentController = getController('document');
|
||||
|
||||
// Update the number of comments in the post
|
||||
if(!$using_validation || $is_admin)
|
||||
$comment_count = $oCommentModel->getCommentCount($document_srl);
|
||||
if($comment_count && (!$using_validation || $is_admin))
|
||||
{
|
||||
$output = $oDocumentController->updateCommentCount($document_srl, $comment_count, $obj->nick_name, $update_document);
|
||||
}
|
||||
|
|
@ -701,7 +750,7 @@ class commentController extends comment
|
|||
{
|
||||
if(!$manual_updated && !checkCSRF())
|
||||
{
|
||||
return new BaseObject(-1, 'msg_invalid_request');
|
||||
return new BaseObject(-1, 'msg_security_violation');
|
||||
}
|
||||
|
||||
if(!is_object($obj))
|
||||
|
|
@ -713,7 +762,13 @@ class commentController extends comment
|
|||
|
||||
// Remove manual member info to prevent forgery. This variable can be set by triggers only.
|
||||
unset($obj->manual_member_info);
|
||||
|
||||
|
||||
// Sanitize variables
|
||||
$obj->comment_srl = intval($obj->comment_srl);
|
||||
$obj->module_srl = intval($obj->module_srl);
|
||||
$obj->document_srl = intval($obj->document_srl);
|
||||
$obj->parent_srl = intval($obj->parent_srl);
|
||||
|
||||
// call a trigger (before)
|
||||
$output = ModuleHandler::triggerCall('comment.updateComment', 'before', $obj);
|
||||
if(!$output->toBool())
|
||||
|
|
@ -748,7 +803,7 @@ class commentController extends comment
|
|||
|
||||
if($obj->homepage)
|
||||
{
|
||||
$obj->homepage = removeHackTag($obj->homepage);
|
||||
$obj->homepage = escape($obj->homepage);
|
||||
if(!preg_match('/^[a-z]+:\/\//i',$obj->homepage))
|
||||
{
|
||||
$obj->homepage = 'http://'.$obj->homepage;
|
||||
|
|
@ -973,6 +1028,7 @@ class commentController extends comment
|
|||
$document_srl = $comment->document_srl;
|
||||
|
||||
// call a trigger (before)
|
||||
$comment->isMoveToTrash = $isMoveToTrash ? true : false;
|
||||
$output = ModuleHandler::triggerCall('comment.deleteComment', 'before', $comment);
|
||||
if(!$output->toBool())
|
||||
{
|
||||
|
|
@ -1080,7 +1136,6 @@ class commentController extends comment
|
|||
}
|
||||
|
||||
// call a trigger (after)
|
||||
$comment->isMoveToTrash = $isMoveToTrash;
|
||||
ModuleHandler::triggerCall('comment.deleteComment', 'after', $comment);
|
||||
unset($comment->isMoveToTrash);
|
||||
|
||||
|
|
@ -1136,9 +1191,8 @@ class commentController extends comment
|
|||
return new BaseObject(-1, 'msg_admin_comment_no_move_to_trash');
|
||||
}
|
||||
|
||||
$trash_args->module_srl = $oComment->variables['module_srl'];
|
||||
$obj->module_srl = $oComment->variables['module_srl'];
|
||||
|
||||
$obj->module_srl = $oComment->get('module_srl');
|
||||
$trash_args->module_srl = $obj->module_srl;
|
||||
if($trash_args->module_srl === 0)
|
||||
{
|
||||
return new BaseObject(-1, 'msg_module_srl_not_exists');
|
||||
|
|
@ -1214,6 +1268,11 @@ class commentController extends comment
|
|||
executeQuery('file.updateFileValid', $args);
|
||||
}
|
||||
|
||||
$obj->document_srl = $oComment->get('document_srl');
|
||||
$obj->parent_srl = $oComment->get('parent_srl');
|
||||
$obj->member_srl = $oComment->get('member_srl');
|
||||
$obj->regdate = $oComment->get('regdate');
|
||||
$obj->last_update = $oComment->get('last_update');
|
||||
ModuleHandler::triggerCall('comment.moveCommentToTrash', 'after', $obj);
|
||||
|
||||
$oDB->commit();
|
||||
|
|
@ -1341,12 +1400,10 @@ class commentController extends comment
|
|||
if($point > 0)
|
||||
{
|
||||
$failed_voted = 'failed_voted';
|
||||
$success_message = 'success_voted';
|
||||
}
|
||||
else
|
||||
{
|
||||
$failed_voted = 'failed_blamed';
|
||||
$success_message = 'success_blamed';
|
||||
}
|
||||
|
||||
// invalid vote if vote info exists in the session info.
|
||||
|
|
@ -1355,23 +1412,24 @@ class commentController extends comment
|
|||
return new BaseObject(-1, $failed_voted);
|
||||
}
|
||||
|
||||
// Get the original comment
|
||||
$oCommentModel = getModel('comment');
|
||||
$oComment = $oCommentModel->getComment($comment_srl, FALSE, FALSE);
|
||||
|
||||
// invalid vote if both ip addresses between author's and the current user are same.
|
||||
// Pass if the author's IP address is as same as visitor's.
|
||||
if($oComment->get('ipaddress') == $_SERVER['REMOTE_ADDR'])
|
||||
{
|
||||
$_SESSION['voted_comment'][$comment_srl] = false;
|
||||
return new BaseObject(-1, $failed_voted);
|
||||
}
|
||||
|
||||
// Create a member model object
|
||||
$oMemberModel = getModel('member');
|
||||
$member_srl = $oMemberModel->getLoggedMemberSrl();
|
||||
|
||||
// if the comment author is a member
|
||||
if($oComment->get('member_srl'))
|
||||
{
|
||||
// create the member model object
|
||||
$oMemberModel = getModel('member');
|
||||
$member_srl = $oMemberModel->getLoggedMemberSrl();
|
||||
|
||||
// session registered if the author information matches to the current logged-in user's.
|
||||
if($member_srl && $member_srl == abs($oComment->get('member_srl')))
|
||||
{
|
||||
|
|
@ -1380,9 +1438,8 @@ class commentController extends comment
|
|||
}
|
||||
}
|
||||
|
||||
$args = new stdClass();
|
||||
|
||||
// If logged-in, use the member_srl. otherwise use the ipaddress.
|
||||
$args = new stdClass();
|
||||
if($member_srl)
|
||||
{
|
||||
$args->member_srl = $member_srl;
|
||||
|
|
@ -1391,61 +1448,72 @@ class commentController extends comment
|
|||
{
|
||||
$args->ipaddress = $_SERVER['REMOTE_ADDR'];
|
||||
}
|
||||
|
||||
$args->comment_srl = $comment_srl;
|
||||
$output = executeQuery('comment.getCommentVotedLogInfo', $args);
|
||||
|
||||
// session registered if log info contains recommendation vote log.
|
||||
// Pass after registering a session if log information has vote-up logs
|
||||
if($output->data->count)
|
||||
{
|
||||
$_SESSION['voted_comment'][$comment_srl] = false;
|
||||
return new BaseObject(-1, $failed_voted);
|
||||
}
|
||||
|
||||
// Call a trigger (before)
|
||||
$trigger_obj = new stdClass;
|
||||
$trigger_obj->member_srl = $oComment->get('member_srl');
|
||||
$trigger_obj->module_srl = $oComment->get('module_srl');
|
||||
$trigger_obj->document_srl = $oComment->get('document_srl');
|
||||
$trigger_obj->comment_srl = $oComment->get('comment_srl');
|
||||
$trigger_obj->update_target = ($point < 0) ? 'blamed_count' : 'voted_count';
|
||||
$trigger_obj->point = $point;
|
||||
$trigger_obj->before_point = ($point < 0) ? $oComment->get('blamed_count') : $oComment->get('voted_count');
|
||||
$trigger_obj->after_point = $trigger_obj->before_point + $point;
|
||||
$trigger_obj->cancel = false;
|
||||
$trigger_output = ModuleHandler::triggerCall('comment.updateVotedCount', 'before', $trigger_obj);
|
||||
if(!$trigger_output->toBool())
|
||||
{
|
||||
return $trigger_output;
|
||||
}
|
||||
|
||||
// begin transaction
|
||||
$oDB = DB::getInstance();
|
||||
$oDB->begin();
|
||||
|
||||
// update the number of votes
|
||||
if($point < 0)
|
||||
// Update the voted count
|
||||
if($trigger_obj->update_target === 'blamed_count')
|
||||
{
|
||||
// leave into session information
|
||||
$_SESSION['voted_comment'][$comment_srl] = $point;
|
||||
$args->blamed_count = $oComment->get('blamed_count') + $point;
|
||||
$args->blamed_count = $trigger_obj->after_point;
|
||||
$output = executeQuery('comment.updateBlamedCount', $args);
|
||||
}
|
||||
else
|
||||
{
|
||||
$_SESSION['voted_comment'][$comment_srl] = $point;
|
||||
$args->voted_count = $oComment->get('voted_count') + $point;
|
||||
$args->voted_count = $trigger_obj->after_point;
|
||||
$output = executeQuery('comment.updateVotedCount', $args);
|
||||
}
|
||||
|
||||
// leave logs
|
||||
$args->point = $point;
|
||||
$args->point = $trigger_obj->point;
|
||||
$output = executeQuery('comment.insertCommentVotedLog', $args);
|
||||
|
||||
$obj = new stdClass();
|
||||
$obj->member_srl = $oComment->get('member_srl');
|
||||
$obj->module_srl = $oComment->get('module_srl');
|
||||
$obj->comment_srl = $oComment->get('comment_srl');
|
||||
$obj->update_target = ($point < 0) ? 'blamed_count' : 'voted_count';
|
||||
$obj->point = $point;
|
||||
$obj->before_point = ($point < 0) ? $oComment->get('blamed_count') : $oComment->get('voted_count');
|
||||
$obj->after_point = ($point < 0) ? $args->blamed_count : $args->voted_count;
|
||||
|
||||
ModuleHandler::triggerCall('comment.updateVotedCount', 'after', $obj);
|
||||
// Leave in the session information
|
||||
$_SESSION['voted_comment'][$comment_srl] = $trigger_obj->point;
|
||||
|
||||
// Call a trigger (after)
|
||||
ModuleHandler::triggerCall('comment.updateVotedCount', 'after', $trigger_obj);
|
||||
$oDB->commit();
|
||||
|
||||
// Return the result
|
||||
$output = new BaseObject(0, $success_message);
|
||||
if($point > 0)
|
||||
$output = new BaseObject();
|
||||
if($trigger_obj->update_target === 'voted_count')
|
||||
{
|
||||
$output->add('voted_count', $obj->after_point);
|
||||
$output->setMessage('success_voted');
|
||||
$output->add('voted_count', $trigger_obj->after_point);
|
||||
}
|
||||
else
|
||||
{
|
||||
$output->add('blamed_count', $obj->after_point);
|
||||
$output->setMessage('success_blamed');
|
||||
$output->add('blamed_count', $trigger_obj->after_point);
|
||||
}
|
||||
|
||||
return $output;
|
||||
|
|
@ -1500,13 +1568,12 @@ class commentController extends comment
|
|||
return new BaseObject(-1, 'failed_declared');
|
||||
}
|
||||
|
||||
// Get currently logged in user.
|
||||
$member_srl = intval($this->user->member_srl);
|
||||
|
||||
// if the comment author is a member
|
||||
if($oComment->get('member_srl'))
|
||||
{
|
||||
// create the member model object
|
||||
$oMemberModel = getModel('member');
|
||||
$member_srl = $oMemberModel->getLoggedMemberSrl();
|
||||
|
||||
// session registered if the author information matches to the current logged-in user's.
|
||||
if($member_srl && $member_srl == abs($oComment->get('member_srl')))
|
||||
{
|
||||
|
|
@ -1515,29 +1582,31 @@ class commentController extends comment
|
|||
}
|
||||
}
|
||||
|
||||
// If logged-in, use the member_srl. otherwise use the ipaddress.
|
||||
// Pass after registering a sesson if reported/declared documents are in the logs.
|
||||
$args = new stdClass;
|
||||
$args->comment_srl = $comment_srl;
|
||||
if($member_srl)
|
||||
{
|
||||
$args->member_srl = $member_srl;
|
||||
}
|
||||
else
|
||||
{
|
||||
$args->ipaddress = $_SERVER['REMOTE_ADDR'];
|
||||
$args->ipaddress = \RX_CLIENT_IP;
|
||||
}
|
||||
|
||||
$args->comment_srl = $comment_srl;
|
||||
$args->declare_message = $declare_message;
|
||||
$log_output = executeQuery('comment.getCommentDeclaredLogInfo', $args);
|
||||
|
||||
// session registered if log info contains report log.
|
||||
if($log_output->data->count)
|
||||
{
|
||||
$_SESSION['declared_comment'][$comment_srl] = TRUE;
|
||||
return new BaseObject(-1, 'failed_declared');
|
||||
}
|
||||
|
||||
|
||||
// Fill in remaining information for logging.
|
||||
$args->member_srl = $member_srl;
|
||||
$args->ipaddress = \RX_CLIENT_IP;
|
||||
$args->declare_message = $declare_message;
|
||||
|
||||
// begin transaction
|
||||
$oDB = &DB::getInstance();
|
||||
$oDB = DB::getInstance();
|
||||
$oDB->begin();
|
||||
|
||||
// execute insert
|
||||
|
|
@ -1655,13 +1724,13 @@ class commentController extends comment
|
|||
$module_info = $oModuleModel->getModuleInfoByModuleSrl($srl);
|
||||
if (!$module_info->module_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
$module_grant = $oModuleModel->getGrant($module_info, $logged_info);
|
||||
if (!$module_grant->manager)
|
||||
{
|
||||
return $this->setError('msg_not_permitted');
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
|
||||
$module_srl[] = $srl;
|
||||
|
|
@ -1729,7 +1798,7 @@ class commentController extends comment
|
|||
{
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
return $this->setError('msg_not_permitted');
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
|
||||
$commentSrls = Context::get('comment_srls');
|
||||
|
|
|
|||
|
|
@ -287,12 +287,12 @@ class commentItem extends BaseObject
|
|||
return;
|
||||
}
|
||||
|
||||
if(strncasecmp('http://', $url, 7) !== 0)
|
||||
if(!preg_match('@^[a-z]+://@i', $url))
|
||||
{
|
||||
$url = "http://" . $url;
|
||||
$url = 'http://' . $url;
|
||||
}
|
||||
|
||||
return htmlspecialchars($url, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
|
||||
return escape($url, false);
|
||||
}
|
||||
|
||||
function getMemberSrl()
|
||||
|
|
@ -302,17 +302,17 @@ class commentItem extends BaseObject
|
|||
|
||||
function getUserID()
|
||||
{
|
||||
return htmlspecialchars($this->get('user_id'), ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
|
||||
return escape($this->get('user_id'), false);
|
||||
}
|
||||
|
||||
function getUserName()
|
||||
{
|
||||
return htmlspecialchars($this->get('user_name'), ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
|
||||
return escape($this->get('user_name'), false);
|
||||
}
|
||||
|
||||
function getNickName()
|
||||
{
|
||||
return htmlspecialchars($this->get('nick_name'), ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
|
||||
return escape($this->get('nick_name'), false);
|
||||
}
|
||||
|
||||
function getVote()
|
||||
|
|
@ -388,7 +388,7 @@ class commentItem extends BaseObject
|
|||
{
|
||||
$content = $this->get('content');
|
||||
}
|
||||
|
||||
|
||||
if($strlen)
|
||||
{
|
||||
$content = trim(utf8_normalize_spaces(html_entity_decode(strip_tags($content))));
|
||||
|
|
|
|||
|
|
@ -977,7 +977,7 @@ class commentModel extends comment
|
|||
$comment_srl = Context::get('comment_srl');
|
||||
if(!$comment_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
$point = Context::get('point');
|
||||
|
|
@ -991,7 +991,7 @@ class commentModel extends comment
|
|||
$module_srl = $oComment->get('module_srl');
|
||||
if(!$module_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
$oModuleModel = getModel('module');
|
||||
|
|
@ -1003,7 +1003,7 @@ class commentModel extends comment
|
|||
{
|
||||
if($comment_config->use_vote_down != 'S')
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\FeatureDisabled;
|
||||
}
|
||||
|
||||
$args->below_point = 0;
|
||||
|
|
@ -1012,7 +1012,7 @@ class commentModel extends comment
|
|||
{
|
||||
if($comment_config->use_vote_up != 'S')
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\FeatureDisabled;
|
||||
}
|
||||
|
||||
$args->more_point = 0;
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ class commentView extends comment
|
|||
// A message appears if the user is not logged-in
|
||||
if(!$oMemberModel->isLogged())
|
||||
{
|
||||
return $this->stop('msg_not_logged');
|
||||
throw new Rhymix\Framework\Exceptions\MustLogin;
|
||||
}
|
||||
|
||||
// Create the comment object.
|
||||
|
|
@ -82,12 +82,12 @@ class commentView extends comment
|
|||
$oComment = $oCommentModel->getComment($comment_srl);
|
||||
if(!$oComment->isExists())
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\TargetNotFound;
|
||||
}
|
||||
// Check permissions
|
||||
if(!$oComment->isAccessible())
|
||||
{
|
||||
return $this->setError('msg_not_permitted');
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
|
||||
// Browser title settings
|
||||
|
|
|
|||
|
|
@ -7,8 +7,6 @@ $lang->trash = '휴지통';
|
|||
$lang->cmd_trash = '휴지통으로 이동';
|
||||
$lang->comment_count = '댓글 수';
|
||||
$lang->about_comment_count = '댓글을 정해진 수 만큼만 표시하고, 그 이상일 경우 페이지 번호를 표시해서 이동할 수 있게 합니다.';
|
||||
$lang->msg_comment_voted_cancel_not = '추천수가 0이하일 경우 추천캔슬을 사용할 수 없습니다.';
|
||||
$lang->msg_comment_blamed_cancel_not = '추천수가 0이하일 경우 비추천캔슬을 사용할 수 없습니다.';
|
||||
$lang->msg_cart_is_null = '삭제할 글을 선택해주세요.';
|
||||
$lang->msg_checked_comment_is_deleted = '%d개의 댓글을 삭제했습니다.';
|
||||
$lang->search_target_list['content'] = '내용';
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="comment_srl" var="comment_srl" filter="number" notnull="notnull" />
|
||||
<condition operation="equal" column="point" var="point" filter="number" />
|
||||
<group pipe="and">
|
||||
<condition operation="equal" column="member_srl" var="member_srl" filter="number" pipe="and" />
|
||||
<condition operation="equal" column="ipaddress" var="ipaddress" pipe="and" />
|
||||
|
|
|
|||
|
|
@ -12,8 +12,8 @@
|
|||
<condition operation="equal" column="is_secret" var="s_is_secret" pipe="and" />
|
||||
<group pipe="and">
|
||||
<condition operation="like" column="content" var="s_content" pipe="or" />
|
||||
<condition operation="equal" column="user_name" var="s_user_name" pipe="or" />
|
||||
<condition operation="equal" column="nick_name" var="s_nick_name" pipe="or" />
|
||||
<condition operation="like_prefix" column="user_name" var="s_user_name" pipe="or" />
|
||||
<condition operation="like_prefix" column="nick_name" var="s_nick_name" pipe="or" />
|
||||
<condition operation="like" column="email_address" var="s_email_address" pipe="or" />
|
||||
<condition operation="like" column="homepage" var="s_homepage" pipe="or" />
|
||||
<condition operation="equal" column="member_srl" var="s_member_srl" pipe="or" />
|
||||
|
|
|
|||
|
|
@ -13,8 +13,8 @@
|
|||
<condition operation="equal" column="comments.is_secret" var="s_is_secret" pipe="and" />
|
||||
<group pipe="and">
|
||||
<condition operation="like" column="comments.content" var="s_content" />
|
||||
<condition operation="equal" column="comments.user_name" var="s_user_name" pipe="or" />
|
||||
<condition operation="equal" column="comments.nick_name" var="s_nick_name" pipe="or" />
|
||||
<condition operation="like_prefix" column="comments.user_name" var="s_user_name" pipe="or" />
|
||||
<condition operation="like_prefix" column="comments.nick_name" var="s_nick_name" pipe="or" />
|
||||
<condition operation="like" column="comments.email_address" var="s_email_address" pipe="or" />
|
||||
<condition operation="like" column="comments.homepage" var="s_homepage" pipe="or" />
|
||||
<condition operation="like_prefix" column="comments.regdate" var="s_regdate" pipe="or" />
|
||||
|
|
|
|||
|
|
@ -13,8 +13,8 @@
|
|||
<condition operation="in" column="status" var="statusList" pipe="and" />
|
||||
<group pipe="and">
|
||||
<condition operation="like" column="content" var="s_content" pipe="or" />
|
||||
<condition operation="equal" column="user_name" var="s_user_name" pipe="or" />
|
||||
<condition operation="equal" column="nick_name" var="s_nick_name" pipe="or" />
|
||||
<condition operation="like_prefix" column="user_name" var="s_user_name" pipe="or" />
|
||||
<condition operation="like_prefix" column="nick_name" var="s_nick_name" pipe="or" />
|
||||
<condition operation="like" column="email_address" var="s_email_address" pipe="or" />
|
||||
<condition operation="like" column="homepage" var="s_homepage" pipe="or" />
|
||||
<condition operation="equal" column="member_srl" var="s_member_srl" pipe="or" />
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@
|
|||
<condition operation="in" column="comments.status" var="statusList" pipe="and" />
|
||||
<group pipe="and">
|
||||
<condition operation="like" column="comments.content" var="s_content" />
|
||||
<condition operation="equal" column="comments.user_name" var="s_user_name" pipe="or" />
|
||||
<condition operation="equal" column="comments.nick_name" var="s_nick_name" pipe="or" />
|
||||
<condition operation="like_prefix" column="comments.user_name" var="s_user_name" pipe="or" />
|
||||
<condition operation="like_prefix" column="comments.nick_name" var="s_nick_name" pipe="or" />
|
||||
<condition operation="like" column="comments.email_address" var="s_email_address" pipe="or" />
|
||||
<condition operation="like" column="comments.homepage" var="s_homepage" pipe="or" />
|
||||
<condition operation="like_prefix" column="comments.regdate" var="s_regdate" pipe="or" />
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
|
|||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
</div>
|
||||
<form id="fo_list" action="./" method="post">
|
||||
<table id="commentListTable" class="x_table x_table-striped x_table-hover">
|
||||
<table id="commentListTable" class="x_table x_table-striped x_table-hover dsTg">
|
||||
<caption>
|
||||
<a href="{getUrl('','module','admin','act','dispCommentAdminList','Y')}" class="active"|cond="$search_keyword == ''">{$lang->all}<block cond="$search_keyword == ''">({number_format($total_count)})</block></a>
|
||||
<i>|</i>
|
||||
|
|
@ -22,7 +22,7 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
|
|||
<a href="{getUrl('', 'module', 'admin', 'act','dispCommentAdminDeclared')}">{$lang->cmd_declared_list}</a>
|
||||
<i cond="$search_target == 'ipaddress'">|</i>
|
||||
<a href="{getUrl('search_target', 'ipaddress')}" class="active" cond="$search_target == 'ipaddress'">{$lang->ipaddress}:{$search_keyword}({number_format($total_count)})</a>
|
||||
|
||||
|
||||
<div class="x_btn-group x_pull-right">
|
||||
<a href="#listManager" class="x_btn modalAnchor" data-value="true" data-name="is_trash">{$lang->trash}</a>
|
||||
<a href="#listManager" class="x_btn modalAnchor" data-value="false" data-name="is_trash">{$lang->delete}</a>
|
||||
|
|
@ -31,16 +31,20 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
|
|||
<a href="#listManager" class="x_btn modalAnchor" data-value="0" data-name="will_publish" cond="$search_target!='is_published'">{$lang->cmd_unpublish}</a>
|
||||
<a href="#listManager" class="x_btn modalAnchor" data-value="1" data-name="will_publish" cond="$search_target!='is_published'">{$lang->cmd_publish}</a>
|
||||
</div>
|
||||
<div class="x_pull-right x_btn-group margin_after">
|
||||
<button type="button" class="x_btn x_active __simple">{$lang->simple_view}</button>
|
||||
<button type="button" class="x_btn __detail">{$lang->detail_view}</button>
|
||||
</div>
|
||||
</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">{$lang->comment}</th>
|
||||
<th scope="col" class="nowr">{$lang->writer}</th>
|
||||
<th scope="col" class="nowr">{$lang->cmd_vote}(+/-)</th>
|
||||
<th scope="col" class="nowr rx_detail_marks">{$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" class="nowr">{$lang->published}</th>
|
||||
<th scope="col" class="nowr rx_detail_marks">{$lang->ipaddress}</th>
|
||||
<th scope="col" class="nowr rx_detail_marks">{$lang->status}</th>
|
||||
<th scope="col" class="nowr rx_detail_marks">{$lang->published}</th>
|
||||
<th scope="col"><input type="checkbox" data-name="cart" title="Check All" /></th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
|
@ -58,11 +62,14 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
|
|||
<a href="#popup_menu_area" class="member_{abs($val->get('member_srl'))}" cond="$val->get('member_srl') < 0">({$member_nick_name[abs($val->get('member_srl'))]})</a>
|
||||
<a href="#popup_menu_area" class="member_{$val->get('member_srl')}" cond="$val->get('member_srl') > 0">{$val->getNickName()}</a>
|
||||
</td>
|
||||
<td class="nowr">{number_format($val->get('voted_count'))}/{number_format($val->get('blamed_count'))}</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 class="nowr rx_detail_marks">{number_format($val->get('voted_count'))}/{number_format($val->get('blamed_count'))}</td>
|
||||
<td class="nowr">
|
||||
<span class="rx_detail_marks">{$val->getRegdate('Y-m-d H:i:s')}</span>
|
||||
<span class="rx_simple_marks">{$val->getRegdate($val->getRegdateTime() > time() - 86400 ? 'H:i' : 'm-d')}</span>
|
||||
</td>
|
||||
<td class="nowr rx_detail_marks"><a href="{getUrl('search_target','ipaddress','search_keyword',$val->ipaddress)}">{$val->ipaddress}</a></td>
|
||||
<td class="nowr rx_detail_marks"><!--@if($val->isSecret())-->{$secret_name_list['Y']}<!--@else-->{$secret_name_list['N']}<!--@end--></td>
|
||||
<td class="nowr rx_detail_marks"><!--@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>
|
||||
<tr cond="!$comment_list">
|
||||
|
|
|
|||
|
|
@ -45,8 +45,8 @@
|
|||
<div class="x_control-group">
|
||||
<label class="x_control-label">{lang('document.cmd_declared_message')}</label>
|
||||
<div class="x_controls">
|
||||
<label class="x_inline" for="declared_message_admin"><input type="checkbox" name="declared_message[]" id="declared_message_admin" value="admin" checked="checked"|cond="in_array('admin', $comment_config->declared_message)" /> {$lang->cmd_declared_message_admin}</label>
|
||||
<label class="x_inline" for="declared_message_manager"><input type="checkbox" name="declared_message[]" id="declared_message_manager" value="manager" checked="checked"|cond="in_array('manager', $comment_config->declared_message)" /> {$lang->cmd_declared_message_manager}</label>
|
||||
<label class="x_inline" for="declared_message_admin"><input type="checkbox" name="declared_message[]" id="declared_message_admin" value="admin" checked="checked"|cond="$comment_config->declared_message && in_array('admin', $comment_config->declared_message)" /> {$lang->cmd_declared_message_admin}</label>
|
||||
<label class="x_inline" for="declared_message_manager"><input type="checkbox" name="declared_message[]" id="declared_message_manager" value="manager" checked="checked"|cond="$comment_config->declared_message && in_array('manager', $comment_config->declared_message)" /> {$lang->cmd_declared_message_manager}</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="x_clearfix btnArea">
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<load target="js/comment_admin.js" usecdn="true" />
|
||||
<div class="x_page-header">
|
||||
<h1>{$lang->comment} {$lang->cmd_management} <a class="x_icon-question-sign" href="./common/manual/admin/index.html#UMAN_content_comment" target="_blank">{$lang->help}</a></h1>
|
||||
<h1>{$lang->comment} {$lang->cmd_management}</h1>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ class communicationController extends communication
|
|||
{
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
return $this->setError('msg_not_logged');
|
||||
throw new Rhymix\Framework\Exceptions\MustLogin;
|
||||
}
|
||||
|
||||
$args = new stdClass();
|
||||
|
|
@ -54,7 +54,7 @@ class communicationController extends communication
|
|||
// Check login information
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
return $this->setError('msg_not_logged');
|
||||
throw new Rhymix\Framework\Exceptions\MustLogin;
|
||||
}
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
|
@ -63,25 +63,19 @@ class communicationController extends communication
|
|||
$receiver_srl = Context::get('receiver_srl');
|
||||
if(!$receiver_srl)
|
||||
{
|
||||
return $this->setError('msg_not_exists_member');
|
||||
throw new Rhymix\Framework\Exception('msg_not_exists_member');
|
||||
}
|
||||
|
||||
$title = trim(Context::get('title'));
|
||||
$title = trim(escape(Context::get('title')));
|
||||
if(!$title)
|
||||
{
|
||||
return $this->setError('msg_title_is_null');
|
||||
throw new Rhymix\Framework\Exception('msg_title_is_null');
|
||||
}
|
||||
|
||||
$content = trim(Context::get('content'));
|
||||
if(!$content)
|
||||
{
|
||||
return $this->setError('msg_content_is_null');
|
||||
}
|
||||
|
||||
$send_mail = Context::get('send_mail');
|
||||
if($send_mail != 'Y')
|
||||
{
|
||||
$send_mail = 'N';
|
||||
throw new Rhymix\Framework\Exception('msg_content_is_null');
|
||||
}
|
||||
|
||||
// Check if there is a member to receive a message
|
||||
|
|
@ -91,13 +85,13 @@ class communicationController extends communication
|
|||
|
||||
if(!$oCommunicationModel->checkGrant($config->grant_send))
|
||||
{
|
||||
return $this->setError('msg_not_permitted');
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
|
||||
$receiver_member_info = $oMemberModel->getMemberInfoByMemberSrl($receiver_srl);
|
||||
if($receiver_member_info->member_srl != $receiver_srl)
|
||||
{
|
||||
return $this->setError('msg_not_exists_member');
|
||||
throw new Rhymix\Framework\Exception('msg_not_exists_member');
|
||||
}
|
||||
|
||||
// check whether to allow to receive the message(pass if a top-administrator)
|
||||
|
|
@ -107,12 +101,12 @@ class communicationController extends communication
|
|||
{
|
||||
if(!$oCommunicationModel->isFriend($receiver_member_info->member_srl))
|
||||
{
|
||||
return $this->setError('msg_allow_message_to_friend');
|
||||
throw new Rhymix\Framework\Exception('msg_allow_message_to_friend');
|
||||
}
|
||||
}
|
||||
else if($receiver_member_info->allow_message == 'N')
|
||||
{
|
||||
return $this->setError('msg_disallow_message');
|
||||
throw new Rhymix\Framework\Exception('msg_disallow_message');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -124,21 +118,6 @@ class communicationController extends communication
|
|||
return $output;
|
||||
}
|
||||
|
||||
// send an e-mail
|
||||
if($send_mail == 'Y')
|
||||
{
|
||||
$view_url = Context::getRequestUri();
|
||||
$content = sprintf("%s<br /><br />From : <a href=\"%s\" target=\"_blank\">%s</a>", $content, $view_url, $view_url);
|
||||
|
||||
$oMail = new \Rhymix\Framework\Mail();
|
||||
$oMail->setSubject($title);
|
||||
$oMail->setBody(utf8_mbencode(removeHackTag($content)));
|
||||
$oMail->setFrom(config('mail.default_from') ?: $logged_info->email_address, $logged_info->nick_name);
|
||||
$oMail->setReplyTo($logged_info->email_address);
|
||||
$oMail->addTo($receiver_member_info->email_address, $receiver_member_info->nick_name);
|
||||
$oMail->send();
|
||||
}
|
||||
|
||||
if(!in_array(Context::getRequestMethod(), array('XMLRPC', 'JSON')))
|
||||
{
|
||||
if(Context::get('is_popup') != 'Y')
|
||||
|
|
@ -174,7 +153,7 @@ class communicationController extends communication
|
|||
function sendMessage($sender_srl, $receiver_srl, $title, $content, $sender_log = TRUE)
|
||||
{
|
||||
// Encode the title and content.
|
||||
$title = htmlspecialchars($title, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
|
||||
$title = escape($title, false);
|
||||
$content = removeHackTag($content);
|
||||
$title = utf8_mbencode($title);
|
||||
$content = utf8_mbencode($content);
|
||||
|
|
@ -269,7 +248,7 @@ class communicationController extends communication
|
|||
// Check login information
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
return $this->setError('msg_not_logged');
|
||||
throw new Rhymix\Framework\Exceptions\MustLogin;
|
||||
}
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
|
|
@ -277,7 +256,7 @@ class communicationController extends communication
|
|||
$message_srl = Context::get('message_srl');
|
||||
if(!$message_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
// get the message
|
||||
|
|
@ -285,7 +264,7 @@ class communicationController extends communication
|
|||
$message = $oCommunicationModel->getSelectedMessage($message_srl);
|
||||
if(!$message || $message->message_type != 'R')
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
$args = new stdClass();
|
||||
|
|
@ -309,7 +288,7 @@ class communicationController extends communication
|
|||
// Check login information
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
return $this->setError('msg_not_logged');
|
||||
throw new Rhymix\Framework\Exceptions\MustLogin;
|
||||
}
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
|
@ -319,7 +298,7 @@ class communicationController extends communication
|
|||
$message_srl = Context::get('message_srl');
|
||||
if(!$message_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
// Get the message
|
||||
|
|
@ -327,7 +306,7 @@ class communicationController extends communication
|
|||
$message = $oCommunicationModel->getSelectedMessage($message_srl);
|
||||
if(!$message)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
// Check the grant
|
||||
|
|
@ -336,14 +315,14 @@ class communicationController extends communication
|
|||
case 'S':
|
||||
if($message->sender_srl != $member_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'R':
|
||||
if($message->receiver_srl != $member_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
@ -369,7 +348,7 @@ class communicationController extends communication
|
|||
// Check login information
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
return $this->setError('msg_not_logged');
|
||||
throw new Rhymix\Framework\Exceptions\MustLogin;
|
||||
}
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
|
@ -378,7 +357,7 @@ class communicationController extends communication
|
|||
// check variables
|
||||
if(!Context::get('message_srl_list'))
|
||||
{
|
||||
return $this->setError('msg_cart_is_null');
|
||||
throw new Rhymix\Framework\Exception('msg_cart_is_null');
|
||||
}
|
||||
|
||||
$message_srl_list = Context::get('message_srl_list');
|
||||
|
|
@ -389,13 +368,13 @@ class communicationController extends communication
|
|||
|
||||
if(!count($message_srl_list))
|
||||
{
|
||||
return $this->setError('msg_cart_is_null');
|
||||
throw new Rhymix\Framework\Exception('msg_cart_is_null');
|
||||
}
|
||||
|
||||
$message_type = Context::get('message_type');
|
||||
if(!$message_type || !in_array($message_type, array('R', 'S', 'T', 'N')))
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
$message_count = count($message_srl_list);
|
||||
|
|
@ -412,7 +391,7 @@ class communicationController extends communication
|
|||
}
|
||||
if(!count($target))
|
||||
{
|
||||
return $this->setError('msg_cart_is_null');
|
||||
throw new Rhymix\Framework\Exception('msg_cart_is_null');
|
||||
}
|
||||
|
||||
// Delete
|
||||
|
|
@ -458,7 +437,7 @@ class communicationController extends communication
|
|||
// Check login information
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
return $this->setError('msg_not_logged');
|
||||
throw new Rhymix\Framework\Exceptions\MustLogin;
|
||||
}
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
|
@ -466,11 +445,11 @@ class communicationController extends communication
|
|||
$target_srl = (int) trim(Context::get('target_srl'));
|
||||
if(!$target_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
if($target_srl == $logged_info->member_srl)
|
||||
{
|
||||
return $this->setError('msg_no_self_friend');
|
||||
throw new Rhymix\Framework\Exception('msg_no_self_friend');
|
||||
}
|
||||
|
||||
// Check duplicate friend
|
||||
|
|
@ -480,7 +459,7 @@ class communicationController extends communication
|
|||
$output = executeQuery('communication.isAddedFriend', $args);
|
||||
if($output->data->count)
|
||||
{
|
||||
return $this->setError('msg_already_friend');
|
||||
throw new Rhymix\Framework\Exception('msg_already_friend');
|
||||
}
|
||||
|
||||
// Variable
|
||||
|
|
@ -520,7 +499,7 @@ class communicationController extends communication
|
|||
// Check login information
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
return $this->setError('msg_not_logged');
|
||||
throw new Rhymix\Framework\Exceptions\MustLogin;
|
||||
}
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
|
@ -529,7 +508,7 @@ class communicationController extends communication
|
|||
$friend_srl_list = Context::get('friend_srl_list');
|
||||
if(!$friend_srl_list)
|
||||
{
|
||||
return $this->setError('msg_cart_is_null');
|
||||
throw new Rhymix\Framework\Exception('msg_cart_is_null');
|
||||
}
|
||||
|
||||
if(!is_array($friend_srl_list))
|
||||
|
|
@ -539,7 +518,7 @@ class communicationController extends communication
|
|||
|
||||
if(!count($friend_srl_list))
|
||||
{
|
||||
return $this->setError('msg_cart_is_null');
|
||||
throw new Rhymix\Framework\Exception('msg_cart_is_null');
|
||||
}
|
||||
|
||||
$friend_count = count($friend_srl_list);
|
||||
|
|
@ -557,7 +536,7 @@ class communicationController extends communication
|
|||
|
||||
if(!count($target))
|
||||
{
|
||||
return $this->setError('msg_cart_is_null');
|
||||
throw new Rhymix\Framework\Exception('msg_cart_is_null');
|
||||
}
|
||||
|
||||
// Variables
|
||||
|
|
@ -587,7 +566,7 @@ class communicationController extends communication
|
|||
// Check login information
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
return $this->setError('msg_not_logged');
|
||||
throw new Rhymix\Framework\Exceptions\MustLogin;
|
||||
}
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
|
@ -603,7 +582,7 @@ class communicationController extends communication
|
|||
|
||||
if(!count($friend_srl_list))
|
||||
{
|
||||
return $this->setError('msg_cart_is_null');
|
||||
throw new Rhymix\Framework\Exception('msg_cart_is_null');
|
||||
}
|
||||
|
||||
$friend_count = count($friend_srl_list);
|
||||
|
|
@ -622,7 +601,7 @@ class communicationController extends communication
|
|||
|
||||
if(!count($target))
|
||||
{
|
||||
return $this->setError('msg_cart_is_null');
|
||||
throw new Rhymix\Framework\Exception('msg_cart_is_null');
|
||||
}
|
||||
|
||||
// Delete
|
||||
|
|
@ -650,7 +629,7 @@ class communicationController extends communication
|
|||
// Check login information
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
return $this->setError('msg_not_logged');
|
||||
throw new Rhymix\Framework\Exceptions\MustLogin;
|
||||
}
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
|
@ -659,12 +638,11 @@ class communicationController extends communication
|
|||
$args = new stdClass();
|
||||
$args->friend_group_srl = trim(Context::get('friend_group_srl'));
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->title = Context::get('title');
|
||||
$args->title = htmlspecialchars($args->title, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
|
||||
$args->title = escape(Context::get('title'));
|
||||
|
||||
if(!$args->title)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
// modify if friend_group_srl exists.
|
||||
|
|
@ -726,7 +704,7 @@ class communicationController extends communication
|
|||
// Check login information
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
return $this->setError('msg_not_logged');
|
||||
throw new Rhymix\Framework\Exceptions\MustLogin;
|
||||
}
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
|
@ -735,12 +713,11 @@ class communicationController extends communication
|
|||
$args = new stdClass();
|
||||
$args->friend_group_srl = Context::get('friend_group_srl');
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->title = Context::get('title');
|
||||
$args->title = htmlspecialchars($args->title, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
|
||||
$args->title = escape(Context::get('title'));
|
||||
|
||||
if(!$args->title)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
$output = executeQuery('communication.renameFriendGroup', $args);
|
||||
|
|
@ -761,7 +738,7 @@ class communicationController extends communication
|
|||
// Check login information
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
return $this->setError('msg_not_logged');
|
||||
throw new Rhymix\Framework\Exceptions\MustLogin;
|
||||
}
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
|
|
|||
|
|
@ -163,7 +163,7 @@ class communicationModel extends communication
|
|||
$member_info = $oMemberModel->getMemberInfoByMemberSrl($message->sender_srl);
|
||||
}
|
||||
|
||||
if($member_info)
|
||||
if($member_info->member_srl)
|
||||
{
|
||||
foreach($member_info as $key => $val)
|
||||
{
|
||||
|
|
@ -176,6 +176,13 @@ class communicationModel extends communication
|
|||
$message->{$key} = $val;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$message->member_srl = ($message->sender_srl == $logged_info->member_srl) ? $message->receiver_srl : $message->sender_srl;
|
||||
$message->user_id = '';
|
||||
$message->nick_name = lang('communication.cmd_message_from_non_member');
|
||||
$message->user_name = $message->nick_name;
|
||||
}
|
||||
|
||||
// change the status if is a received and not yet read message
|
||||
if($message->message_type == 'R' && $message->readed != 'Y')
|
||||
|
|
@ -210,6 +217,14 @@ class communicationModel extends communication
|
|||
|
||||
$oCommunicationController = getController('communication');
|
||||
$oCommunicationController->setMessageReaded($message->message_srl);
|
||||
|
||||
if (!$message->member_srl)
|
||||
{
|
||||
$message->member_srl = $message->sender_srl;
|
||||
$message->user_id = '';
|
||||
$message->nick_name = lang('communication.cmd_message_from_non_member');
|
||||
$message->user_name = $message->nick_name;
|
||||
}
|
||||
|
||||
return $message;
|
||||
}
|
||||
|
|
@ -274,7 +289,22 @@ class communicationModel extends communication
|
|||
$args->list_count = 20;
|
||||
$args->page_count = 10;
|
||||
|
||||
return executeQueryArray($query_id, $args, $columnList);
|
||||
// Get messages from DB
|
||||
$output = executeQueryArray($query_id, $args, $columnList);
|
||||
|
||||
// Add placeholder for non-members
|
||||
foreach ($output->data as $message)
|
||||
{
|
||||
if (!$message->member_srl)
|
||||
{
|
||||
$message->member_srl = ($message->sender_srl == $logged_info->member_srl) ? $message->receiver_srl : $message->sender_srl;
|
||||
$message->user_id = '';
|
||||
$message->nick_name = lang('communication.cmd_message_from_non_member');
|
||||
$message->user_name = $message->nick_name;
|
||||
}
|
||||
}
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -52,13 +52,13 @@ class communicationView extends communication
|
|||
{
|
||||
if($this->config->enable_message == 'N')
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
// Error appears if not logged-in
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
return $this->setError('msg_not_logged');
|
||||
throw new Rhymix\Framework\Exceptions\MustLogin;
|
||||
}
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
|
@ -86,28 +86,28 @@ class communicationView extends communication
|
|||
case 'R':
|
||||
if($message->receiver_srl != $logged_info->member_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'S':
|
||||
if($message->sender_srl != $logged_info->member_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'T':
|
||||
if($message->receiver_srl != $logged_info->member_srl && $message->sender_srl != $logged_info->member_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'N':
|
||||
if($message->receiver_srl != $logged_info->member_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
@ -151,13 +151,13 @@ class communicationView extends communication
|
|||
|
||||
if($this->config->enable_message == 'N')
|
||||
{
|
||||
return $this->stop('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
// Error appears if not logged-in
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
return $this->stop('msg_not_logged');
|
||||
throw new Rhymix\Framework\Exceptions\MustLogin;
|
||||
}
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
|
@ -190,17 +190,17 @@ class communicationView extends communication
|
|||
|
||||
if($this->config->enable_message == 'N')
|
||||
{
|
||||
return $this->stop('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
if(!getModel('communication')->checkGrant($this->config->grant_send))
|
||||
{
|
||||
return $this->stop('msg_not_permitted');
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
|
||||
// Error appears if not logged-in
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
return $this->stop('msg_not_logged');
|
||||
throw new Rhymix\Framework\Exceptions\MustLogin;
|
||||
}
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
|
@ -210,13 +210,13 @@ class communicationView extends communication
|
|||
$receiver_srl = Context::get('receiver_srl');
|
||||
if(!$receiver_srl)
|
||||
{
|
||||
return $this->stop('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
// check receiver and sender are same
|
||||
if($logged_info->member_srl == $receiver_srl)
|
||||
{
|
||||
return $this->stop('msg_cannot_send_to_yourself');
|
||||
throw new Rhymix\Framework\Exception('msg_cannot_send_to_yourself');
|
||||
}
|
||||
|
||||
$oCommunicationModel = getModel('communication');
|
||||
|
|
@ -241,7 +241,7 @@ class communicationView extends communication
|
|||
$receiver_info = $oMemberModel->getMemberInfoByMemberSrl($receiver_srl);
|
||||
if(!$receiver_info)
|
||||
{
|
||||
return $this->stop('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
Context::set('receiver_info', $receiver_info);
|
||||
|
|
@ -275,13 +275,13 @@ class communicationView extends communication
|
|||
{
|
||||
if($this->config->enable_friend == 'N')
|
||||
{
|
||||
return $this->stop('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
// Error appears if not logged-in
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
return $this->stop('msg_not_logged');
|
||||
throw new Rhymix\Framework\Exceptions\MustLogin;
|
||||
}
|
||||
|
||||
$oCommunicationModel = getModel('communication');
|
||||
|
|
@ -339,13 +339,13 @@ class communicationView extends communication
|
|||
|
||||
if($this->config->enable_friend == 'N')
|
||||
{
|
||||
return $this->stop('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
// error appears if not logged-in
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
return $this->stop('msg_not_logged');
|
||||
throw new Rhymix\Framework\Exceptions\MustLogin;
|
||||
}
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
|
@ -353,11 +353,11 @@ class communicationView extends communication
|
|||
|
||||
if(!$target_srl)
|
||||
{
|
||||
return $this->stop('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
if($target_srl == $logged_info->member_srl)
|
||||
{
|
||||
return $this->stop('msg_no_self_friend');
|
||||
throw new Rhymix\Framework\Exception('msg_no_self_friend');
|
||||
}
|
||||
|
||||
// get information of the member
|
||||
|
|
@ -367,7 +367,7 @@ class communicationView extends communication
|
|||
|
||||
if($communication_info->member_srl != $target_srl)
|
||||
{
|
||||
return $this->stop('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
Context::set('target_info', $communication_info);
|
||||
|
|
@ -390,13 +390,13 @@ class communicationView extends communication
|
|||
|
||||
if($this->config->enable_friend == 'N')
|
||||
{
|
||||
return $this->stop('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
// error apprears if not logged-in
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
return $this->stop('msg_not_logged');
|
||||
throw new Rhymix\Framework\Exceptions\MustLogin;
|
||||
}
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
|
|
|||
|
|
@ -2,13 +2,13 @@
|
|||
<module>
|
||||
<grants />
|
||||
<actions>
|
||||
<action name="dispCommunicationMessages" type="view" permission="member" />
|
||||
<action name="dispCommunicationSendMessage" type="view" permission="member" />
|
||||
<action name="dispCommunicationNewMessage" type="view" permission="member" />
|
||||
<action name="dispCommunicationFriend" type="view" permission="member" />
|
||||
<action name="dispCommunicationAddFriend" type="view" permission="member" />
|
||||
<action name="dispCommunicationAddFriendGroup" type="view" permission="member" />
|
||||
<action name="dispCommunicationMessageBoxList" type="mobile" permission="member" />
|
||||
<action name="dispCommunicationMessages" type="view" permission="member" meta-noindex="true" />
|
||||
<action name="dispCommunicationSendMessage" type="view" permission="member" meta-noindex="true" />
|
||||
<action name="dispCommunicationNewMessage" type="view" permission="member" meta-noindex="true" />
|
||||
<action name="dispCommunicationFriend" type="view" permission="member" meta-noindex="true" />
|
||||
<action name="dispCommunicationAddFriend" type="view" permission="member" meta-noindex="true" />
|
||||
<action name="dispCommunicationAddFriendGroup" type="view" permission="member" meta-noindex="true" />
|
||||
<action name="dispCommunicationMessageBoxList" type="mobile" permission="member" meta-noindex="true" />
|
||||
|
||||
<action name="procCommunicationUpdateAllowMessage" type="controller" permission="member" />
|
||||
<action name="procCommunicationSendMessage" type="controller" permission="member" ruleset="sendMessage" />
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ $lang->sender = 'From';
|
|||
$lang->receiver = 'To';
|
||||
$lang->friend_group = 'Friend Group';
|
||||
$lang->default_friend_group = 'Unassigned Group';
|
||||
$lang->cmd_message_from_non_member = 'Not a Member';
|
||||
$lang->cmd_send_message = 'Send Message';
|
||||
$lang->cmd_reply_message = 'Reply Message';
|
||||
$lang->cmd_view_friend = 'Friends';
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ $lang->sender = '보낸이';
|
|||
$lang->receiver = '받는이';
|
||||
$lang->friend_group = '친구 그룹';
|
||||
$lang->default_friend_group = '그룹 미지정';
|
||||
$lang->cmd_message_from_non_member = '탈퇴한 회원';
|
||||
$lang->cmd_send_message = '쪽지 보내기';
|
||||
$lang->cmd_reply_message = '답장 보내기';
|
||||
$lang->cmd_view_friend = '친구 보기';
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
<h2>{$message->title}</h2><span class="ex">{$message->nick_name} | {zdate($message->regdate, "Y.m.d H:i")}</span>
|
||||
</div>
|
||||
<div class="co">
|
||||
<div class="xe_content">{$message->content}</div>
|
||||
<div class="xe_content">{$message->content|noescape}</div>
|
||||
</div>
|
||||
<div class="bna">
|
||||
<span class="fl"><a href="{getUrl('message_srl', '')}" class="bn white">{$lang->cmd_list}</a></span>
|
||||
|
|
|
|||
|
|
@ -35,15 +35,12 @@
|
|||
<input type="text" name="title" id="message_title" value="{$source_message->title}"/>
|
||||
</li>
|
||||
<li class="xe_content">
|
||||
{$source_message->content}
|
||||
{$source_message->content|noescape}
|
||||
</li>
|
||||
<li>
|
||||
<label for="message_content">{$lang->content}</label>
|
||||
<textarea id="message_content" name="new_content" rows="8" style="width:100%"></textarea>
|
||||
</li>
|
||||
<li>
|
||||
<span id="message_send_mail"><input type="checkbox" value="Y" name="send_mail" /> {$lang->cmd_send_mail}</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="bna">
|
||||
<span class="fl"><a href="{getUrl('act', 'dispCommunicationMessages')}" class="bn white">{$lang->cmd_back}</a></span>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<a href="popup_menu_area" class="member_{$message->member_srl}">{$message->nick_name}</a> / {zdate($message->regdate, "Y-m-d H:i")}
|
||||
</div>
|
||||
<div class="xe_content">
|
||||
{$message->content}
|
||||
{$message->content|noescape}
|
||||
</div>
|
||||
<div class="prn-anchor-buttons">
|
||||
<a cond="$message->message_type != 'S' && $message->member_srl != $logged_info->member_srl" href="#" onclick="doSendMessage('{$message->sender_srl}','{$message->message_srl}');">{$lang->cmd_reply_message}</a>
|
||||
|
|
|
|||
|
|
@ -27,14 +27,12 @@
|
|||
<a id="message_receiver" href="#popup_menu_area" class="member_{$receiver_info->member_srl}">{$receiver_info->nick_name}</a>
|
||||
<label for="message_title">{$lang->title}</label>
|
||||
<input type="text" name="title" id="message_title" value="{$source_message->title}" />
|
||||
<label for="message_send_mail"><input type="checkbox" value="Y" name="send_mail" id="message_send_mail" /> {$lang->cmd_send_mail}</label>
|
||||
<div class="rx_prn-notice info">{$lang->msg_send_mail_privacy}</div>
|
||||
</div>
|
||||
{$editor}
|
||||
{$editor|noescape}
|
||||
<div class="control-group">
|
||||
<input type="submit" value="{$lang->cmd_send_message}" />
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
</div>
|
||||
<include target="./common_footer.html" />
|
||||
<include target="./common_footer.html" />
|
||||
|
|
|
|||
|
|
@ -1,7 +1,11 @@
|
|||
<query id="getNewMessage" action="select">
|
||||
<tables>
|
||||
<table name="member_message" alias="message" />
|
||||
<table name="member" />
|
||||
<table name="member" type="left join">
|
||||
<conditions>
|
||||
<condition operation="equal" column="member.member_srl" default="message.sender_srl" />
|
||||
</conditions>
|
||||
</table>
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
|
|
@ -9,7 +13,6 @@
|
|||
<conditions>
|
||||
<condition operation="equal" column="message.receiver_srl" var="receiver_srl" notnull="notnull" />
|
||||
<condition operation="equal" column="message.readed" var="readed" default="N" notnull="notnull" pipe="and" />
|
||||
<condition operation="equal" column="message.sender_srl" var="member.member_srl" pipe="and" />
|
||||
<condition operation="equal" column="message.message_type" var="message_type" default="R" pipe="and" />
|
||||
</conditions>
|
||||
<navigation>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
<query id="getNewMessageCount" action="select">
|
||||
<tables>
|
||||
<table name="member_message" alias="message" />
|
||||
<table name="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="count(*)" alias="count" />
|
||||
|
|
@ -9,7 +8,6 @@
|
|||
<conditions>
|
||||
<condition operation="equal" column="message.receiver_srl" var="receiver_srl" notnull="notnull" />
|
||||
<condition operation="equal" column="message.readed" var="readed" default="N" notnull="notnull" pipe="and" />
|
||||
<condition operation="equal" column="message.sender_srl" var="member.member_srl" pipe="and" />
|
||||
<condition operation="equal" column="message.message_type" var="message_type" default="R" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,11 @@
|
|||
<query id="getReceivedMessages" action="select">
|
||||
<tables>
|
||||
<table name="member_message" alias="message" />
|
||||
<table name="member" alias="member" />
|
||||
<table name="member" type="left join">
|
||||
<conditions>
|
||||
<condition operation="equal" column="member.member_srl" default="message.sender_srl" />
|
||||
</conditions>
|
||||
</table>
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="message.*" />
|
||||
|
|
@ -14,7 +18,6 @@
|
|||
<condition operation="equal" column="message.readed" var="readed" notnull="notnull" />
|
||||
<condition operation="equal" column="message.receiver_srl" var="member_srl" notnull="notnull" pipe="and" />
|
||||
<condition operation="equal" column="message.message_type" var="message_type" default="R" pipe="and" />
|
||||
<condition operation="equal" column="message.sender_srl" var="member.member_srl" pipe="and" />
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="message.list_order" order="asc" />
|
||||
|
|
|
|||
|
|
@ -1,7 +1,11 @@
|
|||
<query id="getReceivedMessages" action="select">
|
||||
<tables>
|
||||
<table name="member_message" alias="message" />
|
||||
<table name="member" alias="member" />
|
||||
<table name="member" type="left join">
|
||||
<conditions>
|
||||
<condition operation="equal" column="member.member_srl" default="message.sender_srl" />
|
||||
</conditions>
|
||||
</table>
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="message.*" />
|
||||
|
|
@ -13,7 +17,6 @@
|
|||
<conditions>
|
||||
<condition operation="equal" column="message.receiver_srl" var="member_srl" notnull="notnull" />
|
||||
<condition operation="equal" column="message.message_type" var="message_type" default="R" pipe="and" />
|
||||
<condition operation="equal" column="message.sender_srl" var="member.member_srl" pipe="and" />
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="message.list_order" order="asc" />
|
||||
|
|
|
|||
|
|
@ -1,7 +1,11 @@
|
|||
<query id="getSendedMessages" action="select">
|
||||
<tables>
|
||||
<table name="member_message" alias="message" />
|
||||
<table name="member" alias="member" />
|
||||
<table name="member" type="left join">
|
||||
<conditions>
|
||||
<condition operation="equal" column="member.member_srl" default="message.receiver_srl" />
|
||||
</conditions>
|
||||
</table>
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="message.*" />
|
||||
|
|
@ -13,7 +17,6 @@
|
|||
<conditions>
|
||||
<condition operation="equal" column="message.sender_srl" var="member_srl" notnull="notnull" />
|
||||
<condition operation="equal" column="message.message_type" var="message_type" default="S" pipe="and" />
|
||||
<condition operation="equal" column="message.receiver_srl" var="member.member_srl" pipe="and" />
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="message.list_order" order="asc" />
|
||||
|
|
|
|||
|
|
@ -1,7 +1,11 @@
|
|||
<query id="getStoredMessages" action="select">
|
||||
<tables>
|
||||
<table name="member_message" alias="message" />
|
||||
<table name="member" alias="member" />
|
||||
<table name="member" type="left join">
|
||||
<conditions>
|
||||
<condition operation="equal" column="member.member_srl" default="message.sender_srl" />
|
||||
</conditions>
|
||||
</table>
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="message.*" />
|
||||
|
|
@ -13,7 +17,6 @@
|
|||
<conditions>
|
||||
<condition operation="equal" column="message.receiver_srl" var="member_srl" notnull="notnull" />
|
||||
<condition operation="equal" column="message.message_type" var="message_type" default="T" pipe="and" />
|
||||
<condition operation="equal" column="message.sender_srl" var="member.member_srl" pipe="and" />
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="message.list_order" order="asc" />
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="xe_content">
|
||||
{$message->content}
|
||||
{$message->content|noescape}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
<td>{htmlspecialchars($message->title, ENT_COMPAT | ENT_HTML401, 'UTF-8', false)}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" class="xe_content">{$message->content}</td>
|
||||
<td colspan="2" class="xe_content">{$message->content|noescape}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="btnArea">
|
||||
|
|
|
|||
|
|
@ -30,12 +30,8 @@
|
|||
<th scope="row">{$lang->title}</th>
|
||||
<td><input type="text" name="title" id="message_title" value="{$source_message->title}" style="width:90%" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->cmd_option}</th>
|
||||
<td><input type="checkbox" value="Y" name="send_mail" /> {$lang->cmd_send_mail} <span class="explanation">{$lang->msg_send_mail_privacy}</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
{$editor}
|
||||
{$editor|noescape}
|
||||
<div class="btnArea">
|
||||
<input type="submit" value="{$lang->cmd_send_message}" class="btn btn-inverse" />
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<a href="popup_menu_area" class="member_{$message->member_srl}">{$message->nick_name}</a> / {zdate($message->regdate, "Y-m-d H:i")}
|
||||
</div>
|
||||
<div class="xe_content">
|
||||
{$message->content}
|
||||
{$message->content|noescape}
|
||||
</div>
|
||||
<div class="sw-footer sw-anchor-buttons">
|
||||
<a cond="$message->message_type != 'S' && $message->member_srl != $logged_info->member_srl" href="#" onclick="doSendMessage('{$message->sender_srl}','{$message->message_srl}');">{$lang->cmd_reply_message}</a>
|
||||
|
|
|
|||
|
|
@ -16,8 +16,6 @@
|
|||
<a id="message_receiver" href="#popup_menu_area" class="member_{$receiver_info->member_srl}">{$receiver_info->nick_name}</a>
|
||||
<label for="message_title">{$lang->title}</label>
|
||||
<input type="text" name="title" id="message_title" value="{$source_message->title}" />
|
||||
<label for="message_send_mail"><input type="checkbox" value="Y" name="send_mail" id="message_send_mail" /> {$lang->cmd_send_mail}</label>
|
||||
<div class="rx_member-notice info">{$lang->msg_send_mail_privacy}</div>
|
||||
<div class="rx_member-notice info" cond="$logged_info->allow_message !== 'Y'">
|
||||
{$lang->warning}
|
||||
<br>
|
||||
|
|
@ -29,7 +27,7 @@
|
|||
<br>{$lang->msg_allow_message_please}
|
||||
</div>
|
||||
</div>
|
||||
{$editor}
|
||||
{$editor|noescape}
|
||||
<div class="control-group">
|
||||
<input type="submit" value="{$lang->cmd_send_message}" />
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -104,12 +104,9 @@
|
|||
<label class="x_control-label" for="grant_send">{$lang->communication_send_message_grant}</label>
|
||||
<div class="x_controls">
|
||||
<select name="grant_send_default" class="grant_default" id="grant_send">
|
||||
<option value="member" selected="selected"|cond="$config->grant_send['default'] == 'member'">
|
||||
<option value="member" selected="selected"|cond="$config->grant_send['default'] == 'member' || $config->grant_send['default'] == 'site'">
|
||||
{$lang->grant_to_login_user}
|
||||
</option>
|
||||
<option value="site" selected="selected"|cond="$config->grant_send['default'] == 'site'">
|
||||
{$lang->grant_to_site_user}
|
||||
</option>
|
||||
<option value="manager" selected="selected"|cond="$config->grant_send['default'] == 'manager'">
|
||||
{$lang->grant_to_admin}
|
||||
</option>
|
||||
|
|
|
|||
|
|
@ -2,11 +2,11 @@
|
|||
<module>
|
||||
<grants />
|
||||
<actions>
|
||||
<action name="dispDocumentPrint" type="view" />
|
||||
<action name="dispDocumentPreview" type="view" />
|
||||
<action name="dispTempSavedList" type="view" permission="member" />
|
||||
<action name="dispDocumentDeclare" type="view" permission="member" />
|
||||
<action name="dispDocumentManageDocument" type="view" permission="all-managers" />
|
||||
<action name="dispDocumentPrint" type="view" meta-noindex="true"/>
|
||||
<action name="dispDocumentPreview" type="view" meta-noindex="true"/>
|
||||
<action name="dispTempSavedList" type="view" permission="member" meta-noindex="true"/>
|
||||
<action name="dispDocumentDeclare" type="view" permission="member" meta-noindex="true" />
|
||||
<action name="dispDocumentManageDocument" type="view" permission="all-managers" meta-noindex="true" />
|
||||
|
||||
<action name="getDocumentMenu" type="model" />
|
||||
<action name="getDocumentCategories" type="model" permission="all-managers" />
|
||||
|
|
|
|||
|
|
@ -27,10 +27,10 @@ class documentAdminController extends document
|
|||
{
|
||||
// error appears if no doc is selected
|
||||
$cart = Context::get('cart');
|
||||
if(!$cart) return $this->stop('msg_cart_is_null');
|
||||
if(!$cart) throw new Rhymix\Framework\Exception('msg_cart_is_null');
|
||||
$document_srl_list= explode('|@|', $cart);
|
||||
$document_count = count($document_srl_list);
|
||||
if(!$document_count) return $this->stop('msg_cart_is_null');
|
||||
if(!$document_count) throw new Rhymix\Framework\Exception('msg_cart_is_null');
|
||||
// Delete a doc
|
||||
$oDocumentController = getController('document');
|
||||
for($i=0;$i<$document_count;$i++)
|
||||
|
|
@ -140,7 +140,7 @@ class documentAdminController extends document
|
|||
$eid = Context::get('eid');
|
||||
$obj = new stdClass();
|
||||
|
||||
if(!$module_srl || !$name || !$eid) return $this->setError('msg_invalid_request');
|
||||
if(!$module_srl || !$name || !$eid) throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
// set the max value if idx is not specified
|
||||
if(!$var_idx)
|
||||
{
|
||||
|
|
@ -156,7 +156,7 @@ class documentAdminController extends document
|
|||
$output = executeQuery('document.isExistsExtraKey', $obj);
|
||||
if(!$output->toBool() || $output->data->count)
|
||||
{
|
||||
return $this->setError('msg_extra_name_exists');
|
||||
throw new Rhymix\Framework\Exception('msg_extra_name_exists');
|
||||
}
|
||||
|
||||
// insert or update
|
||||
|
|
@ -178,7 +178,7 @@ class documentAdminController extends document
|
|||
{
|
||||
$module_srl = Context::get('module_srl');
|
||||
$var_idx = Context::get('var_idx');
|
||||
if(!$module_srl || !$var_idx) return $this->setError('msg_invalid_request');
|
||||
if(!$module_srl || !$var_idx) throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
|
||||
$oDocumentController = getController('document');
|
||||
$output = $oDocumentController->deleteDocumentExtraKeys($module_srl, $var_idx);
|
||||
|
|
@ -197,26 +197,26 @@ class documentAdminController extends document
|
|||
$module_srl = Context::get('module_srl');
|
||||
$var_idx = Context::get('var_idx');
|
||||
|
||||
if(!$type || !$module_srl || !$var_idx) return $this->setError('msg_invalid_request');
|
||||
if(!$type || !$module_srl || !$var_idx) throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
|
||||
$oModuleModel = getModel('module');
|
||||
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl);
|
||||
if(!$module_info->module_srl) return $this->setError('msg_invalid_request');
|
||||
if(!$module_info->module_srl) throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
|
||||
$oDocumentModel = getModel('document');
|
||||
$extra_keys = $oDocumentModel->getExtraKeys($module_srl);
|
||||
if(!$extra_keys[$var_idx]) return $this->setError('msg_invalid_request');
|
||||
if(!$extra_keys[$var_idx]) throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
|
||||
if($type == 'up') $new_idx = $var_idx-1;
|
||||
else $new_idx = $var_idx+1;
|
||||
if($new_idx<1) return $this->setError('msg_invalid_request');
|
||||
if($new_idx<1) throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
|
||||
$args = new stdClass();
|
||||
$args->module_srl = $module_srl;
|
||||
$args->var_idx = $new_idx;
|
||||
$output = executeQuery('document.getDocumentExtraKeys', $args);
|
||||
if (!$output->toBool()) return $output;
|
||||
if (!$output->data) return $this->setError('msg_invalid_request');
|
||||
if (!$output->data) throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
unset($args);
|
||||
|
||||
// update immediately if there is no idx to change
|
||||
|
|
@ -314,13 +314,16 @@ class documentAdminController extends document
|
|||
$oDocumentModel = getModel('document');
|
||||
$oDocumentController = getController('document');
|
||||
$oDocument = $oDocumentModel->getDocument($document_srl, false, false);
|
||||
if(!$oDocument->isGranted()) return $this->stop('msg_not_permitted');
|
||||
if(!$oDocument->isGranted())
|
||||
{
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
|
||||
$oMemberModel = getModel('member');
|
||||
$member_info = $oMemberModel->getMemberInfoByMemberSrl($oDocument->get('member_srl'));
|
||||
if($member_info->is_admin == 'Y' && $logged_info->is_admin != 'Y')
|
||||
{
|
||||
return $this->setError('msg_admin_document_no_move_to_trash');
|
||||
throw new Rhymix\Framework\Exception('msg_admin_document_no_move_to_trash');
|
||||
}
|
||||
|
||||
$oModuleModel = getModel('module');
|
||||
|
|
@ -407,9 +410,14 @@ class documentAdminController extends document
|
|||
{
|
||||
return;
|
||||
}
|
||||
if(!is_array($document_srl_list))
|
||||
{
|
||||
$document_srl_list = array_map('trim', explode(',', $document_srl_list));
|
||||
}
|
||||
$document_srl_list = array_map('intval', $document_srl_list);
|
||||
|
||||
$obj = new stdClass;
|
||||
$obj->document_srls = implode(',', $document_srl_list);
|
||||
$obj->document_srls = $document_srl_list;
|
||||
$obj->list_count = count($document_srl_list);
|
||||
$obj->document_list = executeQueryArray('document.getDocuments', $obj)->data;
|
||||
$obj->module_srl = $target_module_srl;
|
||||
|
|
@ -478,9 +486,9 @@ class documentAdminController extends document
|
|||
$oDB->commit();
|
||||
|
||||
// remove from cache
|
||||
foreach ($document_srl_list as $document_srl)
|
||||
foreach($obj->document_list as $document)
|
||||
{
|
||||
Rhymix\Framework\Cache::delete('document_item:'. getNumberingPath($document_srl) . $document_srl);
|
||||
Rhymix\Framework\Cache::delete('document_item:'. getNumberingPath($document->document_srl) . $document->document_srl);
|
||||
}
|
||||
|
||||
return new BaseObject();
|
||||
|
|
@ -499,9 +507,14 @@ class documentAdminController extends document
|
|||
{
|
||||
return;
|
||||
}
|
||||
if(!is_array($document_srl_list))
|
||||
{
|
||||
$document_srl_list = array_map('trim', explode(',', $document_srl_list));
|
||||
}
|
||||
$document_srl_list = array_map('intval', $document_srl_list);
|
||||
|
||||
$obj = new stdClass;
|
||||
$obj->document_srls = implode(',', $document_srl_list);
|
||||
$obj->document_srls = $document_srl_list;
|
||||
$obj->list_count = count($document_srl_list);
|
||||
$obj->document_list = executeQueryArray('document.getDocuments', $obj)->data;
|
||||
$obj->module_srl = $target_module_srl;
|
||||
|
|
@ -590,7 +603,7 @@ class documentAdminController extends document
|
|||
{
|
||||
$args = new stdClass;
|
||||
$args->page = 0;
|
||||
$args->module_srl = $module_srl;
|
||||
$args->module_srl = intval($module_srl);
|
||||
$document_list = executeQueryArray('document.getDocumentList', $args, array('document_srl'))->data;
|
||||
|
||||
// delete documents
|
||||
|
|
@ -627,7 +640,7 @@ class documentAdminController extends document
|
|||
|
||||
//DB restore
|
||||
$output = $oDocumentController->insertDocument($originObject, false, true, false);
|
||||
if(!$output->toBool()) return $this->setError($output->getMessage());
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
//FILE restore
|
||||
$oDocument = $oDocumentModel->getDocument($originObject->document_srl);
|
||||
|
|
|
|||
|
|
@ -172,8 +172,8 @@ class documentAdminView extends document
|
|||
|
||||
// option for a list
|
||||
$args = new stdClass();
|
||||
$args->page = Context::get('page'); // /< Page
|
||||
$args->list_count = 30; // /< the number of posts to display on a single page
|
||||
$args->page = intval(Context::get('page')) ?: 1; // /< Page
|
||||
$args->list_count = 20; // /< the number of posts to display on a single page
|
||||
$args->page_count = 10; // /< the number of pages that appear in the page navigation
|
||||
$args->order_type = strtolower(Context::get('order_type')) === 'asc' ? 'asc' : 'desc';
|
||||
|
||||
|
|
@ -192,6 +192,7 @@ class documentAdminView extends document
|
|||
if ($declared_output->data && count($declared_output->data))
|
||||
{
|
||||
$args->document_srls = array_map(function($item) { return $item->document_srl; }, $declared_output->data);
|
||||
unset($args->page);
|
||||
$documents = executeQueryArray('document.getDocuments', $args);
|
||||
$document_list = array();
|
||||
foreach ($declared_output->data as $key => $declared_info)
|
||||
|
|
@ -225,6 +226,7 @@ class documentAdminView extends document
|
|||
if ($declared_output->data && count($declared_output->data))
|
||||
{
|
||||
$args->document_srls = array_map(function($item) { return $item->document_srl; }, $declared_output->data);
|
||||
unset($args->page);
|
||||
$declared_latest = executeQueryArray('document.getDeclaredLatest', $args);
|
||||
$document_list = array();
|
||||
foreach ($declared_output->data as $key => $document)
|
||||
|
|
|
|||
|
|
@ -128,6 +128,9 @@ class document extends ModuleObject
|
|||
|
||||
// 2016. 3. 14 Add a column(document_upate_log) for admin
|
||||
if(!$oDB->isColumnExists('document_update_log', 'is_admin')) return true;
|
||||
|
||||
// 2019. 3. 07 #1146
|
||||
if(!$oDB->isColumnExists('document_update_log', 'reason_update')) return true;
|
||||
|
||||
// 2017.12.21 Add an index for nick_name
|
||||
if(!$oDB->isIndexExists('documents', 'idx_nick_name')) return true;
|
||||
|
|
@ -353,6 +356,12 @@ class document extends ModuleObject
|
|||
$oDB->addIndex('document_update_log', 'idx_is_admin', array('is_admin'));
|
||||
}
|
||||
|
||||
// 2019. 3. 07 #1146
|
||||
if(!$oDB->isColumnExists('document_update_log', 'reason_update'))
|
||||
{
|
||||
$oDB->addColumn('document_update_log', 'reason_update', 'text', '', null, false, 'extra_vars');
|
||||
}
|
||||
|
||||
// 2017.12.21 Add an index for nick_name
|
||||
if(!$oDB->isIndexExists('documents', 'idx_nick_name'))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -28,21 +28,21 @@ class documentController extends document
|
|||
{
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
}
|
||||
|
||||
$document_srl = Context::get('target_srl');
|
||||
if(!$document_srl) return $this->setError('msg_invalid_request');
|
||||
if(!$document_srl) throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
|
||||
$oDocumentModel = getModel('document');
|
||||
$oDocument = $oDocumentModel->getDocument($document_srl, false, false);
|
||||
$module_srl = $oDocument->get('module_srl');
|
||||
if(!$module_srl) return $this->setError('msg_invalid_request');
|
||||
if(!$module_srl) throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
|
||||
$oModuleModel = getModel('module');
|
||||
$document_config = $oModuleModel->getModulePartConfig('document',$module_srl);
|
||||
if($document_config->use_vote_up=='N') return $this->setError('msg_invalid_request');
|
||||
if($document_config->use_vote_up=='N') throw new Rhymix\Framework\Exceptions\FeatureDisabled;
|
||||
|
||||
$point = 1;
|
||||
$output = $this->updateVotedCount($document_srl, $point);
|
||||
|
|
@ -60,18 +60,18 @@ class documentController extends document
|
|||
{
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
}
|
||||
|
||||
$document_srl = Context::get('target_srl');
|
||||
if(!$document_srl) return $this->setError('msg_invalid_request');
|
||||
if(!$document_srl) throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
|
||||
$oDocumentModel = getModel('document');
|
||||
$oDocument = $oDocumentModel->getDocument($document_srl, false, false);
|
||||
if($oDocument->get('voted_count') <= 0)
|
||||
{
|
||||
return $this->setError('msg_document_voted_cancel_not');
|
||||
throw new Rhymix\Framework\Exception('failed_voted_canceled');
|
||||
}
|
||||
$point = 1;
|
||||
$output = $this->updateVotedCountCancel($document_srl, $oDocument, $point);
|
||||
|
|
@ -114,21 +114,21 @@ class documentController extends document
|
|||
{
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
}
|
||||
|
||||
$document_srl = Context::get('target_srl');
|
||||
if(!$document_srl) return $this->setError('msg_invalid_request');
|
||||
if(!$document_srl) throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
|
||||
$oDocumentModel = getModel('document');
|
||||
$oDocument = $oDocumentModel->getDocument($document_srl, false, false);
|
||||
$module_srl = $oDocument->get('module_srl');
|
||||
if(!$module_srl) return $this->setError('msg_invalid_request');
|
||||
if(!$module_srl) throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
|
||||
$oModuleModel = getModel('module');
|
||||
$document_config = $oModuleModel->getModulePartConfig('document',$module_srl);
|
||||
if($document_config->use_vote_down=='N') return $this->setError('msg_invalid_request');
|
||||
if($document_config->use_vote_down=='N') throw new Rhymix\Framework\Exceptions\FeatureDisabled;
|
||||
|
||||
$point = -1;
|
||||
$output = $this->updateVotedCount($document_srl, $point);
|
||||
|
|
@ -146,18 +146,18 @@ class documentController extends document
|
|||
{
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
}
|
||||
|
||||
$document_srl = Context::get('target_srl');
|
||||
if(!$document_srl) return $this->setError('msg_invalid_request');
|
||||
if(!$document_srl) throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
|
||||
$oDocumentModel = getModel('document');
|
||||
$oDocument = $oDocumentModel->getDocument($document_srl, false, false);
|
||||
if($oDocument->get('blamed_count') >= 0)
|
||||
{
|
||||
return $this->setError('msg_document_voted_cancel_not');
|
||||
throw new Rhymix\Framework\Exception('failed_blamed_canceled');
|
||||
}
|
||||
$point = -1;
|
||||
$output = $this->updateVotedCountCancel($document_srl, $oDocument, $point);
|
||||
|
|
@ -181,42 +181,68 @@ class documentController extends document
|
|||
function updateVotedCountCancel($document_srl, $oDocument, $point)
|
||||
{
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
$args = new stdClass();
|
||||
$d_args = new stdClass();
|
||||
$args->document_srl = $d_args->document_srl = $document_srl;
|
||||
$d_args->member_srl = $logged_info->member_srl;
|
||||
if($point > 0)
|
||||
|
||||
// Check if the current user has voted previously.
|
||||
$args = new stdClass;
|
||||
$args->document_srl = $document_srl;
|
||||
$args->point = $point;
|
||||
if($logged_info->member_srl)
|
||||
{
|
||||
$args->voted_count = $oDocument->get('voted_count') - $point;
|
||||
$output = executeQuery('document.updateVotedCount', $args);
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
}
|
||||
else
|
||||
{
|
||||
$args->blamed_count = $oDocument->get('blamed_count') - $point;
|
||||
$output = executeQuery('document.updateBlamedCount', $args);
|
||||
$args->ipaddress = $_SERVER['REMOTE_ADDR'];
|
||||
}
|
||||
$output = executeQuery('document.getDocumentVotedLogInfo', $args);
|
||||
if(!$output->data->count)
|
||||
{
|
||||
return new BaseObject(-1, $point > 0 ? 'failed_voted_canceled' : 'failed_blamed_canceled');
|
||||
}
|
||||
$d_output = executeQuery('document.deleteDocumentVotedLog', $d_args);
|
||||
if(!$d_output->toBool()) return $d_output;
|
||||
|
||||
//session reset
|
||||
$_SESSION['voted_document'][$document_srl] = false;
|
||||
// Call a trigger (before)
|
||||
$trigger_obj = new stdClass;
|
||||
$trigger_obj->member_srl = $oDocument->get('member_srl');
|
||||
$trigger_obj->module_srl = $oDocument->get('module_srl');
|
||||
$trigger_obj->document_srl = $oDocument->get('document_srl');
|
||||
$trigger_obj->update_target = ($point < 0) ? 'blamed_count' : 'voted_count';
|
||||
$trigger_obj->point = $point;
|
||||
$trigger_obj->before_point = ($point < 0) ? $oDocument->get('blamed_count') : $oDocument->get('voted_count');
|
||||
$trigger_obj->after_point = $trigger_obj->before_point - $point;
|
||||
$trigger_obj->cancel = true;
|
||||
$trigger_output = ModuleHandler::triggerCall('document.updateVotedCountCancel', 'before', $trigger_obj);
|
||||
if(!$trigger_output->toBool())
|
||||
{
|
||||
return $trigger_output;
|
||||
}
|
||||
|
||||
// begin transaction
|
||||
$oDB = DB::getInstance();
|
||||
$oDB->begin();
|
||||
|
||||
$obj = new stdClass();
|
||||
$obj->member_srl = $oDocument->get('member_srl');
|
||||
$obj->module_srl = $oDocument->get('module_srl');
|
||||
$obj->document_srl = $oDocument->get('document_srl');
|
||||
$obj->update_target = ($point < 0) ? 'blamed_count' : 'voted_count';
|
||||
$obj->point = $point;
|
||||
$obj->before_point = ($point < 0) ? $oDocument->get('blamed_count') : $oDocument->get('voted_count');
|
||||
$obj->after_point = ($point < 0) ? $args->blamed_count : $args->voted_count;
|
||||
$obj->cancel = 1;
|
||||
$args = new stdClass();
|
||||
$d_args = new stdClass();
|
||||
$args->document_srl = $d_args->document_srl = $document_srl;
|
||||
$d_args->member_srl = $logged_info->member_srl;
|
||||
if ($trigger_obj->update_target === 'voted_count')
|
||||
{
|
||||
$args->voted_count = $trigger_obj->after_point;
|
||||
$output = executeQuery('document.updateVotedCount', $args);
|
||||
}
|
||||
else
|
||||
{
|
||||
$args->blamed_count = $trigger_obj->after_point;
|
||||
$output = executeQuery('document.updateBlamedCount', $args);
|
||||
}
|
||||
$d_output = executeQuery('document.deleteDocumentVotedLog', $d_args);
|
||||
if(!$d_output->toBool()) return $d_output;
|
||||
|
||||
// session reset
|
||||
$_SESSION['voted_document'][$document_srl] = false;
|
||||
|
||||
// Call a trigger (after)
|
||||
ModuleHandler::triggerCall('document.updateVotedCountCancel', 'after', $trigger_obj);
|
||||
|
||||
ModuleHandler::triggerCall('document.updateVotedCountCancel', 'after', $obj);
|
||||
$oDB->commit();
|
||||
return $output;
|
||||
}
|
||||
|
|
@ -229,13 +255,13 @@ class documentController extends document
|
|||
{
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
return $this->setError('msg_not_logged');
|
||||
throw new Rhymix\Framework\Exceptions\MustLogin;
|
||||
}
|
||||
|
||||
$document_srl = intval(Context::get('target_srl'));
|
||||
if(!$document_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
// if an user select message from options, message would be the option.
|
||||
|
|
@ -347,7 +373,7 @@ class documentController extends document
|
|||
{
|
||||
if(!$manual_inserted && !checkCSRF())
|
||||
{
|
||||
return new BaseObject(-1, 'msg_invalid_request');
|
||||
return new BaseObject(-1, 'msg_security_violation');
|
||||
}
|
||||
|
||||
// begin transaction
|
||||
|
|
@ -361,7 +387,7 @@ class documentController extends document
|
|||
if($obj->allow_trackback!='Y') $obj->allow_trackback = 'N';
|
||||
if($obj->homepage)
|
||||
{
|
||||
$obj->homepage = removeHackTag($obj->homepage);
|
||||
$obj->homepage = escape($obj->homepage);
|
||||
if(!preg_match('/^[a-z]+:\/\//i',$obj->homepage))
|
||||
{
|
||||
$obj->homepage = 'http://'.$obj->homepage;
|
||||
|
|
@ -371,6 +397,12 @@ class documentController extends document
|
|||
if($obj->notify_message != 'Y') $obj->notify_message = 'N';
|
||||
if(!$obj->email_address) $obj->email_address = '';
|
||||
if(!$isRestore) $obj->ipaddress = $_SERVER['REMOTE_ADDR'];
|
||||
$obj->isRestore = $isRestore ? true : false;
|
||||
|
||||
// Sanitize variables
|
||||
$obj->document_srl = intval($obj->document_srl);
|
||||
$obj->category_srl = intval($obj->category_srl);
|
||||
$obj->module_srl = intval($obj->module_srl);
|
||||
|
||||
// Default Status
|
||||
if($obj->status)
|
||||
|
|
@ -485,7 +517,10 @@ class documentController extends document
|
|||
}
|
||||
|
||||
// Remove iframe and script if not a top adminisrator in the session.
|
||||
if($logged_info->is_admin != 'Y') $obj->content = removeHackTag($obj->content);
|
||||
if($logged_info->is_admin != 'Y')
|
||||
{
|
||||
$obj->content = removeHackTag($obj->content);
|
||||
}
|
||||
|
||||
// An error appears if both log-in info and user name don't exist.
|
||||
if(!$logged_info->member_srl && !$obj->nick_name) return new BaseObject(-1, 'msg_invalid_request');
|
||||
|
|
@ -576,10 +611,18 @@ class documentController extends document
|
|||
{
|
||||
if(!$manual_updated && !checkCSRF())
|
||||
{
|
||||
return new BaseObject(-1, 'msg_invalid_request');
|
||||
return new BaseObject(-1, 'msg_security_violation');
|
||||
}
|
||||
|
||||
if(!$source_obj->document_srl || !$obj->document_srl) return new BaseObject(-1, 'msg_invalied_request');
|
||||
if(!$source_obj->document_srl || !$obj->document_srl)
|
||||
{
|
||||
return new BaseObject(-1, 'msg_invalied_request');
|
||||
}
|
||||
|
||||
// Sanitize variables
|
||||
$obj->document_srl = intval($obj->document_srl);
|
||||
$obj->category_srl = intval($obj->category_srl);
|
||||
$obj->module_srl = intval($obj->module_srl);
|
||||
|
||||
// Default Status
|
||||
if($obj->status)
|
||||
|
|
@ -625,6 +668,8 @@ class documentController extends document
|
|||
if(!isset($document_config->use_history)) $document_config->use_history = 'N';
|
||||
$bUseHistory = $document_config->use_history == 'Y' || $document_config->use_history == 'Trace';
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
if($bUseHistory)
|
||||
{
|
||||
$args = new stdClass;
|
||||
|
|
@ -632,10 +677,10 @@ class documentController extends document
|
|||
$args->document_srl = $obj->document_srl;
|
||||
$args->module_srl = $obj->module_srl;
|
||||
if($document_config->use_history == 'Y') $args->content = $source_obj->get('content');
|
||||
$args->nick_name = $logged_info->nick_name;
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->nick_name = $source_obj->get('nick_name');
|
||||
$args->member_srl = $source_obj->get('member_srl');
|
||||
$args->regdate = $source_obj->get('last_update');
|
||||
$args->ipaddress = $_SERVER['REMOTE_ADDR'];
|
||||
$args->ipaddress = $source_obj->get('ipaddress');
|
||||
$output = executeQuery("document.insertHistory", $args);
|
||||
}
|
||||
else
|
||||
|
|
@ -650,7 +695,7 @@ class documentController extends document
|
|||
if($obj->allow_trackback!='Y') $obj->allow_trackback = 'N';
|
||||
if($obj->homepage)
|
||||
{
|
||||
$obj->homepage = removeHackTag($obj->homepage);
|
||||
$obj->homepage = escape($obj->homepage);
|
||||
if(!preg_match('/^[a-z]+:\/\//i',$obj->homepage))
|
||||
{
|
||||
$obj->homepage = 'http://'.$obj->homepage;
|
||||
|
|
@ -693,7 +738,6 @@ class documentController extends document
|
|||
}
|
||||
|
||||
// If an author is identical to the modifier or history is used, use the logged-in user's information.
|
||||
$logged_info = Context::get('logged_info');
|
||||
if(Context::get('is_logged') && !$manual_updated && !$obj->manual_member_info)
|
||||
{
|
||||
if($source_obj->get('member_srl')==$logged_info->member_srl)
|
||||
|
|
@ -910,6 +954,7 @@ class documentController extends document
|
|||
// Call a trigger (before)
|
||||
$trigger_obj = new stdClass();
|
||||
$trigger_obj->document_srl = $document_srl;
|
||||
$trigger_obj->isEmptyTrash = $isEmptyTrash ? true : false;
|
||||
$output = ModuleHandler::triggerCall('document.deleteDocument', 'before', $trigger_obj);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
|
|
@ -966,6 +1011,7 @@ class documentController extends document
|
|||
|
||||
// Call a trigger (after)
|
||||
$trigger_obj = $oDocument->getObjectVars();
|
||||
$trigger_obj->isEmptyTrash = $isEmptyTrash ? true : false;
|
||||
ModuleHandler::triggerCall('document.deleteDocument', 'after', $trigger_obj);
|
||||
|
||||
// declared document, log delete
|
||||
|
|
@ -1127,6 +1173,10 @@ class documentController extends document
|
|||
}
|
||||
|
||||
// Call a trigger (after)
|
||||
$obj->module_srl = $oDocument->get('module_srl');
|
||||
$obj->member_srl = $oDocument->get('member_srl');
|
||||
$obj->regdate = $oDocument->get('regdate');
|
||||
$obj->last_update = $oDocument->get('last_update');
|
||||
ModuleHandler::triggerCall('document.moveDocumentToTrash', 'after', $obj);
|
||||
|
||||
// commit
|
||||
|
|
@ -1391,20 +1441,24 @@ class documentController extends document
|
|||
{
|
||||
$failed_voted = 'failed_blamed';
|
||||
}
|
||||
|
||||
// Return fail if session already has information about votes
|
||||
if($_SESSION['voted_document'][$document_srl])
|
||||
{
|
||||
return new BaseObject(-1, $failed_voted);
|
||||
}
|
||||
|
||||
// Get the original document
|
||||
$oDocumentModel = getModel('document');
|
||||
$oDocument = $oDocumentModel->getDocument($document_srl, false, false);
|
||||
|
||||
// Pass if the author's IP address is as same as visitor's.
|
||||
if($oDocument->get('ipaddress') == $_SERVER['REMOTE_ADDR'])
|
||||
{
|
||||
$_SESSION['voted_document'][$document_srl] = false;
|
||||
return new BaseObject(-1, $failed_voted);
|
||||
}
|
||||
|
||||
// Create a member model object
|
||||
$oMemberModel = getModel('member');
|
||||
$member_srl = $oMemberModel->getLoggedMemberSrl();
|
||||
|
|
@ -1419,6 +1473,7 @@ class documentController extends document
|
|||
return new BaseObject(-1, $failed_voted);
|
||||
}
|
||||
}
|
||||
|
||||
// Use member_srl for logged-in members and IP address for non-members.
|
||||
$args = new stdClass();
|
||||
if($member_srl)
|
||||
|
|
@ -1431,47 +1486,57 @@ class documentController extends document
|
|||
}
|
||||
$args->document_srl = $document_srl;
|
||||
$output = executeQuery('document.getDocumentVotedLogInfo', $args);
|
||||
|
||||
// Pass after registering a session if log information has vote-up logs
|
||||
if($output->data->count)
|
||||
{
|
||||
$_SESSION['voted_document'][$document_srl] = false;
|
||||
return new BaseObject(-1, $failed_voted);
|
||||
}
|
||||
|
||||
// Call a trigger (before)
|
||||
$trigger_obj = new stdClass;
|
||||
$trigger_obj->member_srl = $oDocument->get('member_srl');
|
||||
$trigger_obj->module_srl = $oDocument->get('module_srl');
|
||||
$trigger_obj->document_srl = $oDocument->get('document_srl');
|
||||
$trigger_obj->update_target = ($point < 0) ? 'blamed_count' : 'voted_count';
|
||||
$trigger_obj->point = $point;
|
||||
$trigger_obj->before_point = ($point < 0) ? $oDocument->get('blamed_count') : $oDocument->get('voted_count');
|
||||
$trigger_obj->after_point = $trigger_obj->before_point + $point;
|
||||
$trigger_obj->cancel = false;
|
||||
$trigger_output = ModuleHandler::triggerCall('document.updateVotedCount', 'before', $trigger_obj);
|
||||
if(!$trigger_output->toBool())
|
||||
{
|
||||
return $trigger_output;
|
||||
}
|
||||
|
||||
// begin transaction
|
||||
$oDB = DB::getInstance();
|
||||
$oDB->begin();
|
||||
|
||||
// Update the voted count
|
||||
if($point < 0)
|
||||
if($trigger_obj->update_target === 'blamed_count')
|
||||
{
|
||||
$args->blamed_count = $oDocument->get('blamed_count') + $point;
|
||||
// Leave in the session information
|
||||
$_SESSION['voted_document'][$document_srl] = $point;
|
||||
$args->blamed_count = $trigger_obj->after_point;
|
||||
$output = executeQuery('document.updateBlamedCount', $args);
|
||||
}
|
||||
else
|
||||
{
|
||||
$args->voted_count = $oDocument->get('voted_count') + $point;
|
||||
// Leave in the session information
|
||||
$_SESSION['voted_document'][$document_srl] = $point;
|
||||
$args->voted_count = $trigger_obj->after_point;
|
||||
$output = executeQuery('document.updateVotedCount', $args);
|
||||
}
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
// Leave in the session information
|
||||
$_SESSION['voted_document'][$document_srl] = $trigger_obj->point;
|
||||
|
||||
// Leave logs
|
||||
$args->point = $point;
|
||||
$args->point = $trigger_obj->point;
|
||||
$output = executeQuery('document.insertDocumentVotedLog', $args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
$obj = new stdClass;
|
||||
$obj->member_srl = $oDocument->get('member_srl');
|
||||
$obj->module_srl = $oDocument->get('module_srl');
|
||||
$obj->document_srl = $oDocument->get('document_srl');
|
||||
$obj->update_target = ($point < 0) ? 'blamed_count' : 'voted_count';
|
||||
$obj->point = $point;
|
||||
$obj->before_point = ($point < 0) ? $oDocument->get('blamed_count') : $oDocument->get('voted_count');
|
||||
$obj->after_point = ($point < 0) ? $args->blamed_count : $args->voted_count;
|
||||
|
||||
ModuleHandler::triggerCall('document.updateVotedCount', 'after', $obj);
|
||||
// Call a trigger (after)
|
||||
ModuleHandler::triggerCall('document.updateVotedCount', 'after', $trigger_obj);
|
||||
|
||||
$oDB->commit();
|
||||
|
||||
|
|
@ -1480,15 +1545,15 @@ class documentController extends document
|
|||
|
||||
// Return result
|
||||
$output = new BaseObject();
|
||||
if($point > 0)
|
||||
if($trigger_obj->update_target === 'voted_count')
|
||||
{
|
||||
$output->setMessage('success_voted');
|
||||
$output->add('voted_count', $obj->after_point);
|
||||
$output->add('voted_count', $trigger_obj->after_point);
|
||||
}
|
||||
else
|
||||
{
|
||||
$output->setMessage('success_blamed');
|
||||
$output->add('blamed_count', $obj->after_point);
|
||||
$output->add('blamed_count', $trigger_obj->after_point);
|
||||
}
|
||||
|
||||
return $output;
|
||||
|
|
@ -1543,12 +1608,12 @@ class documentController extends document
|
|||
return new BaseObject(-1, 'failed_declared');
|
||||
}
|
||||
|
||||
// Get currently logged in user.
|
||||
$member_srl = intval($this->user->member_srl);
|
||||
|
||||
// Check if document's author is a member.
|
||||
if($oDocument->get('member_srl'))
|
||||
{
|
||||
// Create a member model object
|
||||
$oMemberModel = getModel('member');
|
||||
$member_srl = $oMemberModel->getLoggedMemberSrl();
|
||||
// Pass after registering a session if author's information is same as the currently logged-in user's.
|
||||
if($member_srl && $member_srl == abs($oDocument->get('member_srl')))
|
||||
{
|
||||
|
|
@ -1557,30 +1622,31 @@ class documentController extends document
|
|||
}
|
||||
}
|
||||
|
||||
// Use member_srl for logged-in members and IP address for non-members.
|
||||
// Pass after registering a sesson if reported/declared documents are in the logs.
|
||||
$args = new stdClass;
|
||||
$args->document_srl = $document_srl;
|
||||
if($member_srl)
|
||||
{
|
||||
$args->member_srl = $member_srl;
|
||||
}
|
||||
else
|
||||
{
|
||||
$args->ipaddress = $_SERVER['REMOTE_ADDR'];
|
||||
$args->ipaddress = \RX_CLIENT_IP;
|
||||
}
|
||||
|
||||
$args->document_srl = $document_srl;
|
||||
$args->declare_message = $declare_message;
|
||||
$output = executeQuery('document.getDocumentDeclaredLogInfo', $args);
|
||||
|
||||
// Pass after registering a sesson if reported/declared documents are in the logs.
|
||||
if($output->data->count)
|
||||
{
|
||||
$_SESSION['declared_document'][$document_srl] = true;
|
||||
return new BaseObject(-1, 'failed_declared');
|
||||
}
|
||||
|
||||
|
||||
// Fill in remaining information for logging.
|
||||
$args->member_srl = $member_srl;
|
||||
$args->ipaddress = \RX_CLIENT_IP;
|
||||
$args->declare_message = $declare_message;
|
||||
|
||||
// begin transaction
|
||||
$oDB = &DB::getInstance();
|
||||
$oDB = DB::getInstance();
|
||||
$oDB->begin();
|
||||
|
||||
// Add the declared document
|
||||
|
|
@ -2185,6 +2251,7 @@ class documentController extends document
|
|||
function makeCategoryFile($module_srl)
|
||||
{
|
||||
// Return if there is no information you need for creating a cache file
|
||||
$module_srl = intval($module_srl);
|
||||
if(!$module_srl) return false;
|
||||
// Get module information (to obtain mid)
|
||||
$oModuleModel = getModel('module');
|
||||
|
|
@ -2194,8 +2261,8 @@ class documentController extends document
|
|||
|
||||
if(!is_dir('./files/cache/document_category')) FileHandler::makeDir('./files/cache/document_category');
|
||||
// Cache file's name
|
||||
$xml_file = sprintf("./files/cache/document_category/%s.xml.php", $module_srl);
|
||||
$php_file = sprintf("./files/cache/document_category/%s.php", $module_srl);
|
||||
$xml_file = sprintf("./files/cache/document_category/%d.xml.php", $module_srl);
|
||||
$php_file = sprintf("./files/cache/document_category/%d.php", $module_srl);
|
||||
// Get a category list
|
||||
$args = new stdClass();
|
||||
$args->module_srl = $module_srl;
|
||||
|
|
@ -2249,10 +2316,8 @@ class documentController extends document
|
|||
$xml_body_buff = $this->getXmlTree($tree[0], $tree, $module_info->site_srl, $xml_header_buff);
|
||||
$xml_buff = sprintf(
|
||||
'<?php '.
|
||||
'define(\'__XE__\', true); '.
|
||||
'require_once(\''.FileHandler::getRealPath('./config/config.inc.php').'\'); '.
|
||||
'$oContext = &Context::getInstance(); '.
|
||||
'$oContext->init(); '.
|
||||
'require_once(\''.FileHandler::getRealPath('./common/autoload.php').'\'); '.
|
||||
'Context::init(); '.
|
||||
'header("Content-Type: text/xml; charset=UTF-8"); '.
|
||||
'header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); '.
|
||||
'header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); '.
|
||||
|
|
@ -2495,7 +2560,10 @@ class documentController extends document
|
|||
*/
|
||||
function procDocumentAddCart()
|
||||
{
|
||||
if(!Context::get('is_logged')) return $this->setError('msg_not_permitted');
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
|
||||
// Get document_srl
|
||||
$srls = explode(',',Context::get('srls'));
|
||||
|
|
@ -2575,8 +2643,8 @@ class documentController extends document
|
|||
$obj->type = Context::get('type');
|
||||
$obj->document_list = array();
|
||||
$obj->document_srl_list = array();
|
||||
$obj->target_module_srl = intval(Context::get('module_srl') ?: Context::get('target_module'));
|
||||
$obj->target_category_srl = Context::get('target_category');
|
||||
$obj->target_module_srl = intval(Context::get('module_srl') ?: Context::get('target_module_srl'));
|
||||
$obj->target_category_srl = intval(Context::get('target_category_srl'));
|
||||
$obj->manager_message = Context::get('message_content') ? nl2br(escape(strip_tags(Context::get('message_content')))) : '';
|
||||
$obj->send_message = $obj->manager_message || Context::get('send_default_message') == 'Y';
|
||||
$obj->return_message = '';
|
||||
|
|
@ -2587,12 +2655,12 @@ class documentController extends document
|
|||
$module_info = getModel('module')->getModuleInfoByModuleSrl($obj->target_module_srl);
|
||||
if (!$module_info->module_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
$module_grant = getModel('module')->getGrant($module_info, $logged_info);
|
||||
if (!$module_grant->manager)
|
||||
{
|
||||
return $this->setError('msg_not_permitted');
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2608,7 +2676,7 @@ class documentController extends document
|
|||
$obj->document_list = getModel('document')->getDocuments($obj->document_srl_list, false, false);
|
||||
if(empty($obj->document_list))
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
// Call a trigger (before)
|
||||
|
|
@ -2623,7 +2691,7 @@ class documentController extends document
|
|||
{
|
||||
if(!$obj->target_module_srl)
|
||||
{
|
||||
return $this->setError('fail_to_move');
|
||||
throw new Rhymix\Framework\Exception('fail_to_move');
|
||||
}
|
||||
|
||||
$output = $oController->moveDocumentModule($obj->document_srl_list, $obj->target_module_srl, $obj->target_category_srl);
|
||||
|
|
@ -2638,7 +2706,7 @@ class documentController extends document
|
|||
{
|
||||
if(!$obj->target_module_srl)
|
||||
{
|
||||
return $this->setError('fail_to_move');
|
||||
throw new Rhymix\Framework\Exception('fail_to_move');
|
||||
}
|
||||
|
||||
$output = $oController->copyDocumentModule($obj->document_srl_list, $obj->target_module_srl, $obj->target_category_srl);
|
||||
|
|
@ -2695,7 +2763,7 @@ class documentController extends document
|
|||
}
|
||||
else
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
// Call a trigger (after)
|
||||
|
|
@ -2764,13 +2832,13 @@ Content;
|
|||
$module_info = $oModuleModel->getModuleInfoByModuleSrl($srl);
|
||||
if (!$module_info->module_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
$module_grant = $oModuleModel->getGrant($module_info, $logged_info);
|
||||
if (!$module_grant->manager)
|
||||
{
|
||||
return $this->setError('msg_not_permitted');
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
|
||||
$module_srl[] = $srl;
|
||||
|
|
@ -2811,7 +2879,7 @@ Content;
|
|||
{
|
||||
if(!$this->module_srl)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
$obj = Context::getRequestVars();
|
||||
|
|
@ -2834,12 +2902,12 @@ Content;
|
|||
{
|
||||
if(!$oDocument->isGranted())
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
|
||||
if($oDocument->get('status') != $this->getConfigStatus('temp'))
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
$output = $this->updateDocument($oDocument, $obj);
|
||||
|
|
@ -2871,7 +2939,11 @@ Content;
|
|||
*/
|
||||
function procDocumentGetList()
|
||||
{
|
||||
if(!Context::get('is_logged')) return $this->setError('msg_not_permitted');
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
|
||||
$documentSrls = Context::get('document_srls');
|
||||
if($documentSrls) $documentSrlList = explode(',', $documentSrls);
|
||||
|
||||
|
|
|
|||
|
|
@ -438,7 +438,7 @@ class documentItem extends BaseObject
|
|||
$url = 'http://' . $url;
|
||||
}
|
||||
|
||||
return $url;
|
||||
return escape($url, false);
|
||||
}
|
||||
|
||||
function getMemberSrl()
|
||||
|
|
@ -570,7 +570,6 @@ class documentItem extends BaseObject
|
|||
$content = $this->get('content');
|
||||
$content = preg_replace_callback('/<(object|param|embed)[^>]*/is', array($this, '_checkAllowScriptAccess'), $content);
|
||||
$content = preg_replace_callback('/<object[^>]*>/is', array($this, '_addAllowScriptAccess'), $content);
|
||||
|
||||
if($strlen)
|
||||
{
|
||||
$content = trim(utf8_normalize_spaces(html_entity_decode(strip_tags($content))));
|
||||
|
|
|
|||
|
|
@ -448,7 +448,7 @@ class documentModel extends document
|
|||
$oDocument = $oDocumentModel->getDocument($document_srl, false, false, $columnList);
|
||||
$module_srl = $oDocument->get('module_srl');
|
||||
$member_srl = $oDocument->get('member_srl');
|
||||
if(!$module_srl) return $this->setError('msg_invalid_request');
|
||||
if(!$module_srl) throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
|
||||
$oModuleModel = getModel('module');
|
||||
$document_config = $oModuleModel->getModulePartConfig('document',$module_srl);
|
||||
|
|
@ -671,7 +671,8 @@ class documentModel extends document
|
|||
function getCategoryList($module_srl, $columnList = array())
|
||||
{
|
||||
// Category of the target module file swollen
|
||||
$filename = sprintf("%sfiles/cache/document_category/%s.php", _XE_PATH_, $module_srl);
|
||||
$module_srl = intval($module_srl);
|
||||
$filename = sprintf("%sfiles/cache/document_category/%d.php", _XE_PATH_, $module_srl);
|
||||
// If the target file to the cache file regeneration category
|
||||
if(!file_exists($filename))
|
||||
{
|
||||
|
|
@ -771,7 +772,8 @@ class documentModel extends document
|
|||
*/
|
||||
function getCategoryXmlFile($module_srl)
|
||||
{
|
||||
$xml_file = sprintf('files/cache/document_category/%s.xml.php',$module_srl);
|
||||
$module_srl = intval($module_srl);
|
||||
$xml_file = sprintf('files/cache/document_category/%d.xml.php',$module_srl);
|
||||
if(!file_exists($xml_file))
|
||||
{
|
||||
$oDocumentController = getController('document');
|
||||
|
|
@ -787,7 +789,8 @@ class documentModel extends document
|
|||
*/
|
||||
function getCategoryPhpFile($module_srl)
|
||||
{
|
||||
$php_file = sprintf('files/cache/document_category/%s.php',$module_srl);
|
||||
$module_srl = intval($module_srl);
|
||||
$php_file = sprintf('files/cache/document_category/%d.php',$module_srl);
|
||||
if(!file_exists($php_file))
|
||||
{
|
||||
$oDocumentController = getController('document');
|
||||
|
|
@ -855,8 +858,8 @@ class documentModel extends document
|
|||
*/
|
||||
function getDocumentCategories()
|
||||
{
|
||||
if(!Context::get('is_logged')) return $this->setError('msg_not_permitted');
|
||||
$module_srl = Context::get('module_srl');
|
||||
if(!Context::get('is_logged')) throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
$module_srl = intval(Context::get('module_srl'));
|
||||
$categories= $this->getCategoryList($module_srl);
|
||||
$lang = Context::get('lang');
|
||||
// No additional category
|
||||
|
|
@ -903,7 +906,7 @@ class documentModel extends document
|
|||
$extra_keys = $this->getExtraKeys($module_srl);
|
||||
Context::set('extra_keys', $extra_keys);
|
||||
$security = new Security();
|
||||
$security->encodeHTML('extra_keys..');
|
||||
$security->encodeHTML('extra_keys..', 'selected_var_idx');
|
||||
|
||||
// Get information of module_grants
|
||||
$oTemplate = &TemplateHandler::getInstance();
|
||||
|
|
@ -950,13 +953,13 @@ class documentModel extends document
|
|||
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl);
|
||||
// Check permissions
|
||||
$grant = $oModuleModel->getGrant($module_info, Context::get('logged_info'));
|
||||
if(!$grant->manager) return $this->setError('msg_not_permitted');
|
||||
if(!$grant->manager) throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
|
||||
$category_srl = Context::get('category_srl');
|
||||
$category_info = $this->getCategory($category_srl);
|
||||
if(!$category_info)
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
$this->add('category_info', $category_info);
|
||||
|
|
@ -1138,7 +1141,7 @@ class documentModel extends document
|
|||
{
|
||||
$args = new stdClass;
|
||||
$document_srl = Context::get('document_srl');
|
||||
if(!$document_srl) return $this->setError('msg_invalid_request');
|
||||
if(!$document_srl) throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
|
||||
$point = Context::get('point');
|
||||
if($point != -1) $point = 1;
|
||||
|
|
@ -1147,18 +1150,18 @@ class documentModel extends document
|
|||
$columnList = array('document_srl', 'module_srl');
|
||||
$oDocument = $oDocumentModel->getDocument($document_srl, false, false, $columnList);
|
||||
$module_srl = $oDocument->get('module_srl');
|
||||
if(!$module_srl) return $this->setError('msg_invalid_request');
|
||||
if(!$module_srl) throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
|
||||
$oModuleModel = getModel('module');
|
||||
$document_config = $oModuleModel->getModulePartConfig('document',$module_srl);
|
||||
if($point == -1)
|
||||
{
|
||||
if($document_config->use_vote_down!='S') return $this->setError('msg_invalid_request');
|
||||
if($document_config->use_vote_down!='S') throw new Rhymix\Framework\Exceptions\FeatureDisabled;
|
||||
$args->below_point = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if($document_config->use_vote_up!='S') return $this->setError('msg_invalid_request');
|
||||
if($document_config->use_vote_up!='S') throw new Rhymix\Framework\Exceptions\FeatureDisabled;
|
||||
$args->more_point = 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -36,9 +36,9 @@ class documentView extends document
|
|||
$oDocumentModel = getModel('document');
|
||||
// Creates an object for displaying the selected document
|
||||
$oDocument = $oDocumentModel->getDocument($document_srl, $this->grant->manager);
|
||||
if(!$oDocument->isExists()) return $this->setError('msg_invalid_request');
|
||||
if(!$oDocument->isExists()) throw new Rhymix\Framework\Exceptions\TargetNotFound;
|
||||
// Check permissions
|
||||
if(!$oDocument->isAccessible()) return $this->setError('msg_not_permitted');
|
||||
if(!$oDocument->isAccessible()) throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
// Information setting module
|
||||
//Context::set('module_info', $module_info); //module_info not use in UI
|
||||
// Browser title settings
|
||||
|
|
@ -58,7 +58,7 @@ class documentView extends document
|
|||
{
|
||||
if(!checkCSRF())
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\SecurityViolation;
|
||||
}
|
||||
|
||||
$content = Context::get('content');
|
||||
|
|
@ -87,8 +87,9 @@ class documentView extends document
|
|||
*/
|
||||
function dispDocumentManageDocument()
|
||||
{
|
||||
if(!Context::get('is_logged')) return $this->setError('msg_not_permitted');
|
||||
if(!Context::get('is_logged')) throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
// Taken from a list of selected sessions
|
||||
$document_srl_list = array();
|
||||
$flag_list = $_SESSION['document_management'];
|
||||
if(count($flag_list))
|
||||
{
|
||||
|
|
@ -105,14 +106,14 @@ class documentView extends document
|
|||
$document_list = $oDocumentModel->getDocuments($document_srl_list, $this->grant->is_admin);
|
||||
Context::set('document_list', $document_list);
|
||||
}
|
||||
else
|
||||
{
|
||||
Context::set('document_list', array());
|
||||
}
|
||||
|
||||
$oModuleModel = getModel('module');
|
||||
// The combination of module categories list and the list of modules
|
||||
if(count($module_list)>1) Context::set('module_list', $module_categories);
|
||||
|
||||
$module_srl=Context::get('module_srl');
|
||||
$module_srl = intval(Context::get('module_srl'));
|
||||
Context::set('module_srl',$module_srl);
|
||||
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl);
|
||||
$module_info = getModel('module')->getModuleInfoByModuleSrl($module_srl);
|
||||
Context::set('mid',$module_info->mid);
|
||||
Context::set('browser_title',$module_info->browser_title);
|
||||
|
||||
|
|
@ -172,7 +173,10 @@ class documentView extends document
|
|||
|
||||
$oMemberModel = getModel('member');
|
||||
// A message appears if the user is not logged-in
|
||||
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
|
||||
if(!$oMemberModel->isLogged())
|
||||
{
|
||||
throw new Rhymix\Framework\Exceptions\MustLogin;
|
||||
}
|
||||
// Get the saved document (module_srl is set to member_srl instead)
|
||||
$logged_info = Context::get('logged_info');
|
||||
$args = new stdClass();
|
||||
|
|
@ -206,7 +210,7 @@ class documentView extends document
|
|||
// A message appears if the user is not logged-in
|
||||
if(!$oMemberModel->isLogged())
|
||||
{
|
||||
return $this->stop('msg_not_logged');
|
||||
throw new Rhymix\Framework\Exceptions\MustLogin;
|
||||
}
|
||||
|
||||
// Create the document object. If the document module of basic data structures, write it all works .. -_-;
|
||||
|
|
@ -215,12 +219,12 @@ class documentView extends document
|
|||
$oDocument = $oDocumentModel->getDocument($document_srl, $this->grant->manager, FALSE);
|
||||
if(!$oDocument->isExists())
|
||||
{
|
||||
return $this->setError('msg_invalid_request');
|
||||
throw new Rhymix\Framework\Exceptions\TargetNotFound;
|
||||
}
|
||||
// Check permissions
|
||||
if(!$oDocument->isAccessible())
|
||||
{
|
||||
return $this->setError('msg_not_permitted');
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
|
||||
// Browser title settings
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ $lang->category_title = 'Category';
|
|||
$lang->category_color = 'Category Font Color';
|
||||
$lang->expand = 'Expand';
|
||||
$lang->category_group_srls = 'Accessable Group';
|
||||
$lang->cmd_document_module_config = 'Basic Settings';
|
||||
$lang->cmd_make_child = 'Add Child Category';
|
||||
$lang->cmd_pc_icon_setting = 'PC icon setting';
|
||||
$lang->cmd_mobile_icon_setting = 'Mobile icon setting';
|
||||
|
|
@ -27,7 +28,6 @@ $lang->msg_category_not_moved = 'Could not be moved';
|
|||
$lang->msg_is_secret = 'This is a secret article.';
|
||||
$lang->msg_checked_document_is_deleted = '%d article(s) was(were) deleted.';
|
||||
$lang->msg_document_is_admin_not_permitted = 'You don\'t have permission to delete the posts of Top Admin.';
|
||||
$lang->msg_document_voted_cancel_not = '';
|
||||
$lang->move_target_module = 'Target module ';
|
||||
$lang->search_target_list['title'] = 'Subject';
|
||||
$lang->search_target_list['content'] = 'Content';
|
||||
|
|
|
|||
|
|
@ -1,30 +1,31 @@
|
|||
<?php
|
||||
$lang->document_list = '문서 목록';
|
||||
$lang->view_count_option = '조회수 설정';
|
||||
$lang->view_count_option = '조회 수 설정';
|
||||
$lang->view_count_option_all = '모두 계산';
|
||||
$lang->view_count_option_some = '일부 계산';
|
||||
$lang->view_count_option_once = '중복 금지';
|
||||
$lang->view_count_option_none = '계산 안함';
|
||||
$lang->view_count_option_none = '계산 안 함';
|
||||
$lang->cmd_document_module_config = '기본 설정';
|
||||
$lang->cmd_delete_all_thumbnail = '섬네일 모두 삭제';
|
||||
$lang->cmd_pc_icon_setting = 'PC아이콘 설정';
|
||||
$lang->cmd_pc_icon_setting = 'PC 아이콘 설정';
|
||||
$lang->cmd_mobile_icon_setting = '모바일 아이콘 설정';
|
||||
$lang->title_bold = '제목 굵게';
|
||||
$lang->title_color = '제목 색깔';
|
||||
$lang->new_document_count = '새 글';
|
||||
$lang->parent_category_title = '상위 카테고리 명';
|
||||
$lang->parent_category_title = '상위 분류 명';
|
||||
$lang->category_title = '분류 명';
|
||||
$lang->category_color = '분류 폰트색깔';
|
||||
$lang->category_color = '분류 폰트 색깔';
|
||||
$lang->expand = '펼침';
|
||||
$lang->category_group_srls = '그룹 제한';
|
||||
$lang->cmd_make_child = '하위 카테고리 추가';
|
||||
$lang->cmd_enable_move_category = '카테고리 위치 변경 (선택 후 위 메뉴를 드래그하세요.)';
|
||||
$lang->about_category_title = '카테고리 이름을 입력해주세요.';
|
||||
$lang->about_view_count_option = '조회수설정에 따라 중복 조회수 카운트를 할 수 있도록 도와줍니다. 각 옵션에 따라 조회수 기록하는 방식이 달라집니다.';
|
||||
$lang->cmd_make_child = '하위 분류 추가';
|
||||
$lang->cmd_enable_move_category = '분류 위치 변경 (선택 후 위 메뉴를 드래그하세요.)';
|
||||
$lang->about_category_title = '분류 이름을 입력해주세요.';
|
||||
$lang->about_view_count_option = '조회 수 설정에 따라 중복 조회 수 카운트를 할 수 있도록 도와줍니다. 각 옵션에 따라 조회 수를 기록하는 방식이 달라집니다.';
|
||||
$lang->about_expand = '선택하면 늘 펼쳐진 상태로 있게 합니다.';
|
||||
$lang->about_category_group_srls = '선택한 그룹만 현재 카테고리를 지정할 수 있도록 합니다.';
|
||||
$lang->about_category_color = '분류 폰트색깔을 지정합니다. 예) red 또는 #ff0000';
|
||||
$lang->about_cmd_pc_icon_setting = '게시판 새로운 글 혹은 수정되었을 때 출력하는 아이콘입니다. 기본값은 default 입니다. 사용않함을 선택할 경우 default 스킨이 기본값으로 출력됩니다.';
|
||||
$lang->about_cmd_mobile_icon_setting = '게시판 새로운 글 혹은 수정되었을 때 출력하는 아이콘입니다. 기본값은 default 입니다. 사용않함을 선택할 경우 default 스킨이 기본값으로 출력됩니다.';
|
||||
$lang->about_category_group_srls = '선택한 그룹만 현재 분류를 지정할 수 있도록 합니다.';
|
||||
$lang->about_category_color = '분류 폰트 색깔을 지정합니다. 예) red 또는 #ff0000';
|
||||
$lang->about_cmd_pc_icon_setting = '새로운 글이 등록되었거나 수정되었을 때 출력하는 아이콘입니다. 기본값은 default입니다. 사용 안 함을 선택할 경우 default 스킨이 기본값으로 출력됩니다.';
|
||||
$lang->about_cmd_mobile_icon_setting = '새로운 글이 등록되었거나 수정되었을 때 출력하는 아이콘입니다. 기본값은 default입니다. 사용 안 함을 선택할 경우 default 스킨이 기본값으로 출력됩니다.';
|
||||
$lang->cmd_search_next = '계속 검색';
|
||||
$lang->cmd_temp_save = '임시 저장';
|
||||
$lang->cmd_toggle_checked_document = '선택항목 반전';
|
||||
|
|
@ -34,8 +35,7 @@ $lang->msg_cart_is_null = '삭제할 글을 선택해주세요.';
|
|||
$lang->msg_category_not_moved = '이동할 수 없습니다.';
|
||||
$lang->msg_is_secret = '비밀글입니다.';
|
||||
$lang->msg_checked_document_is_deleted = '%d개의 글이 삭제되었습니다.';
|
||||
$lang->msg_document_is_admin_not_permitted = '최고관리자의 게시글을 지울 권한이 없습니다.';
|
||||
$lang->msg_document_voted_cancel_not = '추천수가 0이하일 경우 추천캔슬을 사용할 수 없습니다.';
|
||||
$lang->msg_document_is_admin_not_permitted = '최고 관리자의 게시글을 삭제할 권한이 없습니다.';
|
||||
$lang->move_target_module = '대상 페이지';
|
||||
$lang->search_target_list['title'] = '제목';
|
||||
$lang->search_target_list['content'] = '내용';
|
||||
|
|
@ -59,16 +59,16 @@ $lang->search_target_list['last_update'] = '최근 수정일';
|
|||
$lang->search_target_list['ipaddress'] = 'IP 주소';
|
||||
$lang->alias = '별칭(Alias)';
|
||||
$lang->history = '히스토리';
|
||||
$lang->about_use_history = '히스토리 기능의 사용여부를 지정합니다. 히스토리 기능을 사용할 경우, 문서 수정 후 이전 수정판으로 복원할 수 있습니다.';
|
||||
$lang->about_use_history = '히스토리 기능의 사용 여부를 지정합니다. 히스토리 기능을 사용할 경우, 문서 수정 후 이전 수정판으로 복원할 수 있습니다.';
|
||||
$lang->trace_only = '흔적만 남김';
|
||||
$lang->cmd_declared_message = '신고 알림 쪽지';
|
||||
$lang->cmd_declared_message_admin = '최고관리자';
|
||||
$lang->cmd_declared_message_admin = '최고 관리자';
|
||||
$lang->cmd_declared_message_manager = '게시판 관리자';
|
||||
$lang->cmd_trash = '휴지통';
|
||||
$lang->cmd_restore = '복원';
|
||||
$lang->cmd_restore_all = '모두 복원';
|
||||
$lang->in_trash = '휴지통';
|
||||
$lang->trash_nick_name = '옮긴사람';
|
||||
$lang->trash_nick_name = '옮긴 사람';
|
||||
$lang->trash_date = '삭제 날짜';
|
||||
$lang->trash_description = '설명';
|
||||
$lang->success_trashed = '휴지통으로 이동되었습니다.';
|
||||
|
|
@ -84,9 +84,9 @@ $lang->selected_document_move = '선택한 글을 다음 위치로 옮기거나
|
|||
$lang->select_module = '모듈을 선택하세요.';
|
||||
$lang->select_module_id = '모듈 아이디를 선택하세요.';
|
||||
$lang->select_category = '분류를 선택하세요.';
|
||||
$lang->category_description = '카테고리 설명';
|
||||
$lang->category_description = '분류 설명';
|
||||
$lang->no_title_document = '제목이 없는 문서입니다.';
|
||||
$lang->msg_admin_document_no_move_to_trash = '최고관리자의 게시물을 휴지통으로 이동시킬 권한이 없습니다.';
|
||||
$lang->msg_admin_document_no_move_to_trash = '최고 관리자의 게시물을 휴지통으로 이동시킬 권한이 없습니다.';
|
||||
$lang->send_default_message = '기본 내용으로만 쪽지 보내기';
|
||||
$lang->default_message_format = '관리자에 의해 게시물이 %1$s되었습니다.';
|
||||
$lang->default_message_verbs['move'] = '다른 게시판으로 이동';
|
||||
|
|
|
|||
|
|
@ -19,9 +19,9 @@
|
|||
<group pipe="and">
|
||||
<condition operation="like" column="title" var="s_title" />
|
||||
<condition operation="like" column="content" var="s_content" pipe="or" />
|
||||
<condition operation="equal" column="user_name" var="s_user_name" pipe="or" />
|
||||
<condition operation="equal" column="user_id" var="s_user_id" pipe="or" />
|
||||
<condition operation="equal" column="nick_name" var="s_nick_name" pipe="or" />
|
||||
<condition operation="like_prefix" column="user_name" var="s_user_name" pipe="or" />
|
||||
<condition operation="like_prefix" column="user_id" var="s_user_id" pipe="or" />
|
||||
<condition operation="like_prefix" column="nick_name" var="s_nick_name" pipe="or" />
|
||||
<condition operation="like" column="email_address" var="s_email_address" pipe="or" />
|
||||
<condition operation="like" column="homepage" var="s_homepage" pipe="or" />
|
||||
<condition operation="like" column="tags" var="s_tags" pipe="or" />
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<columns>
|
||||
<column name="d.*" />
|
||||
</columns>
|
||||
<index_hint name="idx_document_list_order" type="use" />
|
||||
<index_hint name="idx_document_list_order" type="use" />
|
||||
<conditions>
|
||||
<condition operation="equal" column="ev.eid" var="sort_index" />
|
||||
<condition operation="equal" column="ev.document_srl" default="d.document_srl" pipe="and" />
|
||||
|
|
@ -23,9 +23,9 @@
|
|||
<group pipe="and">
|
||||
<condition operation="like" column="d.title" var="s_title" />
|
||||
<condition operation="like" column="d.content" var="s_content" pipe="or" />
|
||||
<condition operation="equal" column="d.user_name" var="s_user_name" pipe="or" />
|
||||
<condition operation="equal" column="d.user_id" var="s_user_id" pipe="or" />
|
||||
<condition operation="equal" column="d.nick_name" var="s_nick_name" pipe="or" />
|
||||
<condition operation="like_prefix" column="d.user_name" var="s_user_name" pipe="or" />
|
||||
<condition operation="like_prefix" column="d.user_id" var="s_user_id" pipe="or" />
|
||||
<condition operation="like_prefix" column="d.nick_name" var="s_nick_name" pipe="or" />
|
||||
<condition operation="like" column="d.email_address" var="s_email_address" pipe="or" />
|
||||
<condition operation="like" column="d.homepage" var="s_homepage" pipe="or" />
|
||||
<condition operation="like" column="d.tags" var="s_tags" pipe="or" />
|
||||
|
|
@ -46,6 +46,9 @@
|
|||
<condition operation="less" column="d.last_update" var="end_date" pipe="and" />
|
||||
</group>
|
||||
</conditions>
|
||||
<groups>
|
||||
<group column="d.document_srl" />
|
||||
</groups>
|
||||
<navigation>
|
||||
<index var="ev.value" default="ev.value" order="order_type" />
|
||||
<list_count var="list_count" default="20" />
|
||||
|
|
|
|||
|
|
@ -19,9 +19,9 @@
|
|||
<group pipe="and">
|
||||
<condition operation="like" column="title" var="s_title" />
|
||||
<condition operation="like" column="content" var="s_content" pipe="or" />
|
||||
<condition operation="equal" column="user_name" var="s_user_name" pipe="or" />
|
||||
<condition operation="equal" column="user_id" var="s_user_id" pipe="or" />
|
||||
<condition operation="equal" column="nick_name" var="s_nick_name" pipe="or" />
|
||||
<condition operation="like_prefix" column="user_name" var="s_user_name" pipe="or" />
|
||||
<condition operation="like_prefix" column="user_id" var="s_user_id" pipe="or" />
|
||||
<condition operation="like_prefix" column="nick_name" var="s_nick_name" pipe="or" />
|
||||
<condition operation="like" column="email_address" var="s_email_addres" pipe="or" />
|
||||
<condition operation="like" column="homepage" var="s_homepage" pipe="or" />
|
||||
<condition operation="like" column="tags" var="s_tags" pipe="or" />
|
||||
|
|
|
|||
|
|
@ -22,9 +22,9 @@
|
|||
<group pipe="and">
|
||||
<condition operation="like" column="title" var="s_title" />
|
||||
<condition operation="like" column="content" var="s_content" pipe="or" />
|
||||
<condition operation="equal" column="user_name" var="s_user_name" pipe="or" />
|
||||
<condition operation="equal" column="user_id" var="s_user_id" pipe="or" />
|
||||
<condition operation="equal" column="nick_name" var="s_nick_name" pipe="or" />
|
||||
<condition operation="like_prefix" column="user_name" var="s_user_name" pipe="or" />
|
||||
<condition operation="like_prefix" column="user_id" var="s_user_id" pipe="or" />
|
||||
<condition operation="like_prefix" column="nick_name" var="s_nick_name" pipe="or" />
|
||||
<condition operation="like" column="email_address" var="s_email_address" pipe="or" />
|
||||
<condition operation="like" column="homepage" var="s_homepage" pipe="or" />
|
||||
<condition operation="like" column="tags" var="s_tags" pipe="or" />
|
||||
|
|
|
|||
|
|
@ -27,9 +27,9 @@
|
|||
<group pipe="and">
|
||||
<condition operation="like" column="documents.title" var="s_title" />
|
||||
<condition operation="like" column="documents.content" var="s_content" pipe="or" />
|
||||
<condition operation="equal" column="documents.user_name" var="s_user_name" pipe="or" />
|
||||
<condition operation="equal" column="documents.user_id" var="s_user_id" pipe="or" />
|
||||
<condition operation="equal" column="documents.nick_name" var="s_nick_name" pipe="or" />
|
||||
<condition operation="like_prefix" column="documents.user_name" var="s_user_name" pipe="or" />
|
||||
<condition operation="like_prefix" column="documents.user_id" var="s_user_id" pipe="or" />
|
||||
<condition operation="like_prefix" column="documents.nick_name" var="s_nick_name" pipe="or" />
|
||||
<condition operation="like" column="documents.email_address" var="s_email_address" pipe="or" />
|
||||
<condition operation="like" column="documents.homepage" var="s_homepage" pipe="or" />
|
||||
<condition operation="like" column="documents.tags" var="s_tags" pipe="or" />
|
||||
|
|
|
|||
|
|
@ -24,9 +24,9 @@
|
|||
<group pipe="and">
|
||||
<condition operation="like" column="d.title" var="s_title" />
|
||||
<condition operation="like" column="d.content" var="s_content" pipe="or" />
|
||||
<condition operation="equal" column="d.user_name" var="s_user_name" pipe="or" />
|
||||
<condition operation="equal" column="d.user_id" var="s_user_id" pipe="or" />
|
||||
<condition operation="equal" column="d.nick_name" var="s_nick_name" pipe="or" />
|
||||
<condition operation="like_prefix" column="d.user_name" var="s_user_name" pipe="or" />
|
||||
<condition operation="like_prefix" column="d.user_id" var="s_user_id" pipe="or" />
|
||||
<condition operation="like_prefix" column="d.nick_name" var="s_nick_name" pipe="or" />
|
||||
<condition operation="like" column="d.email_address" var="s_email_addres" pipe="or" />
|
||||
<condition operation="like" column="d.homepage" var="s_homepage" pipe="or" />
|
||||
<condition operation="like" column="d.tags" var="s_tags" pipe="or" />
|
||||
|
|
@ -52,6 +52,9 @@
|
|||
<condition operation="equal" column="es.document_srl" default="d.document_srl" pipe="and" />
|
||||
</group>
|
||||
</conditions>
|
||||
<groups>
|
||||
<group column="d.document_srl" />
|
||||
</groups>
|
||||
<navigation>
|
||||
<index var="ev.value" default="ev.value" order="order_type" />
|
||||
<list_count var="list_count" default="20" />
|
||||
|
|
|
|||
|
|
@ -13,8 +13,8 @@
|
|||
<group pipe="and">
|
||||
<condition operation="like" column="documents.title" var="s_title" />
|
||||
<condition operation="like" column="documents.content" var="s_content" pipe="or" />
|
||||
<condition operation="equal" column="documents.user_name" var="s_user_name" pipe="or" />
|
||||
<condition operation="equal" column="documents.nick_name" var="s_nick_name" pipe="or" />
|
||||
<condition operation="like_prefix" column="documents.user_name" var="s_user_name" pipe="or" />
|
||||
<condition operation="like_prefix" column="documents.nick_name" var="s_nick_name" pipe="or" />
|
||||
<condition operation="like" column="documents.email_address" var="s_email_address" pipe="or" />
|
||||
<condition operation="like" column="documents.homepage" var="s_homepage" pipe="or" />
|
||||
<condition operation="like" column="documents.tags" var="s_tags" pipe="or" />
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="document_srl" var="document_srl" filter="number" notnull="notnull" />
|
||||
<condition operation="equal" column="point" var="point" filter="number" />
|
||||
<group pipe="and">
|
||||
<condition operation="equal" column="member_srl" var="member_srl" filter="number" pipe="and" />
|
||||
<condition operation="equal" column="ipaddress" var="ipaddress" pipe="and" />
|
||||
|
|
|
|||
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