示例#1
0
function newReservationHTML()
{
    global $user, $skin;
    $forimaging = getContinuationVar('imaging', processInputVar('imaging', ARG_NUMERIC, 0));
    $checkout = getUserResources(array("imageAdmin", "imageCheckOut"));
    $imaging = getUserResources(array("imageAdmin"));
    $server = getUserResources(array("serverCheckOut"), array("available"));
    $imagedata = getImages();
    $baseaccess = 0;
    $imagingaccess = 0;
    $serveraccess = 0;
    $images = array();
    $noimaging = array();
    $serverimages = array();
    $dorevisionscont = 0;
    if (in_array('imageAdmin', $user['privileges']) && count($imaging['image'])) {
        $imagingaccess = 1;
    }
    if (in_array('imageCheckOut', $user['privileges']) && count($checkout['image'])) {
        $baseaccess = 1;
        foreach ($checkout['image'] as $id => $name) {
            $images[$id] = array('name' => $name, 'basic' => 1, 'imaging' => 0, 'server' => 1, 'checkout' => 1, 'maxinitialtime' => 0, 'revisions' => 0);
            if (array_key_exists($id, $imagedata) && !$imagedata[$id]["forcheckout"]) {
                $images[$id]['checkout'] = 0;
            }
            if ($imagingaccess && array_key_exists($id, $imaging['image'])) {
                if ($imagedata[$id]['rootaccess'] == 1 || $imagedata[$id]['ownerid'] == $user['id']) {
                    $images[$id]['imaging'] = 1;
                } else {
                    $noimaging[$id] = 1;
                }
            }
            if (array_key_exists($id, $imagedata) && $imagedata[$id]["maxinitialtime"] != 0) {
                $images[$id]['maxinitialtime'] = $imagedata[$id]['maxinitialtime'];
            }
            $subowner = 0;
            if (array_key_exists($id, $imagedata) && $imagedata[$id]['imagemetaid'] != NULL && count($imagedata[$id]['subimages'])) {
                foreach ($imagedata[$id]['subimages'] as $subid) {
                    if (array_key_exists($subid, $imagedata) && $imagedata[$subid]['ownerid'] == $user['id'] && count($imagedata[$subid]['imagerevision']) > 1) {
                        $subowner = 1;
                    }
                }
            }
            if ($subowner || array_key_exists($id, $imagedata) && count($imagedata[$id]['imagerevision']) > 1 && ($imagedata[$id]['ownerid'] == $user['id'] || checkUserHasPerm('View Debug Information'))) {
                $images[$id]['revisions'] = 1;
                $dorevisionscont = 1;
            }
        }
    }
    if (in_array('serverCheckOut', $user['privileges']) && count($checkout['image'])) {
        $serveraccess = 1;
        $extraimages = getServerProfileImages($user['id']);
        foreach ($extraimages as $id => $name) {
            if (!array_key_exists($id, $images)) {
                $images[$id] = array('name' => $name, 'basic' => 0, 'imaging' => 0, 'server' => 1, 'checkout' => 1, 'maxinitialtime' => 0, 'revisions' => 0);
                if (array_key_exists($id, $imagedata) && !$imagedata[$id]["forcheckout"]) {
                    $images[$id]['checkout'] = 0;
                }
                if (array_key_exists($id, $imagedata) && $imagedata[$id]["maxinitialtime"] != 0) {
                    $images[$id]['maxinitialtime'] = $imagedata[$id]['maxinitialtime'];
                }
                $subowner = 0;
                if (array_key_exists($id, $imagedata) && $imagedata[$id]['imagemetaid'] != NULL && count($imagedata[$id]['subimages'])) {
                    foreach ($imagedata[$id]['subimages'] as $subid) {
                        if (array_key_exists($subid, $imagedata) && $imagedata[$subid]['ownerid'] == $user['id'] && count($imagedata[$subid]['imagerevision']) > 1) {
                            $subowner = 1;
                        }
                    }
                }
                if ($subowner || array_key_exists($id, $imagedata) && count($imagedata[$id]['imagerevision']) > 1 && ($imagedata[$id]['ownerid'] == $user['id'] || checkUserHasPerm('View Debug Information'))) {
                    $images[$id]['revisions'] = 1;
                    $dorevisionscont = 1;
                }
            }
        }
    }
    $imageid = getUsersLastImage($user['id']);
    if (is_null($imageid) && count($images)) {
        $tmp = array_keys($images);
        $imageid = $tmp[0];
    }
    uasort($images, "sortKeepIndex");
    $groupid = getUserGroupID('Specify End Time', 1);
    $members = getUserGroupMembers($groupid);
    if (array_key_exists($user['id'], $members)) {
        $openend = 1;
    } else {
        $openend = 0;
    }
    $groupid = getUserGroupID('Allow No User Check', 1);
    $members = getUserGroupMembers($groupid);
    if (array_key_exists($user['id'], $members)) {
        $nousercheck = 1;
    } else {
        $nousercheck = 0;
    }
    $cdata = array('baseaccess' => $baseaccess, 'imagingaccess' => $imagingaccess, 'serveraccess' => $serveraccess, 'openend' => $openend, 'nousercheck' => $nousercheck, 'imaging' => $forimaging, 'noimaging' => $noimaging);
    $debug = processInputVar('debug', ARG_NUMERIC, 0);
    if ($debug && checkUserHasPerm('View Debug Information')) {
        $cdata['debug'] = 1;
    }
    $h = '';
    $h = "<div dojoType=dijit.Dialog\n";
    $h .= "      id=\"newResDlg\"\n";
    $h .= "      title=\"" . i("New Reservation") . "\"\n";
    $h .= "      duration=250\n";
    $h .= "      draggable=true>\n";
    $h .= "   <input type=\"hidden\" id=\"openend\" value=\"{$openend}\">\n";
    $h .= "   <div id=\"newResDlgContent\">\n";
    /*$cbtn  = "   <div align=\"center\"><br>\n";
    	$cbtn .= "   <button dojoType=\"dijit.form.Button\">\n";
    	$cbtn .= "     " . i("Close") . "\n";
    	$cbtn .= "     <script type=\"dojo/method\" event=\"onClick\">\n";
    	$cbtn .= "       dijit.byId('newResDlg').hide();\n";
    	$cbtn .= "     </script>\n";
    	$cbtn .= "   </button>\n";
    	$cbtn .= "   </div>\n"; # center
    
    	if($forimaging) {
    		$h .= "<h2>" . i("Create / Update an Image") . "</h2>\n";
    		if($imagingaccess == 0) {
    			$h .= i("You don't have access to any base images from which to create new images.") . "<br>\n";
    			return $h . $cbtn;
    		}
    	}
    	else*/
    $h .= "<h2>" . i("New Reservation") . "</h2>\n";
    if (!count($images)) {
        $h .= i("You do not have access to any images.");
        $h .= "<br><br>\n";
        $h .= "   <div align=\"center\"><br>\n";
        $h .= "   <button dojoType=\"dijit.form.Button\">\n";
        $h .= "     " . i("Close") . "\n";
        $h .= "     <script type=\"dojo/method\" event=\"onClick\">\n";
        $h .= "       dijit.byId('newResDlg').hide();\n";
        $h .= "     </script>\n";
        $h .= "   </button>\n";
        $h .= "   </div>\n";
        # center
        $h .= "</div>\n";
        # newResDlgContent
        $h .= "</div>\n";
        # newResDlg
        return $h;
    }
    $chk = array('base' => '', 'imaging' => '', 'server' => '');
    if (!$baseaccess && $serveraccess) {
        $chk['server'] = 'checked';
    } elseif ($forimaging) {
        $chk['imaging'] = 'checked';
    } else {
        $chk['base'] = 'checked';
    }
    $showradios = 0;
    if ($baseaccess + $imagingaccess + $serveraccess > 1) {
        $showradios = 1;
    }
    if ($showradios) {
        $h .= i("Reservation type:") . "<br>\n";
    }
    $h .= "<span";
    if (!$baseaccess || $showradios == 0) {
        $h .= " class=\"hidden\"";
    }
    $h .= "><input type=\"radio\" id=\"basicrdo\" name=\"restype\" ";
    $h .= "onclick=\"selectResType();\" {$chk['base']}>\n";
    $h .= "<label for=\"basicrdo\">" . i("Basic Reservation");
    $h .= "</label></span>\n";
    $h .= "<span";
    if (!$imagingaccess || $showradios == 0) {
        $h .= " class=\"hidden\"";
    }
    $h .= "><input type=\"radio\" id=\"imagingrdo\" name=\"restype\" ";
    $h .= "onclick=\"selectResType();\" {$chk['imaging']}>\n";
    $h .= "<label for=\"imagingrdo\">" . i("Imaging Reservation");
    $h .= "</label></span>\n";
    $h .= "<span";
    if (!$serveraccess || $showradios == 0) {
        $h .= " class=\"hidden\"";
    }
    $h .= "><input type=\"radio\" id=\"serverrdo\" name=\"restype\" ";
    $h .= "onclick=\"selectResType();\" {$chk['server']}>\n";
    $h .= "<label for=\"serverrdo\">" . i("Server Reservation");
    $h .= "</label></span>\n";
    if ($showradios) {
        $h .= "<br><br>\n";
    }
    $h .= "<span id=\"deployprofileslist\" class=\"hidden\">\n";
    $h .= "<div dojoType=\"dojo.data.ItemFileWriteStore\" jsId=\"profilesstore\" ";
    $h .= "data=\"profilesstoredata\"></div>\n";
    $h .= i("Profile:") . " ";
    $h .= "<select dojoType=\"dijit.form.Select\" id=\"deployprofileid\" ";
    $h .= "onChange=\"deployProfileChanged();\" sortByLabel=\"true\"></select><br>\n";
    $h .= "<fieldset>\n";
    $h .= "<legend>" . i("Description:") . "</legend>\n";
    $h .= "<div id=\"deploydesc\"></div>\n";
    $h .= "</fieldset>\n";
    $cont = addContinuationsEntry('AJserverProfileData', array('mode' => 'checkout'));
    $h .= "<button dojoType=\"dijit.form.Button\" id=\"deployFetchProfilesBtn\">\n";
    $h .= "\t" . i("Apply Profile") . "\n";
    $h .= "\t<script type=\"dojo/method\" event=onClick>\n";
    $h .= "\t\tgetServerProfileData('{$cont}', 'deployprofileid', getServerProfileDataDeployCB);\n";
    $h .= "\t</script>\n";
    $h .= "</button>";
    $h .= "<br><br>\n";
    $h .= "<input type=\"hidden\" id=\"appliedprofileid\" value=\"0\">\n";
    $h .= "</span>\n";
    # deployprofileslist
    $h .= "<div id=\"deployprofilediv\">\n";
    # directions
    $h .= "<span id=\"nrdirections\">";
    $h .= i("Please select the environment you want to use from the list:");
    $h .= "<br></span>\n";
    # javascript for max duration and image store
    $maxTimes = getUserMaxTimes();
    $maximaging = $maxTimes['initial'];
    if ($imagingaccess && $maxTimes['initial'] < MAXINITIALIMAGINGTIME) {
        $maximaging = MAXINITIALIMAGINGTIME;
    }
    $h .= "<script type=\"text/javascript\">\n";
    $h .= "var defaultMaxTime = {$maxTimes['initial']};\n";
    $h .= "var maximaging = {$maximaging};\n";
    $h .= "var images = {identifier: 'id',\n";
    $h .= "label: 'name',\n";
    $h .= "items: [\n";
    $lines = array();
    foreach ($images as $id => $img) {
        $lines[] = "   {id: {$id}, name: '{$img['name']}', basic: {$img['basic']}, " . "imaging: {$img['imaging']}, server: {$img['server']}, " . "checkout: {$img['checkout']}, revisions: {$img['revisions']}, " . "maxinitialtime: {$img['maxinitialtime']}}";
    }
    $h .= implode(",\n", $lines);
    $h .= "\n]};\n";
    $h .= "var lastimageid = {$imageid};\n";
    $h .= "var imagingaccess = {$imagingaccess};\n";
    $h .= "</script>\n";
    $cdata['maxinitial'] = $maxTimes['initial'];
    # image
    $h .= "<span class=\"labeledform\">";
    $h .= resourceStore('image', 1, 'detailimagestore');
    $h .= "<div dojoType=\"dojo.data.ItemFileWriteStore\" data=\"images\" ";
    $h .= "jsId=\"imagestore\"></div>\n";
    $h .= "<select dojoType=\"dijit.form.FilteringSelect\" id=\"deployimage\" ";
    $h .= "style=\"width: 400px\" required=\"true\" store=\"imagestore\" ";
    $h .= "queryExpr=\"*\${0}*\" ";
    if ($forimaging) {
        $h .= "query=\"{imaging: 1}\" ";
    } else {
        $h .= "query=\"{basic: 1, checkout: 1}\" ";
    }
    $h .= "highlightMatch=\"all\" autoComplete=\"false\" ";
    $h .= "invalidMessage=\"Please select a valid environment\" ";
    $h .= "onChange=\"selectEnvironment();\" tabIndex=1></select>\n";
    $h .= "</span><br><br>\n";
    $imagenotes = getImageNotes($imageid);
    $desc = '';
    if (!preg_match('/^\\s*$/', $imagenotes['description'])) {
        $desc = preg_replace("/\n/", '<br>', $imagenotes['description']);
        $desc = preg_replace("/\r/", '', $desc);
        $desc = "<strong>" . i("Image Description") . "</strong>:<br>\n" . "{$desc}<br><br>\n";
    }
    $h .= "<div id=imgdesc>{$desc}</div>\n";
    # name
    $h .= "<div id=\"newreslabelfields\">\n";
    $h .= "<span id=\"nrnamespan\" class=\"hidden\">\n";
    $h .= "<label for=\"deployname\">" . i("Reservation Name:") . "</label>\n";
    $h .= "<span class=\"labeledform\">\n";
    $h .= "<input type=\"text\" id=\"deployname\" style=\"width: 400px\" ";
    $h .= "dojoType=\"dijit.form.ValidationTextBox\" ";
    $h .= "regExp=\"^([-a-zA-Z0-9_\\. ]){0,255}\$\" invalidMessage=\"";
    $h .= i('The reservation name can only contain letters, numbers, spaces, dashes(-), underscores(_), and periods(.) and can be up to 255 characters long');
    $h .= "\"></span><br></span>\n";
    $h .= "<span id=\"nrservergroupspan\" class=\"hidden\">";
    # admin group
    if ($user['showallgroups']) {
        $admingroups = getUserGroups();
    } else {
        $admingroups = getUserGroups(0, $user['affiliationid']);
    }
    $h .= "<label for=\"deployadmingroup\">";
    $h .= i("Admin User Group:") . "</label><span class=\"labeledform\">";
    if (USEFILTERINGSELECT && count($admingroups) < FILTERINGSELECTTHRESHOLD) {
        $h .= "<select dojoType=\"dijit.form.FilteringSelect\" id=\"deployadmingroup\" ";
        $h .= "style=\"width: 400px\" queryExpr=\"*\${0}*\" required=\"true\" ";
        $h .= "highlightMatch=\"all\" autoComplete=\"false\">\n";
    } else {
        $h .= "<select id=\"deployadmingroup\">\n";
    }
    $h .= "  <option value=\"0\">None</option>\n";
    foreach ($admingroups as $id => $group) {
        if ($group['name'] == 'None' || preg_match('/^None@.*$/', $group['name'])) {
            continue;
        }
        $h .= "  <option value=\"{$id}\">{$group['name']}</option>\n";
    }
    $h .= "</select></span><br>\n";
    $h .= "<div id=\"admingrpnote\" class=\"hidden\" ";
    $h .= "style=\"width: 400px; margin: 3px 0 3px 10.5em; padding: 1px; border: 1px solid;\">";
    $h .= i("Administrative access has been disabled for this image. Users in the Admin User Group will have control of the reservaion on the Reservations page but will not have administrative access within the reservation.");
    $h .= "</div>\n";
    # login group
    $logingroups = $admingroups;
    $h .= "<label for=\"deploylogingroup\">";
    $h .= i("Access User Group:") . "</label><span class=\"labeledform\">";
    if (USEFILTERINGSELECT && count($logingroups) < FILTERINGSELECTTHRESHOLD) {
        $h .= "<select dojoType=\"dijit.form.FilteringSelect\" id=\"deploylogingroup\" ";
        $h .= "style=\"width: 400px\" queryExpr=\"*\${0}*\" required=\"true\" ";
        $h .= "highlightMatch=\"all\" autoComplete=\"false\">\n";
    } else {
        $h .= "<select id=\"deploylogingroup\">\n";
    }
    $h .= "  <option value=\"0\">None</option>\n";
    foreach ($logingroups as $id => $group) {
        if ($group['name'] == 'None' || preg_match('/^None@.*$/', $group['name'])) {
            continue;
        }
        $h .= "  <option value=\"{$id}\">{$group['name']}</option>\n";
    }
    $h .= "</select></span><br></span>\n";
    # fixed MAC
    /*$h .= "<span id=\"nrmacaddrspan\">\n";
    	$h .= "<label for=\"deployfixedMAC\">";
    	$h .= i("Fixed MAC Address:") . "</label>\n";
    	$h .= "<span class=\"labeledform\">\n";
    	$h .= "<input type=\"text\" id=\"deployfixedMAC\" style=\"width: 200px\" ";
    	$h .= "dojoType=\"dijit.form.ValidationTextBox\" ";
    	$h .= "regExp=\"([0-9a-fA-F]{2}:){5}([0-9a-fA-F]{2})\">(optional)</span>";
    	$h .= "<br></span>\n";*/
    # monitored
    /*$h .= "<span id=\"nrmonitoredspan\">\n";
    	$h .= "<label for=\"deploymonitored\">" . i("Monitored:") . "</label>\n";
    	$h .= "<span class=\"labeledform\"><input type=\"checkbox\" ";
    	$h .= "id=\"deploymonitored\" dijit.form.CheckBox\"></span><br></span>\n";*/
    # fixed IP block
    $h .= "<div id=\"nrfixedipdiv2\" class=\"hidden\">\n";
    $h .= "<div id=\"nrfixedipdiv\">\n";
    # ip addr
    $regip1 = "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)";
    $regip4 = "{$regip1}\\.{$regip1}\\.{$regip1}\\.{$regip1}";
    $h .= "<label for=\"deployfixedIP\">" . i("Fixed IP Address:") . "</label>\n";
    $h .= "<span class=\"labeledform\"><input type=\"text\" ";
    $h .= "id=\"deployfixedIP\" style=\"width: 180px\" ";
    $h .= "dojoType=\"dijit.form.ValidationTextBox\" regExp=\"{$regip4}\" ";
    $h .= "onKeyUp=\"checkFixedSet('deploy');\">" . i("(optional)") . "</span><br>\n";
    # netmask
    $h .= "<label for=\"deploynetmask\">" . i("Netmask:") . "</label>\n";
    $h .= "<span class=\"labeledform\"><input type=\"text\" ";
    $h .= "id=\"deploynetmask\" style=\"width: 180px\" ";
    $h .= "dojoType=\"dijit.form.ValidationTextBox\" regExp=\"{$regip4}\" ";
    $h .= "validator=\"validateNetmask\" onKeyUp=\"fetchRouterDNS('deploy');\" ";
    $h .= "disabled></span><br>\n";
    # router
    $h .= "<label for=\"deployrouter\">" . i("Router:") . "</label>\n";
    $h .= "<span class=\"labeledform\"><input type=\"text\" ";
    $h .= "id=\"deployrouter\" style=\"width: 180px\" ";
    $h .= "dojoType=\"dijit.form.ValidationTextBox\" regExp=\"{$regip4}\" ";
    $h .= "disabled></span><br>\n";
    # dns servers
    $h .= "<label for=\"deploydns\">" . i("DNS Server(s):") . "</label>\n";
    $h .= "<span class=\"labeledform\"><input type=\"text\" ";
    $h .= "id=\"deploydns\" style=\"width: 180px\" ";
    $h .= "dojoType=\"dijit.form.ValidationTextBox\" ";
    $h .= "regExp=\"({$regip4})(,{$regip4}){0,2}\" disabled></span><br>\n";
    $h .= "</div>\n";
    # nrfixedipdiv
    $h .= "<br><br>";
    $h .= "</div>\n";
    # nrfixedipdiv2
    $h .= "</div>\n";
    # newreslabelfields
    $h .= "<span id=\"nousercheckspan\"";
    if (!$nousercheck) {
        $h .= " class=\"hidden\"";
    }
    $h .= ">\n";
    if ($nousercheck) {
        $h .= labeledFormItem('nousercheck', i('Disable timeout for disconnected users'), 'check', '', '', '1');
    }
    $h .= "<br></span>";
    $h .= "<span id=\"whentitlebasic\">";
    $h .= i("When would you like to use the environment?");
    $h .= "</span>\n";
    $h .= "<span id=\"whentitleimaging\" class=\"hidden\">";
    $h .= i("When would you like to start the imaging process?");
    $h .= "</span>\n";
    $h .= "<span id=\"whentitleserver\" class=\"hidden\">";
    $h .= i("When would you like to deploy the server?");
    $h .= "</span>";
    $h .= "<br>\n";
    # duration radios
    $h .= "&nbsp;&nbsp;&nbsp;";
    $h .= "<input type=\"radio\" id=\"startnow\" name=\"deploystart\" ";
    $h .= "onclick=\"setStartNow();\" checked>\n";
    $h .= "<label for=\"startnow\">" . i("Now") . "</label><br>\n";
    $h .= "&nbsp;&nbsp;&nbsp;";
    $h .= "<input type=\"radio\" id=\"startlater\" name=\"deploystart\" ";
    $h .= "onclick=\"setStartLater();\">\n";
    $h .= "<label for=\"startlater\">" . i("Later:") . "</label>\n";
    # limited start
    $days = getReserveDayData();
    $h .= "<span id=\"limitstart\">\n";
    $h .= selectInputHTML('day', $days, 'deploystartday', "onChange='setStartLater();'");
    $h .= "&nbsp;" . i("At") . "&nbsp;\n";
    $tmpArr = array();
    for ($i = 1; $i < 13; $i++) {
        $tmpArr[$i] = $i;
    }
    $timestamp = unixFloor15(time() + 4500);
    $timeArr = explode(',', date('g,i,a', $timestamp));
    $h .= selectInputHTML('hour', $tmpArr, 'deployhour', "onChange='setStartLater();'", $timeArr[0]);
    $minutes = array("0" => "00", "15" => "15", "30" => "30", "45" => "45");
    $h .= selectInputHTML('minute', $minutes, 'deploymin', "onChange='setStartLater();'", $timeArr[1]);
    $h .= selectInputHTML('meridian', array("am" => "a.m.", "pm" => "p.m."), 'deploymeridian', "onChange='setStartLater();'", $timeArr[2]);
    $h .= "</span>\n";
    # any start
    $h .= "<span id=\"anystart\" class=\"hidden\">\n";
    $h .= "<div dojoType=\"dijit.form.DateTextBox\" ";
    $h .= "id=\"deploystartdate\" onChange=\"setStartLater();\" ";
    $h .= "style=\"width: 88px;\"></div>\n";
    $h .= "<div id=\"deploystarttime\" dojoType=\"dijit.form.TimeTextBox\" ";
    $h .= "style=\"width: 88px\" onChange=\"setStartLater();\"></div>\n";
    $h .= "</span>\n";
    $h .= "<small>(" . date('T') . ")</small><br><br>\n";
    $h .= "<span id=\"endlbl\"";
    if (!$openend) {
        $h .= " class=\"hidden\"";
    }
    $h .= ">" . i("Ending:") . "<br></span>\n";
    # ending by duration
    $h .= "<span id=\"durationend\">\n";
    $h .= "&nbsp;&nbsp;&nbsp;";
    if ($openend) {
        $h .= "<input type=\"radio\" id=\"endduration\" name=\"deployend\" ";
        $h .= "onclick=\"setEndDuration();\">\n";
        $h .= "<label for=\"endduration\">";
    }
    $h .= i("Duration");
    if ($openend) {
        $h .= ":&nbsp;</label>\n";
    }
    $maxtimes = getUserMaxTimes();
    if ($imaging && $maxtimes['initial'] < 720) {
        # make sure at least 12 hours available for imaging reservations
        $maxtimes['initial'] = 720;
    }
    $lengths = getReservationLengths($maxtimes['initial']);
    $h .= selectInputHTML('length', $lengths, 'reqlength', "onChange='updateWaitTime(0); setEndDuration(); durationChange();'", 60);
    $h .= "<br></span>\n";
    # ending is indefinite
    $h .= "<span id=\"indefiniteend\" class=\"hidden\">\n";
    if ($serveraccess) {
        $h .= "&nbsp;&nbsp;&nbsp;";
        $h .= "<input type=\"radio\" id=\"endindef\" name=\"deployend\" ";
        $h .= "onclick=\"setEndIndef();\">\n";
        $h .= "<label for=\"endindef\">" . i("Indefinite") . "</label><br>\n";
    }
    $h .= "</span>\n";
    # ending by date/time
    $h .= "<span id=\"specifyend\"";
    if (!$openend) {
        $h .= " class=\"hidden\"";
    }
    $h .= ">\n";
    if ($openend || $serveraccess) {
        $h .= "&nbsp;&nbsp;&nbsp;";
        $h .= "<input type=\"radio\" id=\"endat\" name=\"deployend\" ";
        $h .= "onclick=\"setEndAt();\">\n";
        $h .= "<label for=\"endat\">" . i("At this time:") . "</label>\n";
        $h .= "<div type=\"text\" dojoType=\"dijit.form.DateTextBox\" ";
        $h .= "id=\"deployenddate\" onChange=\"setEndAt();\" ";
        $h .= "style=\"width: 88px\"></div>\n";
        $h .= "<div type=\"text\" id=\"deployendtime\" dojoType=\"dijit.form.TimeTextBox\" ";
        $h .= "style=\"width: 88px\" onChange=\"setEndAt();\"></div>\n";
        $h .= "<small>(" . date('T') . ")</small><br>\n";
    }
    $h .= "</span><br>\n";
    $h .= "<div id=\"deployerr\" class=\"rederrormsg\"></div>\n";
    $h .= "<div id=\"waittime\"></div><br>\n";
    $h .= "</div>\n";
    # deployprofilediv
    $h .= "   </div>\n";
    $h .= "   <input type=\"hidden\" id=\"newrescont\">\n";
    $h .= "   <div align=\"center\">\n";
    /*$h .= "   <button id=\"newResDlgShowConfigBtn\" dojoType=\"dijit.form.Button\" ";
    	$h .= "class=\"hidden\">\n";
    	$h .= "    " . i("Configure System") . "\n";
    	$h .= "     <script type=\"dojo/method\" event=\"onClick\">\n";
    	$h .= "       showConfigureSystem();\n";
    	$h .= "     </script>\n";
    	$h .= "   </button>\n";*/
    $h .= dijitButton('newResDlgBtn', i("Create Reservation"), "submitNewReservation();");
    $h .= dijitButton('', i("Cancel"), "dijit.byId('newResDlg').hide();");
    $h .= "   </div>\n";
    $cont = addContinuationsEntry('AJnewRequest', $cdata, SECINDAY);
    $h .= "<input type=\"hidden\" id=\"deploycont\" value=\"{$cont}\">\n";
    if ($serveraccess) {
        $cont = addContinuationsEntry('AJfetchRouterDNS');
        $h .= "<input type=\"hidden\" id=\"fetchrouterdns\" value=\"{$cont}\">\n";
    }
    $cont = addContinuationsEntry('AJupdateWaitTime', $cdata);
    $h .= "<INPUT type=\"hidden\" id=\"waitcontinuation\" value=\"{$cont}\">\n";
    $h .= "</div>\n";
    return $h;
}
示例#2
0
function newReservation()
{
    global $submitErr, $user;
    $timestamp = processInputVar("stamp", ARG_NUMERIC);
    $imageid = processInputVar("imageid", ARG_STRING, getUsersLastImage($user['id']));
    $length = processInputVar("length", ARG_NUMERIC);
    $day = processInputVar("day", ARG_STRING);
    $hour = processInputVar("hour", ARG_NUMERIC);
    $minute = processInputVar("minute", ARG_NUMERIC);
    $meridian = processInputVar("meridian", ARG_STRING);
    if (!$submitErr) {
        print "<H2>New Reservation</H2><br>\n";
    }
    $resources = getUserResources(array("imageAdmin", "imageCheckOut"));
    $resources["image"] = removeNoCheckout($resources["image"]);
    if (!in_array("imageCheckOut", $user["privileges"]) && !in_array("imageAdmin", $user["privileges"]) || empty($resources['image'])) {
        print "You don't have access to any environments and, therefore, cannot ";
        print "make any reservations.<br>\n";
        return;
    }
    print "Please select the environment you want to use from the list:<br>\n";
    $OSs = getOSList();
    $images = getImages();
    $maxTimes = getUserMaxTimes();
    print "<script language=javascript>\n";
    print "var defaultMaxTime = {$maxTimes['initial']};\n";
    print "var maxTimes = {\n";
    foreach (array_keys($resources['image']) as $imgid) {
        if (array_key_exists($imgid, $images)) {
            print "   {$imgid}: {$images[$imgid]['maxinitialtime']},\n";
        }
    }
    print "   0: 0\n";
    // this is because IE doesn't like the last item having a ',' after it
    print "};\n";
    print "</script>\n";
    print "<FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
    // list of images
    uasort($resources["image"], "sortKeepIndex");
    printSelectInput("imageid", $resources["image"], $imageid, 1, 0, 'imagesel', "onChange=\"selectEnvironment();\" tabIndex=1");
    print "<br><br>\n";
    $imagenotes = getImageNotes($imageid);
    $desc = '';
    if (preg_match('/\\w/', $imagenotes['description'])) {
        $desc = preg_replace("/\n/", '<br>', $imagenotes['description']);
        $desc = preg_replace("/\r/", '', $desc);
        $desc = "<strong>Image Description</strong>:<br>\n{$desc}<br><br>\n";
    }
    print "<div id=imgdesc>{$desc}</div>\n";
    print "<fieldset id=whenuse class=whenusefieldset>\n";
    print "<legend>When would you like to use the application?</legend>\n";
    print "&nbsp;&nbsp;&nbsp;<INPUT type=radio name=time id=timenow ";
    print "onclick='updateWaitTime(0);' value=now>Now<br>\n";
    print "&nbsp;&nbsp;&nbsp;<INPUT type=radio name=time value=future ";
    print "onclick='updateWaitTime(0);' checked>Later:\n";
    if ($submitErr) {
        $hour24 = $hour;
        if ($hour24 == 12) {
            if ($meridian == "am") {
                $hour24 = 0;
            }
        } elseif ($meridian == "pm") {
            $hour24 += 12;
        }
        list($month, $day, $year) = explode('/', $day);
        $stamp = datetimeToUnix("{$year}-{$month}-{$day} {$hour24}:{$minute}:00");
        $day = date('l', $stamp);
        printReserveItems(1, $day, $hour, $minute, $meridian, $length);
    } elseif (empty($timestamp)) {
        printReserveItems();
    } else {
        $timeArr = explode(',', date('l,g,i,a', $timestamp));
        printReserveItems(1, $timeArr[0], $timeArr[1], $timeArr[2], $timeArr[3], $length);
    }
    print "</fieldset>\n";
    print "<div id=waittime class=hidden></div><br>\n";
    $cont = addContinuationsEntry('submitRequest');
    print "<INPUT type=hidden name=continuation value=\"{$cont}\">\n";
    print "<INPUT id=newsubmit type=submit value=\"Create Reservation\">\n";
    print "<INPUT type=hidden id=testjavascript value=0>\n";
    print "</FORM>\n";
    $cont = addContinuationsEntry('AJupdateWaitTime');
    print "<INPUT type=hidden name=waitcontinuation id=waitcontinuation value=\"{$cont}\">\n";
}