diff --git a/mod/folder/db/install.xml b/mod/folder/db/install.xml
index 9481f0534f5..aacb69233be 100644
--- a/mod/folder/db/install.xml
+++ b/mod/folder/db/install.xml
@@ -1,5 +1,5 @@
-
@@ -14,6 +14,7 @@
+
@@ -23,4 +24,4 @@
-
\ No newline at end of file
+
diff --git a/mod/folder/db/upgrade.php b/mod/folder/db/upgrade.php
index 9db0090baa5..fabe0c98b2d 100644
--- a/mod/folder/db/upgrade.php
+++ b/mod/folder/db/upgrade.php
@@ -58,7 +58,6 @@ function xmldb_folder_upgrade($oldversion) {
// 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
@@ -77,5 +76,20 @@ function xmldb_folder_upgrade($oldversion) {
upgrade_mod_savepoint(true, 2013012100, 'folder');
}
+ if ($oldversion < 2013031500) {
+
+ // Define field show_expanded to be added to folder
+ $table = new xmldb_table('folder');
+ $field = new xmldb_field('show_expanded', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, '1', 'revision');
+
+ // Conditionally launch add field show_expanded
+ if (!$dbman->field_exists($table, $field)) {
+ $dbman->add_field($table, $field);
+ }
+
+ // folder savepoint reached
+ upgrade_mod_savepoint(true, 2013031500, 'folder');
+ }
+
return true;
}
diff --git a/mod/folder/lang/en/folder.php b/mod/folder/lang/en/folder.php
index b7130632939..e5d68ce57c5 100644
--- a/mod/folder/lang/en/folder.php
+++ b/mod/folder/lang/en/folder.php
@@ -51,3 +51,5 @@ Also note that participants view actions can not be logged in this case.';
$string['displaypage'] = 'On a separate page';
$string['displayinline'] = 'Inline on a course page';
$string['noautocompletioninline'] = 'Automatic completion on viewing of activity can not be selected together with "Display inline" option';
+$string['show_expanded'] = 'Show sub-folders expanded';
+$string['show_expanded_help'] = 'If enabled, will display sub-folders expanded by default. Else, sub-folders will display collapsed.';
diff --git a/mod/folder/mod_form.php b/mod/folder/mod_form.php
index 70af9e1e6af..99f1debfb6a 100644
--- a/mod/folder/mod_form.php
+++ b/mod/folder/mod_form.php
@@ -55,7 +55,10 @@ class mod_folder_mod_form extends moodleform_mod {
$mform->addHelpButton('display', 'display', 'mod_folder');
$mform->setExpanded('content');
-
+ // Adding option to show sub-folders expanded or collapsed by default.
+ $mform->addElement('advcheckbox', 'show_expanded', get_string('show_expanded', 'folder'));
+ $mform->addHelpButton('show_expanded', 'show_expanded', 'mod_folder');
+ $mform->setDefault('show_expanded', $config->show_expanded);
//-------------------------------------------------------
$this->standard_coursemodule_elements();
diff --git a/mod/folder/module.js b/mod/folder/module.js
index 415d167201f..5e0e638ea2d 100644
--- a/mod/folder/module.js
+++ b/mod/folder/module.js
@@ -35,6 +35,9 @@ M.mod_folder.init_tree = function(Y, id, expand_all) {
if (expand_all) {
tree.expandAll();
+ } else {
+ // Else just expand the top node.
+ tree.getNodeByIndex(1).expand();
}
tree.render();
diff --git a/mod/folder/renderer.php b/mod/folder/renderer.php
index c9dbbb7e6bf..830387046df 100644
--- a/mod/folder/renderer.php
+++ b/mod/folder/renderer.php
@@ -78,8 +78,12 @@ class mod_folder_renderer extends plugin_renderer_base {
$content .= '
';
$content .= $this->htmllize_tree($tree, array('files' => array(), 'subdirs' => array($tree->dir)));
$content .= '
';
- $this->page->requires->js_init_call('M.mod_folder.init_tree', array($id, true));
- return $content;
+ $show_expanded = true;
+ if (empty($tree->folder->show_expanded)) {
+ $show_expanded = false;
+ }
+ $this->page->requires->js_init_call('M.mod_folder.init_tree', array($id, $show_expanded));
+ return $content;
}
/**
diff --git a/mod/folder/settings.php b/mod/folder/settings.php
index c0034bd8ec0..4cfea08c7c6 100644
--- a/mod/folder/settings.php
+++ b/mod/folder/settings.php
@@ -30,4 +30,8 @@ if ($ADMIN->fulltree) {
//--- general settings -----------------------------------------------------------------------------------
$settings->add(new admin_setting_configcheckbox('folder/requiremodintro',
get_string('requiremodintro', 'admin'), get_string('configrequiremodintro', 'admin'), 1));
+
+ $settings->add(new admin_setting_configcheckbox('folder/show_expanded',
+ get_string('show_expanded', 'folder'),
+ get_string('show_expanded_help', 'folder'), 1));
}
diff --git a/mod/folder/version.php b/mod/folder/version.php
index 1e168a3f5b0..c3cf83bbc6c 100644
--- a/mod/folder/version.php
+++ b/mod/folder/version.php
@@ -25,7 +25,7 @@
defined('MOODLE_INTERNAL') || die();
-$module->version = 2013012100; // The current module version (Date: YYYYMMDDXX)
+$module->version = 2013031500; // The current module version (Date: YYYYMMDDXX)
$module->requires = 2012112900; // Requires this Moodle version
$module->component = 'mod_folder'; // Full name of the plugin (used for diagnostics)
$module->cron = 0;