Skip to content

Commit

Permalink
MDL-15402: new version of repository administration
Browse files Browse the repository at this point in the history
  • Loading branch information
jerome committed Sep 2, 2008
1 parent a9bbec4 commit a660039
Show file tree
Hide file tree
Showing 14 changed files with 835 additions and 74 deletions.
55 changes: 34 additions & 21 deletions admin/repository.php
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
<?php // $Id$
<?php
// $Id$
require_once(dirname(dirname(__FILE__)) . '/config.php');
require_once($CFG->dirroot . '/repository/lib.php');
require_once($CFG->libdir . '/adminlib.php');

$CFG->pagepath = 'admin/managerepositories';

// id of repository
$edit = optional_param('edit', 0, PARAM_INT);
$edit = optional_param('edit', 0, PARAM_ALPHA);
$new = optional_param('new', '', PARAM_FORMAT);
$hide = optional_param('hide', 0, PARAM_INT);
$delete = optional_param('delete', 0, PARAM_INT);
$hide = optional_param('hide', 0, PARAM_ALPHA);
$delete = optional_param('delete', 0, PARAM_ALPHA);
$sure = optional_param('sure', '', PARAM_ALPHA);
$move = optional_param('move', '', PARAM_ALPHA);
$type = optional_param('type', '', PARAM_ALPHA);

$display = true; // fall through to normal display

Expand All @@ -37,18 +39,18 @@

if (!empty($edit) || !empty($new)) {
if (!empty($edit)) {
$instance = repository_get_instance($edit);
$configs = $instance->get_option_names();
$plugin = $instance->type;
$typeid = $instance->typeid;
$repositorytype = repository_get_type_by_typename($edit);
$classname = 'repository_' . $repositorytype->get_typename();
$configs = call_user_func(array($classname,'get_admin_option_names'));
$plugin = $repositorytype->get_typename();
} else {
$plugin = $new;
$typeid = $new;
$instance = null;
$repositorytype = null;
}
$CFG->pagepath = 'admin/managerepository/' . $plugin;
// display the edit form for this instance
$mform = new repository_admin_form('', array('plugin' => $plugin, 'typeid'=> $typeid, 'instance' => $instance));
$mform = new repository_admin_form('', array('plugin' => $plugin, 'instance' => $repositorytype));
// end setup, begin output

if ($mform->is_cancelled()){
Expand All @@ -60,14 +62,16 @@
}
if ($edit) {
$settings = array();
$settings['name'] = $fromform->name;
foreach($configs as $config) {
$settings[$config] = $fromform->$config;
}
$success = $instance->set_option($settings);
$success = $repositorytype->update_options($settings);
} else {
$success = repository_static_function($plugin, 'create', $plugin, 0, get_system_context(), $fromform);
$type = new repository_type($plugin,(array)$fromform);
$type->create();
$success = true;
$data = data_submitted();

}
if ($success) {
$savedstr = get_string('configsaved', 'repository');
Expand All @@ -85,34 +89,43 @@
$mform->display();
print_simple_box_end();
$return = false;

//display instances list and creation form
if ($edit){
repository_display_instances_list(get_context_instance(CONTEXT_SYSTEM), true, $edit);
}

}
} else if (!empty($hide)) {
if (!confirm_sesskey()) {
print_error('confirmsesskeybad', '', $baseurl);
}
$instance = repository_get_instance($hide);
$instance->hide();
$repositorytype = repository_get_type_by_typename($hide);
$repositorytype->switch_and_update_visibility();
$return = true;
} else if (!empty($delete)) {
admin_externalpage_print_header();
$instance = repository_get_instance($delete);
$repositorytype = repository_get_type_by_typename($delete);
if ($sure) {
if (!confirm_sesskey()) {
print_error('confirmsesskeybad', '', $baseurl);
}
if ($instance->delete()) {
$deletedstr = get_string('instancedeleted', 'repository');
if ($repositorytype->delete()) {
$deletedstr = get_string('removed', 'repository');
print_heading($deletedstr);
redirect($baseurl, $deletedstr, 3);
} else {
print_error('instancenotdeleted', 'repository', $baseurl);
}
exit;
}
notice_yesno(get_string('confirmdelete', 'repository', $instance->name), $sesskeyurl . '&delete=' . $delete . '&sure=yes', $baseurl);
notice_yesno(get_string('confirmremove', 'repository', $repositorytype->get_readablename()), $sesskeyurl . '&delete=' . $delete . '&sure=yes', $baseurl);
$return = false;
}

else if (!empty($move) && !empty($type)) {
$repositorytype = repository_get_type_by_typename($type);
$repositorytype->move_order($move);
}

if (!empty($return)) {
redirect($baseurl);
Expand Down
128 changes: 128 additions & 0 deletions admin/repositoryinstance.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
<?php
// $Id$
require_once(dirname(dirname(__FILE__)) . '/config.php');
require_once($CFG->dirroot . '/repository/lib.php');
require_once($CFG->libdir . '/adminlib.php');

// id of repository
$edit = optional_param('edit', 0, PARAM_INT);
$new = optional_param('new', '', PARAM_FORMAT);
$hide = optional_param('hide', 0, PARAM_INT);
$delete = optional_param('delete', 0, PARAM_INT);
$sure = optional_param('sure', '', PARAM_ALPHA);
$move = optional_param('move', '', PARAM_ALPHA);
$type = optional_param('type', '', PARAM_ALPHA);

$display = true; // fall through to normal display

$pagename = 'repositorycontroller';

if ($delete) {
$pagename = 'repositorydelete';
} else if ($new) {
$pagename = 'repositorynew';
}

admin_externalpage_setup($pagename);
require_login(SITEID, false);
require_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM));

$sesskeyurl = $CFG->wwwroot . '/' . $CFG->admin . '/repositoryinstance.php?sesskey=' . sesskey();
$baseurl = $CFG->wwwroot . '/admin/repository.php?session='. sesskey() .'&amp;edit=';
if ($new) {
$baseurl .= $new;
}
else {
$baseurl .= $type;
}
$configstr = get_string('managerepositories', 'repository');

$return = true;

if (!empty($edit) || !empty($new)) {
if (!empty($edit)) {
$instance = repository_get_instance($edit);
$instancetype = repository_get_type_by_id($instance->typeid);
$classname = 'repository_' . $instancetype->get_typename();
$configs = $instance->get_instance_option_names();
$plugin = $instancetype->get_typename();
$typeid = $instance->typeid;
} else {
$plugin = $new;
$typeid = $new;
$instance = null;
}

// display the edit form for this instance
$mform = new repository_instance_form('', array('plugin' => $plugin, 'typeid' => $typeid,'instance' => $instance));
// end setup, begin output

if ($mform->is_cancelled()){
redirect($baseurl);
exit;
} else if ($fromform = $mform->get_data()){
if (!confirm_sesskey()) {
print_error('confirmsesskeybad', '', $baseurl);
}
if ($edit) {
$settings = array();
$settings['name'] = $fromform->name;
foreach($configs as $config) {
$settings[$config] = $fromform->$config;
}
$success = $instance->set_option($settings);
} else {
$success = repository_static_function($plugin, 'create', $plugin, 0, get_system_context(), $fromform);
$data = data_submitted();
}
if ($success) {
$savedstr = get_string('configsaved', 'repository');
admin_externalpage_print_header();
print_heading($savedstr);
redirect($baseurl, $savedstr, 3);
} else {
print_error('instancenotsaved', 'repository', $baseurl);
}
exit;
} else {
admin_externalpage_print_header();
print_heading(get_string('configplugin', 'repository_'.$plugin));
print_simple_box_start();
$mform->display();
print_simple_box_end();
$return = false;
}
} else if (!empty($hide)) {
if (!confirm_sesskey()) {
print_error('confirmsesskeybad', '', $baseurl);
}
$instance = repository_get_type_by_typename($hide);
var_dump($instance);
var_dump($hide);
$instance->hide();
$return = true;
} else if (!empty($delete)) {
admin_externalpage_print_header();
$instance = repository_get_instance($delete);
if ($sure) {
if (!confirm_sesskey()) {
print_error('confirmsesskeybad', '', $baseurl);
}
if ($instance->delete()) {
$deletedstr = get_string('instancedeleted', 'repository');
print_heading($deletedstr);
redirect($baseurl, $deletedstr, 3);
} else {
print_error('instancenotdeleted', 'repository', $baseurl);
}
exit;
}
notice_yesno(get_string('confirmdelete', 'repository', $instance->name), $sesskeyurl . '&amp;type=' . $type . '&amp;delete=' . $delete . '&amp;sure=yes', $CFG->wwwroot . '/admin/repositoryinstance.php?session='. sesskey());
$return = false;
}

if (!empty($return)) {

redirect($baseurl);
}
admin_externalpage_print_footer();
15 changes: 9 additions & 6 deletions admin/settings/plugins.php
Original file line number Diff line number Diff line change
Expand Up @@ -194,14 +194,17 @@
$ADMIN->add('repositorysettings', new admin_externalpage('repositorycontroller',
get_string('managerepositories', 'repository'), $url, 'moodle/site:config', true),
'', $url);
foreach (repository_get_instances(get_context_instance(CONTEXT_SYSTEM), null, false)
as $repository)
foreach (repository_get_types()
as $repositorytype)
{
if ($repository->has_admin_config()) {
//display setup page for plugins with: general options or instance options or multiple instances
if (repository_static_function($repositorytype->get_typename(), 'has_admin_config')
|| repository_static_function($repositorytype->get_typename(), 'has_instance_config')
|| repository_static_function($repositorytype->get_typename(), 'has_multiple_instances')) {
$ADMIN->add('repositorysettings',
new admin_externalpage('repositorysettings'.$repository->id,
$repository->name,
$url . '?edit=' . $repository->id),
new admin_externalpage('repositorysettings'.$repositorytype->get_typename(),
$repositorytype->get_readablename(),
$url . '?edit=' . $repositorytype->get_typename()),
'moodle/site:config');
}
}
Expand Down
7 changes: 6 additions & 1 deletion blocks/admin/block_admin.php
Original file line number Diff line number Diff line change
Expand Up @@ -186,11 +186,16 @@ function get_content() {
}
}

/// Repository Account
if ($course->id !== SITEID) {
$this->content->items[]='<a href="'.$CFG->wwwroot.'/repository/manage.php?id='.$USER->id.'&amp;course='.$course->id.'&amp;context=course">'.get_string('repositories').'</a>';
$this->content->icons[]='<img src="'.$CFG->pixpath.'/i/repository.png" alt=""/>';
}

/// Manage files
if ($course->id !== SITEID and has_capability('moodle/course:managefiles', $context)) {
$this->content->items[]='<a href="'.$CFG->wwwroot.'/files/index.php?id='.$this->instance->pageid.'">'.get_string('files').'</a>';
$this->content->icons[]='<img src="'.$CFG->pixpath.'/i/files.gif" class="icon" alt="" />';
$this->content->icons[]='<img src="'.$CFG->pixpath.'/i/files.gif" class="icon" alt=""/>';
}

/// Authorize hooks
Expand Down
1 change: 1 addition & 0 deletions lang/en_utf8/moodle.php
Original file line number Diff line number Diff line change
Expand Up @@ -1253,6 +1253,7 @@
$string['renamefileto'] = 'Rename <b>$a</b> to';
$string['report'] = 'Report';
$string['reports'] = 'Reports';
$string['repositories'] = 'Repositories';
$string['requestcourse'] = 'Request a course';
$string['requestedby'] = 'Requested by';
$string['requestreason'] = 'Reason for course request';
Expand Down
12 changes: 11 additions & 1 deletion lang/en_utf8/repository.php
Original file line number Diff line number Diff line change
@@ -1,23 +1,31 @@
<?php //$Id$
$string['add'] = 'Add';
$string['addplugin'] = 'Add a repository plugin';
$string['activaterep'] = 'Active repositories';
$string['attachment'] = 'Attachment';
$string['back'] = '&lt; Back';
$string['close'] = 'Close';
$string['copying'] = 'Copying';
$string['configsaved'] = 'Configuration saved!';
$string['confirmdelete'] = 'Are you sure you want to delete this repository - $a?';
$string['confirmremove'] = 'Are you sure you want to remove this repository plugin - $a?';
$string['create'] = 'Create';
$string['createrepository'] = 'Create a repository';
$string['createrepository'] = 'Create a repository instance';
$string['date'] = 'Date';
$string['deleterepository'] = 'Delete this repository';
$string['deleted'] = 'Repository deleted';
$string['download'] = 'Download';
$string['downloadsucc'] = 'The file has been downloaded successfully';
$string['editrepositoryaccount'] = 'Edit repository accounts';
$string['emptytype'] = 'Cannot create repository type: type name is empty';
$string['error'] = 'An unknown error occurred!';
$string['existingrepository'] = 'This repository already exists';
$string['filename'] = 'Filename';
$string['filesaved'] = 'The file has been saved';
$string['getfile'] = 'Select this file';
$string['instance'] = 'instance';
$string['instancedeleted'] = 'Instance deleted';
$string['instances'] = 'Repository instances';
$string['invalidrepositoryid'] = 'Invalid repository ID';
$string['invalidplugin'] = 'Invalid repository plug-in';
$string['invalidjson'] = 'Invalid JSON string';
Expand All @@ -32,6 +40,7 @@
$string['openpicker'] = 'Open file picker';
$string['plugin'] = 'Repository plug-ins';
$string['preview'] = 'Preview';
$string['removed'] = 'Repository removed';
$string['repository'] = 'Repository';
$string['repositories'] = 'Repositories';
$string['save'] = 'Save';
Expand All @@ -46,5 +55,6 @@
$string['sync'] = 'Sync';
$string['title'] = 'Repository file picker';
$string['thumbview'] = 'View as icons';
$string['updown'] = 'Up/Down';
$string['upload'] = 'Upload this file';
$string['uploading'] = 'Uploading...';
1 change: 1 addition & 0 deletions lang/en_utf8/repository_boxnet.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,4 @@
$string['nullfilelist'] = 'There are no files in this repository';
$string['username'] = 'Box.net account';
$string['password'] = 'Box.net password';
$string['shareurl'] = 'Share URL';
Loading

0 comments on commit a660039

Please sign in to comment.