MDL-49101 core: Add a global admin setting config->requiremodintro
authorAndrew Hancox <andrewdchancox@googlemail.com>
Tue, 17 Mar 2015 09:28:16 +0000 (09:28 +0000)
committerAndrew Hancox <andrewdchancox@googlemail.com>
Tue, 7 Apr 2015 09:11:53 +0000 (10:11 +0100)
Removed requiremodintro setting from all core activity plugins and replace
with a single global setting.
Deprecated moodleform_mod::add_intro_editor and replaced with
moodleform_mod::standard_intro_elements

34 files changed:
admin/settings/plugins.php
course/moodleform_mod.php
course/tests/behat/add_activities.feature
lang/en/admin.php
lib/db/upgrade.php
mod/assign/mod_form.php
mod/book/mod_form.php
mod/book/settings.php
mod/chat/mod_form.php
mod/choice/mod_form.php
mod/data/mod_form.php
mod/feedback/mod_form.php
mod/folder/mod_form.php
mod/folder/settings.php
mod/forum/mod_form.php
mod/glossary/mod_form.php
mod/imscp/mod_form.php
mod/imscp/settings.php
mod/label/mod_form.php
mod/lesson/mod_form.php
mod/lesson/settings.php
mod/lti/mod_form.php
mod/page/mod_form.php
mod/page/settings.php
mod/quiz/mod_form.php
mod/resource/mod_form.php
mod/resource/settings.php
mod/scorm/mod_form.php
mod/survey/mod_form.php
mod/url/mod_form.php
mod/url/settings.php
mod/wiki/mod_form.php
mod/workshop/mod_form.php
version.php

index f0455b7..248b0bc 100644 (file)
@@ -32,6 +32,13 @@ if ($hassiteconfig) {
 
     // activity modules
     $ADMIN->add('modules', new admin_category('modsettings', new lang_string('activitymodules')));
+
+    $temp = new admin_settingpage('managemodulescommon', new lang_string('commonsettings', 'admin'));
+
+    $temp->add(new admin_setting_configcheckbox('requiremodintro',
+        get_string('requiremodintro', 'admin'), get_string('requiremodintro_desc', 'admin'), 0));
+    $ADMIN->add('modsettings', $temp);
+
     $ADMIN->add('modsettings', new admin_page_managemods());
     foreach (core_plugin_manager::instance()->get_plugins_of_type('mod') as $plugin) {
         /** @var \core\plugininfo\mod $plugin */
index 6a3a845..a45945b 100644 (file)
@@ -648,11 +648,31 @@ abstract class moodleform_mod extends moodleform {
         }
     }
 
-    function add_intro_editor($required=false, $customlabel=null) {
-        if (!$this->_features->introeditor) {
-            // intro editor not supported in this module
-            return;
-        }
+    /**
+     * Add an editor for an activity's introduction field.
+     * @deprecated since MDL-49101 - use moodleform_mod::standard_intro_elements() instead.
+     * @param null $required Override system default for requiremodintro
+     * @param null $customlabel Override default label for editor
+     * @throws coding_exception
+     */
+    protected function add_intro_editor($required=null, $customlabel=null) {
+        $str = "Function moodleform_mod::add_intro_editor() is deprecated, use moodleform_mod::standard_intro_elements() instead.";
+        debugging($str, DEBUG_DEVELOPER);
+
+        $this->standard_intro_elements($customlabel);
+    }
+
+
+    /**
+     * Add an editor for an activity's introduction field.
+     *
+     * @param null $customlabel Override default label for editor
+     * @throws coding_exception
+     */
+    protected function standard_intro_elements($customlabel=null) {
+        global $CFG;
+
+        $required = $CFG->requiremodintro;
 
         $mform = $this->_form;
         $label = is_null($customlabel) ? get_string('moduleintro') : $customlabel;
index 1bde753..4854e40 100644 (file)
@@ -37,13 +37,20 @@ Feature: Add activities to courses
     And the field "Allow comments on entries" matches value "Yes"
 
   @javascript
-  Scenario: Add an activity without the required fields
+  Scenario: Add an activity supplying only the name
     When I add a "Database" to section "3" and I fill the form with:
       | Name | Test name |
-    And I press "Save and return to course"
-    Then I should see "Adding a new"
-    And I should see "Required"
-    And I press "Cancel"
+    Then I should see "Test name"
+
+  @javascript @wip
+  Scenario: Set activity description to required then add an activity supplying only the name
+    Given I set the following administration settings values:
+      | requiremodintro | Yes |
+    When I follow "Home"
+    And I follow "Course 1"
+    And I add a "Database" to section "3" and I fill the form with:
+      | Name | Test name |
+    Then I should see "Required"
 
   Scenario: Add an activity to a course with Javascript disabled
     Then I should see "Add a resource to section 'Topic 1'"
index 69dbb49..de14f1c 100644 (file)
@@ -300,7 +300,6 @@ $string['configrequestedstudentname'] = 'Word for student used in requested cour
 $string['configrequestedstudentsname'] = 'Word for students used in requested courses';
 $string['configrequestedteachername'] = 'Word for teacher used in requested courses';
 $string['configrequestedteachersname'] = 'Word for teachers used in requested courses';
-$string['configrequiremodintro'] = 'Disable this option if you do not want to force users to enter description of each activity.';
 $string['configrunclamavonupload'] = 'When enabled, clam AV will be used to scan all uploaded files.';
 $string['configrunclamonupload'] = 'Run clam AV on file upload? You will need a correct path in pathtoclam for this to work.  (Clam AV is a free virus scanner that you can get from http://www.clamav.net/)';
 $string['configuserquota'] = 'The maximum number of bytes that a user can store in their own private file area. {$a->bytes} bytes == {$a->displaysize}';
@@ -911,6 +910,7 @@ $string['reportsmanage'] = 'Manage reports';
 $string['requiredentrieschanged'] = '<strong>IMPORTANT - PLEASE READ<br/>(This warning message will only be displayed during this upgrade)</strong><br/>Due to a bug fix, the behaviour of database activities using the \'Required entries\' and \'Required entries before viewing settings\' settings will change. A more detailed explanation of the changes can be read on <a href="http://moodle.org/mod/forum/discuss.php?d=110928" target="_blank">the database module forum</a>. The expected behavior of these settings can also be read on <a href="http://docs.moodle.org/en/Adding/editing_a_database#Required_entries" target="_blank">Moodle Docs</a>.
 <br/><br/>This change affects the following databases in your system: (Please save this list now, and after the upgrade, check that these activities still work the way that the teacher intends.)<br/><strong>{$a->text}</strong><br/>';
 $string['requiremodintro'] = 'Require activity description';
+$string['requiremodintro_desc'] = 'Enable this option if you want to force users to enter description of each activity.';
 $string['requires'] = 'Requires';
 $string['purgecaches']= 'Purge all caches';
 $string['purgecachesconfirm']= 'Moodle can cache themes, javascript, language strings, filtered text, rss feeds and many other pieces of calculated data.  Purging these caches will delete that data from the server and force browsers to refetch data, so that you can be sure you are seeing the most up-to-date values produced by the current code.  There is no danger in purging caches, but your site may appear slower for a while until the server and clients calculate new information and cache it.';
index 7b9944a..7ba43a7 100644 (file)
@@ -4216,5 +4216,10 @@ function xmldb_main_upgrade($oldversion) {
         upgrade_main_savepoint(true, 2015030400.00);
     }
 
+    if ($oldversion < 2015033000.00) {
+        $DB->delete_records('config_plugins', array('name' => 'requiremodintro'));
+        upgrade_main_savepoint(true, 2015033000.00);
+    }
+
     return true;
 }
index d60896b..a058bf1 100644 (file)
@@ -56,7 +56,7 @@ class mod_assign_mod_form extends moodleform_mod {
         $mform->addRule('name', null, 'required', null, 'client');
         $mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client');
 
-        $this->add_intro_editor(true, get_string('description', 'assign'));
+        $this->standard_intro_elements(get_string('description', 'assign'));
 
         $mform->addElement('filemanager', 'introattachments',
                             get_string('introattachments', 'assign'),
index e2ac096..a04924b 100644 (file)
@@ -46,7 +46,7 @@ class mod_book_mod_form extends moodleform_mod {
         }
         $mform->addRule('name', null, 'required', null, 'client');
         $mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client');
-        $this->add_intro_editor($config->requiremodintro, get_string('moduleintro'));
+        $this->standard_intro_elements(get_string('moduleintro'));
 
         // Appearance.
         $mform->addElement('header', 'appearancehdr', get_string('appearance'));
index 06669ba..31901d8 100644 (file)
@@ -29,9 +29,6 @@ if ($ADMIN->fulltree) {
 
     // General settings
 
-    $settings->add(new admin_setting_configcheckbox('book/requiremodintro',
-        get_string('requiremodintro', 'admin'), get_string('configrequiremodintro', 'admin'), 0));
-
     $options = book_get_numbering_types();
 
     $settings->add(new admin_setting_configmultiselect('book/numberingoptions',
index cee09ad..1e76a3b 100644 (file)
@@ -41,7 +41,7 @@ class mod_chat_mod_form extends moodleform_mod {
         $mform->addRule('name', null, 'required', null, 'client');
         $mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client');
 
-        $this->add_intro_editor(true, get_string('chatintro', 'chat'));
+        $this->standard_intro_elements(get_string('chatintro', 'chat'));
 
         // Chat sessions.
         $mform->addElement('header', 'sessionshdr', get_string('sessions', 'chat'));
index 9b9e495..ce31101 100644 (file)
@@ -24,7 +24,7 @@ class mod_choice_mod_form extends moodleform_mod {
         $mform->addRule('name', null, 'required', null, 'client');
         $mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client');
 
-        $this->add_intro_editor(true, get_string('description', 'choice'));
+        $this->standard_intro_elements(get_string('description', 'choice'));
 
         $mform->addElement('select', 'display', get_string("displaymode","choice"), $CHOICE_DISPLAY);
 
index eb7ab7c..6a25ea3 100644 (file)
@@ -24,7 +24,7 @@ class mod_data_mod_form extends moodleform_mod {
         $mform->addRule('name', null, 'required', null, 'client');
         $mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client');
 
-        $this->add_intro_editor(true, get_string('intro', 'data'));
+        $this->standard_intro_elements(get_string('intro', 'data'));
 
         // ----------------------------------------------------------------------
         $mform->addElement('header', 'entrieshdr', get_string('entries', 'data'));
index 5406337..2bf91dd 100644 (file)
@@ -46,7 +46,7 @@ class mod_feedback_mod_form extends moodleform_mod {
         $mform->addRule('name', null, 'required', null, 'client');
         $mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client');
 
-        $this->add_intro_editor(true, get_string('description', 'feedback'));
+        $this->standard_intro_elements(get_string('description', 'feedback'));
 
         //-------------------------------------------------------------------------------
         $mform->addElement('header', 'timinghdr', get_string('availability'));
index a5f96f7..7c6764c 100644 (file)
@@ -44,7 +44,7 @@ class mod_folder_mod_form extends moodleform_mod {
         }
         $mform->addRule('name', null, 'required', null, 'client');
         $mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client');
-        $this->add_intro_editor($config->requiremodintro);
+        $this->standard_intro_elements();
 
         //-------------------------------------------------------
         $mform->addElement('header', 'content', get_string('contentheader', 'folder'));
index bbd0bfd..f07e58d 100644 (file)
@@ -27,9 +27,6 @@ defined('MOODLE_INTERNAL') || die;
 
 if ($ADMIN->fulltree) {
     //--- general settings -----------------------------------------------------------------------------------
-    $settings->add(new admin_setting_configcheckbox('folder/requiremodintro',
-        get_string('requiremodintro', 'admin'), get_string('configrequiremodintro', 'admin'), 0));
-
     $settings->add(new admin_setting_configcheckbox('folder/showexpanded',
             get_string('showexpanded', 'folder'),
             get_string('showexpanded_help', 'folder'), 1));
index f980033..91cfea4 100644 (file)
@@ -46,7 +46,7 @@ class mod_forum_mod_form extends moodleform_mod {
         $mform->addRule('name', null, 'required', null, 'client');
         $mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client');
 
-        $this->add_intro_editor(true, get_string('forumintro', 'forum'));
+        $this->standard_intro_elements(get_string('forumintro', 'forum'));
 
         $forumtypes = forum_get_forum_types();
         core_collator::asort($forumtypes, core_collator::SORT_STRING);
index 9576132..670cfd7 100644 (file)
@@ -24,7 +24,7 @@ class mod_glossary_mod_form extends moodleform_mod {
         $mform->addRule('name', null, 'required', null, 'client');
         $mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client');
 
-        $this->add_intro_editor(true);
+        $this->standard_intro_elements();
 
         if (has_capability('mod/glossary:manageentries', context_system::instance())) {
             $mform->addElement('checkbox', 'globalglossary', get_string('isglobal', 'glossary'));
index 8823cdb..d93baf9 100644 (file)
@@ -54,7 +54,7 @@ class mod_imscp_mod_form extends moodleform_mod {
         }
         $mform->addRule('name', null, 'required', null, 'client');
         $mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client');
-        $this->add_intro_editor($config->requiremodintro);
+        $this->standard_intro_elements();
 
         // IMS-CP file upload.
         $mform->addElement('header', 'content', get_string('contentheader', 'imscp'));
index dc09b47..b5329e7 100644 (file)
 defined('MOODLE_INTERNAL') || die;
 
 if ($ADMIN->fulltree) {
-
-    // General settings.
-    $settings->add(new admin_setting_configcheckbox('imscp/requiremodintro', get_string('requiremodintro', 'admin'),
-                                        get_string('configrequiremodintro', 'admin'), 0));
-
     // Modedit defaults.
     $settings->add(new admin_setting_heading('imscpmodeditdefaults',
                                              get_string('modeditdefaults', 'admin'),
index a9b436a..7c54cb1 100644 (file)
@@ -34,7 +34,7 @@ class mod_label_mod_form extends moodleform_mod {
         $mform = $this->_form;
 
         $mform->addElement('header', 'generalhdr', get_string('general'));
-        $this->add_intro_editor(true, get_string('labeltext', 'label'));
+        $this->standard_intro_elements(get_string('labeltext', 'label'));
 
         $this->standard_coursemodule_elements();
 
index d9a92da..e491e4b 100644 (file)
@@ -90,7 +90,7 @@ class mod_lesson_mod_form extends moodleform_mod {
         }
         $mform->addRule('name', null, 'required', null, 'client');
         $mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client');
-        $this->add_intro_editor($config->requiremodintro);
+        $this->standard_intro_elements();
 
         // Appearance.
         $mform->addElement('header', 'appearancehdr', get_string('appearance'));
index 47a2922..3a9cb9c 100644 (file)
@@ -66,6 +66,4 @@ if ($ADMIN->fulltree) {
     $defaultnextpages[LESSON_UNANSWEREDPAGE] = get_string("showanunansweredpage", "lesson");
     $settings->add(new admin_setting_configselect('lesson_defaultnextpage', get_string('actionaftercorrectanswer','lesson'),
             get_string('configactionaftercorrectanswer', 'lesson'), 0, $defaultnextpages));
-    $settings->add(new admin_setting_configcheckbox('lesson/requiremodintro',
-        get_string('requiremodintro', 'admin'), get_string('configrequiremodintro', 'admin'), 0));
 }
index 1cbeee2..fcf8689 100644 (file)
@@ -71,7 +71,7 @@ class mod_lti_mod_form extends moodleform_mod {
         $mform->addRule('name', null, 'required', null, 'client');
         $mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client');
         // Adding the optional "intro" and "introformat" pair of fields.
-        $this->add_intro_editor(false, get_string('basicltiintro', 'lti'));
+        $this->standard_intro_elements(get_string('basicltiintro', 'lti'));
         $mform->setAdvanced('introeditor');
 
         // Display the label to the right of the checkbox so it looks better & matches rest of the form.
index f12b792..a411f1a 100644 (file)
@@ -47,7 +47,7 @@ class mod_page_mod_form extends moodleform_mod {
         }
         $mform->addRule('name', null, 'required', null, 'client');
         $mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client');
-        $this->add_intro_editor($config->requiremodintro);
+        $this->standard_intro_elements();
 
         //-------------------------------------------------------
         $mform->addElement('header', 'contentsection', get_string('contentheader', 'page'));
index 16d7adc..6424204 100644 (file)
@@ -32,8 +32,6 @@ if ($ADMIN->fulltree) {
     $defaultdisplayoptions = array(RESOURCELIB_DISPLAY_OPEN);
 
     //--- general settings -----------------------------------------------------------------------------------
-    $settings->add(new admin_setting_configcheckbox('page/requiremodintro',
-        get_string('requiremodintro', 'admin'), get_string('configrequiremodintro', 'admin'), 0));
     $settings->add(new admin_setting_configmultiselect('page/displayoptions',
         get_string('displayoptions', 'page'), get_string('configdisplayoptions', 'page'),
         $defaultdisplayoptions, $displayoptions));
index 694ab98..f99c672 100644 (file)
@@ -77,7 +77,7 @@ class mod_quiz_mod_form extends moodleform_mod {
         $mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client');
 
         // Introduction.
-        $this->add_intro_editor(false, get_string('introduction', 'quiz'));
+        $this->standard_intro_elements(get_string('introduction', 'quiz'));
 
         // -------------------------------------------------------------------------------
         $mform->addElement('header', 'timing', get_string('timing', 'quiz'));
index dcbac1c..05b9df3 100644 (file)
@@ -55,7 +55,7 @@ class mod_resource_mod_form extends moodleform_mod {
         }
         $mform->addRule('name', null, 'required', null, 'client');
         $mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client');
-        $this->add_intro_editor($config->requiremodintro);
+        $this->standard_intro_elements();
 
         //-------------------------------------------------------
         $mform->addElement('header', 'contentsection', get_string('contentheader', 'resource'));
index 1e430d6..251cde8 100644 (file)
@@ -46,8 +46,6 @@ if ($ADMIN->fulltree) {
     //--- general settings -----------------------------------------------------------------------------------
     $settings->add(new admin_setting_configtext('resource/framesize',
         get_string('framesize', 'resource'), get_string('configframesize', 'resource'), 130, PARAM_INT));
-    $settings->add(new admin_setting_configcheckbox('resource/requiremodintro',
-        get_string('requiremodintro', 'admin'), get_string('configrequiremodintro', 'admin'), 0));
     $settings->add(new admin_setting_configmultiselect('resource/displayoptions',
         get_string('displayoptions', 'resource'), get_string('configdisplayoptions', 'resource'),
         $defaultdisplayoptions, $displayoptions));
index 9fbf92e..9678f6c 100644 (file)
@@ -46,7 +46,7 @@ class mod_scorm_mod_form extends moodleform_mod {
         $mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client');
 
         // Summary.
-        $this->add_intro_editor(true);
+        $this->standard_intro_elements();
 
         // Package.
         $mform->addElement('header', 'packagehdr', get_string('packagehdr', 'scorm'));
index d12ad22..19219a1 100644 (file)
@@ -37,7 +37,7 @@ class mod_survey_mod_form extends moodleform_mod {
         $mform->addRule('template', $strrequired, 'required', null, 'client');
         $mform->addHelpButton('template', 'surveytype', 'survey');
 
-        $this->add_intro_editor(false, get_string('customintro', 'survey'));
+        $this->standard_intro_elements(get_string('customintro', 'survey'));
 
         $this->standard_coursemodule_elements();
 
index de1058b..7a50f47 100644 (file)
@@ -45,7 +45,7 @@ class mod_url_mod_form extends moodleform_mod {
         }
         $mform->addRule('name', null, 'required', null, 'client');
         $mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client');
-        $this->add_intro_editor($config->requiremodintro);
+        $this->standard_intro_elements();
 
         //-------------------------------------------------------
         $mform->addElement('header', 'content', get_string('contentheader', 'url'));
index 065acaf..a19f657 100644 (file)
@@ -44,8 +44,6 @@ if ($ADMIN->fulltree) {
     //--- general settings -----------------------------------------------------------------------------------
     $settings->add(new admin_setting_configtext('url/framesize',
         get_string('framesize', 'url'), get_string('configframesize', 'url'), 130, PARAM_INT));
-    $settings->add(new admin_setting_configcheckbox('url/requiremodintro',
-        get_string('requiremodintro', 'admin'), get_string('configrequiremodintro', 'admin'), 0));
     $settings->add(new admin_setting_configpasswordunmask('url/secretphrase', get_string('password'),
         get_string('configsecretphrase', 'url'), ''));
     $settings->add(new admin_setting_configcheckbox('url/rolesinparams',
index 0a19ffa..f6c87a3 100644 (file)
@@ -55,7 +55,7 @@ class mod_wiki_mod_form extends moodleform_mod {
         $mform->addRule('name', $required, 'required', null, 'client');
         $mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client');
         // Adding the optional "intro" and "introformat" pair of fields
-        $this->add_intro_editor(true, get_string('wikiintro', 'wiki'));
+        $this->standard_intro_elements(get_string('wikiintro', 'wiki'));
 
         $wikimodeoptions = array ('collaborative' => get_string('wikimodecollaborative', 'wiki'), 'individual' => get_string('wikimodeindividual', 'wiki'));
         // Don't allow changes to the wiki type once it is set.
index 8489fe7..c2d5606 100644 (file)
@@ -75,7 +75,7 @@ class mod_workshop_mod_form extends moodleform_mod {
         $mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client');
 
         // Introduction
-        $this->add_intro_editor(false, get_string('introduction', 'workshop'));
+        $this->standard_intro_elements(get_string('introduction', 'workshop'));
 
         // Grading settings -----------------------------------------------------------
         $mform->addElement('header', 'gradingsettings', get_string('gradingsettings', 'workshop'));
index 7b4d1f6..4f918ed 100644 (file)
@@ -29,7 +29,7 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$version  = 2015030900.00;              // YYYYMMDD      = weekly release date of this DEV branch.
+$version  = 2015033000.00;              // YYYYMMDD      = weekly release date of this DEV branch.
                                         //         RR    = release increments - 00 in DEV branches.
                                         //           .XX = incremental changes.