Merge pull request #324 from kijin/pr/redirect-after-board-write

#323 게시판에서 글이나 댓글을 작성 또는 삭제한 후 짧은 주소로 redirect하도록 변경
This commit is contained in:
Kijin Sung 2016-03-07 08:39:48 +09:00
commit f40ea2e05d
5 changed files with 72 additions and 48 deletions

View file

@ -59,11 +59,7 @@ class ModuleObject extends Object
* */ * */
function setRedirectUrl($url = './', $output = NULL) function setRedirectUrl($url = './', $output = NULL)
{ {
$ajaxRequestMethod = array_flip($this->ajaxRequestMethod); $this->add('redirect_url', $url);
if(!isset($ajaxRequestMethod[Context::getRequestMethod()]))
{
$this->add('redirect_url', $url);
}
if($output !== NULL && is_object($output)) if($output !== NULL && is_object($output))
{ {

View file

@ -377,6 +377,21 @@ function sendMailTo(to) {
location.href="mailto:"+to; location.href="mailto:"+to;
} }
/**
* @brief url이동 (Rhymix 개선된 버전)
*/
function redirect(url) {
if (url === window.location.href || url.indexOf(window.location.href.replace(/#.+$/, "") + "#") === 0)
{
window.location.href = url;
window.location.reload();
}
else
{
window.location.href = url;
}
}
/** /**
* @brief url이동 (open_window 값이 N 아니면 새창으로 띄움) * @brief url이동 (open_window 값이 N 아니면 새창으로 띄움)
**/ **/
@ -394,7 +409,7 @@ function move_url(url, open_window) {
if(open_window) { if(open_window) {
winopen(url); winopen(url);
} else { } else {
location.href=url; redirect(url);
} }
return false; return false;

View file

@ -102,9 +102,11 @@
} }
// If the response contains a redirect URL, redirect immediately. // If the response contains a redirect URL, redirect immediately.
if (result.redirect_url) { if (data.redirect_url) {
window.location = result.redirect_url.replace(/&/g, "&"); data.redirect_url = data.redirect_url.replace(/&/g, "&");
return null; }
if (data.redirect_url && !$.isFunction(callback_success)) {
return redirect(data.redirect_url);
} }
// If there was a success callback, call it. // If there was a success callback, call it.
@ -220,6 +222,14 @@
} }
} }
// If the response contains a redirect URL, redirect immediately.
if (data.redirect_url) {
data.redirect_url = data.redirect_url.replace(/&/g, "&");
}
if (data.redirect_url && !$.isFunction(callback_success)) {
return redirect(data.redirect_url);
}
// If there was a success callback, call it. // If there was a success callback, call it.
if($.isFunction(callback_success)) { if($.isFunction(callback_success)) {
callback_success(data); callback_success(data);

View file

@ -198,6 +198,7 @@ class boardController extends board
} }
// return the results // return the results
$this->setRedirectUrl(getNotEncodedUrl('', 'mid', Context::get('mid'), 'act', '', 'document_srl', $output->get('document_srl')));
$this->add('mid', Context::get('mid')); $this->add('mid', Context::get('mid'));
$this->add('document_srl', $output->get('document_srl')); $this->add('document_srl', $output->get('document_srl'));
@ -406,6 +407,7 @@ class boardController extends board
} }
$this->setMessage('success_registed'); $this->setMessage('success_registed');
$this->setRedirectUrl(getNotEncodedUrl('', 'mid', Context::get('mid'), 'act', '', 'document_srl', $obj->document_srl) . '#comment_' . $obj->comment_srl);
$this->add('mid', Context::get('mid')); $this->add('mid', Context::get('mid'));
$this->add('document_srl', $obj->document_srl); $this->add('document_srl', $obj->document_srl);
$this->add('comment_srl', $obj->comment_srl); $this->add('comment_srl', $obj->comment_srl);
@ -456,6 +458,7 @@ class boardController extends board
$this->add('page', Context::get('page')); $this->add('page', Context::get('page'));
$this->add('document_srl', $output->get('document_srl')); $this->add('document_srl', $output->get('document_srl'));
$this->setMessage('success_deleted'); $this->setMessage('success_deleted');
$this->setRedirectUrl(getNotEncodedUrl('', 'mid', Context::get('mid'), 'act', '', 'page', Context::get('page'), 'document_srl', $output->get('document_srl')));
} }
/** /**
@ -480,6 +483,7 @@ class boardController extends board
$this->add('page', Context::get('page')); $this->add('page', Context::get('page'));
$this->add('document_srl', $output->get('document_srl')); $this->add('document_srl', $output->get('document_srl'));
$this->setMessage('success_deleted'); $this->setMessage('success_deleted');
$this->setRedirectUrl(getNotEncodedUrl('', 'mid', Context::get('mid'), 'act', '', 'page', Context::get('page'), 'document_srl', $output->get('document_srl')));
} }
/** /**

View file

@ -13,19 +13,21 @@ function completeDocumentInserted(ret_obj)
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;
//alert(message); if (ret_obj.redirect_url) {
redirect(ret_obj.redirect_url);
var url; } else {
if(!document_srl) var url;
{ if(!document_srl)
url = current_url.setQuery('mid',mid).setQuery('act',''); {
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);
} }
else
{
url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act','');
}
if(category_srl) url = url.setQuery('category',category_srl);
location.href = url;
} }
/* delete the document */ /* delete the document */
@ -38,10 +40,7 @@ function completeDeleteDocument(ret_obj)
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);
//alert(message);
location.href = url;
} }
/* document search */ /* document search */
@ -54,8 +53,7 @@ function completeVote(ret_obj)
{ {
var error = ret_obj.error; var error = ret_obj.error;
var message = ret_obj.message; var message = ret_obj.message;
alert(message); redirect(window.location.href);
location.href = location.href;
} }
// current page reload // current page reload
@ -63,8 +61,7 @@ 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);
location.href = location.href;
} }
/* complete to insert comment*/ /* complete to insert comment*/
@ -75,13 +72,13 @@ function completeInsertComment(ret_obj)
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) {
var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act',''); redirect(ret_obj.redirect_url);
if(comment_srl) url = url.setQuery('rnd',comment_srl)+"#comment_"+comment_srl; } else {
var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act','');
//alert(message); if (comment_srl) url = url.setQuery('rnd',comment_srl)+"#comment_"+comment_srl;
redirect(url);
location.href = url; }
} }
/* delete the comment */ /* delete the comment */
@ -93,12 +90,13 @@ function completeDeleteComment(ret_obj)
var document_srl = ret_obj.document_srl; var document_srl = ret_obj.document_srl;
var page = ret_obj.page; var page = ret_obj.page;
var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act',''); if (ret_obj.redirect_url) {
if(page) url = url.setQuery('page',page); redirect(ret_obj.redirect_url);
} else {
//alert(message); var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act','');
if (page) url = url.setQuery('page',page);
location.href = url; redirect(url);
}
} }
/* delete the trackback */ /* delete the trackback */
@ -110,12 +108,13 @@ function completeDeleteTrackback(ret_obj)
var document_srl = ret_obj.document_srl; var document_srl = ret_obj.document_srl;
var page = ret_obj.page; var page = ret_obj.page;
var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act',''); if (ret_obj.redirect_url) {
if(page) url = url.setQuery('page',page); redirect(ret_obj.redirect_url);
} else {
//alert(message); var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act','');
if (page) url = url.setQuery('page',page);
location.href = url; redirect(url);
}
} }
/* change category */ /* change category */