aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB')
-rw-r--r--phpBB/includes/functions_display.php14
-rw-r--r--phpBB/styles/prosilver/template/ajax.js98
-rw-r--r--phpBB/viewforum.php7
3 files changed, 79 insertions, 40 deletions
diff --git a/phpBB/includes/functions_display.php b/phpBB/includes/functions_display.php
index f3198bc1e5..cd4c901b58 100644
--- a/phpBB/includes/functions_display.php
+++ b/phpBB/includes/functions_display.php
@@ -63,10 +63,13 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
if ($request->is_ajax())
{
- // Tell the ajax script what language vars need to be replaced
+ // Tell the ajax script what language vars and URL need to be replaced
$data = array(
'NO_UNREAD_POSTS' => $user->lang['NO_UNREAD_POSTS'],
- 'UNREAD_POSTS' => $user->lang['UNREAD_POSTS']
+ 'UNREAD_POSTS' => $user->lang['UNREAD_POSTS'],
+ 'U_MARK_FORUMS' => ($user->data['is_registered'] || $config['load_anon_lastread']) ? append_sid("{$phpbb_root_path}index.$phpEx", 'hash=' . generate_link_hash('global') . '&mark=forums&mark_time=' . time()) : '',
+ 'MESSAGE_TITLE' => $user->lang['INFORMATION'],
+ 'MESSAGE_TEXT' => $user->lang['FORUMS_MARKED']
);
$json_response = new phpbb_json_response();
$json_response->send($data);
@@ -326,10 +329,13 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
if ($request->is_ajax())
{
- // Tell the ajax script what language vars need to be replaced
+ // Tell the ajax script what language vars and URL need to be replaced
$data = array(
'NO_UNREAD_POSTS' => $user->lang['NO_UNREAD_POSTS'],
- 'UNREAD_POSTS' => $user->lang['UNREAD_POSTS']
+ 'UNREAD_POSTS' => $user->lang['UNREAD_POSTS'],
+ 'U_MARK_FORUMS' => ($user->data['is_registered'] || $config['load_anon_lastread']) ? append_sid("{$phpbb_root_path}viewforum.$phpEx", 'hash=' . generate_link_hash('global') . '&f=' . $root_data['forum_id'] . '&mark=forums&mark_time=' . time()) : '',
+ 'MESSAGE_TITLE' => $user->lang['INFORMATION'],
+ 'MESSAGE_TEXT' => $user->lang['FORUMS_MARKED']
);
$json_response = new phpbb_json_response();
$json_response->send($data);
diff --git a/phpBB/styles/prosilver/template/ajax.js b/phpBB/styles/prosilver/template/ajax.js
index b406d7518d..6d700f1b91 100644
--- a/phpBB/styles/prosilver/template/ajax.js
+++ b/phpBB/styles/prosilver/template/ajax.js
@@ -7,62 +7,92 @@ phpbb.add_ajax_callback('mark_forums_read', function(res) {
var read_title = res.NO_UNREAD_POSTS;
var unread_title = res.UNREAD_POSTS;
- $('li.row dl.forum_unread').each(function(e) {
+ $('li.row').find('dl.forum_unread, dl.forum_unread_subforum, dl.forum_unread_locked').each(function() {
var current_object = $(this);
- current_object.removeClass('forum_unread').addClass('forum_read');
- current_object.children('dt[title=' + unread_title + ']').attr('title', read_title);
- });
- $('li.row dl.forum_unread_subforum').each(function(e) {
- var current_object = $(this);
- current_object.removeClass('forum_unread_subforum').addClass('forum_read_subforum');
+ if (current_object.hasClass('forum_unread'))
+ {
+ current_object.removeClass('forum_unread').addClass('forum_read');
+ }
+ else if (current_object.hasClass('forum_unread_subforum'))
+ {
+ current_object.removeClass('forum_unread_subforum').addClass('forum_read_subforum');
+ }
+ else
+ {
+ current_object.removeClass('forum_unread_locked').addClass('forum_read_locked');
+ }
current_object.children('dt[title=' + unread_title + ']').attr('title', read_title);
});
- $('li.row dl.forum_unread_locked').each(function(e) {
- var current_object = $(this);
- current_object.removeClass('forum_unread_locked').addClass('forum_read_locked');
- current_object.children('dt[title=' + unread_title + ']').attr('title', read_title);
+ // Update mark forums read links
+ $('[data-ajax=mark_forums_read]').each(function() {
+ $(this).attr('href', res.U_MARK_FORUMS);
});
+
+ // Hide alert after 3 seconds
+ setTimeout(function () {
+ $('#darkenwrapper').trigger('click');
+ }, 3000);
});
// This callback will mark all topic icons read
phpbb.add_ajax_callback('mark_topics_read', function(res) {
- var i,j;
var read_title = res.NO_UNREAD_POSTS;
var unread_title = res.UNREAD_POSTS;
- var icons_array = [
- ['global_unread', 'global_read'],
- ['announce_unread', 'announce_read'],
- ['sticky_unread', 'sticky_read'],
- ['topic_unread', 'topic_read']
- ];
-
+ var icons_array = {
+ 'global_unread': 'global_read',
+ 'announce_unread': 'announce_read',
+ 'sticky_unread': 'sticky_read',
+ 'topic_unread': 'topic_read'
+ };
var icons_state = ['', '_hot', '_hot_mine', '_locked', '_locked_mine', '_mine'];
+ var unread_class_selectors = '';
+ var class_array = {};
- // Make sure all icons are marked as read
- for (i = 0; i < icons_array.length; i++)
- {
- for (j = 0; j < icons_state.length; j++)
- {
+ $.each(icons_array, function(unread_class, read_class) {
+ $.each(icons_state, function(key, value) {
// Only topics can be hot
- if ((icons_state[j] == '_hot' || icons_state[j] == '_hot_mine') && icons_array[i][0] != 'topic_unread')
+ if ((value == '_hot' || value == '_hot_mine') && unread_class != 'topic_unread')
{
- continue;
+ return true;
}
+ var current_class = {};
+ current_class[unread_class + value] = read_class + value;
+ $.extend(class_array, current_class);
- $('li.row dl.' + icons_array[i][0] + icons_state[j]).each(function(e) {
- var current_object = $(this);
- current_object.removeClass(icons_array[i][0] + icons_state[j]).addClass(icons_array[i][1] + icons_state[j]);
- current_object.children('dt[title=' + unread_title + ']').attr('title', read_title);
- });
- }
- }
+ unread_class_selectors += '.' + unread_class + value + ',';
+ });
+ });
+
+ // Remove trailing comma
+ unread_class_selectors = unread_class_selectors.substring(0, unread_class_selectors.length - 1);
+
+ $('li.row').find(unread_class_selectors).each(function() {
+ var current_object = $(this);
+ $.each(class_array, function(unread_class, read_class) {
+ if (current_object.hasClass(unread_class))
+ {
+ current_object.removeClass(unread_class).addClass(read_class);
+ }
+ });
+ current_object.children('dt[title=' + unread_title + ']').attr('title', read_title);
+ });
// Remove link to first unread post
- $('span.icon_topic_newest').each(function(e) {
+ $('span.icon_topic_newest').each(function() {
$(this).remove();
});
+
+ // Update mark topics read links
+ $('[data-ajax=mark_topics_read]').each(function() {
+ $(this).attr('href', res.U_MARK_TOPICS);
+ });
+
+ // Hide alert after 3 seconds
+ setTimeout(function () {
+ $('#darkenwrapper').trigger('click');
+ }, 3000);
});
// This callback finds the post from the delete link, and removes it.
diff --git a/phpBB/viewforum.php b/phpBB/viewforum.php
index d514cf2d61..5fed514a12 100644
--- a/phpBB/viewforum.php
+++ b/phpBB/viewforum.php
@@ -183,10 +183,13 @@ if ($mark_read == 'topics')
if ($request->is_ajax())
{
- // Tell the ajax script what language vars need to be replaced
+ // Tell the ajax script what language vars and URL need to be replaced
$data = array(
'NO_UNREAD_POSTS' => $user->lang['NO_UNREAD_POSTS'],
- 'UNREAD_POSTS' => $user->lang['UNREAD_POSTS']
+ 'UNREAD_POSTS' => $user->lang['UNREAD_POSTS'],
+ 'U_MARK_TOPICS' => ($user->data['is_registered'] || $config['load_anon_lastread']) ? append_sid("{$phpbb_root_path}viewforum.$phpEx", 'hash=' . generate_link_hash('global') . "&f=$forum_id&mark=topics&mark_time=" . time()) : '',
+ 'MESSAGE_TITLE' => $user->lang['INFORMATION'],
+ 'MESSAGE_TEXT' => $user->lang['TOPICS_MARKED']
);
$json_response = new phpbb_json_response();
$json_response->send($data);