Merge pull request #7 from xpressengine/develop

원본 Repository와 동기화 하기
This commit is contained in:
퍼니엑스이 2014-03-29 13:28:42 +09:00
commit c9ef5273ca
54 changed files with 472 additions and 189 deletions

View file

@ -261,7 +261,7 @@
success: function (data) { success: function (data) {
var oembedData = $.extend({}, data); var oembedData = $.extend({}, data);
oembedData.code = embedProvider.templateData(data); oembedData.code = embedProvider.templateData(data);
success(oembedData, externalUrl, container); if(oembedData.code) success(oembedData, externalUrl, container);
}, },
error: settings.onError.call(container, externalUrl, embedProvider) error: settings.onError.call(container, externalUrl, embedProvider)
}, settings.ajaxOptions || {}); }, settings.ajaxOptions || {});
@ -389,8 +389,8 @@
$.fn.oembed.getGenericCode = function (url, oembedData) { $.fn.oembed.getGenericCode = function (url, oembedData) {
var title = (oembedData.title !== null) ? oembedData.title : url, var title = (oembedData.title !== null) ? oembedData.title : url,
code = '<a href="' + url + '">' + title + '</a>'; code = '';
if(oembedData.html) code += "<div>" + oembedData.html + "</div>"; if(oembedData.html) code += '<blockquote class="oembedall-blockquote"><strong>' + title + '</strong><br>' + jQuery(oembedData.html).text().substring(0,200) + '... <a href="'+url+'">more</a></blockquote>';
return code; return code;
}; };
@ -849,7 +849,7 @@
templateData: function (data) { templateData: function (data) {
if(!data.parse) return false; if(!data.parse) return false;
var text = data.parse['text']['*'].replace(/href="\/wiki/g, 'href="http://en.wikipedia.org/wiki'); var text = data.parse['text']['*'].replace(/href="\/wiki/g, 'href="http://en.wikipedia.org/wiki');
return '<div id="content"><h3><a class="nav-link" href="http://en.wikipedia.org/wiki/' + data.parse['displaytitle'] + '">' + data.parse['displaytitle'] + '</a></h3>' + text + '</div>'; return '<div id="content"><blockquote class="oembedall-blockquote"><strong>' + data.parse['displaytitle'] + '</strong><br>' +jQuery(text).text().substring(0,200) + '...</blockquote></div>';
} }
}), }),
new $.fn.oembed.OEmbedProvider("imdb", "rich", ["imdb.com/title/.+"], "http://www.imdbapi.com/?i=$1&callback=?", { new $.fn.oembed.OEmbedProvider("imdb", "rich", ["imdb.com/title/.+"], "http://www.imdbapi.com/?i=$1&callback=?", {

File diff suppressed because one or more lines are too long

View file

@ -9,7 +9,7 @@ if(!defined('__XE__'))
* @author NAVER (developers@xpressengine.com) * @author NAVER (developers@xpressengine.com)
* @brief Add-on to resize images in the body * @brief Add-on to resize images in the body
*/ */
if($called_position == 'after_module_proc' && Context::getResponseMethod() == "HTML" || !isCrawler()) if($called_position == 'after_module_proc' && (Context::getResponseMethod() == "HTML" || !isCrawler()))
{ {
if(Mobile::isFromMobilePhone()) if(Mobile::isFromMobilePhone())
{ {

View file

@ -84,7 +84,7 @@ class CacheApc extends CacheBase
if($modified_time > 0 && $modified_time > $obj[0]) if($modified_time > 0 && $modified_time > $obj[0])
{ {
$this->delete($_key); $this->delete($key);
return false; return false;
} }
@ -110,7 +110,7 @@ class CacheApc extends CacheBase
if($modified_time > 0 && $modified_time > $obj[0]) if($modified_time > 0 && $modified_time > $obj[0])
{ {
$this->delete($_key); $this->delete($key);
return false; return false;
} }
@ -125,7 +125,8 @@ class CacheApc extends CacheBase
*/ */
function delete($key) function delete($key)
{ {
return apc_delete($key); $_key = md5(_XE_PATH_ . $key);
return apc_delete($_key);
} }
/** /**

View file

@ -164,12 +164,13 @@ class DisplayHandler extends Handler
array( array(
'Request / Response info >>> ' . $_SERVER['REQUEST_METHOD'] . ' / ' . Context::getResponseMethod(), 'Request / Response info >>> ' . $_SERVER['REQUEST_METHOD'] . ' / ' . Context::getResponseMethod(),
array( array(
array('Request URI', 'Request method', 'Response method', 'Response contents size'), array('Request URI', 'Request method', 'Response method', 'Response contents size', 'Memory peak usage'),
array( array(
sprintf("%s:%s%s%s%s", $_SERVER['SERVER_NAME'], $_SERVER['SERVER_PORT'], $_SERVER['PHP_SELF'], $_SERVER['QUERY_STRING'] ? '?' : '', $_SERVER['QUERY_STRING']), sprintf("%s:%s%s%s%s", $_SERVER['SERVER_NAME'], $_SERVER['SERVER_PORT'], $_SERVER['PHP_SELF'], $_SERVER['QUERY_STRING'] ? '?' : '', $_SERVER['QUERY_STRING']),
$_SERVER['REQUEST_METHOD'], $_SERVER['REQUEST_METHOD'],
Context::getResponseMethod(), Context::getResponseMethod(),
$this->content_size . ' byte' $this->content_size . ' byte',
FileHandler::filesize(memory_get_peak_usage())
) )
) )
), ),

View file

@ -63,7 +63,7 @@ class HTMLDisplayHandler
// add .x div for adminitration pages // add .x div for adminitration pages
if(Context::getResponseMethod() == 'HTML') if(Context::getResponseMethod() == 'HTML')
{ {
if(Context::get('module') != 'admin' && strpos(Context::get('act'), 'Admin') > 0) if(Context::get('module') != 'admin' && strpos(Context::get('act'), 'Admin') > 0 && Context::get('act') != 'dispPageAdminContentModify' && Context::get('act') != 'dispPageAdminMobileContentModify')
{ {
$output = '<div class="x">' . $output . '</div>'; $output = '<div class="x">' . $output . '</div>';
} }
@ -174,7 +174,7 @@ class HTMLDisplayHandler
$output = preg_replace_callback('!<meta(.*?)(?:\/|)>!is', array($this, '_moveMetaToHeader'), $output); $output = preg_replace_callback('!<meta(.*?)(?:\/|)>!is', array($this, '_moveMetaToHeader'), $output);
// change a meta fine(widget often put the tag like <!--Meta:path--> to the content because of caching) // change a meta fine(widget often put the tag like <!--Meta:path--> to the content because of caching)
$output = preg_replace_callback('/<!--(#)?Meta:([a-z0-9\_\/\.\@]+)-->/is', array($this, '_transMeta'), $output); $output = preg_replace_callback('/<!--(#)?Meta:([a-z0-9\_\-\/\.\@]+)-->/is', array($this, '_transMeta'), $output);
// handles a relative path generated by using the rewrite module // handles a relative path generated by using the rewrite module
if(Context::isAllowRewrite()) if(Context::isAllowRewrite())

View file

@ -263,10 +263,6 @@ class ExtraItem
{ {
$values = explode('|@|', $value); $values = explode('|@|', $value);
} }
elseif(strpos($value, ',') !== false)
{
$values = explode(',', $value);
}
else else
{ {
$values = array($value); $values = array($value);
@ -462,6 +458,8 @@ class ExtraItem
} }
if($this->desc) if($this->desc)
{ {
$oModuleController = getController('module');
$oModuleController->replaceDefinedLangCode($this->desc);
$buff[] = '<p>' . htmlspecialchars($this->desc, ENT_COMPAT | ENT_HTML401, 'UTF-8', false) . '</p>'; $buff[] = '<p>' . htmlspecialchars($this->desc, ENT_COMPAT | ENT_HTML401, 'UTF-8', false) . '</p>';
} }

View file

@ -163,7 +163,7 @@ class XEHttpRequest
$chunk_size = hexdec(fgets($sock)); $chunk_size = hexdec(fgets($sock));
if($chunk_size) if($chunk_size)
{ {
$body .= fread($sock, $chunk_size); $body .= fgets($sock, $chunk_size+1);
} }
} }
else else

View file

@ -45,6 +45,10 @@ a img {
} }
} }
.xe-widget-wrapper {
overflow: hidden;
}
/* Popup Menu Area */ /* Popup Menu Area */
#popup_menu_area { #popup_menu_area {
position: absolute; position: absolute;

View file

@ -29,7 +29,7 @@ define('__ZBXE__', __XE__);
/** /**
* Display XE's full version. * Display XE's full version.
*/ */
define('__XE_VERSION__', '1.7.4'); define('__XE_VERSION__', '1.7.5-beta1');
/** /**
* @deprecated __ZBXE_VERSION__ will be removed. Use __XE_VERSION__ instead. * @deprecated __ZBXE_VERSION__ will be removed. Use __XE_VERSION__ instead.

View file

@ -776,7 +776,7 @@ function debugPrint($debug_output = NULL, $display_option = TRUE, $file = '_debu
} }
$type = FirePHP::INFO; $type = FirePHP::INFO;
$label = sprintf('[%s:%d] %s() (m:%s)', $file_name, $line_num, $function, FileHandler::filesize(memory_get_usage())); $label = sprintf('[%s:%d] %s() (Memory usage: current=%s, peak=%s)', $file_name, $line_num, $function, FileHandler::filesize(memory_get_usage()), FileHandler::filesize(memory_get_peak_usage()));
// Check a FirePHP option // Check a FirePHP option
if($display_option === 'TABLE') if($display_option === 'TABLE')

View file

@ -95,6 +95,81 @@ class adminAdminModel extends admin
} }
} }
function getFTPPath()
{
$ftp_info = Context::getRequestVars();
if(!$ftp_info->ftp_host)
{
$ftp_info->ftp_host = "127.0.0.1";
}
if(!$ftp_info->ftp_port || !is_numeric($ftp_info->ftp_port))
{
$ftp_info->ftp_port = '22';
}
$connection = ftp_connect($ftp_info->ftp_host, $ftp_info->ftp_port);
if(!$connection)
{
return new Object(-1, sprintf(Context::getLang('msg_ftp_not_connected'), $ftp_host));
}
$login_result = @ftp_login($connection, $ftp_info->ftp_user, $ftp_info->ftp_password);
if(!$login_result)
{
ftp_close($connection);
return new Object(-1, 'msg_ftp_invalid_auth_info');
}
// create temp file
$pin = $_SERVER['REQUEST_TIME'];
FileHandler::writeFile('./files/cache/ftp_check', $pin);
// create path candidate
$xe_path = _XE_PATH_;
$path_info = array_reverse(explode('/', _XE_PATH_));
array_pop($path_info); // remove last '/'
$path_candidate = array();
$temp = '';
foreach($path_info as $path)
{
$temp = '/' . $path . $temp;
$path_candidate[] = $temp;
}
// try
foreach($path_candidate as $path)
{
// upload check file
if(!ftp_put($connection, $path . 'ftp_check.html', FileHandler::getRealPath('./files/cache/ftp_check'), FTP_BINARY))
{
continue;
}
// get check file
$result = FileHandler::getRemoteResource(getNotencodedFullUrl() . 'ftp_check.html');
// delete temp check file
ftp_delete($connection, $path . 'ftp_check.html');
// found
if($result == $pin)
{
$found_path = $path;
break;
}
}
FileHandler::removeFile('./files/cache/ftp_check', $pin);
if($found_path)
{
$this->add('found_path', $found_path);
}
}
/** /**
* Find XE installed path on ftp * Find XE installed path on ftp
*/ */
@ -130,6 +205,15 @@ class adminAdminModel extends admin
return $this->getSFTPPath(); return $this->getSFTPPath();
} }
if($ftp_info->ftp_pasv == 'N')
{
if(function_exists('ftp_connect'))
{
return $this->getFTPPath();
}
$ftp_info->ftp_pasv = "Y";
}
$oFTP = new ftp(); $oFTP = new ftp();
if(!$oFTP->ftp_connect($ftp_info->ftp_host, $ftp_info->ftp_port)) if(!$oFTP->ftp_connect($ftp_info->ftp_host, $ftp_info->ftp_port))
{ {

View file

@ -18,8 +18,8 @@
<description xml:lang="ru">Модуль для функционирования форума. Также включает в себя функции администратора такие как создание/управление форумами.</description> <description xml:lang="ru">Модуль для функционирования форума. Также включает в себя функции администратора такие как создание/управление форумами.</description>
<description xml:lang="zh-TW">提供用戶相對應的討論板功能,包含建立/新增及管理等功能。</description> <description xml:lang="zh-TW">提供用戶相對應的討論板功能,包含建立/新增及管理等功能。</description>
<description xml:lang="tr">Pano yapılandırmaları için kullanılan modüldür. Ayrıca oluşturma/yönetme gibi yönetici özellikleri de içerir.</description> <description xml:lang="tr">Pano yapılandırmaları için kullanılan modüldür. Ayrıca oluşturma/yönetme gibi yönetici özellikleri de içerir.</description>
<version>1.7.2-beta.3</version> <version>1.7.2</version>
<date>2014-01-09</date> <date>2014-03-20</date>
<category>service</category> <category>service</category>
<author email_address="developers@xpressengine.com" link="http://xpressengine.com/"> <author email_address="developers@xpressengine.com" link="http://xpressengine.com/">

View file

@ -340,6 +340,35 @@ class commentAdminController extends comment
} }
} }
/**
* @fn procCommentAdminMoveToTrash
* @brief move a comment to trash
* @see commentModel::getCommentMenu
*/
function procCommentAdminMoveToTrash()
{
$oDB = DB::getInstance();
$oDB->begin();
$comment_srl = Context::get('comment_srl');
$oCommentModel = getModel('comment');
$oCommentController = getController('comment');
$oComment = $oCommentModel->getComment($comment_srl, false);
if(!$oComment->isGranted()) return $this->stop('msg_not_permitted');
$message_content = "";
$this->_moveCommentToTrash(array($comment_srl), $oCommentController, $oDB, $message_content);
$isTrash = true;
$output = $oCommentController->deleteComment($comment_srl, TRUE, $isTrash);
$oDB->commit();
$returnUrl = Context::get('cur_url');
$this->add('redirect_url', $returnUrl);
}
/** /**
* Cancel the blacklist of abused comments reported by other users * Cancel the blacklist of abused comments reported by other users
* @return void|object * @return void|object

View file

@ -52,7 +52,7 @@ class commentAdminView extends comment
// get a list by using comment->getCommentList. // get a list by using comment->getCommentList.
$oCommentModel = getModel('comment'); $oCommentModel = getModel('comment');
$secretNameList = $oCommentModel->getSecretNameList(); $secretNameList = $oCommentModel->getSecretNameList();
$columnList = array('comment_srl', 'document_srl', 'is_secret', 'status', 'content', 'comments.member_srl', 'comments.nick_name', 'comments.regdate', 'ipaddress', 'voted_count', 'blamed_count'); $columnList = array('comment_srl', 'document_srl','module_srl','is_secret', 'status', 'content', 'comments.member_srl', 'comments.nick_name', 'comments.regdate', 'ipaddress', 'voted_count', 'blamed_count');
$output = $oCommentModel->getTotalCommentList($args, $columnList); $output = $oCommentModel->getTotalCommentList($args, $columnList);
// $modules = $oCommentModel->getDistinctModules(); // $modules = $oCommentModel->getDistinctModules();
@ -66,6 +66,31 @@ class commentAdminView extends comment
// Context::set('modules_list', $modules_list); // Context::set('modules_list', $modules_list);
Context::set('page_navigation', $output->page_navigation); Context::set('page_navigation', $output->page_navigation);
Context::set('secret_name_list', $secretNameList); Context::set('secret_name_list', $secretNameList);
$oModuleModel = getModel('module');
$module_list = array();
$mod_srls = array();
foreach($output->data as $val)
{
$mod_srls[] = $val->module_srl;
}
$mod_srls = array_unique($mod_srls);
// Module List
$mod_srls_count = count($mod_srls);
if($mod_srls_count)
{
$columnList = array('module_srl', 'mid', 'browser_title');
$module_output = $oModuleModel->getModulesInfo($mod_srls, $columnList);
if($module_output && is_array($module_output))
{
foreach($module_output as $module)
{
$module_list[$module->module_srl] = $module;
}
}
}
Context::set('module_list', $module_list);
// set the template // set the template
$this->setTemplatePath($this->module_path . 'tpl'); $this->setTemplatePath($this->module_path . 'tpl');
$this->setTemplateFile('comment_list'); $this->setTemplateFile('comment_list');

View file

@ -266,9 +266,13 @@ class commentController extends comment
return new Object(-1, 'msg_invalid_request'); return new Object(-1, 'msg_invalid_request');
} }
if($obj->homepage && !preg_match('/^[a-z]+:\/\//i', $obj->homepage)) if($obj->homepage)
{ {
$obj->homepage = 'http://' . $obj->homepage; $obj->homepage = removeHackTag($obj->homepage);
if(!preg_match('/^[a-z]+:\/\//i',$obj->homepage))
{
$obj->homepage = 'http://'.$obj->homepage;
}
} }
// input the member's information if logged-in // input the member's information if logged-in
@ -655,9 +659,13 @@ class commentController extends comment
$obj->password = md5($obj->password); $obj->password = md5($obj->password);
} }
if($obj->homepage && !preg_match('/^[a-z]+:\/\//i', $obj->homepage)) if($obj->homepage)
{ {
$obj->homepage = 'http://' . $obj->homepage; $obj->homepage = removeHackTag($obj->homepage);
if(!preg_match('/^[a-z]+:\/\//i',$obj->homepage))
{
$obj->homepage = 'http://'.$obj->homepage;
}
} }
// set modifier's information if logged-in and posting author and modifier are matched. // set modifier's information if logged-in and posting author and modifier are matched.
@ -835,18 +843,27 @@ class commentController extends comment
// call a trigger (after) // call a trigger (after)
if($output->toBool()) if($output->toBool())
{ {
$comment->isMoveToTrash = $isMoveToTrash;
$trigger_output = ModuleHandler::triggerCall('comment.deleteComment', 'after', $comment); $trigger_output = ModuleHandler::triggerCall('comment.deleteComment', 'after', $comment);
if(!$trigger_output->toBool()) if(!$trigger_output->toBool())
{ {
$oDB->rollback(); $oDB->rollback();
return $trigger_output; return $trigger_output;
} }
unset($comment->isMoveToTrash);
} }
if(!$isMoveToTrash) if(!$isMoveToTrash)
{ {
$this->_deleteDeclaredComments($args); $this->_deleteDeclaredComments($args);
$this->_deleteVotedComments($args); $this->_deleteVotedComments($args);
}
else
{
$args = new stdClass();
$args->upload_target_srl = $comment_srl;
$args->isvalid = 'N';
$output = executeQuery('file.updateFileValid', $args);
} }
// commit // commit

View file

@ -76,6 +76,13 @@ class commentModel extends comment
// call a trigger (after) // call a trigger (after)
ModuleHandler::triggerCall('comment.getCommentMenu', 'after', $menu_list); ModuleHandler::triggerCall('comment.getCommentMenu', 'after', $menu_list);
if($this->grant->manager){
$str_confirm = Context::getLang('confirm_move');
$url = sprintf("if(!confirm('%s')) return; var params = new Array(); params['comment_srl']='%s'; params['mid']=current_mid;params['cur_url']=current_url; exec_xml('comment', 'procCommentAdminMoveToTrash', params)", $str_confirm, $comment_srl);
$oCommentController->addCommentPopupMenu($url,'cmd_trash','','javascript');
}
// find a comment by IP matching if an administrator. // find a comment by IP matching if an administrator.
if($logged_info->is_admin == 'Y') if($logged_info->is_admin == 'Y')
{ {

View file

@ -4,6 +4,7 @@
<permissions> <permissions>
<permission action="procCommentAdminAddCart" target="manager" /> <permission action="procCommentAdminAddCart" target="manager" />
<permission action="procCommentGetList" target="manager" /> <permission action="procCommentGetList" target="manager" />
<permission action="procCommentAdminMoveToTrash" target="manager" />
</permissions> </permissions>
<actions> <actions>
<action name="getCommentMenu" type="model" /> <action name="getCommentMenu" type="model" />
@ -21,6 +22,7 @@
<action name="procCommentAdminCancelDeclare" type="controller" /> <action name="procCommentAdminCancelDeclare" type="controller" />
<action name="procCommentAdminAddCart" type="controller" /> <action name="procCommentAdminAddCart" type="controller" />
<action name="procCommentGetList" type="controller" /> <action name="procCommentGetList" type="controller" />
<action name="procCommentAdminMoveToTrash" type="controller" />
</actions> </actions>
<menus> <menus>
<menu name="comment"> <menu name="comment">

View file

@ -47,7 +47,12 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
<tbody> <tbody>
<tr loop="$comment_list => $no, $val"> <tr loop="$comment_list => $no, $val">
{@ $comment = $val->getContentText(200)} {@ $comment = $val->getContentText(200)}
<td><a href="{getUrl('','document_srl',$val->document_srl)}#comment_{$val->comment_srl}" target="_blank"><!--@if(strlen($comment))-->{$comment}<!--@else--><em>{$lang->no_text_comment}</em><!--@end--></a></td> <td>
<block cond="isset($module_list[$val->module_srl])">
<a href="{getUrl('', 'mid', $module_list[$val->module_srl]->mid)}" target="_blank">{$module_list[$val->module_srl]->browser_title}</a> -
</block>
<a href="{getUrl('','document_srl',$val->document_srl)}#comment_{$val->comment_srl}" target="_blank"><!--@if(strlen($comment))-->{$comment}<!--@else--><em>{$lang->no_text_comment}</em><!--@end--></a>
</td>
<td class="nowr"><a href="#popup_menu_area" class="member_{$val->member_srl}">{$val->getNickName()}</a></td> <td class="nowr"><a href="#popup_menu_area" class="member_{$val->member_srl}">{$val->getNickName()}</a></td>
<td class="nowr">{number_format($val->get('voted_count'))}/{number_format($val->get('blamed_count'))}</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">{(zdate($val->regdate,"Y-m-d\nH:i:s"))}</td>

View file

@ -50,7 +50,7 @@ class documentAdminView extends document
// get a list // get a list
$oDocumentModel = getModel('document'); $oDocumentModel = getModel('document');
$columnList = array('document_srl', 'title', 'member_srl', 'nick_name', 'readed_count', 'voted_count', 'blamed_count', 'regdate', 'ipaddress', 'status'); $columnList = array('document_srl', 'module_srl', 'title', 'member_srl', 'nick_name', 'readed_count', 'voted_count', 'blamed_count', 'regdate', 'ipaddress', 'status');
$output = $oDocumentModel->getDocumentList($args, false, true, $columnList); $output = $oDocumentModel->getDocumentList($args, false, true, $columnList);
// get Status name list // get Status name list
@ -72,6 +72,30 @@ class documentAdminView extends document
} }
Context::set('search_option', $search_option); Context::set('search_option', $search_option);
$oModuleModel = getModel('module');
$module_list = array();
$mod_srls = array();
foreach($output->data as $oDocument)
{
$mod_srls[] = $oDocument->get('module_srl');
}
$mod_srls = array_unique($mod_srls);
// Module List
$mod_srls_count = count($mod_srls);
if($mod_srls_count)
{
$columnList = array('module_srl', 'mid', 'browser_title');
$module_output = $oModuleModel->getModulesInfo($mod_srls, $columnList);
if($module_output && is_array($module_output))
{
foreach($module_output as $module)
{
$module_list[$module->module_srl] = $module;
}
}
}
Context::set('module_list', $module_list);
// Specify a template // Specify a template
$this->setTemplatePath($this->module_path.'tpl'); $this->setTemplatePath($this->module_path.'tpl');
$this->setTemplateFile('document_list'); $this->setTemplateFile('document_list');

View file

@ -398,7 +398,15 @@ class documentController extends document
if(!$obj->commentStatus) $obj->commentStatus = 'DENY'; if(!$obj->commentStatus) $obj->commentStatus = 'DENY';
if($obj->commentStatus == 'DENY') $this->_checkCommentStatusForOldVersion($obj); if($obj->commentStatus == 'DENY') $this->_checkCommentStatusForOldVersion($obj);
if($obj->allow_trackback!='Y') $obj->allow_trackback = 'N'; if($obj->allow_trackback!='Y') $obj->allow_trackback = 'N';
if($obj->homepage && !preg_match('/^[a-z]+:\/\//i',$obj->homepage)) $obj->homepage = 'http://'.$obj->homepage; if($obj->homepage)
{
$obj->homepage = removeHackTag($obj->homepage);
if(!preg_match('/^[a-z]+:\/\//i',$obj->homepage))
{
$obj->homepage = 'http://'.$obj->homepage;
}
}
if($obj->notify_message != 'Y') $obj->notify_message = 'N'; if($obj->notify_message != 'Y') $obj->notify_message = 'N';
// can modify regdate only manager // can modify regdate only manager
@ -810,9 +818,10 @@ class documentController extends document
$document_srl = $oDocument->document_srl; $document_srl = $oDocument->document_srl;
$member_srl = $oDocument->get('member_srl'); $member_srl = $oDocument->get('member_srl');
$logged_info = Context::get('logged_info'); $logged_info = Context::get('logged_info');
// Call a trigger when the read count is updated (after)
$output = ModuleHandler::triggerCall('document.updateReadedCount', 'after', $oDocument); // Call a trigger when the read count is updated (before)
if(!$output->toBool()) return $output; $trigger_output = ModuleHandler::triggerCall('document.updateReadedCount', 'before', $oDocument);
if(!$trigger_output->toBool()) return $trigger_output;
// Pass if read count is increaded on the session information // Pass if read count is increaded on the session information
if($_SESSION['readed_document'][$document_srl]) return false; if($_SESSION['readed_document'][$document_srl]) return false;
@ -829,11 +838,25 @@ class documentController extends document
$_SESSION['readed_document'][$document_srl] = true; $_SESSION['readed_document'][$document_srl] = true;
return false; return false;
} }
$oDB = DB::getInstance();
$oDB->begin();
// Update read counts // Update read counts
$args = new stdClass; $args = new stdClass;
$args->document_srl = $document_srl; $args->document_srl = $document_srl;
$output = executeQuery('document.updateReadedCount', $args); $output = executeQuery('document.updateReadedCount', $args);
// Call a trigger when the read count is updated (after)
$outptrigger_outputut = ModuleHandler::triggerCall('document.updateReadedCount', 'after', $oDocument);
if(!$trigger_output->toBool())
{
$oDB->rollback();
return $trigger_output;
}
$oDB->commit();
$oCacheHandler = CacheHandler::getInstance('object'); $oCacheHandler = CacheHandler::getInstance('object');
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
{ {

View file

@ -141,9 +141,8 @@ class documentItem extends Object
$oDocumentModel = getModel('document'); $oDocumentModel = getModel('document');
if($load_extra_vars) if($load_extra_vars)
{ {
$oDocumentModel->getDocumentExtraVarsFromDB($this->document_srl); $GLOBALS['XE_DOCUMENT_LIST'][$attribute->document_srl] = $this;
$this->add('title', $this->get('title')); $oDocumentModel->setToAllDocumentExtraVars();
$this->add('content', $this->get('content'));
} }
$GLOBALS['XE_DOCUMENT_LIST'][$this->document_srl] = $this; $GLOBALS['XE_DOCUMENT_LIST'][$this->document_srl] = $this;
} }

View file

@ -520,6 +520,13 @@ class documentModel extends document
$oDocumentController->addDocumentPopupMenu($url,'cmd_print','','printDocument'); $oDocumentController->addDocumentPopupMenu($url,'cmd_print','','printDocument');
// Call a trigger (after) // Call a trigger (after)
ModuleHandler::triggerCall('document.getDocumentMenu', 'after', $menu_list); ModuleHandler::triggerCall('document.getDocumentMenu', 'after', $menu_list);
if($this->grant->manager)
{
$str_confirm = Context::getLang('confirm_move');
$url = sprintf("if(!confirm('%s')) return; var params = new Array(); params['document_srl']='%s'; params['mid']=current_mid;params['cur_url']=current_url; exec_xml('document', 'procDocumentAdminMoveToTrash', params)", $str_confirm, $document_srl);
$oDocumentController->addDocumentPopupMenu($url,'cmd_trash','','javascript');
}
// If you are managing to find posts by ip // If you are managing to find posts by ip
if($logged_info->is_admin == 'Y') if($logged_info->is_admin == 'Y')
{ {
@ -528,10 +535,6 @@ class documentModel extends document
if($oDocument->isExists()) if($oDocument->isExists())
{ {
$str_confirm = Context::getLang('cmd_document_do') . Context::getLang('confirm_delete');
$url = sprintf("if(!confirm('%s')) return; var params = new Array(); params['document_srl']='%s'; params['mid']=current_mid;params['cur_url']=current_url; exec_xml('document', 'procDocumentAdminMoveToTrash', params)", $str_confirm, $document_srl);
$oDocumentController->addDocumentPopupMenu($url,'cmd_trash','','javascript');
// Find a post equivalent to ip address // Find a post equivalent to ip address
$url = getUrl('','module','admin','act','dispDocumentAdminList','search_target','ipaddress','search_keyword',$oDocument->getIpAddress()); $url = getUrl('','module','admin','act','dispDocumentAdminList','search_target','ipaddress','search_keyword',$oDocument->getIpAddress());
$oDocumentController->addDocumentPopupMenu($url,'cmd_search_by_ipaddress',$icon_path,'TraceByIpaddress'); $oDocumentController->addDocumentPopupMenu($url,'cmd_search_by_ipaddress',$icon_path,'TraceByIpaddress');

View file

@ -48,7 +48,11 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
</thead> </thead>
<tbody> <tbody>
<tr loop="$document_list => $no, $oDocument"> <tr loop="$document_list => $no, $oDocument">
<td class="title"><a href="{getUrl('','document_srl',$oDocument->document_srl)}" target="_blank"><!--@if(trim($oDocument->getTitleText()))-->{htmlspecialchars($oDocument->getTitleText())}<!--@else--><em>{$lang->no_title_document}</em><!--@end--></a></td> <td class="title">
<block cond="isset($module_list[$oDocument->get('module_srl')])">
<a href="{getUrl('', 'mid', $module_list[$oDocument->get('module_srl')]->mid)}" target="_blank">{$module_list[$oDocument->get('module_srl')]->browser_title}</a> -
</block>
<a href="{getUrl('','document_srl',$oDocument->document_srl)}" target="_blank"><!--@if(trim($oDocument->getTitleText()))-->{htmlspecialchars($oDocument->getTitleText())}<!--@else--><em>{$lang->no_title_document}</em><!--@end--></a></td>
<td class="nowr"><a href="#popup_menu_area" class="member_{$oDocument->get('member_srl')}">{$oDocument->getNickName()}</a></td> <td class="nowr"><a href="#popup_menu_area" class="member_{$oDocument->get('member_srl')}">{$oDocument->getNickName()}</a></td>
<td class="nowr">{$oDocument->get('readed_count')}</td> <td class="nowr">{$oDocument->get('readed_count')}</td>
<td class="nowr">{$oDocument->get('voted_count')}/{$oDocument->get('blamed_count')}</td> <td class="nowr">{$oDocument->get('voted_count')}/{$oDocument->get('blamed_count')}</td>

View file

@ -122,6 +122,7 @@ class fileAdminController extends file
$download_grant = Context::get('download_grant'); $download_grant = Context::get('download_grant');
$file_config = new stdClass;
$file_config->allow_outlink = Context::get('allow_outlink'); $file_config->allow_outlink = Context::get('allow_outlink');
$file_config->allow_outlink_format = Context::get('allow_outlink_format'); $file_config->allow_outlink_format = Context::get('allow_outlink_format');
$file_config->allow_outlink_site = Context::get('allow_outlink_site'); $file_config->allow_outlink_site = Context::get('allow_outlink_site');

View file

@ -518,6 +518,8 @@ class fileController extends file
$comment_srl = $obj->comment_srl; $comment_srl = $obj->comment_srl;
if(!$comment_srl) return new Object(); if(!$comment_srl) return new Object();
if($obj->isMoveToTrash) return new Object();
$output = $this->deleteFiles($comment_srl); $output = $this->deleteFiles($comment_srl);
return $output; return $output;
} }

View file

@ -1009,6 +1009,7 @@ class importerAdminController extends importer
$started = false; $started = false;
$buff = null; $buff = null;
$file_obj = new stdClass;
while(!feof($fp)) while(!feof($fp))
{ {
$str = trim(fgets($fp, 1024)); $str = trim(fgets($fp, 1024));
@ -1017,7 +1018,6 @@ class importerAdminController extends importer
// If it starts with <attach>, collect attachments // If it starts with <attach>, collect attachments
if(trim($str) == '<attach>') if(trim($str) == '<attach>')
{ {
$file_obj = new stdClass;
$file_obj->file_srl = getNextSequence(); $file_obj->file_srl = getNextSequence();
$file_obj->upload_target_srl = $upload_target_srl; $file_obj->upload_target_srl = $upload_target_srl;
$file_obj->module_srl = $module_srl; $file_obj->module_srl = $module_srl;

View file

@ -1,13 +1,13 @@
<include target="header.html" /> <include target="header.html" />
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'moduels/integration_search/tpl/skin_info/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}"> <div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/integration_search/tpl/skin_info/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p> <p>{$XE_VALIDATOR_MESSAGE}</p>
</div> </div>
<form action="{Context::getRequestUri()}" method="post" enctype="multipart/form-data"> <form action="{Context::getRequestUri()}" method="post" enctype="multipart/form-data">
<input type="hidden" name="module" value="integration_search" /> <input type="hidden" name="module" value="integration_search" />
<input type="hidden" name="act" value="procIntegration_searchAdminInsertSkin" /> <input type="hidden" name="act" value="procIntegration_searchAdminInsertSkin" />
<input type="hidden" name="xe_validator_id" value="moduels/integration_search/tpl/skin_info/1" /> <input type="hidden" name="xe_validator_id" value="modules/integration_search/tpl/skin_info/1" />
<section class="section"> <section class="section">
<h1>{$lang->skin_default_info}</h1> <h1>{$lang->skin_default_info}</h1>

View file

@ -262,15 +262,8 @@ class layoutAdminController extends layout
$oLayoutModel = getModel('layout'); $oLayoutModel = getModel('layout');
$cache_file = $oLayoutModel->getUserLayoutCache($args->layout_srl, Context::getLangType()); $cache_file = $oLayoutModel->getUserLayoutCache($args->layout_srl, Context::getLangType());
FileHandler::removeFile($cache_file); FileHandler::removeFile($cache_file);
//remove from cache
$oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport())
{
$object_key = 'layout:' . $args->layout_srl;
$cache_key = $oCacheHandler->getGroupKey('site_and_module', $object_key);
$oCacheHandler->delete($cache_key);
}
} }
return $output; return $output;
} }
@ -336,14 +329,7 @@ class layoutAdminController extends layout
$args = new stdClass(); $args = new stdClass();
$args->layout_srl = $layout_srl; $args->layout_srl = $layout_srl;
$output = executeQuery("layout.deleteLayout", $args); $output = executeQuery("layout.deleteLayout", $args);
//remove from cache
$oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport())
{
$object_key = 'layout:'.$layout_srl;
$cache_key = $oCacheHandler->getGroupKey('site_and_module', $object_key);
$oCacheHandler->delete($cache_key);
}
if(!$output->toBool()) return $output; if(!$output->toBool()) return $output;
return new Object(0,'success_deleted'); return new Object(0,'success_deleted');

View file

@ -86,8 +86,6 @@ class layout extends ModuleObject
$oDB->addColumn('layouts','layout_type','char',1,'P',true); $oDB->addColumn('layouts','layout_type','char',1,'P',true);
} }
$oCacheHandler = CacheHandler::getInstance('object', null, true);
$args->layout = '.'; $args->layout = '.';
$output = executeQueryArray('layout.getLayoutDotList', $args); $output = executeQueryArray('layout.getLayoutDotList', $args);
if($output->data && count($output->data) > 0) if($output->data && count($output->data) > 0)
@ -101,13 +99,6 @@ class layout extends ModuleObject
$args->layout = implode('|@|', $layout_path); $args->layout = implode('|@|', $layout_path);
$args->layout_srl = $layout->layout_srl; $args->layout_srl = $layout->layout_srl;
$output = executeQuery('layout.updateLayout', $args); $output = executeQuery('layout.updateLayout', $args);
if($oCacheHandler->isSupport())
{
$object_key = 'layout:' . $args->layout_srl;
$cache_key = $oCacheHandler->getGroupKey('site_and_module', $object_key);
$oCacheHandler->delete($cache_key);
}
} }
} }
} }

View file

@ -258,31 +258,15 @@ class layoutModel extends layout
*/ */
function getLayout($layout_srl) function getLayout($layout_srl)
{ {
$layout_info = false; // Get information from the DB
$args = new stdClass();
$args->layout_srl = $layout_srl;
$output = executeQuery('layout.getLayout', $args);
if(!$output->data) return;
// cache controll // Return xml file informaton after listing up the layout and extra_vars
$oCacheHandler = CacheHandler::getInstance('object', null, true); $layout_info = $this->getLayoutInfo($layout, $output->data, $output->data->layout_type);
if($oCacheHandler->isSupport())
{
$object_key = 'layout:' . $layout_srl;
$cache_key = $oCacheHandler->getGroupKey('site_and_module', $object_key);
$layout_info = $oCacheHandler->get($cache_key);
}
if($layout_info === false)
{
// Get information from the DB
$args = new stdClass();
$args->layout_srl = $layout_srl;
$output = executeQuery('layout.getLayout', $args);
if(!$output->data) return;
// Return xml file informaton after listing up the layout and extra_vars
$layout_info = $this->getLayoutInfo($layout, $output->data, $output->data->layout_type);
//insert in cache
if($oCacheHandler->isSupport()) $oCacheHandler->put($cache_key, $layout_info);
}
return $layout_info; return $layout_info;
} }

View file

@ -51,7 +51,7 @@
<li> <li>
<label for="question">{$lang->find_account_question}</label> <label for="question">{$lang->find_account_question}</label>
<select id="question" name="find_account_question" style="width:290px;display:block;"> <select id="question" name="find_account_question" style="width:290px;display:block;">
<!--@for($i=1,$c=count($lang->find_account_question_items);$i<$c;$i++)--> <!--@for($i=1,$c=count($lang->find_account_question_items);$i<=$c;$i++)-->
<option value="{$i}">{$lang->find_account_question_items[$i]}</option> <option value="{$i}">{$lang->find_account_question_items[$i]}</option>
<!--@end--> <!--@end-->
</select> </select>

View file

@ -230,7 +230,8 @@ class memberController extends member
} }
// Check if duplicated // Check if duplicated
$member_srl = $oMemberModel->getMemberSrlByNickName($value); $member_srl = $oMemberModel->getMemberSrlByNickName($value);
if($member_srl && $logged_info->member_srl != $member_srl ) return new Object(0,'msg_exists_nick_name'); $member_srl_by_decode = $oMemberModel->getMemberSrlByNickName(utf8_decode($value));
if(($member_srl && $logged_info->member_srl != $member_srl ) || ($member_srl_by_decode && $logged_info->member_srl != $member_srl_by_decode )) return new Object(0,'msg_exists_nick_name');
break; break;
case 'email_address' : case 'email_address' :
@ -1957,7 +1958,8 @@ class memberController extends member
return new Object(-1,'denied_nick_name'); return new Object(-1,'denied_nick_name');
} }
$member_srl = $oMemberModel->getMemberSrlByNickName($args->nick_name); $member_srl = $oMemberModel->getMemberSrlByNickName($args->nick_name);
if($member_srl) return new Object(-1,'msg_exists_nick_name'); $member_srl_by_decode = $oMemberModel->getMemberSrlByNickName(utf8_decode($args->nick_name));
if($member_srl || $member_srl_by_decode) return new Object(-1,'msg_exists_nick_name');
$member_srl = $oMemberModel->getMemberSrlByEmailAddress($args->email_address); $member_srl = $oMemberModel->getMemberSrlByEmailAddress($args->email_address);
if($member_srl) return new Object(-1,'msg_exists_email_address'); if($member_srl) return new Object(-1,'msg_exists_email_address');
@ -2113,6 +2115,10 @@ class memberController extends member
{ {
return new Object(-1, 'denied_nick_name'); return new Object(-1, 'denied_nick_name');
} }
$member_srl = $oMemberModel->getMemberSrlByNickName($args->nick_name);
$member_srl_by_decode = $oMemberModel->getMemberSrlByNickName(utf8_decode($args->nick_name));
if(($member_srl || $member_srl_by_decode) && $orgMemberInfo->nick_name != $args->nick_name) return new Object(-1,'msg_exists_nick_name');
list($args->email_id, $args->email_host) = explode('@', $args->email_address); list($args->email_id, $args->email_host) = explode('@', $args->email_address);
// Website, blog, checks the address // Website, blog, checks the address

View file

@ -6,7 +6,7 @@
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/member/skin/default/find_member_account/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}"> <div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/member/skin/default/find_member_account/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p> <p>{$XE_VALIDATOR_MESSAGE}</p>
</div> </div>
<form action="/" method="get" ruleset="findAccount"> <form action="{getUrl('')}" method="get" ruleset="findAccount">
<input type="hidden" name="mid" value="{$mid}" /> <input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="act" value="procMemberFindAccount" /> <input type="hidden" name="act" value="procMemberFindAccount" />
<input type="hidden" name="document_srl" value="{$document_srl}" /> <input type="hidden" name="document_srl" value="{$document_srl}" />

View file

@ -402,6 +402,9 @@ class moduleModel extends module
} }
else $module_info = $mid_info; else $module_info = $mid_info;
$oModuleController = getController('module');
if(isset($module_info->browser_title)) $oModuleController->replaceDefinedLangCode($module_info->browser_title);
return $this->addModuleExtraVars($module_info); return $this->addModuleExtraVars($module_info);
} }
@ -782,6 +785,7 @@ class moduleModel extends module
if(!$module_info->category) $module_info->category = 'service'; if(!$module_info->category) $module_info->category = 'service';
sscanf($xml_obj->author->attrs->date, '%d. %d. %d', $date_obj->y, $date_obj->m, $date_obj->d); sscanf($xml_obj->author->attrs->date, '%d. %d. %d', $date_obj->y, $date_obj->m, $date_obj->d);
$module_info->date = sprintf('%04d%02d%02d', $date_obj->y, $date_obj->m, $date_obj->d); $module_info->date = sprintf('%04d%02d%02d', $date_obj->y, $date_obj->m, $date_obj->d);
$author_obj = new stdClass();
$author_obj->name = $xml_obj->author->name->body; $author_obj->name = $xml_obj->author->name->body;
$author_obj->email_address = $xml_obj->author->attrs->email_address; $author_obj->email_address = $xml_obj->author->attrs->email_address;
$author_obj->homepage = $xml_obj->author->attrs->link; $author_obj->homepage = $xml_obj->author->attrs->link;
@ -1498,6 +1502,7 @@ class moduleModel extends module
$info = $this->getModuleInfoXml($module_name); $info = $this->getModuleInfoXml($module_name);
unset($obj); unset($obj);
if(!isset($info)) continue;
$info->module = $module_name; $info->module = $module_name;
$info->created_table_count = $created_table_count; $info->created_table_count = $created_table_count;
$info->table_count = $table_count; $info->table_count = $table_count;

View file

@ -6,117 +6,117 @@
/* 모듈 생성 후 */ /* 모듈 생성 후 */
function completeInsertPage(ret_obj) { function completeInsertPage(ret_obj) {
var error = ret_obj['error']; var error = ret_obj['error'];
var message = ret_obj['message']; var message = ret_obj['message'];
var page = ret_obj['page']; var page = ret_obj['page'];
var module_srl = ret_obj['module_srl']; var module_srl = ret_obj['module_srl'];
alert(message); alert(message);
var url = ''; var url = '';
if(location.href.getQuery('module')=='admin') { if(location.href.getQuery('module')=='admin') {
url = current_url.setQuery('module_srl',module_srl).setQuery('act','dispPageAdminInfo'); url = current_url.setQuery('module_srl',module_srl).setQuery('act','dispPageAdminInfo');
if(page) url = url.setQuery('page',page); if(page) url = url.setQuery('page',page);
} else { } else {
url = current_url; url = current_url;
} }
location.href = url; location.href = url;
} }
function completeArticleDocumentInserted(ret_obj){ function completeArticleDocumentInserted(ret_obj){
var error = ret_obj['error']; var error = ret_obj['error'];
var message = ret_obj['message']; var message = ret_obj['message'];
var mid = ret_obj['mid']; var mid = ret_obj['mid'];
var is_mobile = ret_obj['is_mobile']; var is_mobile = ret_obj['is_mobile'];
alert(message); alert(message);
var url = ''; var url = '';
if(is_mobile == 'Y') if(is_mobile == 'Y')
url = current_url.setQuery('act', 'dispPageAdminMobileContent').setQuery('mid', mid); url = current_url.setQuery('act', 'dispPageAdminMobileContent').setQuery('mid', mid);
else else
url = current_url.setQuery('act', 'dispPageIndex').setQuery('mid', mid); url = current_url.setQuery('act', 'dispPageIndex').setQuery('mid', mid);
location.href = url; location.href = url;
} }
/* 내용 저장 후 */ /* 내용 저장 후 */
function completeInsertPageContent(ret_obj) { function completeInsertPageContent(ret_obj) {
var error = ret_obj['error']; var error = ret_obj['error'];
var message = ret_obj['message']; var message = ret_obj['message'];
var page = ret_obj['page']; var page = ret_obj['page'];
var module_srl = ret_obj['module_srl']; var module_srl = ret_obj['module_srl'];
var mid = ret_obj['mid']; var mid = ret_obj['mid'];
location.href = current_url.setQuery('mid',mid).setQuery('act',''); location.href = current_url.setQuery('mid',mid).setQuery('act','');
} }
function completeInsertMobilePageContent(ret_obj) { function completeInsertMobilePageContent(ret_obj) {
var error = ret_obj['error']; var error = ret_obj['error'];
var message = ret_obj['message']; var message = ret_obj['message'];
var page = ret_obj['page']; var page = ret_obj['page'];
var module_srl = ret_obj['module_srl']; var module_srl = ret_obj['module_srl'];
var mid = ret_obj['mid']; var mid = ret_obj['mid'];
location.href = current_url.setQuery('mid',mid).setQuery('act','dispPageAdminMobileContent'); location.href = current_url.setQuery('mid',mid).setQuery('act','dispPageAdminMobileContent');
} }
/* 수정한 페이지 컨텐츠를 저장 */ /* 수정한 페이지 컨텐츠를 저장 */
function doSubmitPageContent(fo_obj) { function doSubmitPageContent(fo_obj) {
var html = getWidgetContent(); var html = getWidgetContent();
fo_obj.content.value = html; fo_obj.content.value = html;
return procFilter(fo_obj, insert_page_content); return procFilter(fo_obj, insert_page_content);
} }
function doSubmitMPageContent(fo_obj) { function doSubmitMPageContent(fo_obj) {
var html = getWidgetContent(); var html = getWidgetContent();
fo_obj.content.value = html; fo_obj.content.value = html;
return procFilter(fo_obj, insert_mpage_content); return procFilter(fo_obj, insert_mpage_content);
} }
/* 모듈 삭제 후 */ /* 모듈 삭제 후 */
function completeDeletePage(ret_obj) { function completeDeletePage(ret_obj) {
var error = ret_obj['error']; var error = ret_obj['error'];
var message = ret_obj['message']; var message = ret_obj['message'];
var page = ret_obj['page']; var page = ret_obj['page'];
alert(message); alert(message);
var url = current_url.setQuery('act','dispPageAdminContent').setQuery('module_srl',''); var url = current_url.setQuery('act','dispPageAdminContent').setQuery('module_srl','');
if(page) url = url.setQuery('page',page); if(page) url = url.setQuery('page',page);
location.href = url; location.href = url;
} }
/* 위젯 재컴파일 */ /* 위젯 재컴파일 */
function doRemoveWidgetCache(module_srl) { function doRemoveWidgetCache(module_srl) {
var params = new Array(); var params = new Array();
params["module_srl"] = module_srl; params["module_srl"] = module_srl;
exec_xml('page', 'procPageAdminRemoveWidgetCache', params, completeRemoveWidgetCache); exec_xml('page', 'procPageAdminRemoveWidgetCache', params, completeRemoveWidgetCache);
} }
function completeRemoveWidgetCache(ret_obj) { function completeRemoveWidgetCache(ret_obj) {
var message = ret_obj['message']; var message = ret_obj['message'];
location.reload(); location.reload();
} }
/* 일괄 설정 */ /* 일괄 설정 */
function doCartSetup(url) { function doCartSetup(url) {
var module_srl = new Array(); var module_srl = new Array();
jQuery('#fo_list input[name=cart]:checked').each(function() { jQuery('#fo_list input[name=cart]:checked').each(function() {
module_srl[module_srl.length] = jQuery(this).val(); module_srl[module_srl.length] = jQuery(this).val();
}); });
if(module_srl.length<1) return; if(module_srl.length<1) return;
url += "&module_srls="+module_srl.join(','); url += "&module_srls="+module_srl.join(',');
popopen(url,'modulesSetup'); popopen(url,'modulesSetup');
} }
jQuery(function($){ jQuery(function($){

View file

@ -111,7 +111,7 @@ class pollModel extends poll
$poll->poll_count = (int)$output->data->poll_count; $poll->poll_count = (int)$output->data->poll_count;
$poll->stop_date = $output->data->stop_date; $poll->stop_date = $output->data->stop_date;
$columnList = array('poll_index_srl', 'checkcount', 'poll_count'); $columnList = array('poll_index_srl', 'title', 'checkcount', 'poll_count');
$output = executeQuery('poll.getPollTitle', $args, $columnList); $output = executeQuery('poll.getPollTitle', $args, $columnList);
if(!$output->data) return; if(!$output->data) return;
if(!is_array($output->data)) $output->data = array($output->data); if(!is_array($output->data)) $output->data = array($output->data);

View file

@ -6,6 +6,7 @@ class TrashVO
var $title; var $title;
var $originModule; var $originModule;
var $serializedObject; var $serializedObject;
var $unserializedObject;
var $description; var $description;
var $ipaddress; var $ipaddress;
var $removerSrl; var $removerSrl;
@ -47,6 +48,14 @@ class TrashVO
{ {
$this->serializedObject = $serializedObject; $this->serializedObject = $serializedObject;
} }
function getUnserializedObject()
{
return $this->unserializedObject;
}
function setUnserializedObject($serializedObject)
{
$this->unserializedObject = unserialize($serializedObject);
}
function getDescription() function getDescription()
{ {
return htmlspecialchars($this->description, ENT_COMPAT | ENT_HTML401, 'UTF-8', false); return htmlspecialchars($this->description, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);

View file

@ -41,7 +41,12 @@ var no_text_comment = '{$lang->no_text_comment}';
<tr loop="$trash_list => $no, $oTrashVO"> <tr loop="$trash_list => $no, $oTrashVO">
<td class="title"> <td class="title">
<strong cond="!trim($oTrashVO->getTitle()) && $oTrashVO->getOriginModule() == 'comment'">{$lang->no_text_comment}</strong> <strong cond="!trim($oTrashVO->getTitle()) && $oTrashVO->getOriginModule() == 'comment'">{$lang->no_text_comment}</strong>
<block cond="trim($oTrashVO->getTitle())"><a href="{getUrl('act','dispTrashAdminView','trash_srl',$oTrashVO->getTrashSrl())}">{$oTrashVO->getTitle()}</a></block> <block cond="trim($oTrashVO->getTitle())">
<block cond="isset($module_list[$oTrashVO->unserializedObject['module_srl']])">
<a href="{getUrl('', 'mid', $module_list[$oTrashVO->unserializedObject['module_srl']]->mid)}" target="_blank">{$module_list[$oTrashVO->unserializedObject['module_srl']]->browser_title}</a> -
</block>
<a href="{getUrl('act','dispTrashAdminView','trash_srl',$oTrashVO->getTrashSrl())}">{$oTrashVO->getTitle()}</a>
</block>
</td> </td>
<td class="nowr"><!--@if($oTrashVO->getOriginModule() == 'document')-->{$lang->document}<!--@else-->{$lang->comment}<!--@end--></td> <td class="nowr"><!--@if($oTrashVO->getOriginModule() == 'document')-->{$lang->document}<!--@else-->{$lang->comment}<!--@end--></td>
<td class="nowr"><a href="#popup_menu_area" class="member_{$oTrashVO->getRemoverSrl()}">{$oTrashVO->getNickName()}</a></td> <td class="nowr"><a href="#popup_menu_area" class="member_{$oTrashVO->getRemoverSrl()}">{$oTrashVO->getNickName()}</a></td>

View file

@ -48,6 +48,31 @@ class trashAdminView extends trash
Context::set('page', $output->page); Context::set('page', $output->page);
Context::set('page_navigation', $output->page_navigation); Context::set('page_navigation', $output->page_navigation);
$oModuleModel = getModel('module');
$module_list = array();
$mod_srls = array();
foreach($output->data as $oTrashVO)
{
$mod_srls[] = $oTrashVO->unserializedObject['module_srl'];
}
$mod_srls = array_unique($mod_srls);
// Module List
$mod_srls_count = count($mod_srls);
if($mod_srls_count)
{
$columnList = array('module_srl', 'mid', 'browser_title');
$module_output = $oModuleModel->getModulesInfo($mod_srls, $columnList);
if($module_output && is_array($module_output))
{
foreach($module_output as $module)
{
$module_list[$module->module_srl] = $module;
}
}
}
Context::set('module_list', $module_list);
// 템플릿 파일 지정 // 템플릿 파일 지정
$this->setTemplateFile('trash_list'); $this->setTemplateFile('trash_list');
} }

View file

@ -87,6 +87,7 @@ class trashModel extends trash
$oTrashVO->setTitle($stdObject->title); $oTrashVO->setTitle($stdObject->title);
$oTrashVO->setOriginModule($stdObject->origin_module); $oTrashVO->setOriginModule($stdObject->origin_module);
$oTrashVO->setSerializedObject($stdObject->serialized_object); $oTrashVO->setSerializedObject($stdObject->serialized_object);
$oTrashVO->setUnserializedObject($stdObject->serialized_object);
$oTrashVO->setDescription($stdObject->description); $oTrashVO->setDescription($stdObject->description);
$oTrashVO->setIpaddress($stdObject->ipaddress); $oTrashVO->setIpaddress($stdObject->ipaddress);
$oTrashVO->setRemoverSrl($stdObject->remover_srl); $oTrashVO->setRemoverSrl($stdObject->remover_srl);

View file

@ -443,6 +443,17 @@ Sin la necesidad de utilizar los módulos de página o del diseño de XE, Usted
<value xml:lang="tr"><![CDATA[Widget Boyutu]]></value> <value xml:lang="tr"><![CDATA[Widget Boyutu]]></value>
<value xml:lang="vi"><![CDATA[Kích thước]]></value> <value xml:lang="vi"><![CDATA[Kích thước]]></value>
</item> </item>
<item name="cmd_widget_css_class">
<value xml:lang="ko"><![CDATA[위젯 CSS class]]></value>
<value xml:lang="en"><![CDATA[위젯 CSS class]]></value>
<value xml:lang="jp"><![CDATA[위젯 CSS class]]></value>
<value xml:lang="zh-CN"><![CDATA[위젯 CSS class]]></value>
<value xml:lang="zh-TW"><![CDATA[위젯 CSS class]]></value>
<value xml:lang="fr"><![CDATA[위젯 CSS class]]></value>
<value xml:lang="es"><![CDATA[위젯 CSS class]]></value>
<value xml:lang="tr"><![CDATA[위젯 CSS class]]></value>
<value xml:lang="vi"><![CDATA[위젯 CSS class]]></value>
</item>
<item name="cmd_widget_align"> <item name="cmd_widget_align">
<value xml:lang="ko"><![CDATA[위젯 정렬]]></value> <value xml:lang="ko"><![CDATA[위젯 정렬]]></value>
<value xml:lang="en"><![CDATA[Align Widget]]></value> <value xml:lang="en"><![CDATA[Align Widget]]></value>

View file

@ -127,6 +127,7 @@
height: 14px; height: 14px;
border: 0; border: 0;
cursor: pointer; cursor: pointer;
vertical-align: middle;
background: transparent url("../../../admin/tpl/img/glyphicons-halflings.png") no-repeat; background: transparent url("../../../admin/tpl/img/glyphicons-halflings.png") no-repeat;
} }
.widgetButtons .widgetSetup { .widgetButtons .widgetSetup {

File diff suppressed because one or more lines are too long

View file

@ -193,9 +193,9 @@ function doSyncPageContent() {
fo_obj.widget_padding_top.value = getPadding(sel_obj,'top'); fo_obj.widget_padding_top.value = getPadding(sel_obj,'top');
var obj = sel_obj.firstChild; var obj = sel_obj.firstChild;
while(obj && obj.className != "widgetContent") obj = obj.nextSibling; while(obj && !jQuery(obj).hasClass("widgetContent")) obj = obj.nextSibling;
if(obj && obj.className == "widgetContent") { if(obj && jQuery(obj).hasClass("widgetContent")) {
if(!fo_obj.document_srl || fo_obj.document_srl.value == '0') { if(!fo_obj.document_srl || fo_obj.document_srl.value == '0') {
try { try {
var content = Base64.decode(xInnerHtml(obj)); var content = Base64.decode(xInnerHtml(obj));
@ -412,6 +412,7 @@ function doAddWidgetCode(widget_code) {
function doCheckWidget(e) { function doCheckWidget(e) {
var evt = new xEvent(e); if(!evt.target) return; var evt = new xEvent(e); if(!evt.target) return;
var obj = evt.target; var obj = evt.target;
var $obj = jQuery(obj);
selectedWidget = null; selectedWidget = null;
@ -423,7 +424,7 @@ function doCheckWidget(e) {
doHideWidgetSizeSetup(); doHideWidgetSizeSetup();
// 위젯 설정 // 위젯 설정
if(obj.className == 'widgetSetup') { if($obj.hasClass('widgetSetup')) {
var p_obj = obj.parentNode.parentNode; var p_obj = obj.parentNode.parentNode;
var widget = p_obj.getAttribute("widget"); var widget = p_obj.getAttribute("widget");
if(!widget) return; if(!widget) return;
@ -433,7 +434,7 @@ function doCheckWidget(e) {
return; return;
// 위젯 스타일 // 위젯 스타일
} else if(obj.className == 'widgetStyle') { } else if($obj.hasClass('widgetStyle')) {
/*jshint -W004*/ /*jshint -W004*/
var p_obj = obj.parentNode.parentNode; var p_obj = obj.parentNode.parentNode;
var widget = p_obj.getAttribute("widget"); var widget = p_obj.getAttribute("widget");
@ -444,7 +445,7 @@ function doCheckWidget(e) {
return; return;
// 위젯 복사 // 위젯 복사
} else if(obj.className == 'widgetCopy' && obj.parentNode.parentNode.className == 'widgetOutput') { } else if($obj.hasClass('widgetCopy') && jQuery(obj.parentNode.parentNode).hasClass('widgetOutput')) {
/*jshint -W004*/ /*jshint -W004*/
var p_obj = obj.parentNode.parentNode; var p_obj = obj.parentNode.parentNode;
restoreWidgetButtons(); restoreWidgetButtons();
@ -460,7 +461,7 @@ function doCheckWidget(e) {
xInnerHtml(dummy,xInnerHtml(p_obj)); xInnerHtml(dummy,xInnerHtml(p_obj));
dummy.widget_sequence = ''; dummy.widget_sequence = '';
dummy.className = "widgetOutput"; jQuery(dummy).hasClass("widgetOutput");
for(var i=0;i<p_obj.attributes.length;i++) { for(var i=0;i<p_obj.attributes.length;i++) {
if(!p_obj.attributes[i].nodeName || !p_obj.attributes[i].nodeValue) continue; if(!p_obj.attributes[i].nodeName || !p_obj.attributes[i].nodeValue) continue;
var name = p_obj.attributes[i].nodeName.toLowerCase(); var name = p_obj.attributes[i].nodeName.toLowerCase();
@ -479,7 +480,7 @@ function doCheckWidget(e) {
return; return;
// 위젯 사이트/ 여백 조절 // 위젯 사이트/ 여백 조절
} else if(obj.className == 'widgetSize' || obj.className == 'widgetBoxSize') { } else if($obj.hasClass('widgetSize') || $obj.hasClass('widgetBoxSize')) {
var p_obj = obj.parentNode.parentNode; var p_obj = obj.parentNode.parentNode;
var widget = p_obj.getAttribute("widget"); var widget = p_obj.getAttribute("widget");
if(!widget) return; if(!widget) return;
@ -488,7 +489,7 @@ function doCheckWidget(e) {
return; return;
// 위젯 제거 // 위젯 제거
} else if(obj.className == 'widgetRemove' || obj.className == 'widgetBoxRemove') { } else if($obj.hasClass('widgetRemove') || $obj.hasClass('widgetBoxRemove')) {
var p_obj = obj.parentNode.parentNode; var p_obj = obj.parentNode.parentNode;
var widget = p_obj.getAttribute("widget"); var widget = p_obj.getAttribute("widget");
if(confirm(confirm_delete_msg)) { if(confirm(confirm_delete_msg)) {
@ -501,7 +502,7 @@ function doCheckWidget(e) {
// 내용 클릭 무효화 // 내용 클릭 무효화
var p_obj = obj; var p_obj = obj;
while(p_obj) { while(p_obj) {
if(p_obj.className == 'widgetOutput') { if(jQuery(p_obj).hasClass('widgetOutput')) {
evt.cancelBubble = true; evt.cancelBubble = true;
evt.returnValue = false; evt.returnValue = false;
xPreventDefault(e); xPreventDefault(e);
@ -520,7 +521,7 @@ function completeCopyWidgetContent(ret_obj, response_tags, params, p_obj) {
dummy.widget_sequence = ''; dummy.widget_sequence = '';
dummy.className = "widgetOutput"; jQuery(dummy).hasClass("widgetOutput");
for(var i=0;i<p_obj.attributes.length;i++) { for(var i=0;i<p_obj.attributes.length;i++) {
if(!p_obj.attributes[i].nodeName || !p_obj.attributes[i].nodeValue) continue; if(!p_obj.attributes[i].nodeName || !p_obj.attributes[i].nodeValue) continue;
var name = p_obj.attributes[i].nodeName.toLowerCase(); var name = p_obj.attributes[i].nodeName.toLowerCase();
@ -549,16 +550,18 @@ function completeDeleteWidgetContent(ret_obj, response_tags, params, p_obj) {
function doCheckWidgetDrag(e) { function doCheckWidgetDrag(e) {
var evt = new xEvent(e); if(!evt.target) return; var evt = new xEvent(e); if(!evt.target) return;
var obj = evt.target; var obj = evt.target;
var $obj = jQuery(obj);
if(jQuery(obj).parents('#pageSizeLayer').size() > 0) return; if(jQuery(obj).parents('#pageSizeLayer').size() > 0) return;
doHideWidgetSizeSetup(); doHideWidgetSizeSetup();
if(obj.className == 'widgetSetup' || obj.className == 'widgetStyle' || obj.className == 'widgetCopy' || obj.className == 'widgetBoxCopy' || obj.className == 'widgetSize' || obj.className == 'widgetBoxSize' || obj.className == 'widgetRemove' || obj.className == 'widgetBoxRemove') return; if($obj.hasClass('widgetSetup') || $obj.hasClass('widgetStyle') || $obj.hasClass('widgetCopy') || $obj.hasClass('widgetBoxCopy') || $obj.hasClass('widgetSize') || $obj.hasClass('widgetBoxSize') || $obj.hasClass('widgetRemove') || $obj.hasClass('widgetBoxRemove')) return;
p_obj = obj; p_obj = obj;
var $p_obj = jQuery(obj);
while(p_obj) { while(p_obj) {
if(p_obj.className == 'widgetOutput' || p_obj.className == 'widgetResize' || p_obj.className == 'widgetResizeLeft' || p_obj.className == 'widgetBoxResize' || p_obj.className == 'widgetBoxResizeLeft') { if($p_obj.hasClass('widgetOutput') || $p_obj.hasClass('widgetResize') || $p_obj.hasClass('widgetResizeLeft') || $p_obj.hasClass('widgetBoxResize') || $p_obj.hasClass('widgetBoxResizeLeft')) {
widgetDragEnable(p_obj, widgetDragStart, widgetDrag, widgetDragEnd); widgetDragEnable(p_obj, widgetDragStart, widgetDrag, widgetDragEnd);
widgetMouseDown(e); widgetMouseDown(e);
return; return;
@ -585,12 +588,14 @@ function doShowWidgetSizeSetup(px, py, obj) {
if (!form.length) return; if (!form.length) return;
selectedSizeWidget = obj[0]; selectedSizeWidget = obj[0];
var $selectedSizeWidget = jQuery(selectedSizeWidget);
var opts = { var opts = {
widget_align : obj.css('float'), widget_align : obj.css('float'),
width : obj[0].style.width, css_class : ($selectedSizeWidget.attr('css_class')) ? $selectedSizeWidget.attr('css_class') : '',
height : obj[0].style.height, width : obj[0].style.width,
height : obj[0].style.height,
padding_left : _getInt(obj.attr('widget_padding_left')), padding_left : _getInt(obj.attr('widget_padding_left')),
padding_right : _getInt(obj.attr('widget_padding_right')), padding_right : _getInt(obj.attr('widget_padding_right')),
@ -740,6 +745,12 @@ function doApplyWidgetSize(fo_obj) {
if(fo_obj.widget_align.selectedIndex == 1) setFloat(selectedSizeWidget, 'right'); if(fo_obj.widget_align.selectedIndex == 1) setFloat(selectedSizeWidget, 'right');
else setFloat(selectedSizeWidget, 'left'); else setFloat(selectedSizeWidget, 'left');
var $form = jQuery(fo_obj);
var $selectedSizeWidget = jQuery(selectedSizeWidget);
var css_class = $form.find('#css_class').val();
if(css_class) $selectedSizeWidget.attr('css_class', css_class);
var width = _getSize(fo_obj.width.value); var width = _getSize(fo_obj.width.value);
if(width) selectedSizeWidget.style.width = width; if(width) selectedSizeWidget.style.width = width;
@ -781,8 +792,9 @@ function doApplyWidgetSize(fo_obj) {
selectedSizeWidget.style.backgroundPosition = fo_obj.background_x.value+' '+fo_obj.background_y.value; selectedSizeWidget.style.backgroundPosition = fo_obj.background_x.value+' '+fo_obj.background_y.value;
var borderObj = selectedSizeWidget.firstChild; var borderObj = selectedSizeWidget.firstChild;
var $borderObj = jQuery(selectedSizeWidget.firstChild);
while(borderObj) { while(borderObj) {
if(borderObj.nodeName == "DIV" && (borderObj.className == "widgetBorder" || borderObj.className == "widgetBoxBorder")) { if(borderObj.nodeName == "DIV" && ($borderObj.hasClass("widgetBorder") || $borderObj.hasClass("widgetBoxBorder"))) {
var contentObj = borderObj.firstChild; var contentObj = borderObj.firstChild;
while(contentObj) { while(contentObj) {
if(contentObj.nodeName == "DIV") { if(contentObj.nodeName == "DIV") {
@ -974,7 +986,8 @@ function widgetDragEnable(obj, funcDragStart, funcDrag, funcDragEnd) {
// 드래그를 시작할때 호출되는 함수 (이동되는 형태를 보여주기 위한 작업을 함) // 드래그를 시작할때 호출되는 함수 (이동되는 형태를 보여주기 위한 작업을 함)
function widgetDragStart(tobj, px, py) { function widgetDragStart(tobj, px, py) {
if(tobj.className == 'widgetResize' || tobj.className == 'widgetResizeLeft' || tobj.className == 'widgetBoxResize' || tobj.className == 'widgetBoxResizeLeft') return; var $tobj = jQuery(tobj);
if($tobj.hasClass('widgetResize') || $tobj.hasClass('widgetResizeLeft') || $tobj.hasClass('widgetBoxResize') || $tobj.hasClass('widgetBoxResizeLeft')) return;
var obj = widgetGetTmpObject(tobj); var obj = widgetGetTmpObject(tobj);
xInnerHtml(obj, xInnerHtml(tobj)); xInnerHtml(obj, xInnerHtml(tobj));

View file

@ -9,6 +9,12 @@
<col width="140" /> <col width="140" />
<col /> <col />
<col /> <col />
<tr>
<th>{$lang->cmd_widget_css_class}</th>
<td colspan="2">
<input type="text" name="css_class" id="css_class" value=""style="width:200px" />
</td>
</tr>
<tr> <tr>
<th>{$lang->cmd_widget_align}</th> <th>{$lang->cmd_widget_align}</th>
<td colspan="2"> <td colspan="2">

View file

@ -486,20 +486,20 @@ class widgetController extends widget
$oEditorController = getController('editor'); $oEditorController = getController('editor');
$body = $oEditorController->transComponent($body); $body = $oEditorController->transComponent($body);
$widget_content_header = sprintf('<div %sstyle="overflow:hidden;%s"><div style="%s">', $args->id, $style, $inner_style); $widget_content_header = sprintf('<div class="xe-widget-wrapper ' . $args->css_class . '" %sstyle="%s"><div style="%s">', $args->id, $style, $inner_style);
$widget_content_body = $body; $widget_content_body = $body;
$widget_content_footer = '</div></div>'; $widget_content_footer = '</div></div>';
break; break;
// If the widget box; it could // If the widget box; it could
case 'widgetBox' : case 'widgetBox' :
$widget_content_header = sprintf('<div %sstyle="overflow:hidden;%s;"><div style="%s"><div>', $args->id, $style, $inner_style); $widget_content_header = sprintf('<div class="xe-widget-wrapper ' . $args->css_class . '" %sstyle="%s;"><div style="%s"><div>', $args->id, $style, $inner_style);
$widget_content_body = $widgetbox_content; $widget_content_body = $widgetbox_content;
break; break;
// If the General wijetil // If the General wijetil
default : default :
$widget_content_header = sprintf('<div %sstyle="overflow:hidden;%s">',$args->id,$style); $widget_content_header = sprintf('<div class="xe-widget-wrapper ' . $args->css_class . '" %sstyle="%s">',$args->id,$style);
$widget_content_body = sprintf('<div style="*zoom:1;%s">%s</div>', $inner_style,$widget_content); $widget_content_body = sprintf('<div style="*zoom:1;%s">%s</div>', $inner_style,$widget_content);
$widget_content_footer = '</div>'; $widget_content_footer = '</div>';
break; break;
@ -537,7 +537,7 @@ class widgetController extends widget
$oWidgetController = getController('widget'); $oWidgetController = getController('widget');
$widget_content_header = sprintf( $widget_content_header = sprintf(
'<div class="widgetOutput" widgetstyle="%s" style="%s" widget_padding_left="%s" widget_padding_right="%s" widget_padding_top="%s" widget_padding_bottom="%s" widget="widgetContent" document_srl="%d" %s>'. '<div class="widgetOutput ' . $args->css_class . '" widgetstyle="%s" style="%s" widget_padding_left="%s" widget_padding_right="%s" widget_padding_top="%s" widget_padding_bottom="%s" widget="widgetContent" document_srl="%d" %s>'.
'<div class="widgetResize"></div>'. '<div class="widgetResize"></div>'.
'<div class="widgetResizeLeft"></div>'. '<div class="widgetResizeLeft"></div>'.
'<div class="widgetBorder">'. '<div class="widgetBorder">'.
@ -571,7 +571,7 @@ class widgetController extends widget
} }
$widget_content_header = sprintf( $widget_content_header = sprintf(
'<div class="widgetOutput" widgetstyle="%s" widget="widgetBox" style="%s;" widget_padding_top="%s" widget_padding_right="%s" widget_padding_bottom="%s" widget_padding_left="%s" %s >'. '<div class="widgetOutput ' . $args->css_class . '" widgetstyle="%s" widget="widgetBox" style="%s;" widget_padding_top="%s" widget_padding_right="%s" widget_padding_bottom="%s" widget_padding_left="%s" %s >'.
'<div class="widgetBoxResize"></div>'. '<div class="widgetBoxResize"></div>'.
'<div class="widgetBoxResizeLeft"></div>'. '<div class="widgetBoxResizeLeft"></div>'.
'<div class="widgetBoxBorder"><div class="nullWidget" style="%s">',$args->widgetstyle,$style, $widget_padding_top, $widget_padding_right, $widget_padding_bottom, $widget_padding_left,implode(' ',$attribute),$inner_style); '<div class="widgetBoxBorder"><div class="nullWidget" style="%s">',$args->widgetstyle,$style, $widget_padding_top, $widget_padding_right, $widget_padding_bottom, $widget_padding_left,implode(' ',$attribute),$inner_style);
@ -595,7 +595,7 @@ class widgetController extends widget
} }
} }
$widget_content_header = sprintf('<div class="widgetOutput" widgetstyle="%s" style="%s" widget_padding_top="%s" widget_padding_right="%s" widget_padding_bottom="%s" widget_padding_left="%s" widget="%s" %s >'. $widget_content_header = sprintf('<div class="widgetOutput ' . $args->css_class . '" widgetstyle="%s" style="%s" widget_padding_top="%s" widget_padding_right="%s" widget_padding_bottom="%s" widget_padding_left="%s" widget="%s" %s >'.
'<div class="widgetResize"></div>'. '<div class="widgetResize"></div>'.
'<div class="widgetResizeLeft"></div>'. '<div class="widgetResizeLeft"></div>'.
'<div class="widgetBorder">',$args->widgetstyle,$style, '<div class="widgetBorder">',$args->widgetstyle,$style,
@ -710,6 +710,7 @@ class widgetController extends widget
} }
$widget = $vars->selected_widget; $widget = $vars->selected_widget;
$vars->css_class = $request_vars->css_class;
$vars->widgetstyle = $request_vars->widgetstyle; $vars->widgetstyle = $request_vars->widgetstyle;
$vars->skin = trim($request_vars->skin); $vars->skin = trim($request_vars->skin);

View file

@ -376,6 +376,10 @@
<name xml:lang="zh-CN">内容摘要字数</name> <name xml:lang="zh-CN">内容摘要字数</name>
<name xml:lang="zh-TW">內容字數</name> <name xml:lang="zh-TW">內容字數</name>
<name xml:lang="tr">İçerik Uzunluğu</name> <name xml:lang="tr">İçerik Uzunluğu</name>
</var>
<var id="nickname_cut_size" type="text">
<name xml:lang="ko">닉네임 글자수</name>
<name xml:lang="en">Length of Nickname</name>
</var> </var>
<var id="new_window" type="select"> <var id="new_window" type="select">
<name xml:lang="ko">링크</name> <name xml:lang="ko">링크</name>

View file

@ -34,6 +34,8 @@ class content extends WidgetHandler
if(!$args->subject_cut_size) $args->subject_cut_size = 0; if(!$args->subject_cut_size) $args->subject_cut_size = 0;
// Cut the length of contents // Cut the length of contents
if(!$args->content_cut_size) $args->content_cut_size = 100; if(!$args->content_cut_size) $args->content_cut_size = 100;
// Cut the length of nickname
if(!$args->nickname_cut_size) $args->nickname_cut_size = 0;
// Display time of the latest post // Display time of the latest post
if(!$args->duration_new) $args->duration_new = 12; if(!$args->duration_new) $args->duration_new = 12;
// How to create thumbnails // How to create thumbnails
@ -715,6 +717,7 @@ class content extends WidgetHandler
$widget_info->page_count = $args->page_count; $widget_info->page_count = $args->page_count;
$widget_info->subject_cut_size = $args->subject_cut_size; $widget_info->subject_cut_size = $args->subject_cut_size;
$widget_info->content_cut_size = $args->content_cut_size; $widget_info->content_cut_size = $args->content_cut_size;
$widget_info->nickname_cut_size = $args->nickname_cut_size;
$widget_info->new_window = $args->new_window; $widget_info->new_window = $args->new_window;
$widget_info->duration_new = $args->duration_new * 60*60; $widget_info->duration_new = $args->duration_new * 60*60;
@ -887,9 +890,12 @@ class contentItem extends Object
{ {
return $this->get('category'); return $this->get('category');
} }
function getNickName() function getNickName($cut_size = 0, $tail='...')
{ {
return $this->get('nick_name'); if($cut_size) $nick_name = cut_str($this->get('nick_name'), $cut_size, $tail);
else $nick_name = $this->get('nick_name');
return $nick_name;
} }
function getAuthorSite() function getAuthorSite()
{ {

View file

@ -1,7 +1,7 @@
<load target="./js/content_widget.js" cond="$widget_info->page_count || count($widget_info->tab)" /> <load target="./js/content_widget.js" cond="$widget_info->page_count || count($widget_info->tab)" />
<load target="./css/widget.css" cond="$colorset == 'black' || $colorset == 'white'" /> <load target="./css/widget.css" cond="$colorset != 'layout'" />
<div class="widgetContainer<!--@if($colorset=="black")--> black<!--@end-->"> <div class="widgetContainer<!--@if($colorset=='black')--> black<!--@end-->">
<!--@if($widget_info->tab_type == "tab_left")--> <!--@if($widget_info->tab_type == "tab_left")-->
<!--#include("./_tab_left.html")--> <!--#include("./_tab_left.html")-->
<!--@elseif($widget_info->tab_type == "tab_top")--> <!--@elseif($widget_info->tab_type == "tab_top")-->

View file

@ -33,7 +33,7 @@
<!--@end--> <!--@end-->
<!--@else if($v=='nickname')--> <!--@else if($v=='nickname')-->
<a href="#" onclick="return false;" class="author member_{$item->getMemberSrl()}">{$item->getNickName()}</a> <a href="#" onclick="return false;" class="author member_{$item->getMemberSrl()}">{$item->getNickName($widget_info->nickname_cut_size)}</a>
<!--@else if($v=='regdate')--> <!--@else if($v=='regdate')-->
<span class="date">{$item->getRegdate("Y-m-d")}</span> <span class="hour">{$item->getRegdate("H:i")}</span> <span class="date">{$item->getRegdate("Y-m-d")}</span> <span class="hour">{$item->getRegdate("H:i")}</span>
<!--@end--> <!--@end-->

View file

@ -38,7 +38,7 @@
<span class="icon">{$item->printExtraImages()}</span> <span class="icon">{$item->printExtraImages()}</span>
<!--@end--> <!--@end-->
<!--@else if($v=='nickname')--> <!--@else if($v=='nickname')-->
<a href="#" onclick="return false;" class="author member_{$item->getMemberSrl()}">{$item->getNickName()}</a> <a href="#" onclick="return false;" class="author member_{$item->getMemberSrl()}">{$item->getNickName($widget_info->nickname_cut_size)}</a>
<!--@else if($v=='regdate')--> <!--@else if($v=='regdate')-->
<span class="date">{$item->getRegdate("Y-m-d")}</span> <span class="hour">{$item->getRegdate("H:i")}</span> <span class="date">{$item->getRegdate("Y-m-d")}</span> <span class="hour">{$item->getRegdate("H:i")}</span>
<!--@end--> <!--@end-->
@ -100,7 +100,7 @@
<!--@end--> <!--@end-->
</td> </td>
<!--@else if($v=='nickname')--> <!--@else if($v=='nickname')-->
<td><a href="#" onclick="return false;" class="author member_{$item->getMemberSrl()}">{$item->getNickName()}</a></td> <td><a href="#" onclick="return false;" class="author member_{$item->getMemberSrl()}">{$item->getNickName($widget_info->nickname_cut_size)}</a></td>
<!--@else if($v=='regdate')--> <!--@else if($v=='regdate')-->
<td class="time"><span class="date">{$item->getRegdate("Y-m-d")}</span> <span class="hour">{$item->getRegdate("H:i")}</span></td> <td class="time"><span class="date">{$item->getRegdate("Y-m-d")}</span> <span class="hour">{$item->getRegdate("H:i")}</span></td>
<!--@end--> <!--@end-->

View file

@ -59,7 +59,7 @@
<!--@else if($widget_info->option_view_arr[$j]=='nickname')--> <!--@else if($widget_info->option_view_arr[$j]=='nickname')-->
<p class="authorArea" style="margin-left:{$widget_info->thumbnail_width+20}px;"> <p class="authorArea" style="margin-left:{$widget_info->thumbnail_width+20}px;">
<a href="#" onclick="return false;" class="author member_{$item->getMemberSrl()}" target="_blank"|cond="$widget_info->new_window">{$item->getNickName()}</a> <a href="#" onclick="return false;" class="author member_{$item->getMemberSrl()}" target="_blank"|cond="$widget_info->new_window">{$item->getNickName($widget_info->nickname_cut_size)}</a>
<!--@if($widget_info->option_view_arr[$j+1]=='regdate')--> <!--@if($widget_info->option_view_arr[$j+1]=='regdate')-->
<span class="date">{$item->getRegdate("Y-m-d")}</span> <span class="hour">{$item->getRegdate("H:i")}</span> <span class="date">{$item->getRegdate("Y-m-d")}</span> <span class="hour">{$item->getRegdate("H:i")}</span>
<!--@end--> <!--@end-->

View file

@ -29,7 +29,7 @@
<!--@end--> <!--@end-->
<!--@else if($v=='nickname')--> <!--@else if($v=='nickname')-->
<a <!--@if($item->getMemberSrl())-->href="#" onclick="return false;" class="author member_{$item->getMemberSrl()}"<!--@elseif($item->getAuthorSite())-->href="{$item->getAuthorSite()}" onclick="window.open(this.href); return false;" class="author member"<!--@else-->href="#" onclick="return false;" class="author member"<!--@end--> >{$item->getNickName()}</a> <a <!--@if($item->getMemberSrl())-->href="#" onclick="return false;" class="author member_{$item->getMemberSrl()}"<!--@elseif($item->getAuthorSite())-->href="{$item->getAuthorSite()}" onclick="window.open(this.href); return false;" class="author member"<!--@else-->href="#" onclick="return false;" class="author member"<!--@end--> >{$item->getNickName($widget_info->nickname_cut_size)}</a>
<!--@else if($v=='regdate')--> <!--@else if($v=='regdate')-->
<span class="date">{$item->getRegdate("Y-m-d")}</span> <span class="hour">{$item->getRegdate("H:i")}</span> <span class="date">{$item->getRegdate("Y-m-d")}</span> <span class="hour">{$item->getRegdate("H:i")}</span>
@ -81,7 +81,7 @@
<!--@end--> <!--@end-->
</td> </td>
<!--@else if($v=='nickname')--> <!--@else if($v=='nickname')-->
<td><a <!--@if($item->getMemberSrl())-->href="#" onclick="return false;" class="author member_{$item->getMemberSrl()}"<!--@elseif($item->getAuthorSite())-->href="{$item->getAuthorSite()}" onclick="window.open(this.href); return false;" class="author member"<!--@else-->href="#" onclick="return false;" class="author member"<!--@end--> >{$item->getNickName()}</a></td> <td><a <!--@if($item->getMemberSrl())-->href="#" onclick="return false;" class="author member_{$item->getMemberSrl()}"<!--@elseif($item->getAuthorSite())-->href="{$item->getAuthorSite()}" onclick="window.open(this.href); return false;" class="author member"<!--@else-->href="#" onclick="return false;" class="author member"<!--@end--> >{$item->getNickName($widget_info->nickname_cut_size)}</a></td>
<!--@else if($v=='regdate')--> <!--@else if($v=='regdate')-->
<td class="time"><span class="date">{$item->getRegdate("Y-m-d")}</span> <span class="hour">{$item->getRegdate("H:i")}</span></td> <td class="time"><span class="date">{$item->getRegdate("Y-m-d")}</span> <span class="hour">{$item->getRegdate("H:i")}</span></td>
<!--@end--> <!--@end-->