diff --git a/repository/filepicker.js b/repository/filepicker.js index 7c4e1f4ba94..54b6bc171c8 100644 --- a/repository/filepicker.js +++ b/repository/filepicker.js @@ -1618,7 +1618,8 @@ 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'); - content.setContent(M.core_filepicker.templates.uploadform); + var template = data.template || 'uploadform'; + content.setContent(M.core_filepicker.templates[template]); content.all('.fp-file,.fp-saveas,.fp-setauthor,.fp-setlicense').each(function (node) { node.all('label').set('for', node.one('input,select').generateID()); diff --git a/repository/lib.php b/repository/lib.php index 2093c7d1e4c..1a9f5a5059e 100644 --- a/repository/lib.php +++ b/repository/lib.php @@ -2684,16 +2684,21 @@ function initialise_filepicker($args) { // provided by form element $return->accepted_types = file_get_typegroup('extension', $args->accepted_types); $return->return_types = $args->return_types; + $templates = array(); foreach ($repositories as $repository) { $meta = $repository->get_meta(); // Please note that the array keys for repositories are used within // 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 (!$templatesinitialized) { // we need to send filepicker templates to the browser just once $fprenderer = $PAGE->get_renderer('core', 'files'); - $templates = $fprenderer->filepicker_js_templates(); + $templates = array_merge($templates, $fprenderer->filepicker_js_templates()); $PAGE->requires->js_init_call('M.core_filepicker.set_templates', array($templates), true); $templatesinitialized = true; }