diff --git a/admin/repository.php b/admin/repository.php
index b088d27b581..69966b9d1fc 100644
--- a/admin/repository.php
+++ b/admin/repository.php
@@ -51,11 +51,12 @@ if (!empty($edit) || !empty($new)) {
$CFG->pagepath = 'admin/managerepository/' . $plugin;
// display the edit form for this instance
$mform = new repository_admin_form('', array('plugin' => $plugin, 'instance' => $repositorytype));
+ $fromform = $mform->get_data();
// end setup, begin output
if ($mform->is_cancelled()){
redirect($baseurl);
exit;
- } else if ($fromform = $mform->get_data() || (!empty($new) && !repository_static_function($new,"has_admin_config"))){
+ } else if (!empty($fromform) || (!empty($new) && !repository_static_function($new,"has_admin_config"))){
if (!confirm_sesskey()) {
print_error('confirmsesskeybad', '', $baseurl);
}
@@ -92,7 +93,7 @@ if (!empty($edit) || !empty($new)) {
if ($edit){
if (repository_static_function($edit,"has_instance_config")
|| repository_static_function($edit,"has_multiple_instances")){
- repository_display_instances_list(get_context_instance(CONTEXT_SYSTEM), true, $edit);
+ repository_display_instances_list(get_context_instance(CONTEXT_SYSTEM), $edit);
}
}
diff --git a/admin/repositoryinstance.php b/admin/repositoryinstance.php
index e244521a87e..ac8da10cb83 100644
--- a/admin/repositoryinstance.php
+++ b/admin/repositoryinstance.php
@@ -13,6 +13,8 @@ $sure = optional_param('sure', '', PARAM_ALPHA);
$move = optional_param('move', '', PARAM_ALPHA);
$type = optional_param('type', '', PARAM_ALPHA);
+$context = get_context_instance(CONTEXT_SYSTEM);
+
$display = true; // fall through to normal display
$pagename = 'repositorycontroller';
@@ -57,7 +59,7 @@ if (!empty($edit) || !empty($new)) {
}
// display the edit form for this instance
- $mform = new repository_instance_form('', array('plugin' => $plugin, 'typeid' => $typeid,'instance' => $instance));
+ $mform = new repository_instance_form('', array('plugin' => $plugin, 'typeid' => $typeid,'instance' => $instance, 'contextid' => $context->id));
// end setup, begin output
if ($mform->is_cancelled()){
diff --git a/blocks/admin/block_admin.php b/blocks/admin/block_admin.php
index f5821194087..852407a85f3 100644
--- a/blocks/admin/block_admin.php
+++ b/blocks/admin/block_admin.php
@@ -186,9 +186,9 @@ class block_admin extends block_list {
}
}
- /// Repository Account
- if ($course->id !== SITEID) {
- $this->content->items[]=''.get_string('repositories').'';
+ /// Repository Instances
+ if ($course->id !== SITEID && has_capability('moodle/course:update', $context)) {
+ $this->content->items[]=''.get_string('repositories').'';
$this->content->icons[]='
';
}
diff --git a/lang/en_utf8/repository.php b/lang/en_utf8/repository.php
index 1c418977f1d..3d3b6b93e8f 100644
--- a/lang/en_utf8/repository.php
+++ b/lang/en_utf8/repository.php
@@ -49,6 +49,7 @@ $string['plugin'] = 'Repository plug-ins';
$string['preview'] = 'Preview';
$string['removed'] = 'Repository removed';
$string['repository'] = 'Repository';
+$string['repositorycourse'] = 'Course repositories';
$string['repositories'] = 'Repositories';
$string['save'] = 'Save';
$string['saveas'] = 'Save as';
@@ -63,6 +64,7 @@ $string['submit'] = 'Submit';
$string['sync'] = 'Sync';
$string['title'] = 'Repository file picker';
$string['thumbview'] = 'View as icons';
+$string['typenotvisible'] = 'Type not visible';
$string['updown'] = 'Display order';
$string['upload'] = 'Upload this file';
$string['uploading'] = 'Uploading...';
diff --git a/lib/adminlib.php b/lib/adminlib.php
index a8b342685f6..b72c2f98939 100644
--- a/lib/adminlib.php
+++ b/lib/adminlib.php
@@ -5599,11 +5599,16 @@ class admin_setting_managerepository extends admin_setting {
if ( repository_static_function($i->get_typename(), 'has_admin_config')
|| repository_static_function($i->get_typename(), 'has_instance_config')
|| repository_static_function($i->get_typename(), 'has_multiple_instances')) {
- $settings .= ''. $settingsstr .'' . "\n";
+ $settings .= ''
+ . $settingsstr .'' . "\n";
}
- $delete = '' . $deletestr . '' . "\n";
+ $delete = ''
+ . $deletestr . '' . "\n";
- $hiddenshow = '
' . "\n";
+ $hiddenshow = ' '
+ .'
'
+ .'' . "\n";
// display up/down link
$updown = '';
diff --git a/repository/flickr/repository.class.php b/repository/flickr/repository.class.php
index c5f1816782b..f461c338294 100755
--- a/repository/flickr/repository.class.php
+++ b/repository/flickr/repository.class.php
@@ -233,6 +233,14 @@ EOD;
return true;
}
+ public static function has_multiple_instances() {
+ return true;
+ }
+
+ public static function has_instance_config() {
+ return false;
+ }
+
public function admin_config_form(&$mform) {
$api_key = get_config('flickr', 'api_key');
if (empty($api_key)) {
diff --git a/repository/lib.php b/repository/lib.php
index fd30dbb80f1..45b0bedb168 100644
--- a/repository/lib.php
+++ b/repository/lib.php
@@ -923,7 +923,7 @@ function repository_check_context($ctx_id){
* @param string $type a type name to retrieve
* @return array repository instances
*/
-function repository_get_instances($context=null, $userid = null, $onlyvisible = true, $type=null){
+function repository_get_instances($context=null, $userid = null, $onlyvisible = true, $type=null, $nositeinstances=true){
global $DB, $CFG, $USER;
$params = array();
$sql = 'SELECT i.*, r.type AS repositorytype, r.sortorder, r.visible FROM {repository} r, {repository_instances} i WHERE ';
@@ -937,8 +937,12 @@ function repository_get_instances($context=null, $userid = null, $onlyvisible =
$sql .= ' AND (i.contextid = ?)';
$params[] = SYSCONTEXTID;
} else {
- $sql .= ' AND (i.contextid = ? or i.contextid = ?)';
- $params[] = SYSCONTEXTID;
+ if ($nositeinstances) {
+ $sql .= ' AND i.contextid = ?';
+ } else {
+ $sql .= ' AND (i.contextid = ? or i.contextid = ?)';
+ $params[] = SYSCONTEXTID;
+ }
$params[] = $context->id;
}
}
@@ -1899,6 +1903,7 @@ final class repository_instance_form extends moodleform {
// type of plugin, string
$this->plugin = $this->_customdata['plugin'];
$this->typeid = $this->_customdata['typeid'];
+ $this->contextid = $this->_customdata['contextid'];
$this->instance = (isset($this->_customdata['instance'])
&& is_subclass_of($this->_customdata['instance'], 'repository'))
? $this->_customdata['instance'] : null;
@@ -1910,6 +1915,7 @@ final class repository_instance_form extends moodleform {
$mform->addElement('hidden', 'new', $this->plugin);
$mform->addElement('hidden', 'plugin', $this->plugin);
$mform->addElement('hidden', 'typeid', $this->typeid);
+ $mform->addElement('hidden', 'contextid', $this->contextid);
$mform->addElement('text', 'name', get_string('name'), 'maxlength="100" size="30"');
$mform->addRule('name', $strrequired, 'required', null, 'client');
@@ -1924,7 +1930,6 @@ final class repository_instance_form extends moodleform {
}
// and set the data if we have some.
- //var_dump($this);
if ($this->instance) {
$data = array();
$data['name'] = $this->instance->name;
@@ -2017,7 +2022,6 @@ final class repository_admin_form extends moodleform {
}
$this->set_data($data);
}
-
$this->add_action_buttons(true, get_string('save','repository'));
}
@@ -2029,24 +2033,23 @@ final class repository_admin_form extends moodleform {
* @global object $CFG
* @global object $USER
* @param object $context the context for which we display the instance
- * @param boolean $admin if true, so the form is been called by an administration
- * page, only one type would be displayed
* @param string $typename if set, we display only one type of instance
*/
-function repository_display_instances_list($context, $admin = false, $typename = null){
+function repository_display_instances_list($context, $typename = null){
global $CFG, $USER;
- if ($admin) {
+
+ $output = print_box_start('generalbox','',true);
+ //if the context is SYSTEM, so we call it from administration page
+ $admin = ($context->id == SYSCONTEXTID) ? true : false;
+ if($admin) {
$baseurl = $CFG->wwwroot . '/admin/repositoryinstance.php?sesskey=' . sesskey();
- $type = repository_get_type_by_typename($typename);
-
- }
- $output = print_simple_box_start(true);
-
- if ($admin) {
$output .= "