diff --git a/admin/repositoryinstance.php b/admin/repositoryinstance.php
index d5a2aff2ff5..812489032c0 100644
--- a/admin/repositoryinstance.php
+++ b/admin/repositoryinstance.php
@@ -43,10 +43,6 @@ $return = true;
if (!empty($edit) || !empty($new)) {
if (!empty($edit)) {
$instance = repository_get_instance($edit);
- //if you try to edit an instance set as readonly, display an error message
- if ($instance->readonly) {
- throw new repository_exception('readonlyinstance', 'repository');
- }
$instancetype = repository_get_type_by_id($instance->typeid);
$classname = 'repository_' . $instancetype->get_typename();
$configs = $instance->get_instance_option_names();
@@ -72,8 +68,10 @@ if (!empty($edit) || !empty($new)) {
if ($edit) {
$settings = array();
$settings['name'] = $fromform->name;
- foreach($configs as $config) {
- $settings[$config] = $fromform->$config;
+ if (!$instance->readonly) {
+ foreach($configs as $config) {
+ $settings[$config] = $fromform->$config;
+ }
}
$success = $instance->set_option($settings);
} else {
diff --git a/repository/lib.php b/repository/lib.php
index 62cf8ac6bd6..8d3efc7f8c5 100644
--- a/repository/lib.php
+++ b/repository/lib.php
@@ -1248,26 +1248,36 @@ final class repository_instance_form extends moodleform {
$mform->addElement('text', 'name', get_string('name'), 'maxlength="100" size="30"');
$mform->addRule('name', $strrequired, 'required', null, 'client');
- //add fields
- if (!$this->instance) {
- $result = repository_static_function($this->plugin, 'instance_config_form', $mform);
- } else {
- $result = $this->instance->instance_config_form($mform);
- }
-
- // and set the data if we have some.
- if ($this->instance) {
- $data = array();
- $data['name'] = $this->instance->name;
- foreach ($this->instance->get_instance_option_names() as $config) {
- if (!empty($this->instance->$config)) {
- $data[$config] = $this->instance->$config;
- } else {
- $data[$config] = '';
+ if (!$this->instance->readonly) {
+ //add fields
+ if (!$this->instance) {
+ $result = repository_static_function($this->plugin, 'instance_config_form', $mform);
+ } else {
+ $result = $this->instance->instance_config_form($mform);
+ }
+
+ // and set the data if we have some.
+ if ($this->instance) {
+ $data = array();
+ $data['name'] = $this->instance->name;
+ foreach ($this->instance->get_instance_option_names() as $config) {
+ if (!empty($this->instance->$config)) {
+ $data[$config] = $this->instance->$config;
+ } else {
+ $data[$config] = '';
+ }
}
+ $this->set_data($data);
}
- $this->set_data($data);
}
+ else {
+ if ($this->instance) {
+ $data = array();
+ $data['name'] = $this->instance->name;
+ $this->set_data($data);
+ }
+ }
+
$this->add_action_buttons(true, get_string('save','repository'));
}
@@ -1396,8 +1406,8 @@ function repository_display_instances_list($context, $typename = null) {
foreach ($instances as $i) {
$settings = '';
$delete = '';
+ $settings .= '' . $settingsstr . '' . "\n";
if (!$i->readonly) {
- $settings .= '' . $settingsstr . '' . "\n";
$delete .= '' . $deletestr . '' . "\n";
}