diff --git a/phpBB/includes/functions_display.php b/phpBB/includes/functions_display.php
index 73129803ee..9745d493c4 100644
--- a/phpBB/includes/functions_display.php
+++ b/phpBB/includes/functions_display.php
@@ -61,10 +61,23 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
{
markread('all', false, false, request_var('mark_time', 0));
- trigger_error(
- $user->lang['FORUMS_MARKED'] . '
' .
- sprintf($user->lang['RETURN_INDEX'], '', '')
- );
+ if (!$request->is_ajax())
+ {
+ trigger_error(
+ $user->lang['FORUMS_MARKED'] . '
' .
+ sprintf($user->lang['RETURN_INDEX'], '', '')
+ );
+ }
+ else
+ {
+ // Tell the ajax script what language vars need to be replaced
+ $data = array(
+ 'NO_UNREAD_POSTS' => $user->lang['NO_UNREAD_POSTS'],
+ 'UNREAD_POSTS' => $user->lang['UNREAD_POSTS']
+ );
+ $json_response = new phpbb_json_response();
+ $json_response->send($data);
+ }
}
else
{
@@ -313,7 +326,20 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
$message = sprintf($user->lang['RETURN_FORUM'], '', '');
meta_refresh(3, $redirect);
- trigger_error($user->lang['FORUMS_MARKED'] . '
' . $message);
+ if (!$request->is_ajax())
+ {
+ trigger_error($user->lang['FORUMS_MARKED'] . '
' . $message);
+ }
+ else
+ {
+ // Tell the ajax script what language vars need to be replaced
+ $data = array(
+ 'NO_UNREAD_POSTS' => $user->lang['NO_UNREAD_POSTS'],
+ 'UNREAD_POSTS' => $user->lang['UNREAD_POSTS']
+ );
+ $json_response = new phpbb_json_response();
+ $json_response->send($data);
+ }
}
else
{
diff --git a/phpBB/styles/prosilver/template/ajax.js b/phpBB/styles/prosilver/template/ajax.js
index fa31d3268f..4ae4f91d8d 100644
--- a/phpBB/styles/prosilver/template/ajax.js
+++ b/phpBB/styles/prosilver/template/ajax.js
@@ -2,6 +2,22 @@
"use strict";
+// This callback will mark all forum icons read
+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) {
+ $(this).removeClass('forum_unread').addClass('forum_read');
+ $(this).children('dt[title=' + unread_title + ']').attr('title', read_title);
+ });
+
+ $('li.row dl.forum_unread_subforum').each(function(e) {
+ $(this).removeClass('forum_unread_subforum').addClass('forum_read_subforum');
+ $(this).children('dt[title=' + unread_title + ']').attr('title', read_title);
+ });
+});
+
// This callback finds the post from the delete link, and removes it.
phpbb.add_ajax_callback('post_delete', function() {
var el = $(this),
diff --git a/phpBB/styles/prosilver/template/index_body.html b/phpBB/styles/prosilver/template/index_body.html
index 6babbf5997..0682abffed 100644
--- a/phpBB/styles/prosilver/template/index_body.html
+++ b/phpBB/styles/prosilver/template/index_body.html
@@ -8,7 +8,7 @@