Split frontend URL rewriting script into its own file loaded separately

This commit is contained in:
Kijin Sung 2023-06-20 16:43:44 +09:00
parent 16cf779d7a
commit 0de42bebaf
3 changed files with 202 additions and 193 deletions

View file

@ -105,7 +105,11 @@ class BoardView extends Board
* load javascript, JS filters * load javascript, JS filters
**/ **/
Context::addJsFilter($this->module_path.'tpl/filter', 'input_password.xml'); 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/document/lang');
Context::loadLang('./modules/comment/lang'); Context::loadLang('./modules/comment/lang');

View file

@ -1,192 +1,177 @@
/** /**
* @file modules/board/js/board.js * @file modules/board/js/board.js
* @author NHN (developers@xpressengine.com) * @author NHN (developers@xpressengine.com)
* @brief board 모듈의 javascript * @brief board 모듈의 javascript
**/ **/
/* complete tp insert document */ /* complete tp insert document */
function completeDocumentInserted(ret_obj) function completeDocumentInserted(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 document_srl = ret_obj.document_srl; var document_srl = ret_obj.document_srl;
var category_srl = ret_obj.category_srl; var category_srl = ret_obj.category_srl;
if (ret_obj.redirect_url) { if (ret_obj.redirect_url) {
redirect(ret_obj.redirect_url); redirect(ret_obj.redirect_url);
} else { } else {
var url; var url;
if(!document_srl) if(!document_srl)
{ {
url = current_url.setQuery('mid',mid).setQuery('act',''); url = current_url.setQuery('mid',mid).setQuery('act','');
} }
else else
{ {
url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act',''); url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act','');
} }
if(category_srl) url = url.setQuery('category',category_srl); if(category_srl) url = url.setQuery('category',category_srl);
redirect(url); redirect(url);
} }
} }
/* delete the document */ /* delete the document */
function completeDeleteDocument(ret_obj) function completeDeleteDocument(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 page = ret_obj.page; var page = ret_obj.page;
var url = current_url.setQuery('mid',mid).setQuery('act','').setQuery('document_srl',''); var url = current_url.setQuery('mid',mid).setQuery('act','').setQuery('document_srl','');
if(page) url = url.setQuery('page',page); if(page) url = url.setQuery('page',page);
redirect(url); redirect(url);
} }
/* document search */ /* document search */
function completeSearch(ret_obj, response_tags, params, fo_obj) function completeSearch(ret_obj, response_tags, params, fo_obj)
{ {
fo_obj.submit(); fo_obj.submit();
} }
function completeVote(ret_obj) function completeVote(ret_obj)
{ {
var error = ret_obj.error; var error = ret_obj.error;
var message = ret_obj.message; var message = ret_obj.message;
redirect(window.location.href); redirect(window.location.href);
} }
// current page reload // current page reload
function completeReload(ret_obj) function completeReload(ret_obj)
{ {
var error = ret_obj.error; var error = ret_obj.error;
var message = ret_obj.message; var message = ret_obj.message;
redirect(window.location.href); redirect(window.location.href);
} }
/* complete to insert comment*/ /* complete to insert comment*/
function completeInsertComment(ret_obj) function completeInsertComment(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 document_srl = ret_obj.document_srl; var document_srl = ret_obj.document_srl;
var comment_srl = ret_obj.comment_srl; var comment_srl = ret_obj.comment_srl;
if (ret_obj.redirect_url) { if (ret_obj.redirect_url) {
redirect(ret_obj.redirect_url); redirect(ret_obj.redirect_url);
} else { } else {
var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act',''); 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; if (comment_srl) url = url.setQuery('comment_srl',comment_srl)+"#comment_"+comment_srl;
redirect(url); redirect(url);
} }
} }
/* delete the comment */ /* delete the comment */
function completeDeleteComment(ret_obj) function completeDeleteComment(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 document_srl = ret_obj.document_srl; var document_srl = ret_obj.document_srl;
var page = ret_obj.page; var page = ret_obj.page;
if (ret_obj.redirect_url) { if (ret_obj.redirect_url) {
redirect(ret_obj.redirect_url); redirect(ret_obj.redirect_url);
} else { } else {
var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act',''); var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act','');
if (page) url = url.setQuery('page',page); if (page) url = url.setQuery('page',page);
redirect(url); redirect(url);
} }
} }
/* delete the trackback */ /* delete the trackback */
function completeDeleteTrackback(ret_obj) function completeDeleteTrackback(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 document_srl = ret_obj.document_srl; var document_srl = ret_obj.document_srl;
var page = ret_obj.page; var page = ret_obj.page;
if (ret_obj.redirect_url) { if (ret_obj.redirect_url) {
redirect(ret_obj.redirect_url); redirect(ret_obj.redirect_url);
} else { } else {
var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act',''); var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act','');
if (page) url = url.setQuery('page',page); if (page) url = url.setQuery('page',page);
redirect(url); redirect(url);
} }
} }
/* change category */ /* change category */
function doChangeCategory() function doChangeCategory()
{ {
var category_srl = jQuery('#board_category option:selected').val(); var category_srl = jQuery('#board_category option:selected').val();
location.href = decodeURI(current_url).setQuery('category',category_srl).setQuery('page', ''); location.href = decodeURI(current_url).setQuery('category',category_srl).setQuery('page', '');
} }
/* scrap */ /* scrap */
function doScrap(document_srl) function doScrap(document_srl)
{ {
var params = []; var params = [];
params.document_srl = document_srl; params.document_srl = document_srl;
jQuery.exec_json('member.procMemberScrapDocument', params); jQuery.exec_json('member.procMemberScrapDocument', params);
} }
jQuery(function($){ jQuery(function($){
/* remove comment_srl and unnecessary page number from short URL */ $(document.body).click(function(e){
var match = location.pathname.match(/\/([a-zA-Z0-9_]+)\/([0-9]+)\/(comment|page)\/([0-9]+)$/); var t = $(e.target), act, params = {};
if (match && match[1] === window.current_mid) {
var newpath = location.pathname.replace(/\/(comment|page)\/([0-9]+)$/, ''); if(t.parents('.layer_voted_member').length === 0 && !t.is('.layer_voted_member')){
if (location.hash && location.hash !== '#') { $('.layer_voted_member').hide().remove();
newpath += location.hash; }
}
if (history.replaceState) { if(!t.is('a[class^=voted_member_]')) return;
history.replaceState({
rx_replaced: true, var srl = parseInt(t.attr('class').replace(/[^0-9]/g,''));
prev: location.pathname, if(!srl) return;
}, '', newpath);
} if(t.hasClass('comment')){
} act = 'comment.getCommentVotedMemberList';
params =
$(document.body).click(function(e){ {'comment_srl':srl,'point':(t.hasClass('votedup')?1:-1)};
var t = $(e.target), act, params = {}; }else{
act = 'document.getDocumentVotedMemberList';
if(t.parents('.layer_voted_member').length === 0 && !t.is('.layer_voted_member')){ params =
$('.layer_voted_member').hide().remove(); {'document_srl':srl,'point':(t.hasClass('votedup')?1:-1)};
} }
if(!t.is('a[class^=voted_member_]')) return; $.exec_json(act, params, function(data){
var l = data.voted_member_list;
var srl = parseInt(t.attr('class').replace(/[^0-9]/g,'')); var ul = [];
if(!srl) return;
if(!l || l.length === 0) return;
if(t.hasClass('comment')){
act = 'comment.getCommentVotedMemberList'; $.each(l,function(){
params = ul.push(this.nick_name);
{'comment_srl':srl,'point':(t.hasClass('votedup')?1:-1)}; });
}else{
act = 'document.getDocumentVotedMemberList'; t.after($('<ul>')
params = .addClass('layer_voted_member')
{'document_srl':srl,'point':(t.hasClass('votedup')?1:-1)}; .css({'position':'absolute','top':e.pageY+5,'left':e.pageX})
} .append('<li>'+ul.join('</li><li>')+'</li>')
);
$.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>')
);
});
});
});

View 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);
}
}
})();