From 848e04183fb4a2dfa4be1de8b3efbb623fe95597 Mon Sep 17 00:00:00 2001 From: Ben Kelada Date: Tue, 14 Oct 2014 17:25:01 +1100 Subject: [PATCH 1/2] MDL-46500 filepicker: prevent error when element does not exist --- lib/form/filemanager.js | 9 +++++++++ mod/data/edit.php | 10 ++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/lib/form/filemanager.js b/lib/form/filemanager.js index 7f3f74fd8b606..b383d1624ca09 100644 --- a/lib/form/filemanager.js +++ b/lib/form/filemanager.js @@ -88,6 +88,9 @@ M.form_filemanager.init = function(Y, options) { } // prepare filemanager for drag-and-drop upload this.filemanager = Y.one('#filemanager-'+options.client_id); + if (!this.filemanager) { + return; + } if (this.filemanager.hasClass('filemanager-container') || !this.filemanager.one('.filemanager-container')) { this.dndcontainer = this.filemanager; } else { @@ -434,6 +437,9 @@ M.form_filemanager.init = function(Y, options) { print_path: function() { var p = this.options.path; + if (!this.pathbar) { + return; + } this.pathbar.setContent('').addClass('empty'); if (p && p.length!=0 && this.viewmode != 2) { for(var i = 0; i < p.length; i++) { @@ -1053,6 +1059,9 @@ M.form_filemanager.init = function(Y, options) { // finally init everything needed // hide loading picture, display filemanager interface var filemanager = Y.one('#filemanager-'+options.client_id); + if (!filemanager) { + return; + } filemanager.removeClass('fm-loading').addClass('fm-loaded'); var manager = new FileManagerHelper(options); diff --git a/mod/data/edit.php b/mod/data/edit.php index 33575788db60b..6140f57a0cee5 100644 --- a/mod/data/edit.php +++ b/mod/data/edit.php @@ -298,10 +298,12 @@ ///then we generate strings to replace foreach ($possiblefields as $eachfield){ $field = data_get_field($eachfield, $data); - $patterns[]="[[".$field->field->name."]]"; - $replacements[] = $field->display_add_field($rid); - $patterns[]="[[".$field->field->name."#id]]"; - $replacements[] = 'field_'.$field->field->id; + if (strpos($data->addtemplate, "[[".$field->field->name."]]") !== false) { + $patterns[] = "[[".$field->field->name."]]"; + $replacements[] = $field->display_add_field($rid); + $patterns[] = "[[".$field->field->name."#id]]"; + $replacements[] = 'field_'.$field->field->id; + } } $newtext = str_ireplace($patterns, $replacements, $data->{$mode}); From 57a69e715117fe86362f64ae9d6005ed592dea07 Mon Sep 17 00:00:00 2001 From: David Monllao Date: Thu, 30 Oct 2014 13:35:18 +0800 Subject: [PATCH 2/2] MDL-46500 mod_data: Removing duplicate filemanager initialisations --- lib/form/filemanager.js | 9 --------- mod/data/edit.php | 6 ++++-- mod/data/field/file/field.class.php | 17 ----------------- mod/data/field/picture/field.class.php | 17 ----------------- 4 files changed, 4 insertions(+), 45 deletions(-) diff --git a/lib/form/filemanager.js b/lib/form/filemanager.js index b383d1624ca09..7f3f74fd8b606 100644 --- a/lib/form/filemanager.js +++ b/lib/form/filemanager.js @@ -88,9 +88,6 @@ M.form_filemanager.init = function(Y, options) { } // prepare filemanager for drag-and-drop upload this.filemanager = Y.one('#filemanager-'+options.client_id); - if (!this.filemanager) { - return; - } if (this.filemanager.hasClass('filemanager-container') || !this.filemanager.one('.filemanager-container')) { this.dndcontainer = this.filemanager; } else { @@ -437,9 +434,6 @@ M.form_filemanager.init = function(Y, options) { print_path: function() { var p = this.options.path; - if (!this.pathbar) { - return; - } this.pathbar.setContent('').addClass('empty'); if (p && p.length!=0 && this.viewmode != 2) { for(var i = 0; i < p.length; i++) { @@ -1059,9 +1053,6 @@ M.form_filemanager.init = function(Y, options) { // finally init everything needed // hide loading picture, display filemanager interface var filemanager = Y.one('#filemanager-'+options.client_id); - if (!filemanager) { - return; - } filemanager.removeClass('fm-loading').addClass('fm-loaded'); var manager = new FileManagerHelper(options); diff --git a/mod/data/edit.php b/mod/data/edit.php index 6140f57a0cee5..f6d98376f071a 100644 --- a/mod/data/edit.php +++ b/mod/data/edit.php @@ -298,12 +298,14 @@ ///then we generate strings to replace foreach ($possiblefields as $eachfield){ $field = data_get_field($eachfield, $data); + + // To skip unnecessary calls to display_add_field(). if (strpos($data->addtemplate, "[[".$field->field->name."]]") !== false) { $patterns[] = "[[".$field->field->name."]]"; $replacements[] = $field->display_add_field($rid); - $patterns[] = "[[".$field->field->name."#id]]"; - $replacements[] = 'field_'.$field->field->id; } + $patterns[] = "[[".$field->field->name."#id]]"; + $replacements[] = 'field_'.$field->field->id; } $newtext = str_ireplace($patterns, $replacements, $data->{$mode}); diff --git a/mod/data/field/file/field.class.php b/mod/data/field/file/field.class.php index 5ea4f564c6b69..5fd2d215d2d91 100644 --- a/mod/data/field/file/field.class.php +++ b/mod/data/field/file/field.class.php @@ -87,23 +87,6 @@ function display_add_field($recordid=0) { $html .= ''; $html .= ''; - $module = array( - 'name'=>'form_filemanager', - 'fullpath'=>'/lib/form/filemanager.js', - 'requires' => array('core_filepicker', 'base', 'io-base', 'node', - 'json', 'core_dndupload', 'panel', 'resize-plugin', 'dd-plugin'), - 'strings' => array( - array('error', 'moodle'), array('info', 'moodle'), array('confirmdeletefile', 'repository'), - array('draftareanofiles', 'repository'), array('entername', 'repository'), array('enternewname', 'repository'), - array('invalidjson', 'repository'), array('popupblockeddownload', 'repository'), - array('unknownoriginal', 'repository'), array('confirmdeletefolder', 'repository'), - array('confirmdeletefilewithhref', 'repository'), array('confirmrenamefolder', 'repository'), - array('confirmrenamefile', 'repository'), array('edit', 'moodle') - ) - ); - - $PAGE->requires->js_init_call('M.form_filemanager.init', array($fm->options), true, $module); - return $html; } diff --git a/mod/data/field/picture/field.class.php b/mod/data/field/picture/field.class.php index b3e378d67373a..a459791f79089 100644 --- a/mod/data/field/picture/field.class.php +++ b/mod/data/field/picture/field.class.php @@ -101,23 +101,6 @@ function display_add_field($recordid=0) { $str .= ''; $str .= ''; - $module = array( - 'name'=>'form_filemanager', - 'fullpath'=>'/lib/form/filemanager.js', - 'requires' => array('core_filepicker', 'base', 'io-base', 'node', - 'json', 'core_dndupload', 'panel', 'resize-plugin', 'dd-plugin'), - 'strings' => array( - array('error', 'moodle'), array('info', 'moodle'), array('confirmdeletefile', 'repository'), - array('draftareanofiles', 'repository'), array('entername', 'repository'), array('enternewname', 'repository'), - array('invalidjson', 'repository'), array('popupblockeddownload', 'repository'), - array('unknownoriginal', 'repository'), array('confirmdeletefolder', 'repository'), - array('confirmdeletefilewithhref', 'repository'), array('confirmrenamefolder', 'repository'), - array('confirmrenamefile', 'repository'), array('edit', 'moodle') - ) - ); - - $PAGE->requires->js_init_call('M.form_filemanager.init', array($fm->options), true, $module); - return $str; }