Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

MDL-33640 - change $templatesinitialized to an array; improve naming …

…and automate use of template

* $templatesinitialized is now an array, so that subsequent calls to initialise_filepicker which request different repositories will include those (and only those) templates which it requires but have not yet been included
* The get_template method has also been renamed to get_upload_template (and the template to "uploadform_" followed by the repository type), since it only applies to upload forms
* If a plugin provides a get_upload_template method, the template it returns will now automatically be used instead of the standard uploadform template when generating an upload form
  • Loading branch information...
commit ec3eaa2c38b60f17d43c973bcbf00a6bdf4e6f14 1 parent 013cf28
Paul Nicholls pauln authored
Showing with 12 additions and 8 deletions.
  1. +3 −2 repository/filepicker.js
  2. +9 −6 repository/lib.php
5 repository/filepicker.js
View
@@ -1618,8 +1618,9 @@ M.core_filepicker.init = function(Y, options) {
var client_id = this.options.client_id;
var id = data.upload.id+'_'+client_id;
var content = this.fpnode.one('.fp-content');
- var template = data.template || 'uploadform';
- content.setContent(M.core_filepicker.templates[template]);
+ var template_name = 'uploadform_'+this.options.repositories[data.repo_id].type;
+ var template = M.core_filepicker.templates[template_name] || M.core_filepicker.templates['uploadform'];
+ content.setContent(template);
content.all('.fp-file,.fp-saveas,.fp-setauthor,.fp-setlicense').each(function (node) {
node.all('label').set('for', node.one('input,select').generateID());
15 repository/lib.php
View
@@ -2614,7 +2614,7 @@ public function validation($data, $files) {
*/
function initialise_filepicker($args) {
global $CFG, $USER, $PAGE, $OUTPUT;
- static $templatesinitialized;
+ static $templatesinitialized = array();
require_once($CFG->libdir . '/licenselib.php');
$return = new stdClass();
@@ -2691,16 +2691,19 @@ function initialise_filepicker($args) {
// JavaScript a lot, the key NEEDS to be the repository id.
$return->repositories[$repository->id] = $meta;
// Register custom repository template if it has one
- if(method_exists($repository, 'get_template')) {
- $templates[$meta->type] = $repository->get_template();
+ if(method_exists($repository, 'get_upload_template') && !array_key_exists('uploadform_' . $meta->type, $templatesinitialized)) {
+ $templates['uploadform_' . $meta->type] = $repository->get_upload_template();
+ $templatesinitialized['uploadform_' . $meta->type] = true;
}
}
- if (!$templatesinitialized) {
- // we need to send filepicker templates to the browser just once
+ if (!array_key_exists('core', $templatesinitialized)) {
+ // we need to send each filepicker template to the browser just once
$fprenderer = $PAGE->get_renderer('core', 'files');
$templates = array_merge($templates, $fprenderer->filepicker_js_templates());
+ $templatesinitialized['core'] = true;
+ }
+ if (sizeof($templates)) {
$PAGE->requires->js_init_call('M.core_filepicker.set_templates', array($templates), true);
- $templatesinitialized = true;
}
return $return;
}
Please sign in to comment.
Something went wrong with that request. Please try again.