]> git.mjollnir.org Git - moodle.git/commitdiff
webservice MDL-17135 revert the service function form to a Moodle form + user searcha...
authorjerome mouneyrac <jerome@moodle.com>
Mon, 9 Nov 2009 03:38:50 +0000 (03:38 +0000)
committerjerome mouneyrac <jerome@moodle.com>
Mon, 9 Nov 2009 03:38:50 +0000 (03:38 +0000)
admin/webservice/forms.php
admin/webservice/service_functions.php
lib/form/searchableselector.php

index e30ec649180cf0c208bf9518dde705f0eb5db912..03d206f6d954d8794975b9dedd09dd3a24cd347a 100644 (file)
@@ -59,7 +59,7 @@ class external_service_form extends moodleform {
             }
         }
 
-        $mform->addElement('searchableselector', 'requiredcapability', get_string('requiredcapability', 'webservice'), $capabilitychoices, array('size' => 12));
+        $mform->addElement('searchableselector', 'requiredcapability', get_string('requiredcapability', 'webservice'), $capabilitychoices);
        
         /// display notification error if the current requiredcapability doesn't exist anymore
         if(empty($currentcapabilityexist)) {
@@ -91,4 +91,35 @@ class external_service_form extends moodleform {
         $errors = parent::validation($data, $files);     
         return $errors;
     }
-}
\ No newline at end of file
+}
+
+
+class external_service_functions_form extends moodleform {
+    function definition() {
+        global $CFG, $USER, $DB;
+
+        $mform = $this->_form;
+        $data = $this->_customdata;
+
+        $mform->addElement('header', 'addfunction', get_string('addfunction', 'webservice'));
+
+        $select = "name NOT IN (SELECT s.functionname
+                                  FROM {external_services_functions} s
+                                 WHERE s.externalserviceid = :sid
+                               )";
+
+        $functions = $DB->get_records_select_menu('external_functions', $select, array('sid'=>$data['id']), 'name', 'id, name');
+
+        $mform->addElement('searchableselector', 'fid', get_string('name'), $functions);
+
+        $mform->addElement('hidden', 'id');
+        $mform->setType('id', PARAM_INT);
+
+        $mform->addElement('hidden', 'action');
+        $mform->setType('action', PARAM_ACTION);
+
+        $this->add_action_buttons(true);
+
+        $this->set_data($data);
+    }
+}
index f02bd5db4b7cc9bedd85f6107216fe3160eb47f0..ecce2ce78435c6551ea308998539e402bf198ef9 100644 (file)
@@ -26,6 +26,7 @@
 require_once('../../config.php');
 require_once($CFG->libdir.'/adminlib.php');
 require_once($CFG->libdir.'/externallib.php');
+require_once('forms.php');
 
 $id      = required_param('id', PARAM_INT);
 $fid     = optional_param('fid', 0, PARAM_INT);
@@ -57,9 +58,13 @@ if ($action === 'delete' and confirm_sesskey() and $service and empty($service->
     redirect($thisurl);
 
 } else if ($action === 'add' and confirm_sesskey() and $service and empty($service->component)) {
+    $mform = new external_service_functions_form(null, array('action'=>'add', 'id'=>$service->id));
 
-    if ($fid and $function = $DB->get_record('external_functions', array('id'=> $fid))) {
+    if ($mform->is_cancelled()) {
+        redirect($thisurl);
+    } else if ($data = $mform->get_data()) {
         ignore_user_abort(true); // no interruption here!
+        $function = $DB->get_record('external_functions', array('id'=>$data->fid), '*', MUST_EXIST);
         // make sure the function is not there yet
         if ($DB->record_exists('external_services_functions', array('externalserviceid'=>$service->id, 'functionname'=>$function->name))) {
             redirect($thisurl);
@@ -71,53 +76,10 @@ if ($action === 'delete' and confirm_sesskey() and $service and empty($service->
         redirect($thisurl);
     }
 
-    // Prepare the list of function to choose from
-   $select = "name NOT IN (SELECT s.functionname
-                                  FROM {external_services_functions} s
-                                 WHERE s.externalserviceid = :sid
-                               )";
-    $functionchoices = $DB->get_records_select_menu('external_functions', $select, array('sid'=>$id), 'name', 'id, name');
-
-    // Javascript for the function search/selection fields
-    $PAGE->requires->yui_lib('event');
-    $PAGE->requires->js($CFG->admin.'/webservice/script.js');
-    $PAGE->requires->js_function_call('capability_service.cap_filter_init', array(get_string('search'))); //TODO generalize javascript
-
+    //ask for function id
     admin_externalpage_print_header();
-
     echo $OUTPUT->heading($service->name);
-    echo $OUTPUT->box_start('generalbox boxwidthwide boxaligncenter centerpara');
-
-    //TODO: hmm, is this supposed to be replaced by the roles UI, right? If not the use of output lib is definitely wrong, we need more buttons (Cancel!) and custom JS, etc.
-    //TODO: add JS disabling of submit button if no functio nselected, the error string is not user friendly
-
-    //the service form
-    $form = new html_form();
-    $form->url = new moodle_url('service_functions.php', array('id' => $id, 'action' => 'add', 'save' => 1)); // Required
-    $form->button = new html_button();
-    $form->button->id = 'settingssubmit';
-    $form->button->text = get_string('addfunction', 'webservice'); // Required
-    $form->button->disabled = false;
-    $form->button->title = get_string('addfunction', 'webservice');
-    $form->method = 'post';
-    $form->id = 'settingsform';
-    //help text
-    $contents = '<p id="intro">'. get_string('addfunctionhelp', 'webservice') . '</p>';
-    //function section (search field + selection field)
-    $select = new html_select();
-    $select->options = $functionchoices;
-    $select->name = 'fid';
-    $select->id = 'menucapability'; //TODO generalize javascript
-    $select->nothinglabel = '';
-    $select->nothingvalue = '';
-    $select->listbox = true;
-    $select->tabindex = 0;
-    $contents .= $OUTPUT->select($select);
-    $contents .= "<br/><br/>";
-    echo $OUTPUT->form($form, $contents);
-
-    echo $OUTPUT->box_end();
-
+    $mform->display();
     echo $OUTPUT->footer();
     die;
 }
index 4a2656d78f0fabe80f1f9f57496c74996491847d..b23f62afa5aa886cd593a5c707664b15001a255e 100644 (file)
@@ -40,6 +40,10 @@ class MoodleQuickForm_searchableselector extends MoodleQuickForm_select{
         if (!empty($attributes) && key_exists('multiple', $attributes)) {
             throw new moodle_exception('searchableselectorcannotbemultiple');     
         }
+        //set size default to 12
+        if (empty($attributes) || empty($attributes['size'])) {
+            $attributes['size'] = 12;
+        }
         parent::MoodleQuickForm_select($elementName, $elementLabel, $options, $attributes);
     }