aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/styles
diff options
context:
space:
mode:
authorCallum Macrae <callum@lynxphp.com>2011-07-14 14:41:24 +0100
committerIgor Wiedler <igor@wiedler.ch>2012-03-31 02:00:22 +0200
commite6401c081e2e7543db020d16271792d715571249 (patch)
tree01c730958c6b36718407cd487e947e01872591c5 /phpBB/styles
parentd420ceb9c717b83ba29dde3734b563881051e51a (diff)
downloadforums-e6401c081e2e7543db020d16271792d715571249.tar
forums-e6401c081e2e7543db020d16271792d715571249.tar.gz
forums-e6401c081e2e7543db020d16271792d715571249.tar.bz2
forums-e6401c081e2e7543db020d16271792d715571249.tar.xz
forums-e6401c081e2e7543db020d16271792d715571249.zip
[ticket/10271] Added phpbb.confirm_box (JavaScript).
As well as adding the method, this commit also changes the previous commit so that deleting a post from viewtopic uses this method, too. This commit has also made some improvements to phpbb.alert and phpbb.confirm. PHPBB3-10271
Diffstat (limited to 'phpBB/styles')
-rw-r--r--phpBB/styles/script.js97
1 files changed, 70 insertions, 27 deletions
diff --git a/phpBB/styles/script.js b/phpBB/styles/script.js
index 9be3efd4ce..ed10375cf1 100644
--- a/phpBB/styles/script.js
+++ b/phpBB/styles/script.js
@@ -5,11 +5,13 @@ var phpbb = {};
*
* @param string title Title of the message, eg "Information"
* @param string msg Message to display. Can be HTML.
+ *
+ * @return Returns the div created.
*/
phpbb.alert = function(title, msg) {
var div = $('<div class="jalert"><h3>' + title + '</h3><p>' + msg + '</p></div>');
- $(document).bind('click', function(e) {
+ $(document).one('click', function(e) {
if ($(e.target).parents('.jalert').length)
{
return true;
@@ -22,6 +24,7 @@ phpbb.alert = function(title, msg) {
$('body').append(div);
div.show(300);
+ return div;
}
/**
@@ -29,6 +32,8 @@ phpbb.alert = function(title, msg) {
*
* @param string msg Message to display. Can be HTML.
* @param function callback Callback.
+ *
+ * @return Returns the div created.
*/
phpbb.confirm = function(msg, callback) {
var div = $('<div class="jalert"><p>' + msg + '</p>\
@@ -45,36 +50,74 @@ phpbb.confirm = function(msg, callback) {
return false;
});
div.show(300);
+ return div;
}
-
-$('.delete-icon a').click(function()
+/**
+ * This function interacts via AJAX with phpBBs confirm_box function.
+ *
+ * @param string condition The element to capture.
+ * @param bool/function refresh If we are sent back a refresh, should it be
+ * acted upon? This can either be true / false / a function.
+ * @param function callback Callback.
+ */
+phpbb.confirm_box = function(condition, refresh, callback)
{
- var pid = this.href.split('&p=')[1];
- var __self = this;
- $.get(this.href, function(res) {
- res = JSON.parse(res);
- phpbb.confirm(res.MESSAGE_TEXT, function(del) {
- if (del)
- {
- var p = res.S_CONFIRM_ACTION.split('?');
- p[1] += '&confirm=Yes'
- $.post(p[0], p[1], function(res) {
- res = JSON.parse(res);
- phpbb.alert(res.MESSAGE_TITLE, res.MESSAGE_TEXT)
- $(__self).parents('div #p' + pid).remove();
+ __self = this;
+ $(condition).click(function() {
+ var __self = this;
+ $.get(this.href, function(res) {
+ res = JSON.parse(res);
+ phpbb.confirm(res.MESSAGE_TEXT, function(del) {
+ if (del)
+ {
+ var p = res.S_CONFIRM_ACTION.split('?');
+ p[1] += '&confirm=Yes';
+ $.post(p[0], p[1], function(res) {
+ res = JSON.parse(res);
+ var alert = phpbb.alert(res.MESSAGE_TITLE, res.MESSAGE_TEXT);
+ callback(__self);
- //if there is a refresh, check that it isn't to the same place
- if (res.REFRESH_DATA && res.REFRESH_DATA.url.indexOf('t=') === -1)
- {
- setTimeout(function() {
- window.location = res.REFRESH_DATA.url;
- }, res.REFRESH_DATA.time * 1000);
- }
- });
- }
+ if (res.REFRESH_DATA)
+ {
+ if (typeof refresh === 'function')
+ {
+ refresh = refresh(res.REFRESH_DATA.url)
+ }
+ else if (typeof refresh !== 'boolean')
+ {
+ refresh = false;
+ }
+
+ if (refresh)
+ {
+ setTimeout(function() {
+ window.location = res.REFRESH_DATA.url;
+ }, res.REFRESH_DATA.time * 1000);
+ }
+ else
+ {
+ setTimeout(function() {
+ div.hide(300, function() {
+ div.remove();
+ });
+ }, res.REFRESH_DATA.time * 1000);
+ }
+ }
+ });
+ }
+ });
});
+ return false;
});
- return false;
-});
+}
+
+var refresh = function(url) {
+ return (url.indexOf('t=') === -1);
+}
+var callback = function(el) {
+ var pid = el.href.split('&p=')[1];
+ $(el).parents('div #p' + pid).remove();
+}
+phpbb.confirm_box('.delete-icon a', refresh, callback);