From 8a6f2291f23e50670a75a10d5ea25f912b7e04a7 Mon Sep 17 00:00:00 2001 From: David Mudrak Date: Thu, 15 Dec 2011 21:15:56 +0100 Subject: [PATCH] MDL-30170 MNet peers administration - highlight the undelete widget The patch highlights the undelete radio selector at the host edit form. It moves it to the end of the form (near the submit button) and displays an explanation above the radio selector. Also, the list of deleted hosts is now displayed below the table of active peers at the Manage peers page. The data returned by mnet_get_hosts() function now contain the deleted status, too. It is possible to obtain deleted hosts from that function now. --- admin/mnet/peer_forms.php | 23 +++++++++++--------- admin/mnet/peers.php | 16 +++++++++++++- lang/en/mnet.php | 2 ++ mnet/lib.php | 44 ++++++++++++++++---------------------- theme/base/style/admin.css | 5 +++++ 5 files changed, 53 insertions(+), 37 deletions(-) diff --git a/admin/mnet/peer_forms.php b/admin/mnet/peer_forms.php index 2000ef56fd9..8e3066a9b84 100644 --- a/admin/mnet/peer_forms.php +++ b/admin/mnet/peer_forms.php @@ -96,15 +96,6 @@ class mnet_review_host_form extends moodleform { $mform->addElement('textarea', 'public_key', get_string('publickey', 'mnet'), array('rows' => 17, 'cols' => 100, 'class' => 'smalltext')); $mform->setType('public_key', PARAM_PEM); - if ($mnet_peer && !empty($mnet_peer->deleted)) { - $radioarray = array(); - $radioarray[] = MoodleQuickForm::createElement('radio', 'deleted', '', get_string('yes'), 1); - $radioarray[] = MoodleQuickForm::createElement('radio', 'deleted', '', get_string('no'), 0); - $mform->addGroup($radioarray, 'radioar', get_string('deleted'), array(' '), false); - } else { - $mform->addElement('hidden', 'deleted'); - } - // finished with form controls, now the static informational stuff if ($mnet_peer && !empty($mnet_peer->bootstrapped)) { $expires = ''; @@ -140,7 +131,19 @@ class mnet_review_host_form extends moodleform { } } - $mform->addElement('static', 'certdetails', get_string('certdetails', 'mnet'), $OUTPUT->box('
' . $credstr . '
')); + $mform->addElement('static', 'certdetails', get_string('certdetails', 'mnet'), + $OUTPUT->box('
' . $credstr . '
', 'generalbox certdetails')); + } + + if ($mnet_peer && !empty($mnet_peer->deleted)) { + $radioarray = array(); + $radioarray[] = MoodleQuickForm::createElement('static', 'deletedinfo', '', + $OUTPUT->container(get_string('deletedhostinfo', 'mnet'), 'deletedhostinfo')); + $radioarray[] = MoodleQuickForm::createElement('radio', 'deleted', '', get_string('yes'), 1); + $radioarray[] = MoodleQuickForm::createElement('radio', 'deleted', '', get_string('no'), 0); + $mform->addGroup($radioarray, 'radioar', get_string('deleted'), array(' ', ' '), false); + } else { + $mform->addElement('hidden', 'deleted'); } // finished with static stuff, print save button diff --git a/admin/mnet/peers.php b/admin/mnet/peers.php index 0c334d09ba0..242ee1b4143 100644 --- a/admin/mnet/peers.php +++ b/admin/mnet/peers.php @@ -190,7 +190,7 @@ if ($formdata = $reviewform->get_data()) { // normal flow - just display all hosts with links echo $OUTPUT->header(); -$hosts = mnet_get_hosts(); +$hosts = mnet_get_hosts(true); // print the table to display the register all hosts setting $table = new html_table(); @@ -231,11 +231,21 @@ $table->head = array( ); $table->wrap = array('nowrap', 'nowrap', 'nowrap', 'nowrap'); $baseurl = new moodle_url('/admin/mnet/peers.php'); +$deleted = array(); foreach($hosts as $host) { $hosturl = new moodle_url($baseurl, array('hostid' => $host->id)); + if (trim($host->name) === '') { + // should not happen but... + $host->name = '???'; + } // process all hosts first since it's the easiest if ($host->id == $CFG->mnet_all_hosts_id) { $table->data[] = array(html_writer::tag('a', $host->name, array('href'=>$hosturl)), '', '', ''); + } + + // populate the list of deleted hosts + if ($host->deleted) { + $deleted[] = html_writer::link($hosturl, $host->name); continue; } @@ -253,6 +263,10 @@ foreach($hosts as $host) { } echo html_writer::table($table); +if ($deleted) { + echo $OUTPUT->box(get_string('deletedhosts', 'core_mnet', join(', ', $deleted)), 'deletedhosts'); +} + // finally, print the initial form to add a new host echo $OUTPUT->box_start(); echo $OUTPUT->heading(get_string('addnewhost', 'mnet'), 3); diff --git a/lang/en/mnet.php b/lang/en/mnet.php index bb9b4764c50..0d9c914baf6 100644 --- a/lang/en/mnet.php +++ b/lang/en/mnet.php @@ -47,6 +47,8 @@ $string['current_transport'] = 'Current transport'; $string['databaseerror'] = 'Could not write details to the database.'; $string['deleteaserver'] = 'Deleting a server'; $string['deletehost'] = 'Delete host'; +$string['deletedhostinfo'] = 'This host has been deleted. If you want to undelete it, switch the deleted status back to \'No\'.'; +$string['deletedhosts'] = 'Deleted hosts: {$a}'; $string['deletekeycheck'] = 'Are you absolutely sure you want to delete this key?'; $string['deleteoutoftime'] = 'Your 60-second window for deleting this key has expired. Please start again.'; $string['deleteuserrecord'] = 'SSO ACL: delete record for user \'{$a->user}\' from {$a->host}.'; diff --git a/mnet/lib.php b/mnet/lib.php index 1e6324d599c..074b86afb36 100644 --- a/mnet/lib.php +++ b/mnet/lib.php @@ -645,36 +645,28 @@ function mnet_profile_field_options() { /** - * Return information about all the current hosts - * This is basically just a resultset. + * Returns information about MNet peers * + * @param bool $withdeleted should the deleted peers be returned too * @return array */ -function mnet_get_hosts() { +function mnet_get_hosts($withdeleted = false) { global $CFG, $DB; - return $DB->get_records_sql(' SELECT - h.id, - h.wwwroot, - h.ip_address, - h.name, - h.public_key, - h.public_key_expires, - h.transport, - h.portno, - h.last_connect_time, - h.last_log_id, - h.applicationid, - a.name as app_name, - a.display_name as app_display_name, - a.xmlrpc_server_url - FROM - {mnet_host} h, - {mnet_application} a - WHERE - h.id <> ? AND - h.deleted = 0 AND - h.applicationid=a.id', - array($CFG->mnet_localhost_id)); + + $sql = "SELECT h.id, h.deleted, h.wwwroot, h.ip_address, h.name, h.public_key, h.public_key_expires, + h.transport, h.portno, h.last_connect_time, h.last_log_id, h.applicationid, + a.name as app_name, a.display_name as app_display_name, a.xmlrpc_server_url + FROM {mnet_host} h + JOIN {mnet_application} a ON h.applicationid = a.id + WHERE h.id <> ?"; + + if (!$withdeleted) { + $sql .= " AND h.deleted = 0"; + } + + $sql .= " ORDER BY h.deleted, h.name, h.id"; + + return $DB->get_records_sql($sql, array($CFG->mnet_localhost_id)); } diff --git a/theme/base/style/admin.css b/theme/base/style/admin.css index 51c32e80363..f90af47238b 100644 --- a/theme/base/style/admin.css +++ b/theme/base/style/admin.css @@ -205,3 +205,8 @@ #page-admin-plugins #plugins-control-panel .extension .source {background-color:#f3f2aa;} #page-admin-plugins #plugins-control-panel .msg td {text-align:center;} #page-admin-plugins #plugins-control-panel .requiredby {font-size:0.7em;color:#999;} + +/** MNet networking */ +#page-admin-mnet-peers .box.deletedhosts {margin-bottom:1em;font-size:80%;} +#page-admin-mnet-peers .mform .certdetails {background-color:white;} +#page-admin-mnet-peers .mform .deletedhostinfo {background-color:#ffd3d9;border 2px solid #eeaaaa;padding:4px;margin-bottom:5px;}