mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-07 02:31:40 +09:00
Merge remote-tracking branch 'upstream/develop' into develop
This commit is contained in:
commit
ac12bac141
7 changed files with 228 additions and 196 deletions
|
|
@ -14,6 +14,7 @@ use Rhymix\Framework\Storage;
|
|||
use Rhymix\Framework\URL;
|
||||
use Rhymix\Modules\Admin\Controllers\Base;
|
||||
use Rhymix\Modules\Admin\Models\Icon as IconModel;
|
||||
use Rhymix\Modules\Admin\Models\Utility as UtilityModel;
|
||||
|
||||
class Domains extends Base
|
||||
{
|
||||
|
|
@ -340,8 +341,8 @@ class Domains extends Base
|
|||
$vars->meta_description = utf8_trim($vars->meta_description);
|
||||
|
||||
// Clean up the header and footer scripts.
|
||||
$vars->html_header = utf8_trim($vars->html_header);
|
||||
$vars->html_footer = utf8_trim($vars->html_footer);
|
||||
$vars->html_header = UtilityModel::cleanHeaderAndFooterScripts($vars->html_header ?? '');
|
||||
$vars->html_footer = UtilityModel::cleanHeaderAndFooterScripts($vars->html_footer ?? '');
|
||||
|
||||
// Validate the color scheme setting.
|
||||
$valid_color_scheme_options = array('auto', 'light', 'dark');
|
||||
|
|
|
|||
19
modules/admin/models/Utility.php
Normal file
19
modules/admin/models/Utility.php
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
<?php
|
||||
|
||||
namespace Rhymix\Modules\Admin\Models;
|
||||
|
||||
class Utility
|
||||
{
|
||||
/**
|
||||
* Clean up header and footer scripts.
|
||||
*
|
||||
* @param string $content
|
||||
* @return string
|
||||
*/
|
||||
public static function cleanHeaderAndFooterScripts(string $content)
|
||||
{
|
||||
$content = utf8_clean($content);
|
||||
$content = preg_replace('!</?(html|head|body)[^>]*>!', '', $content);
|
||||
return utf8_trim($content);
|
||||
}
|
||||
}
|
||||
|
|
@ -85,6 +85,8 @@ class BoardAdminController extends Board {
|
|||
$args->browser_title = trim(utf8_normalize_spaces($args->browser_title));
|
||||
$args->meta_keywords = $args->meta_keywords ? implode(', ', array_map('trim', explode(',', $args->meta_keywords))) : '';
|
||||
$args->meta_description = trim(utf8_normalize_spaces($args->meta_description));
|
||||
$args->header_text = Rhymix\Modules\Admin\Models\Utility::cleanHeaderAndFooterScripts($args->header_text ?? '');
|
||||
$args->footer_text = Rhymix\Modules\Admin\Models\Utility::cleanHeaderAndFooterScripts($args->footer_text ?? '');
|
||||
|
||||
// if there is an existed module
|
||||
if ($args->module_srl && $module_info->module_srl != $args->module_srl)
|
||||
|
|
|
|||
|
|
@ -105,7 +105,11 @@ class BoardView extends Board
|
|||
* load javascript, JS filters
|
||||
**/
|
||||
Context::addJsFilter($this->module_path.'tpl/filter', 'input_password.xml');
|
||||
Context::addJsFile($this->module_path.'tpl/js/board.js');
|
||||
Context::loadFile([$this->module_path.'tpl/js/board.js', 'head']);
|
||||
if (config('url.rewrite') > 1)
|
||||
{
|
||||
Context::loadFile([$this->module_path.'tpl/js/rewrite.js', 'body']);
|
||||
}
|
||||
Context::loadLang('./modules/document/lang');
|
||||
Context::loadLang('./modules/comment/lang');
|
||||
|
||||
|
|
|
|||
|
|
@ -1,192 +1,177 @@
|
|||
/**
|
||||
* @file modules/board/js/board.js
|
||||
* @author NHN (developers@xpressengine.com)
|
||||
* @brief board 모듈의 javascript
|
||||
**/
|
||||
|
||||
/* complete tp insert document */
|
||||
function completeDocumentInserted(ret_obj)
|
||||
{
|
||||
var error = ret_obj.error;
|
||||
var message = ret_obj.message;
|
||||
var mid = ret_obj.mid;
|
||||
var document_srl = ret_obj.document_srl;
|
||||
var category_srl = ret_obj.category_srl;
|
||||
|
||||
if (ret_obj.redirect_url) {
|
||||
redirect(ret_obj.redirect_url);
|
||||
} else {
|
||||
var url;
|
||||
if(!document_srl)
|
||||
{
|
||||
url = current_url.setQuery('mid',mid).setQuery('act','');
|
||||
}
|
||||
else
|
||||
{
|
||||
url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act','');
|
||||
}
|
||||
if(category_srl) url = url.setQuery('category',category_srl);
|
||||
redirect(url);
|
||||
}
|
||||
}
|
||||
|
||||
/* delete the document */
|
||||
function completeDeleteDocument(ret_obj)
|
||||
{
|
||||
var error = ret_obj.error;
|
||||
var message = ret_obj.message;
|
||||
var mid = ret_obj.mid;
|
||||
var page = ret_obj.page;
|
||||
|
||||
var url = current_url.setQuery('mid',mid).setQuery('act','').setQuery('document_srl','');
|
||||
if(page) url = url.setQuery('page',page);
|
||||
redirect(url);
|
||||
}
|
||||
|
||||
/* document search */
|
||||
function completeSearch(ret_obj, response_tags, params, fo_obj)
|
||||
{
|
||||
fo_obj.submit();
|
||||
}
|
||||
|
||||
function completeVote(ret_obj)
|
||||
{
|
||||
var error = ret_obj.error;
|
||||
var message = ret_obj.message;
|
||||
redirect(window.location.href);
|
||||
}
|
||||
|
||||
// current page reload
|
||||
function completeReload(ret_obj)
|
||||
{
|
||||
var error = ret_obj.error;
|
||||
var message = ret_obj.message;
|
||||
redirect(window.location.href);
|
||||
}
|
||||
|
||||
/* complete to insert comment*/
|
||||
function completeInsertComment(ret_obj)
|
||||
{
|
||||
var error = ret_obj.error;
|
||||
var message = ret_obj.message;
|
||||
var mid = ret_obj.mid;
|
||||
var document_srl = ret_obj.document_srl;
|
||||
var comment_srl = ret_obj.comment_srl;
|
||||
if (ret_obj.redirect_url) {
|
||||
redirect(ret_obj.redirect_url);
|
||||
} else {
|
||||
var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act','');
|
||||
if (comment_srl) url = url.setQuery('comment_srl',comment_srl)+"#comment_"+comment_srl;
|
||||
redirect(url);
|
||||
}
|
||||
}
|
||||
|
||||
/* delete the comment */
|
||||
function completeDeleteComment(ret_obj)
|
||||
{
|
||||
var error = ret_obj.error;
|
||||
var message = ret_obj.message;
|
||||
var mid = ret_obj.mid;
|
||||
var document_srl = ret_obj.document_srl;
|
||||
var page = ret_obj.page;
|
||||
|
||||
if (ret_obj.redirect_url) {
|
||||
redirect(ret_obj.redirect_url);
|
||||
} else {
|
||||
var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act','');
|
||||
if (page) url = url.setQuery('page',page);
|
||||
redirect(url);
|
||||
}
|
||||
}
|
||||
|
||||
/* delete the trackback */
|
||||
function completeDeleteTrackback(ret_obj)
|
||||
{
|
||||
var error = ret_obj.error;
|
||||
var message = ret_obj.message;
|
||||
var mid = ret_obj.mid;
|
||||
var document_srl = ret_obj.document_srl;
|
||||
var page = ret_obj.page;
|
||||
|
||||
if (ret_obj.redirect_url) {
|
||||
redirect(ret_obj.redirect_url);
|
||||
} else {
|
||||
var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act','');
|
||||
if (page) url = url.setQuery('page',page);
|
||||
redirect(url);
|
||||
}
|
||||
}
|
||||
|
||||
/* change category */
|
||||
function doChangeCategory()
|
||||
{
|
||||
var category_srl = jQuery('#board_category option:selected').val();
|
||||
location.href = decodeURI(current_url).setQuery('category',category_srl).setQuery('page', '');
|
||||
}
|
||||
|
||||
/* scrap */
|
||||
function doScrap(document_srl)
|
||||
{
|
||||
var params = [];
|
||||
params.document_srl = document_srl;
|
||||
jQuery.exec_json('member.procMemberScrapDocument', params);
|
||||
}
|
||||
|
||||
|
||||
jQuery(function($){
|
||||
|
||||
/* remove comment_srl and unnecessary page number from short URL */
|
||||
var match = location.pathname.match(/\/([a-zA-Z0-9_]+)\/([0-9]+)\/(comment|page)\/([0-9]+)$/);
|
||||
if (match && match[1] === window.current_mid) {
|
||||
var newpath = location.pathname.replace(/\/(comment|page)\/([0-9]+)$/, '');
|
||||
if (location.hash && location.hash !== '#') {
|
||||
newpath += location.hash;
|
||||
}
|
||||
if (history.replaceState) {
|
||||
history.replaceState({
|
||||
rx_replaced: true,
|
||||
prev: location.pathname,
|
||||
}, '', newpath);
|
||||
}
|
||||
}
|
||||
|
||||
$(document.body).click(function(e){
|
||||
var t = $(e.target), act, params = {};
|
||||
|
||||
if(t.parents('.layer_voted_member').length === 0 && !t.is('.layer_voted_member')){
|
||||
$('.layer_voted_member').hide().remove();
|
||||
}
|
||||
|
||||
if(!t.is('a[class^=voted_member_]')) return;
|
||||
|
||||
var srl = parseInt(t.attr('class').replace(/[^0-9]/g,''));
|
||||
if(!srl) return;
|
||||
|
||||
if(t.hasClass('comment')){
|
||||
act = 'comment.getCommentVotedMemberList';
|
||||
params =
|
||||
{'comment_srl':srl,'point':(t.hasClass('votedup')?1:-1)};
|
||||
}else{
|
||||
act = 'document.getDocumentVotedMemberList';
|
||||
params =
|
||||
{'document_srl':srl,'point':(t.hasClass('votedup')?1:-1)};
|
||||
}
|
||||
|
||||
$.exec_json(act, params, function(data){
|
||||
var l = data.voted_member_list;
|
||||
var ul = [];
|
||||
|
||||
if(!l || l.length === 0) return;
|
||||
|
||||
$.each(l,function(){
|
||||
ul.push(this.nick_name);
|
||||
});
|
||||
|
||||
t.after($('<ul>')
|
||||
.addClass('layer_voted_member')
|
||||
.css({'position':'absolute','top':e.pageY+5,'left':e.pageX})
|
||||
.append('<li>'+ul.join('</li><li>')+'</li>')
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
/**
|
||||
* @file modules/board/js/board.js
|
||||
* @author NHN (developers@xpressengine.com)
|
||||
* @brief board 모듈의 javascript
|
||||
**/
|
||||
|
||||
/* complete tp insert document */
|
||||
function completeDocumentInserted(ret_obj)
|
||||
{
|
||||
var error = ret_obj.error;
|
||||
var message = ret_obj.message;
|
||||
var mid = ret_obj.mid;
|
||||
var document_srl = ret_obj.document_srl;
|
||||
var category_srl = ret_obj.category_srl;
|
||||
|
||||
if (ret_obj.redirect_url) {
|
||||
redirect(ret_obj.redirect_url);
|
||||
} else {
|
||||
var url;
|
||||
if(!document_srl)
|
||||
{
|
||||
url = current_url.setQuery('mid',mid).setQuery('act','');
|
||||
}
|
||||
else
|
||||
{
|
||||
url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act','');
|
||||
}
|
||||
if(category_srl) url = url.setQuery('category',category_srl);
|
||||
redirect(url);
|
||||
}
|
||||
}
|
||||
|
||||
/* delete the document */
|
||||
function completeDeleteDocument(ret_obj)
|
||||
{
|
||||
var error = ret_obj.error;
|
||||
var message = ret_obj.message;
|
||||
var mid = ret_obj.mid;
|
||||
var page = ret_obj.page;
|
||||
|
||||
var url = current_url.setQuery('mid',mid).setQuery('act','').setQuery('document_srl','');
|
||||
if(page) url = url.setQuery('page',page);
|
||||
redirect(url);
|
||||
}
|
||||
|
||||
/* document search */
|
||||
function completeSearch(ret_obj, response_tags, params, fo_obj)
|
||||
{
|
||||
fo_obj.submit();
|
||||
}
|
||||
|
||||
function completeVote(ret_obj)
|
||||
{
|
||||
var error = ret_obj.error;
|
||||
var message = ret_obj.message;
|
||||
redirect(window.location.href);
|
||||
}
|
||||
|
||||
// current page reload
|
||||
function completeReload(ret_obj)
|
||||
{
|
||||
var error = ret_obj.error;
|
||||
var message = ret_obj.message;
|
||||
redirect(window.location.href);
|
||||
}
|
||||
|
||||
/* complete to insert comment*/
|
||||
function completeInsertComment(ret_obj)
|
||||
{
|
||||
var error = ret_obj.error;
|
||||
var message = ret_obj.message;
|
||||
var mid = ret_obj.mid;
|
||||
var document_srl = ret_obj.document_srl;
|
||||
var comment_srl = ret_obj.comment_srl;
|
||||
if (ret_obj.redirect_url) {
|
||||
redirect(ret_obj.redirect_url);
|
||||
} else {
|
||||
var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act','');
|
||||
if (comment_srl) url = url.setQuery('comment_srl',comment_srl)+"#comment_"+comment_srl;
|
||||
redirect(url);
|
||||
}
|
||||
}
|
||||
|
||||
/* delete the comment */
|
||||
function completeDeleteComment(ret_obj)
|
||||
{
|
||||
var error = ret_obj.error;
|
||||
var message = ret_obj.message;
|
||||
var mid = ret_obj.mid;
|
||||
var document_srl = ret_obj.document_srl;
|
||||
var page = ret_obj.page;
|
||||
|
||||
if (ret_obj.redirect_url) {
|
||||
redirect(ret_obj.redirect_url);
|
||||
} else {
|
||||
var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act','');
|
||||
if (page) url = url.setQuery('page',page);
|
||||
redirect(url);
|
||||
}
|
||||
}
|
||||
|
||||
/* delete the trackback */
|
||||
function completeDeleteTrackback(ret_obj)
|
||||
{
|
||||
var error = ret_obj.error;
|
||||
var message = ret_obj.message;
|
||||
var mid = ret_obj.mid;
|
||||
var document_srl = ret_obj.document_srl;
|
||||
var page = ret_obj.page;
|
||||
|
||||
if (ret_obj.redirect_url) {
|
||||
redirect(ret_obj.redirect_url);
|
||||
} else {
|
||||
var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act','');
|
||||
if (page) url = url.setQuery('page',page);
|
||||
redirect(url);
|
||||
}
|
||||
}
|
||||
|
||||
/* change category */
|
||||
function doChangeCategory()
|
||||
{
|
||||
var category_srl = jQuery('#board_category option:selected').val();
|
||||
location.href = decodeURI(current_url).setQuery('category',category_srl).setQuery('page', '');
|
||||
}
|
||||
|
||||
/* scrap */
|
||||
function doScrap(document_srl)
|
||||
{
|
||||
var params = [];
|
||||
params.document_srl = document_srl;
|
||||
jQuery.exec_json('member.procMemberScrapDocument', params);
|
||||
}
|
||||
|
||||
|
||||
jQuery(function($){
|
||||
|
||||
$(document.body).click(function(e){
|
||||
var t = $(e.target), act, params = {};
|
||||
|
||||
if(t.parents('.layer_voted_member').length === 0 && !t.is('.layer_voted_member')){
|
||||
$('.layer_voted_member').hide().remove();
|
||||
}
|
||||
|
||||
if(!t.is('a[class^=voted_member_]')) return;
|
||||
|
||||
var srl = parseInt(t.attr('class').replace(/[^0-9]/g,''));
|
||||
if(!srl) return;
|
||||
|
||||
if(t.hasClass('comment')){
|
||||
act = 'comment.getCommentVotedMemberList';
|
||||
params =
|
||||
{'comment_srl':srl,'point':(t.hasClass('votedup')?1:-1)};
|
||||
}else{
|
||||
act = 'document.getDocumentVotedMemberList';
|
||||
params =
|
||||
{'document_srl':srl,'point':(t.hasClass('votedup')?1:-1)};
|
||||
}
|
||||
|
||||
$.exec_json(act, params, function(data){
|
||||
var l = data.voted_member_list;
|
||||
var ul = [];
|
||||
|
||||
if(!l || l.length === 0) return;
|
||||
|
||||
$.each(l,function(){
|
||||
ul.push(this.nick_name);
|
||||
});
|
||||
|
||||
t.after($('<ul>')
|
||||
.addClass('layer_voted_member')
|
||||
.css({'position':'absolute','top':e.pageY+5,'left':e.pageX})
|
||||
.append('<li>'+ul.join('</li><li>')+'</li>')
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
20
modules/board/tpl/js/rewrite.js
Normal file
20
modules/board/tpl/js/rewrite.js
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
'use strict';
|
||||
|
||||
/**
|
||||
* Remove comment_srl and unnecessary page number from short URL
|
||||
*/
|
||||
(function() {
|
||||
var match = location.pathname.match(/\/([a-zA-Z0-9_]+)\/([0-9]+)\/(comment|page)\/([0-9]+)$/);
|
||||
if (match && match[1] === window.current_mid) {
|
||||
var newpath = location.pathname.replace(/\/(comment|page)\/([0-9]+)$/, '');
|
||||
if (location.hash && location.hash !== '#') {
|
||||
newpath += location.hash;
|
||||
}
|
||||
if (history.replaceState) {
|
||||
history.replaceState({
|
||||
rx_replaced: true,
|
||||
prev: location.pathname,
|
||||
}, '', newpath);
|
||||
}
|
||||
}
|
||||
})();
|
||||
|
|
@ -175,7 +175,8 @@ class layoutAdminController extends layout
|
|||
$oModuleModel = getModel('module');
|
||||
$oModuleController = getController('module');
|
||||
$layout_config = new stdClass();
|
||||
$layout_config->header_script = Context::get('header_script');
|
||||
$layout_config->header_script = Context::get('header_script') ?? '';
|
||||
$layout_config->header_script = Rhymix\Modules\Admin\Models\Utility::cleanHeaderAndFooterScripts($layout_config->header_script);
|
||||
$oModuleController->insertModulePartConfig('layout',$args->layout_srl,$layout_config);
|
||||
// Save a title of the menu
|
||||
$extra_vars->menu_name_list = $menu_name_list;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue