webservice MDL-17135 add disable javascript to the valid until fields
This commit is contained in:
@@ -30,6 +30,7 @@ require_once($CFG->dirroot.'/admin/webservice/lib.php');
|
||||
$id = required_param('id', PARAM_INT);
|
||||
|
||||
$PAGE->set_url('admin/external_service_users.php', array('id'=>$id));
|
||||
$PAGE->requires->js('admin/webservice/script.js');
|
||||
|
||||
admin_externalpage_setup('externalserviceusers');
|
||||
admin_externalpage_print_header();
|
||||
@@ -106,15 +107,20 @@ $alloweduserselector = new service_user_selector('removeselect', array('servicei
|
||||
|
||||
/// save user settings (administrator clicked on update button)
|
||||
if (optional_param('updateuser', false, PARAM_BOOL) && confirm_sesskey()) {
|
||||
$useridtoupdate = optional_param('userid', false, PARAM_BOOL);
|
||||
$useridtoupdate = optional_param('userid', false, PARAM_INT);
|
||||
$iprestriction = optional_param('iprestriction', '', PARAM_TEXT);
|
||||
$serviceuserid = optional_param('serviceuserid', '', PARAM_INT);
|
||||
$fromday = optional_param('fromday', '', PARAM_INT);
|
||||
$frommonth = optional_param('frommonth', '', PARAM_INT);
|
||||
$fromyear = optional_param('fromyear', '', PARAM_INT);
|
||||
$fromday = optional_param('fromday'.$useridtoupdate, '', PARAM_INT);
|
||||
$frommonth = optional_param('frommonth'.$useridtoupdate, '', PARAM_INT);
|
||||
$fromyear = optional_param('fromyear'.$useridtoupdate, '', PARAM_INT);
|
||||
$addcap = optional_param('addcap', false, PARAM_INT);
|
||||
$enablevaliduntil = optional_param('enablevaliduntil', false, PARAM_INT);
|
||||
$validuntil = mktime(23, 59, 59, $frommonth, $fromday, $fromyear);
|
||||
if (!empty($fromday) && !empty($frommonth) && !empty($fromyear)) {
|
||||
$validuntil = mktime(23, 59, 59, $frommonth, $fromday, $fromyear);
|
||||
}
|
||||
else {
|
||||
$validuntil = "";
|
||||
}
|
||||
|
||||
$serviceuser = new object();
|
||||
$serviceuser->id = $serviceuserid;
|
||||
@@ -170,16 +176,26 @@ if (!empty($allowedusers)) {
|
||||
$contents .= "</div></div>";
|
||||
//valid until date selector
|
||||
$contents .= "<div class=\"fitem\"><div class=\"fitemtitle\"><label>".get_string('validuntil','webservice')." </label></div><div class=\"felement\">";
|
||||
$selectors = html_select::make_time_selectors(array('days' => 'fromday','months' => 'frommonth', 'years' => 'fromyear'),$user->validuntil);
|
||||
// the following date selector needs to have specific day/month/year field ids because we use javascript (enable/disable).
|
||||
$selectors = html_select::make_time_selectors(array('days' => 'fromday'.$user->id,'months' => 'frommonth'.$user->id, 'years' => 'fromyear'.$user->id),$user->validuntil);
|
||||
foreach ($selectors as $select) {
|
||||
if (empty($user->validuntil)) {
|
||||
$select->disabled = true;
|
||||
}
|
||||
$contents .= $OUTPUT->select($select);
|
||||
} $checkbox = new html_select_option();
|
||||
}
|
||||
$checkbox = new html_select_option();
|
||||
$checkbox->value = 1;
|
||||
$checkbox->id = 'enablevaliduntil'.$user->id;
|
||||
$checkbox->name = 'enablevaliduntil';
|
||||
$checkbox->selected = empty($user->validuntil)?false:true;
|
||||
$checkbox->text = get_string('enabled', 'webservice');
|
||||
$checkbox->label->text = get_string('enabled', 'webservice');
|
||||
$checkbox->alt = get_string('enabled', 'webservice');
|
||||
$checkbox->add_action('change', 'disablevaliduntil', array($user->id)); //into admin/webservice/script.js
|
||||
$contents .= $OUTPUT->checkbox($checkbox, 'enablevaliduntil');
|
||||
$contents .= ""; //init date selector disable status
|
||||
|
||||
$contents .= "</div></div>";
|
||||
//TO IMPLEMENT : assign the required capability (if needed)
|
||||
$contents .= "<div class=\"fitem\"><div class=\"fitemtitle\"><label>".get_string('addrequiredcapability','webservice')." </label></div><div class=\"felement fcheckbox\">";
|
||||
|
||||
@@ -70,4 +70,19 @@ capability_service = {
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/* This function disable the valid until field of a user into external_service_users.php*/
|
||||
function disablevaliduntil(event, userid) {
|
||||
var disabled;
|
||||
if (document.getElementById('enablevaliduntil'+userid).checked)
|
||||
{
|
||||
disabled = false;
|
||||
}
|
||||
else {
|
||||
disabled = true;
|
||||
}
|
||||
document.getElementById('menufromday'+userid).disabled = disabled;
|
||||
document.getElementById('menufromyear'+userid).disabled = disabled;
|
||||
document.getElementById('menufrommonth'+userid).disabled = disabled;
|
||||
}
|
||||
+29
-146
@@ -31,6 +31,11 @@ die('TODO');
|
||||
require_once('../config.php');
|
||||
require_once('lib.php');
|
||||
$protocol = optional_param('protocol',"soap",PARAM_ALPHA);
|
||||
$username = optional_param('username',"",PARAM_ALPHA);
|
||||
$password = optional_param('password',"",PARAM_ALPHA);
|
||||
|
||||
/// TODO Retrieve user (authentication)
|
||||
$user = "";
|
||||
|
||||
/// PAGE settings
|
||||
$PAGE->set_course($COURSE);
|
||||
@@ -38,13 +43,34 @@ $PAGE->set_url('webservice/wsdoc.php');
|
||||
$PAGE->set_title(get_string('wspagetitle', 'webservice'));
|
||||
$PAGE->set_heading(get_string('wspagetitle', 'webservice'));
|
||||
$PAGE->set_generaltype("form");
|
||||
|
||||
// Display the documentation
|
||||
echo $OUTPUT->header();
|
||||
webservice_lib::display_webservices_availability($protocol);
|
||||
generate_documentation($protocol);
|
||||
generate_functionlist();
|
||||
generate_documentation($protocol); //documentation relatif to the protocol
|
||||
generate_functionlist($protocol, $user); //documentation relatif to the available function
|
||||
echo $OUTPUT->footer();
|
||||
|
||||
|
||||
function generate_functionlist($protocol, $user) {
|
||||
|
||||
/// retrieve all function that the user can access
|
||||
/// =>
|
||||
/// retrieve all function that are available into enable services that
|
||||
/// have (no restriction user or the user is into the restricted user list)
|
||||
/// and (no required capability or the user has the required capability)
|
||||
|
||||
// do SQL request here
|
||||
|
||||
/// load once all externallib.php of the retrieved functions
|
||||
|
||||
/// foreach retrieved functions display the description
|
||||
|
||||
// in order to display the description we need to use an algo similar to the validation
|
||||
// every time we get a scalar value, we need to convert it into a human readable value as
|
||||
// PARAM_INT => 'integer' or PARAM_TEXT => 'string' or PARAM_BOOL => 'boolean' ...
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Generate documentation specific to a protocol
|
||||
@@ -68,132 +94,6 @@ function generate_documentation($protocol) {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Generate web service function list
|
||||
* @global object $CFG
|
||||
*/
|
||||
function generate_functionlist () {
|
||||
global $CFG;
|
||||
$documentation = "<H2>".get_string('functionlist','webservice')."</H2>";
|
||||
|
||||
//retrieve all external file
|
||||
$externalfiles = array();
|
||||
$externalfunctions = array();
|
||||
webservice_lib::setListApiFiles($externalfiles, $CFG->dirroot);
|
||||
|
||||
foreach ($externalfiles as $file) {
|
||||
require($file);
|
||||
|
||||
$classpath = substr($file,strlen($CFG->dirroot)+1); //remove the dir root + / from the file path
|
||||
$classpath = substr($classpath,0,strlen($classpath) - 13); //remove /external.php from the classpath
|
||||
$classpath = str_replace('/','_',$classpath); //convert all / into _
|
||||
$classname = $classpath."_external";
|
||||
$api = new $classname();
|
||||
$documentation .= "<H3><u>".get_string('moodlepath','webservice').": ".$classpath."</u></H3><ul>";
|
||||
if ($classname == "user_external") {
|
||||
$description = $api->get_descriptions();
|
||||
var_dump("<pre>");
|
||||
convertDescriptionType($description);
|
||||
var_dump("</pre>");
|
||||
foreach ($description as $functionname => $functiondescription) {
|
||||
$documentation .= <<<EOF
|
||||
<li><b>{$functionname}(</b>
|
||||
EOF;
|
||||
$arrayparams = array();
|
||||
$comma="";
|
||||
//TODO: this is not an array anymore!!! (all algo function)
|
||||
foreach($functiondescription['params'] as $param => $type) {
|
||||
$documentation .= <<<EOF
|
||||
<span style=color:green>{$comma} {$type} <b>{$param}</b>
|
||||
EOF;
|
||||
if (empty($comma)) {
|
||||
$comma = ',';
|
||||
}
|
||||
}
|
||||
$documentation .= <<<EOF
|
||||
<b></span>)</b> :
|
||||
EOF;
|
||||
if (array_key_exists('return', $functiondescription)) {
|
||||
foreach($functiondescription['return'] as $return => $type) {
|
||||
$documentation .= <<<EOF
|
||||
<span style=color:blue>
|
||||
<i>
|
||||
{$type}</i>
|
||||
EOF;
|
||||
if (is_array($type)) {
|
||||
$arraytype = "<pre>".print_r($type, true)."</pre>";
|
||||
$documentation .= <<<EOF
|
||||
<b>{$return}</b><br/><br/><b>{$return}</b> {$arraytype} </span>
|
||||
EOF;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$documentation .= <<<EOF
|
||||
<br/><br/><span style=color:green>
|
||||
EOF;
|
||||
foreach($functiondescription['params'] as $param => $type) {
|
||||
|
||||
if (is_array($type)) {
|
||||
$arraytype = "<pre>".print_r($type, true)."</pre>";
|
||||
$documentation .= <<<EOF
|
||||
<b>{$param}</b> : {$arraytype} <br>
|
||||
EOF;
|
||||
}
|
||||
else {
|
||||
$documentation .= <<<EOF
|
||||
<b>{$param}</b> : {$type} <br>
|
||||
EOF;
|
||||
}
|
||||
|
||||
}
|
||||
$documentation .= <<<EOF
|
||||
</div><br/><br/>
|
||||
EOF;
|
||||
|
||||
}
|
||||
}
|
||||
$documentation .= <<<EOF
|
||||
</ul>
|
||||
EOF;
|
||||
|
||||
}
|
||||
|
||||
echo $documentation;
|
||||
|
||||
}
|
||||
|
||||
function convertDescriptionType(&$description) {
|
||||
foreach ($description as &$type) {
|
||||
if (is_array($type)) { //is it a List ?
|
||||
convertDescriptionType($type);
|
||||
}
|
||||
else {
|
||||
if (is_object($type)) { //is it a object
|
||||
convertObjectTypes($type);
|
||||
}
|
||||
else { //it's a primary type
|
||||
$type = converterMoodleParamIntoWsParam($type);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function convertObjectTypes(&$type) {
|
||||
foreach (get_object_vars($type) as $propertyname => $propertytype) { //browse all properties of the object
|
||||
if (is_array($propertytype)) { //the property is an array
|
||||
convertDescriptionType($propertytype);
|
||||
$type->$propertyname = $propertytype;
|
||||
} else if (is_object($propertytype)) { //the property is an object
|
||||
convertObjectTypes($propertytype);
|
||||
$type->$propertyname = $propertytype;
|
||||
}
|
||||
else { //the property is a primary type
|
||||
$type->$propertyname = converterMoodleParamIntoWsParam($propertytype);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a Moodle type (PARAM_ALPHA, PARAM_NUMBER,...) as a SOAP type (string, interger,...)
|
||||
* @param integer $moodleparam
|
||||
@@ -228,22 +128,5 @@ function converterMoodleParamIntoWsParam($moodleparam) {
|
||||
case PARAM_TEXT:
|
||||
return "string";
|
||||
break;
|
||||
//here we check that the value has not already been changed
|
||||
//the algo could want to do it in the case two functions of the web description use the
|
||||
//same object ($params or $return could be the same for two functions, so the guy
|
||||
//writing the web description use the same object)
|
||||
//as the convertDescriptionType function passes parameter in reference
|
||||
case "integer":
|
||||
return "integer";
|
||||
break;
|
||||
case "boolean":
|
||||
return "boolean";
|
||||
break;
|
||||
case "string":
|
||||
return "string";
|
||||
break;
|
||||
default:
|
||||
return "object";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user