From 506522d582582b4afa6c541cdd57042ed076b59d Mon Sep 17 00:00:00 2001 From: Frederic Massart Date: Tue, 29 Jan 2013 17:46:02 +0800 Subject: [PATCH] MDL-5875 forum: Option to display post word count --- .../backup/moodle2/backup_forum_stepslib.php | 2 +- mod/forum/db/install.xml | 3 +- mod/forum/db/upgrade.php | 28 ++++++++++++++----- mod/forum/lang/en/forum.php | 2 ++ mod/forum/lib.php | 8 +++++- mod/forum/mod_form.php | 5 ++++ mod/forum/styles.css | 3 ++ mod/forum/version.php | 4 +-- theme/anomaly/style/general.css | 4 +-- theme/standard/style/modules.css | 4 +-- version.php | 2 +- 11 files changed, 48 insertions(+), 17 deletions(-) mode change 100644 => 100755 mod/forum/db/install.xml diff --git a/mod/forum/backup/moodle2/backup_forum_stepslib.php b/mod/forum/backup/moodle2/backup_forum_stepslib.php index 8a1e90dd55ab0..69258d0b693c0 100644 --- a/mod/forum/backup/moodle2/backup_forum_stepslib.php +++ b/mod/forum/backup/moodle2/backup_forum_stepslib.php @@ -44,7 +44,7 @@ protected function define_structure() { 'maxbytes', 'maxattachments', 'forcesubscribe', 'trackingtype', 'rsstype', 'rssarticles', 'timemodified', 'warnafter', 'blockafter', 'blockperiod', 'completiondiscussions', 'completionreplies', - 'completionposts')); + 'completionposts', 'displaywordcount')); $discussions = new backup_nested_element('discussions'); diff --git a/mod/forum/db/install.xml b/mod/forum/db/install.xml old mode 100644 new mode 100755 index 828cf9c1a7ed4..17ab2292bef23 --- a/mod/forum/db/install.xml +++ b/mod/forum/db/install.xml @@ -1,5 +1,5 @@ - @@ -29,6 +29,7 @@ + diff --git a/mod/forum/db/upgrade.php b/mod/forum/db/upgrade.php index 9d828297c6153..9c03b57260e70 100644 --- a/mod/forum/db/upgrade.php +++ b/mod/forum/db/upgrade.php @@ -44,19 +44,33 @@ function xmldb_forum_upgrade($oldversion) { global $CFG, $DB, $OUTPUT; - $dbman = $DB->get_manager(); // loads ddl manager and xmldb classes + $dbman = $DB->get_manager(); // Loads ddl manager and xmldb classes. + // Moodle v2.2.0 release upgrade line. + // Put any upgrade step following this. - // Moodle v2.2.0 release upgrade line - // Put any upgrade step following this + // Moodle v2.3.0 release upgrade line. + // Put any upgrade step following this. - // Moodle v2.3.0 release upgrade line - // Put any upgrade step following this + // Moodle v2.4.0 release upgrade line. + // Put any upgrade step following this. + // Moodle v2.5.0 release upgrade line. + // Put any upgrade step following this. + if ($oldversion < 2013020500) { - // Moodle v2.4.0 release upgrade line - // Put any upgrade step following this + // Define field displaywordcount to be added to forum. + $table = new xmldb_table('forum'); + $field = new xmldb_field('displaywordcount', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, '0', 'completionposts'); + // Conditionally launch add field displaywordcount. + if (!$dbman->field_exists($table, $field)) { + $dbman->add_field($table, $field); + } + + // Forum savepoint reached. + upgrade_mod_savepoint(true, 2013020500, 'forum'); + } return true; } diff --git a/mod/forum/lang/en/forum.php b/mod/forum/lang/en/forum.php index 8fad2a7dae994..8dd26b10abbc5 100644 --- a/mod/forum/lang/en/forum.php +++ b/mod/forum/lang/en/forum.php @@ -135,6 +135,8 @@ $string['displayperiod'] = 'Display period'; $string['displaystart'] = 'Display start'; $string['displaystart_help'] = 'This setting specifies whether a forum post should be displayed from a certain date. Note that administrators can always view forum posts.'; +$string['displaywordcount'] = 'Display word count'; +$string['displaywordcount_help'] = 'This setting specifies whether the word count of each post should be displayed or not.'; $string['eachuserforum'] = 'Each person posts one discussion'; $string['edit'] = 'Edit'; $string['editedby'] = 'Edited by {$a->name} - original submission {$a->date}'; diff --git a/mod/forum/lib.php b/mod/forum/lib.php index f8f0fea16ca90..943cf10e66ed2 100644 --- a/mod/forum/lib.php +++ b/mod/forum/lib.php @@ -3451,7 +3451,8 @@ function forum_print_post($post, $discussion, $forum, &$cm, $course, $ownpost=fa $postclass = 'shortenedpost'; $postcontent = format_text(forum_shorten_post($post->message), $post->messageformat, $options, $course->id); $postcontent .= html_writer::link($discussionlink, get_string('readtherest', 'forum')); - $postcontent .= html_writer::tag('span', '('.get_string('numwords', 'moodle', count_words(strip_tags($post->message))).')...', array('class'=>'post-word-count')); + $postcontent .= html_writer::tag('div', '('.get_string('numwords', 'moodle', count_words($post->message)).')', + array('class'=>'post-word-count')); } else { // Prepare whole post $postclass = 'fullpost'; @@ -3459,8 +3460,13 @@ function forum_print_post($post, $discussion, $forum, &$cm, $course, $ownpost=fa if (!empty($highlight)) { $postcontent = highlight($highlight, $postcontent); } + if (!empty($forum->displaywordcount)) { + $postcontent .= html_writer::tag('div', get_string('numwords', 'moodle', count_words($post->message)), + array('class'=>'post-word-count')); + } $postcontent .= html_writer::tag('div', $attachedimages, array('class'=>'attachedimages')); } + // Output the post content $output .= html_writer::tag('div', $postcontent, array('class'=>'posting '.$postclass)); $output .= html_writer::end_tag('div'); // Content diff --git a/mod/forum/mod_form.php b/mod/forum/mod_form.php index 9d6af25029b6e..5df7c0fc814f1 100644 --- a/mod/forum/mod_form.php +++ b/mod/forum/mod_form.php @@ -82,6 +82,11 @@ function definition() { $mform->addHelpButton('maxattachments', 'maxattachments', 'forum'); $mform->setDefault('maxattachments', $CFG->forum_maxattachments); + $mform->addElement('selectyesno', 'displaywordcount', get_string('displaywordcount', 'forum')); + $mform->addHelpButton('displaywordcount', 'displaywordcount', 'forum'); + $mform->setDefault('displaywordcount', 0); + $mform->setAdvanced('displaywordcount'); + if ($CFG->enablerssfeeds && isset($CFG->forum_enablerssfeeds) && $CFG->forum_enablerssfeeds) { //------------------------------------------------------------------------------- $mform->addElement('header', '', get_string('rss')); diff --git a/mod/forum/styles.css b/mod/forum/styles.css index 20a12f7321f56..ffcb097d24a4c 100644 --- a/mod/forum/styles.css +++ b/mod/forum/styles.css @@ -19,6 +19,7 @@ * div.left * div.options * div.commands + * div.post-word-count * div.forum-post-rating * div.link * div.footer @@ -40,6 +41,8 @@ .forumpost .options .forum-post-rating {float:left;} .forumpost .content .posting {overflow:auto;max-width:100%;} .forumpost .content .attachedimages img {max-width:100%;} +.forumpost .post-word-count { font-size: .85em; font-style: italic; } +.forumpost .shortenedpost .post-word-count { display: inline; padding: 0 .3em; } .dir-rtl .forumpost .row .topic, .dir-rtl .forumpost .row .content-mask, diff --git a/mod/forum/version.php b/mod/forum/version.php index e5da85bcf98f4..e55d9cab2f655 100644 --- a/mod/forum/version.php +++ b/mod/forum/version.php @@ -25,7 +25,7 @@ defined('MOODLE_INTERNAL') || die(); -$module->version = 2012112902; // The current module version (Date: YYYYMMDDXX) -$module->requires = 2012112900; // Requires this Moodle version +$module->version = 2013020500; // The current module version (Date: YYYYMMDDXX) +$module->requires = 2012112900; // Requires this Moodle version $module->component = 'mod_forum'; // Full name of the plugin (used for diagnostics) $module->cron = 60; diff --git a/theme/anomaly/style/general.css b/theme/anomaly/style/general.css index f1d7bff649c73..b9072034db2fe 100644 --- a/theme/anomaly/style/general.css +++ b/theme/anomaly/style/general.css @@ -465,7 +465,7 @@ h2.tagline { padding-right: 10px; } .forumpost .content .shortenedpost a, -.forumpost .content .shortenedpost span.post-word-count, +.forumpost .content .post-word-count, .forumpost .commands, .forumpost .topic .author, .forumpost .options .link { @@ -710,4 +710,4 @@ h2.tagline { #adminsettings .form-buttons { margin: 0; text-align: center; -} \ No newline at end of file +} diff --git a/theme/standard/style/modules.css b/theme/standard/style/modules.css index e006e61c8af8d..3c4a734b56060 100644 --- a/theme/standard/style/modules.css +++ b/theme/standard/style/modules.css @@ -80,8 +80,8 @@ table.mod_index {width:90%;margin:1em auto;} .forumpost.firstpost .row.header {background-color:#DDD;} .forumpost .topic .author {font-size: 0.8em;padding:4px;} .forumpost .topic .subject {font-weight: bold;padding:4px 4px 0;} -.forumpost .content div, -.forumpost .options div {padding:4px;} +.forumpost .content > div, +.forumpost .options > div {padding:4px;} .forumpost.unread {background: #9EBEFF;} .forumpost.unread .content {border:2px solid #0046C7;} /** inside border of unread posts in nested format in */ .forumpost .comment-ctrl, diff --git a/version.php b/version.php index b867e43de2a61..6c8e4ea3331e4 100644 --- a/version.php +++ b/version.php @@ -30,7 +30,7 @@ defined('MOODLE_INTERNAL') || die(); -$version = 2013020800.00; // YYYYMMDD = weekly release date of this DEV branch +$version = 2013020800.01; // YYYYMMDD = weekly release date of this DEV branch // RR = release increments - 00 in DEV branches // .XX = incremental changes