Commit 15791dff authored by David Monllaó's avatar David Monllaó
Browse files

Merge branch 'MDL-9070' of git://github.com/aolley/moodle

parents d4e65df2 05f1455b
......@@ -483,7 +483,9 @@ $string['subscriptionauto'] = 'Auto subscription';
$string['subscriptiondisabled'] = 'Subscription disabled';
$string['subscriptions'] = 'Subscriptions';
$string['thisforumisthrottled'] = 'This forum has a limit to the number of forum postings you can make in a given time period - this is currently set at {$a->blockafter} posting(s) in {$a->blockperiod}';
$string['timedhidden'] = 'Timed status: Hidden from students';
$string['timedposts'] = 'Timed posts';
$string['timedvisible'] = 'Timed status: Visible to all users';
$string['timestartenderror'] = 'Display end date cannot be earlier than the start date';
$string['trackforum'] = 'Track unread posts';
$string['tracking'] = 'Track';
......
......@@ -3755,11 +3755,13 @@ function mod_forum_rating_can_see_item_ratings($params) {
* @param boolean $cantrack Is tracking enabled for this forum.
* @param boolean $forumtracked Is the user tracking this forum.
* @param boolean $canviewparticipants True if user has the viewparticipants permission for this course
* @param boolean $canviewhiddentimedposts True if user has the viewhiddentimedposts permission for this forum
*/
function forum_print_discussion_header(&$post, $forum, $group=-1, $datestring="",
$cantrack=true, $forumtracked=true, $canviewparticipants=true, $modcontext=NULL) {
function forum_print_discussion_header(&$post, $forum, $group = -1, $datestring = "",
$cantrack = true, $forumtracked = true, $canviewparticipants = true, $modcontext = null,
$canviewhiddentimedposts = false) {
global $COURSE, $USER, $CFG, $OUTPUT;
global $COURSE, $USER, $CFG, $OUTPUT, $PAGE;
static $rowcount;
static $strmarkalldread;
......@@ -3780,11 +3782,23 @@ function forum_print_discussion_header(&$post, $forum, $group=-1, $datestring=""
$post->subject = format_string($post->subject,true);
$timeddiscussion = !empty($CFG->forum_enabletimedposts) && ($post->timestart || $post->timeend);
$timedoutsidewindow = '';
if ($timeddiscussion && ($post->timestart > time() || ($post->timeend != 0 && $post->timeend < time()))) {
$timedoutsidewindow = ' dimmed_text';
}
echo "\n\n";
echo '<tr class="discussion r'.$rowcount.'">';
echo '<tr class="discussion r'.$rowcount.$timedoutsidewindow.'">';
// Topic
echo '<td class="topic starter">';
$canalwaysseetimedpost = $USER->id == $post->userid || $canviewhiddentimedposts;
if ($timeddiscussion && $canalwaysseetimedpost) {
echo $PAGE->get_renderer('mod_forum')->timed_discussion_tooltip($post, empty($timedoutsidewindow));
}
echo '<a href="'.$CFG->wwwroot.'/mod/forum/discuss.php?d='.$post->discussion.'">'.$post->subject.'</a>';
echo "</td>\n";
......@@ -5470,6 +5484,7 @@ function forum_print_latest_discussions($course, $forum, $maxdiscussions = -1, $
}
$canviewparticipants = has_capability('moodle/course:viewparticipants',$context);
$canviewhiddentimedposts = has_capability('mod/forum:viewhiddentimedposts', $context);
$strdatestring = get_string('strftimerecentfull');
......@@ -5569,7 +5584,7 @@ function forum_print_latest_discussions($course, $forum, $maxdiscussions = -1, $
$group = -1;
}
forum_print_discussion_header($discussion, $forum, $group, $strdatestring, $cantrack, $forumtracked,
$canviewparticipants, $context);
$canviewparticipants, $context, $canviewhiddentimedposts);
break;
default:
$link = false;
......
......@@ -160,5 +160,27 @@ class mod_forum_renderer extends plugin_renderer_base {
return $output;
}
/**
* Generate the HTML for an icon to be displayed beside the subject of a timed discussion.
*
* @param object $discussion
* @param bool $visiblenow Indicicates that the discussion is currently
* visible to all users.
* @return string
*/
public function timed_discussion_tooltip($discussion, $visiblenow) {
$dates = array();
if ($discussion->timestart) {
$dates[] = get_string('displaystart', 'mod_forum').': '.userdate($discussion->timestart);
}
if ($discussion->timeend) {
$dates[] = get_string('displayend', 'mod_forum').': '.userdate($discussion->timeend);
}
$str = $visiblenow ? 'timedvisible' : 'timedhidden';
$dates[] = get_string($str, 'mod_forum');
$tooltip = implode("\n", $dates);
return $this->pix_icon('i/calendar', $tooltip, 'moodle', array('class' => 'smallicon timedpost'));
}
}
......@@ -165,3 +165,13 @@ span.unread {
.dir-rtl .path-mod-forum .discussionsubscription {
text-align: left;
}
#page-mod-forum-view img.timedpost {
margin-right: 5px;
}
.dir-rtl#page-mod-forum-view img.timedpost {
margin-right: 0px;
margin-left: 5px;
float: right;
}
@mod @mod_forum
Feature: Users can choose to set start and end time for display of their discussions
In order to see timed forum discussions
As a user
I need to view the page within the window
As a user with viewhiddentimedposts
I need to see the timed discussion tooltips
Background:
Given the following "users" exist:
| username | firstname | lastname | email |
| student1 | Student | 1 | student1@example.com |
And the following "courses" exist:
| fullname | shortname | category |
| Course 1 | C1 | 0 |
And the following "course enrolments" exist:
| user | course | role |
| student1 | C1 | student |
And I log in as "admin"
And the following config values are set as admin:
| forum_enabletimedposts | 1 |
And I am on site homepage
And I follow "Course 1"
And I turn editing mode on
And I add a "Forum" to section "1" and I fill the form with:
| Forum name | Test forum name |
| Description | Test forum description |
And I add a new discussion to "Test forum name" forum with:
| Subject | Discussion 1 |
| Message | Discussion contents 1, first message |
And I add a new discussion to "Test forum name" forum with:
| Subject | Discussion 2 timed not visible |
| Message | Discussion contents 2, first message |
| timeend[enabled] | 1 |
| timeend[year] | 2014 |
And I add a new discussion to "Test forum name" forum with:
| Subject | Discussion 3 timed visible now |
| Message | Discussion contents 3, first message |
| timestart[enabled] | 1 |
Scenario: Creator of the discussion should see the tooltip
Given I am on site homepage
And I follow "Course 1"
And I follow "Test forum name"
Then I should see "Discussion 2 timed"
And I should see "Discussion 3 timed"
And ".timedpost" "css_element" should exist
Scenario: Student should not see the tooltip or the discussion
Given I log out
And I log in as "student1"
And I follow "Course 1"
Given I follow "Test forum name"
And I should see "Discussion 1"
Then I should not see "Discussion 2 timed"
And ".timedpost" "css_element" should not exist
But I should see "Discussion 3 timed"
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment