Author: jfthomps Date: Tue Apr 17 20:01:13 2012 New Revision: 1327259 URL: http://svn.apache.org/viewvc?rev=1327259&view=rev Log: VCL-485 Multilingualization of Web UI
The basis for this code was contributed by Toru Yokoyama. The gettext library was used for php. Something similar was created for javascript by adding the function _() to code.js and wrapping all strings in javascript files that need to be translated in that function. A messages.js file is created for each locale that has the needed translations. Additional fields are added to the connectmethod table for description and connecttext in the language of the locale. A locale specific file is created for each locale for the TimeTextBoxEnd.js vcldojo widget. index.php: -added declaration of $locale -added call to setVCLLocale authentication.php: wrapped strings to be translated with the _() function in selectAuth and printLoginPage blockallocations.php: -modified getCurrentBlockHTML - (VCL-513) added affiliation restriction to query -modified getUserCurrentBlockHTML - (VCL-513) fixed problem where submitted block allocation requests were not showing up for the requestor if the person did not select a user group -wrapped strings to be translated with the _() function in blockAllocations, blockAllocationForm, AJblockAllocationSubmit, getUserCurrentBlockHTML, AJviewBlockAllocation, and viewBlockStatus -changed getting dates using date() to strftime() conf-default.php: added DEFAULTLOCALE requests.php: -wrapped strings to be translated with the _() function in newReservation, AJupdateWaitTime, AJshowRequestSuggestedTimes, submitRequest, viewRequests, getViewRequestHTMLitem, detailStatusHTML, viewRequestInfo, AJeditRequest, AJsubmitEditRequest, AJconfirmDeleteRequest, AJconfirmDeleteRequestProduction, AJconfirmRemoveRequest, AJshowReinstallRequest, printReserveItems, connectRequest, and processRequestInput -changed getting dates using date() to strftime() states.php: -reordered a few items in $actions['entry'] -removed viewdocs from $actions['entry'] -added changeLocale to noHTMLwrappers and misc section statistics.php: -modified selectStatistics - build a list of months by calling strftime instead of having them hard coded -wrapped strings to be translated with the _() function in selectStatistics, viewStatistics, getStatGraphDayConUsersData, getStatGraphConBladeUserData, and getStatGraphConVMUserData -changed getting dates using date() to strftime() userpreferences.php: wrapped strings to be translated with the _() function in userpreferences, confirmUserPrefs, and processUserPrefsInput utils.php: -modified initGlobals - added changeLocale as a mode that saves the old mode and changes mode to auth -modified checkAccess - added serverProfiles, siteMaintenance, and dashboard to and removed viewdocs from switch statement that checks for user having access to specificed portion of the site -modified maintenanceCheck - added call to setVCLLocale if site is in maintenance -modified clearPrivCache - unset $_SESSION['locales'] -modified isAvailable - added statement to where clause in query to get list of available computers to restrict selected computers to those with deleted set to 0 -modified getNavMenu - show Documentation link to all users -modified getDojoHTML - set dojo locale in each portion of switch statement that generates html -added changeLocale -added setVCLLocale -added getSelectLanguagePulldown -added getFSlocales -wrapped strings to be translated with the _() function in initGlobals, maintenanceCheck, maintenanceNotice, main, abort, getImageConnectMethodTexts, getRequestInfo, showTimeTable, prettyDatetime, minToHourMin, prettyLength, getReservationLengths, getReservationLength, getReservationExtenstion, continuationsError, and getNavMenu -changed getting dates using date() to strftime() blockallocations.js: -modified blockFormSubmitWeekly - switch to using wdays# instead of wdays[weekday name] because the php code was generating the weekday name in the selected locale's language -wrapped strings to be translated with the _() function in populateBlockStoreCB, updateBlockStatusCB, blockFormAddWeeklyTime, blockFormAddMonthlyTime, blockFormAddListSlot, blockFormConfirm, blockFormVerifyWeekly, blockFormVerifyMonthly, blockFormVerifyList, deleteBlockConfirmCB, viewBlockAllocationCB, acceptBlockConfirmCB, rejectBlockConfirmCB, viewBlockTimesCB, toggleBlockTimeCB, and updateAllocatedMachinesCB code.js: -added _() -wrapped strings to be translated with the _() function in checkNewLocalPassword requests.js: -modified showSuggestedTimesCB - recenter suggestedTimes dialog when it appears -wrapped strings to be translated with the _() function in showSuggestedTimes, showSuggestedTimesCB, selectEnding, checkValidImage, setMaxRequestLength, showResStatusPane, editReservationCB, resetEditResBtn, submitEditReservation, submitEditReservationCB, resGone, submitReinstallReservationCB, and showRDPbutton vcldojo/TimeTextBoxEnd.js -added requires for localication -added postCreate function This commit contains initial adds for: locale locale/po_files locale/pofiles/zh_CN locale/pofiles/zh_CN/vcl.po locale/po_files/ja_JP/vcl.po locale/po_files/vcl.po.template locale/po_files/.htaccess locale/zh_CN locale/zh_CN/language locale/zh_CN/LC_MESSAGES locale/zh_CN/LC_MESSAGES/vcl.mo locale/ja_JP locale/ja_JP/language locale/ja_JP/LC_MESSAGES locale/ja_JP/LC_MESSAGES/vcl.mo js/nls js/nls/zh_CN js/nls/zh_CN/messages.js js/nls/ja_JP js/nls/ja_JP/messages.js js/nls/messages.js.template js/vcldojo/nls js/vcldojo/nls/zh-cn js/vcldojo/nls/zh-cn/TimeTextBoxEnd.js js/vcldojo/nls/ja-jp js/vcldojo/nls/ja-jp/TimeTextBoxEnd.js js/vcldojo/nls/TimeTExtBoxEnd.js Added: incubator/vcl/trunk/web/js/nls/ incubator/vcl/trunk/web/js/nls/ja_JP/ incubator/vcl/trunk/web/js/nls/ja_JP/messages.js incubator/vcl/trunk/web/js/nls/messages.js.template incubator/vcl/trunk/web/js/nls/zh_CN/ incubator/vcl/trunk/web/js/nls/zh_CN/messages.js incubator/vcl/trunk/web/js/vcldojo/nls/ incubator/vcl/trunk/web/js/vcldojo/nls/TimeTextBoxEnd.js incubator/vcl/trunk/web/js/vcldojo/nls/ja-jp/ incubator/vcl/trunk/web/js/vcldojo/nls/ja-jp/TimeTextBoxEnd.js incubator/vcl/trunk/web/js/vcldojo/nls/zh-cn/ incubator/vcl/trunk/web/js/vcldojo/nls/zh-cn/TimeTextBoxEnd.js incubator/vcl/trunk/web/locale/ incubator/vcl/trunk/web/locale/ja_JP/ incubator/vcl/trunk/web/locale/ja_JP/LC_MESSAGES/ incubator/vcl/trunk/web/locale/ja_JP/LC_MESSAGES/vcl.mo (with props) incubator/vcl/trunk/web/locale/ja_JP/language incubator/vcl/trunk/web/locale/po_files/ incubator/vcl/trunk/web/locale/po_files/.htaccess incubator/vcl/trunk/web/locale/po_files/ja_JP/ incubator/vcl/trunk/web/locale/po_files/ja_JP/vcl.po incubator/vcl/trunk/web/locale/po_files/vcl.po.template incubator/vcl/trunk/web/locale/po_files/zh_CN/ incubator/vcl/trunk/web/locale/po_files/zh_CN/vcl.po incubator/vcl/trunk/web/locale/zh_CN/ incubator/vcl/trunk/web/locale/zh_CN/LC_MESSAGES/ incubator/vcl/trunk/web/locale/zh_CN/LC_MESSAGES/vcl.mo (with props) incubator/vcl/trunk/web/locale/zh_CN/language Modified: incubator/vcl/trunk/web/.ht-inc/authentication.php incubator/vcl/trunk/web/.ht-inc/blockallocations.php incubator/vcl/trunk/web/.ht-inc/conf-default.php incubator/vcl/trunk/web/.ht-inc/requests.php incubator/vcl/trunk/web/.ht-inc/states.php incubator/vcl/trunk/web/.ht-inc/statistics.php incubator/vcl/trunk/web/.ht-inc/userpreferences.php incubator/vcl/trunk/web/.ht-inc/utils.php incubator/vcl/trunk/web/index.php incubator/vcl/trunk/web/js/blockallocations.js incubator/vcl/trunk/web/js/code.js incubator/vcl/trunk/web/js/requests.js incubator/vcl/trunk/web/js/vcldojo/TimeTextBoxEnd.js incubator/vcl/trunk/web/themes/default/page.php Modified: incubator/vcl/trunk/web/.ht-inc/authentication.php URL: http://svn.apache.org/viewvc/incubator/vcl/trunk/web/.ht-inc/authentication.php?rev=1327259&r1=1327258&r2=1327259&view=diff ============================================================================== --- incubator/vcl/trunk/web/.ht-inc/authentication.php (original) +++ incubator/vcl/trunk/web/.ht-inc/authentication.php Tue Apr 17 20:01:13 2012 @@ -154,13 +154,13 @@ function selectAuth() { $HTMLheader = getHeader(0); print $HTMLheader; $printedHTMLheader = 1; - print "<H2>Welcome to the Virtual Computing Lab</H2>\n"; + print _("<H2>Welcome to the Virtual Computing Lab</H2>\n"); print "<TABLE>\n"; print "<TR>\n"; print "<TD nowrap class=rightborder>\n"; - print "Please select an authentication method to use:<br><br>\n"; + print _("Please select an authentication method to use:<br><br>\n"); if(strlen($authtype)) - print "<font color=red>Selected method failed, please try again</font><br>\n"; + print _("<font color=red>Selected method failed, please try again</font><br>\n"); foreach(array_keys($authMechs) as $mech) $methods["$mech"] = $mech; print "<FORM action=\"" . BASEURL . SCRIPT . "\" method=post name=loginform>\n"; @@ -172,12 +172,12 @@ function selectAuth() { printSelectInput("authtype", $methods, -1, 0, 0, '', 'tabindex=1'); print "<br><INPUT type=hidden name=mode value=selectauth>\n"; print "<input type=checkbox id=remsel name=remsel value=1 tabindex=2>\n"; - print "Remember my selection<br>\n"; - print "<INPUT type=submit value=\"Proceed to Login\" tabindex=3 name=userid>\n"; + print _("<label for=remsel>Remember my selection</label><br>\n"); + print _("<INPUT type=submit value=\"Proceed to Login\" tabindex=3 name=userid>\n"); print "</FORM>\n"; print "</TD>\n"; print "<TD>\n"; - print "<h3>Explanation of authentication methods:</h3>\n"; + print _("<h3>Explanation of authentication methods:</h3>\n"); print "<UL id=expauthul>\n"; foreach($authMechs as $mech) print "<LI>{$mech['help']}</LI>\n"; @@ -229,7 +229,7 @@ function printLoginPage($servertimeout=0 if(isset($_GET['userid'])) unset($_GET['userid']); $userid = processInputVar('userid', ARG_STRING, ''); - if($userid == 'Proceed to Login') + if($userid == _('Proceed to Login')) $userid = ''; if(! array_key_exists($authtype, $authMechs)) { // FIXME - hackerish @@ -241,7 +241,7 @@ function printLoginPage($servertimeout=0 $userid = htmlspecialchars($userid); $extrafailedmsg = ''; if($servertimeout) - $extrafailedmsg = " (unable to connect to authentication server)"; + $extrafailedmsg = _(" (unable to connect to authentication server)"); /*if($skin == 'example1') { $useridLabel = 'Pirateid'; $passLabel = 'Passphrase'; @@ -279,15 +279,15 @@ function printLoginPage($servertimeout=0 return; } else {*/ - $useridLabel = 'Userid'; - $passLabel = 'Password'; - $text1 = "Login with $authtype"; + $useridLabel = _('Userid'); + $passLabel = _('Password'); + $text1 = _("Login with ") . "$authtype"; $text2 = ""; #} print "<H2 style=\"display: block\">$text1</H2>\n"; print "<FORM action=\"" . BASEURL . SCRIPT . "\" method=post name=loginform>\n"; if(strlen($userid)) - print "<font color=red>Login failed $extrafailedmsg</font>\n"; + print _("<font color=red>Login failed ") . "$extrafailedmsg</font>\n"; print "<TABLE>\n"; print " <TR>\n"; print " <TH align=right>$useridLabel:</TH>\n"; @@ -298,7 +298,7 @@ function printLoginPage($servertimeout=0 print " <TD><INPUT type=password name=password></TD>\n"; print " </TR>\n"; print " <TR>\n"; - print " <TD colspan=2 align=right><INPUT type=submit value=Login></TD>\n"; + print _(" <TD colspan=2 align=right><INPUT type=submit value=Login></TD>\n"); print " </TR>\n"; print "</TABLE>\n"; $cdata = array('authtype' => $authtype); Modified: incubator/vcl/trunk/web/.ht-inc/blockallocations.php URL: http://svn.apache.org/viewvc/incubator/vcl/trunk/web/.ht-inc/blockallocations.php?rev=1327259&r1=1327258&r2=1327259&view=diff ============================================================================== --- incubator/vcl/trunk/web/.ht-inc/blockallocations.php (original) +++ incubator/vcl/trunk/web/.ht-inc/blockallocations.php Tue Apr 17 20:01:13 2012 @@ -33,10 +33,12 @@ function blockAllocations() { global $user; if(! checkUserHasPerm('Manage Block Allocations (global)') && ! checkUserHasPerm('Manage Block Allocations (affiliation only)')) { - print "<H2>Block Allocations</H2>\n"; - print "Block Allocations are a way to have a set of machines preloaded with a particular environment at specified times and made available to a specific group of users. This is very useful for classroom use and for workshops. They can be made available on a repeating schedule such as when a course meets each week. Block Allocations only allocate machines for the group of users - they do not create the actual, end user reservations for the machines. All users still must log in to the VCL web site and make their own reservations DURING the period a block allocation is active. The forms here provide a way for you to submit a request for a Block Allocation for review by a sysadmin. If you just need to use a machine through VCL, use the New Reservation page for that.<br><br>Please submit Block Allocation requests at least one full business day in advance to allow time for them to be approved.<br><br>\n"; + print "<H2>" . _("Block Allocations") . "</H2>\n"; + print _("Block Allocations are a way to have a set of machines preloaded with a particular environment at specified times and made available to a specific group of users. This is very useful for classroom use and for workshops. They can be made available on a repeating schedule such as when a course meets each week. Block Allocations only allocate machines for the group of users - they do not create the actual, end user reservations for the machines. All users still must log in to the VCL web site and make their own reservations DURING the period a block allocation is active. The forms here provide a way for you to submit a request for a Block Allocation for review by a sysadmin. If you just need to use a machine through VCL, use the New Reservation page for that."); + print "<br><br>"; + print _("Please submit Block Allocation requests at least one full business day in advance to allow time for them to be approved.") . "<br><br>\n"; print "<button dojoType=\"dijit.form.Button\" type=\"button\">\n"; - print " Request New Block Allocation\n"; + print _( "Request New Block Allocation") . "\n"; print " <script type=\"dojo/method\" event=\"onClick\">\n"; print " location.href = '" . BASEURL . SCRIPT . "?mode=requestBlockAllocation';\n"; print " </script>\n"; @@ -75,9 +77,9 @@ function blockAllocations() { while($row = mysql_fetch_assoc($qh)) $blocks[$row['id']] = $row['name']; print "<hr>\n"; - print "<h2>Your Active Block Allocations</h2>\n"; - print "You are currently a member of the following Block Allocations.<br>\n"; - print "Click an item to view its current status.<br>\n"; + print "<h2>" . _("Your Active Block Allocations") . "</h2>\n"; + print _("You are currently a member of the following Block Allocations.") . "<br>\n"; + print _("Click an item to view its current status.") . "<br>\n"; foreach($blocks as $id => $name) { $cont = addContinuationsEntry('viewBlockStatus', array('id' => $id)); print "<a href=\"" . BASEURL . SCRIPT . "?continuation=$cont\">"; @@ -106,9 +108,9 @@ function blockAllocationForm() { print "<h2>Edit Block Allocation</h2>\n"; } elseif($mode == 'requestBlockAllocation') { - print "<h2>Request New Block Allocation</h2>\n"; - print "Complete the following form to request a new block allocation. Your request<br>\n"; - print "will need to be approved by a VCL admin before it is created.<br><br>\n"; + print "<h2>" . _("Request New Block Allocation") . "</h2>\n"; + print _("Complete the following form to request a new block allocation. Your request will need to be approved by a VCL admin before it is created."); + print "<br><br>\n"; } $resources = getUserResources(array("imageAdmin", "imageCheckOut")); $resources["image"] = removeNoCheckout($resources["image"]); @@ -137,7 +139,7 @@ function blockAllocationForm() { print " </tr>\n"; } print " <tr>\n"; - print " <th align=right>Environment:</th>\n"; + print " <th align=right>" . _("Environment") . ":</th>\n"; print " <td>\n"; if(USEFILTERINGSELECT && count($resources['image']) < FILTERINGSELECTTHRESHOLD) { print " <select dojoType=\"dijit.form.FilteringSelect\" id=imagesel style=\"width: 300px\" "; @@ -155,7 +157,7 @@ function blockAllocationForm() { print " </td>\n"; print " </tr>\n"; print " <tr>\n"; - print " <th align=right>User group:</th>\n"; + print " <th align=right>" . _("User group") . ":</th>\n"; print " <td>\n"; $groups = getUserGroups(0, $user['affiliationid']); if(USEFILTERINGSELECT && count($groups) < FILTERINGSELECTTHRESHOLD) { @@ -166,7 +168,7 @@ function blockAllocationForm() { print " <select id=groupsel>"; $extragroups = array(); if($mode == 'requestBlockAllocation') - print " <option value=\"0\">(group not listed)</option>\n"; + print " <option value=\"0\">(" . _("group not listed") . ")</option>\n"; if(! empty($data['usergroupid']) && ! array_key_exists($data['usergroupid'], $groups)) { $groups[$data['usergroupid']] = array('name' => getUserGroupName($data['usergroupid'], 1)); $extragroups[$data['usergroupid']] = array('name' => getUserGroupName($data['usergroupid'], 1)); @@ -185,7 +187,7 @@ function blockAllocationForm() { print " </td>\n"; print " </tr>\n"; print " <tr>\n"; - print " <th align=right>Number of seats:</th>\n"; + print " <th align=right>" . _("Number of seats") . ":</th>\n"; print " <td>\n"; print " <input dojoType=\"dijit.form.NumberSpinner\" value=\"{$data['seats']}\" "; print "smallDelta=1 largeDelta=5 constraints=\"{min:" . MIN_BLOCK_MACHINES . ", max:"; @@ -195,14 +197,14 @@ function blockAllocationForm() { print " </tr>\n"; print "</table>\n"; - print "Specify dates/times by:\n"; + print _("Specify dates/times by:\n"); print "<img src=\"images/helpicon.png\" id=\"repeattypehelp\" /><br>\n"; print "<input type=\"radio\" name=\"datetime\" id=\"weeklyradio\" onClick=\"blockFormChangeTab('weekly');\" {$data['type']['weekly']} />\n"; - print "<label for=\"weeklyradio\">Repeating Weekly</label><br>\n"; + print "<label for=\"weeklyradio\">" . _("Repeating Weekly") . "</label><br>\n"; print "<input type=\"radio\" name=\"datetime\" id=\"monthlyradio\" onClick=\"blockFormChangeTab('monthly');\" {$data['type']['monthly']} />\n"; - print "<label for=\"monthlyradio\">Repeating Monthly</label><br>\n"; + print "<label for=\"monthlyradio\">" . _("Repeating Monthly") . "</label><br>\n"; print "<input type=\"radio\" name=\"datetime\" id=\"listradio\" onClick=\"blockFormChangeTab('list');\" {$data['type']['list']} />\n"; - print "<label for=\"listradio\">List of Dates/Times</label><br><br>\n"; + print "<label for=\"listradio\">" . _("List of Dates/Times") . "</label><br><br>\n"; print "<div style=\"border: 1px solid; margin-right: 8px;\">\n"; print "<div id=\"timeTypeContainer\" dojoType=\"dijit.layout.StackContainer\"\n"; @@ -212,7 +214,7 @@ function blockAllocationForm() { print "<div id=\"weeklytab\" dojoType=\"dijit.layout.ContentPane\" title=\"Repeating Weekly\" {$data['type2']['weekly']}>\n"; print "<table summary=\"\">\n"; print " <tr>\n"; - print " <th align=right>First Date of Usage:</th>\n"; + print " <th align=right>" . _("First Date of Usage") . ":</th>\n"; print " <td>\n"; print " <input type=\"text\" dojoType=\"dijit.form.DateTextBox\" "; print "required=\"true\" id=\"wkfirstdate\" value=\"{$data['swdate']}\" />\n"; @@ -220,7 +222,7 @@ function blockAllocationForm() { print " </td>\n"; print " </tr>\n"; print " <tr>\n"; - print " <th align=right>Last Date of Usage:</th>\n"; + print " <th align=right>" . _("Last Date of Usage") . ":</th>\n"; print " <td>\n"; print " <input type=\"text\" dojoType=\"dijit.form.DateTextBox\" "; print "required=\"true\" id=\"wklastdate\" value=\"{$data['ewdate']}\" />\n"; @@ -230,26 +232,26 @@ function blockAllocationForm() { print "</table>\n"; print "<table summary=\"\">\n"; print "<tr>\n"; - print "<th>Days <img src=\"images/helpicon.png\" id=\"wkdayshelp\" /></th>\n"; - print "<th>Times <img src=\"images/helpicon.png\" id=\"wktimeshelp\" /></th>\n"; + print "<th>" . _("Days") . " <img src=\"images/helpicon.png\" id=\"wkdayshelp\" /></th>\n"; + print "<th>" . _("Times") . " <img src=\"images/helpicon.png\" id=\"wktimeshelp\" /></th>\n"; print "</tr>\n"; print "<tr>\n"; print "<td valign=top>\n"; - foreach($days as $day) { - print " <INPUT type=checkbox id=\"wdays$day\" value=\"$day\" {$data['wdayschecked'][$day]}>\n"; - print " <label for=\"wdays$day\">$day</label><br>\n"; + foreach($days as $id => $day) { + print " <INPUT type=checkbox id=\"wdays$id\" value=\"$day\" {$data['wdayschecked'][$day]}>\n"; + print " <label for=\"wdays$day\">" . _($day) . "</label><br>\n"; } print "</td>\n"; print "<td>\n"; - print "Start:<div type=\"text\" id=\"weeklyaddstart\" dojoType=\"dijit.form.TimeTextBox\" "; + print _("Start") . ":<div type=\"text\" id=\"weeklyaddstart\" dojoType=\"dijit.form.TimeTextBox\" "; print "required=\"true\" onChange=\"blockFormWeeklyAddBtnCheck(1);\" style=\"width: 78px\"></div>\n"; - print "End:<div type=\"text\" id=\"weeklyaddend\" dojoType=\"vcldojo.TimeTextBoxEnd\" "; + print _("End") . ":<div type=\"text\" id=\"weeklyaddend\" dojoType=\"vcldojo.TimeTextBoxEnd\" "; print "required=\"true\" onChange=\"blockFormWeeklyAddBtnCheck(0);\" startid=\"weeklyaddstart\" "; print "style=\"width: 78px\"></div>\n"; print "<button dojoType=\"dijit.form.Button\" type=\"button\" disabled=\"true\" "; print "id=\"requestBlockWeeklyAddBtn\">\n"; - print " Add\n"; + print _( "Add") . "\n"; print " <script type=\"dojo/method\" event=\"onClick\">\n"; print " blockFormAddWeeklyTime();\n"; print " </script>\n"; @@ -260,9 +262,11 @@ function blockAllocationForm() { print "store=\"requestBlockAddWeeklyStore\" style=\"width: 330px; height: 120px;\">\n"; print "<thead>\n"; print "<tr>\n"; - print "<th field=\"start\" width=\"102px\" formatter=\"gridTimePrimary\">Start</th>\n"; - print "<th field=\"end\" width=\"102px\" formatter=\"timeFromTextBox\">End</th>\n"; - print "<th field=\"remove\" width=\"80px\">Remove</th>\n"; + print "<th field=\"start\" width=\"102px\" formatter=\"gridTimePrimary\">"; + print _("Start") . "</th>\n"; + print "<th field=\"end\" width=\"102px\" formatter=\"timeFromTextBox\">"; + print _("End") . "</th>\n"; + print "<th field=\"remove\" width=\"80px\">" . _("Remove") . "</th>\n"; print "</tr>\n"; print "</thead>\n"; print "</table>\n"; @@ -276,7 +280,7 @@ function blockAllocationForm() { print "<div id=\"monthlytab\" dojoType=\"dijit.layout.ContentPane\" title=\"Repeating Monthly\" {$data['type2']['monthly']}>\n"; print "<table summary=\"\">\n"; print " <tr>\n"; - print " <th align=right>First Date of Usage:</th>\n"; + print " <th align=right>" . _("First Date of Usage") . ":</th>\n"; print " <td>\n"; print " <input type=\"text\" id=\"mnfirstdate\" dojoType=\"dijit.form.DateTextBox\" "; print "required=\"true\" value=\"{$data['smdate']}\"/>\n"; @@ -284,7 +288,7 @@ function blockAllocationForm() { print " </td>\n"; print " </tr>\n"; print " <tr>\n"; - print " <th align=right>Last Date of Usage:</th>\n"; + print " <th align=right>" . _("Last Date of Usage") . ":</th>\n"; print " <td>\n"; print " <input type=\"text\" id=\"mnlastdate\" dojoType=\"dijit.form.DateTextBox\" "; print "required=\"true\" value=\"{$data['emdate']}\" />\n"; @@ -292,30 +296,30 @@ function blockAllocationForm() { print " </td>\n"; print " </tr>\n"; print "</table>\n"; - $weeknumArr = array(1 => "1st", - 2 => "2nd", - 3 => "3rd", - 4 => "4th", - 5 => "5th"); - $dayArr = array(1 => "Sunday", - 2 => "Monday", - 3 => "Tuesday", - 4 => "Wednesday", - 5 => "Thursday", - 6 => "Friday", - 7 => "Saturday"); - print "Repeat on the "; + $weeknumArr = array(1 => _("1st"), + 2 => _("2nd"), + 3 => _("3rd"), + 4 => _("4th"), + 5 => _("5th")); + $dayArr = array(1 => _("Sunday"), + 2 => _("Monday"), + 3 => _("Tuesday"), + 4 => _("Wednesday"), + 5 => _("Thursday"), + 6 => _("Friday"), + 7 => _("Saturday")); + print _("Repeat on the "); printSelectInput('weeknum', $weeknumArr, $data['mnweeknumid'], 0, 0, 'mnweeknum'); printSelectInput('day', $dayArr, $data['mndayid'], 0, 0, 'mnday'); - print " of every month<br><br>\n"; - print "Start:<div type=\"text\" id=\"monthlyaddstart\" dojoType=\"dijit.form.TimeTextBox\" "; + print _(" of every month") . "<br><br>\n"; + print _("Start") . ":<div type=\"text\" id=\"monthlyaddstart\" dojoType=\"dijit.form.TimeTextBox\" "; print "required=\"true\" onChange=\"blockFormMonthlyAddBtnCheck(1)\" style=\"width: 78px\"></div>\n"; - print "End:<div type=\"text\" id=\"monthlyaddend\" dojoType=\"vcldojo.TimeTextBoxEnd\" "; + print _("End") . ":<div type=\"text\" id=\"monthlyaddend\" dojoType=\"vcldojo.TimeTextBoxEnd\" "; print "required=\"true\" onChange=\"blockFormMonthlyAddBtnCheck(0)\" startid=\"monthlyaddstart\" "; print "style=\"width: 78px\"></div>\n"; print "<button dojoType=\"dijit.form.Button\" type=\"button\" disabled=\"true\" "; print "id=\"requestBlockMonthlyAddBtn\">\n"; - print " Add\n"; + print _( "Add") . "\n"; print " <script type=\"dojo/method\" event=\"onClick\">\n"; print " blockFormAddMonthlyTime();\n"; print " </script>\n"; @@ -327,9 +331,11 @@ function blockAllocationForm() { print "store=\"requestBlockAddMonthlyStore\" style=\"width: 330px; height: 120px;\">\n"; print "<thead>\n"; print "<tr>\n"; - print "<th field=\"start\" width=\"102px\" formatter=\"gridTimePrimary\">Start</th>\n"; - print "<th field=\"end\" width=\"102px\" formatter=\"timeFromTextBox\">End</th>\n"; - print "<th field=\"remove\" width=\"80px\">Remove</th>\n"; + print "<th field=\"start\" width=\"102px\" formatter=\"gridTimePrimary\">"; + print _("Start") . "</th>\n"; + print "<th field=\"end\" width=\"102px\" formatter=\"timeFromTextBox\">"; + print _("End") . "</th>\n"; + print "<th field=\"remove\" width=\"80px\">" . _("Remove") . "</th>\n"; print "</tr>\n"; print "</thead>\n"; print "</table>\n"; @@ -337,15 +343,15 @@ function blockAllocationForm() { # list of times print "<div id=\"listtab\" dojoType=\"dijit.layout.ContentPane\" title=\"List of Times\" {$data['type2']['list']}>\n"; - print "Date:<div type=\"text\" id=\"listadddate\" dojoType=\"dijit.form.DateTextBox\" "; + print _("Date") . ":<div type=\"text\" id=\"listadddate\" dojoType=\"dijit.form.DateTextBox\" "; print "required=\"true\" onChange=\"blockFormListAddBtnCheck\" style=\"width: 95px\"></div>\n"; - print "Start:<input type=\"text\" id=\"listaddstart\" dojoType=\"dijit.form.TimeTextBox\" "; + print _("Start") . ":<input type=\"text\" id=\"listaddstart\" dojoType=\"dijit.form.TimeTextBox\" "; print "required=\"true\" onChange=\"blockFormListAddBtnCheck\" />\n"; - print "End:<input type=\"text\" id=\"listaddend\" dojoType=\"vcldojo.TimeTextBoxEnd\" "; + print _("End") . ":<input type=\"text\" id=\"listaddend\" dojoType=\"vcldojo.TimeTextBoxEnd\" "; print "required=\"true\" onChange=\"blockFormListAddBtnCheck\" startid=\"listaddstart\" />\n"; print "<button dojoType=\"dijit.form.Button\" type=\"button\" disabled=\"true\" "; print "id=\"requestBlockListAddBtn\">\n"; - print " Add\n"; + print _( "Add") . "\n"; print " <script type=\"dojo/method\" event=\"onClick\">\n"; print " blockFormAddListSlot();\n"; print " </script>\n"; @@ -358,10 +364,13 @@ function blockAllocationForm() { print "store=\"requestBlockAddListStore\" style=\"width: 465px; height: 200px;\">\n"; print "<thead>\n"; print "<tr>\n"; - print "<th field=\"date1\" width=\"115px\" formatter=\"gridDateTimePrimary\">Date</th>\n"; - print "<th field=\"start\" width=\"115px\" formatter=\"timeFromTextBox\">Start</th>\n"; - print "<th field=\"end\" width=\"108px\" formatter=\"timeFromTextBox\">End</th>\n"; - print "<th field=\"remove\" width=\"80px\">Remove</th>\n"; + print "<th field=\"date1\" width=\"115px\" formatter=\"gridDateTimePrimary\">"; + print _("Date") . "</th>\n"; + print "<th field=\"start\" width=\"115px\" formatter=\"timeFromTextBox\">"; + print _("Start") . "</th>\n"; + print "<th field=\"end\" width=\"108px\" formatter=\"timeFromTextBox\">"; + print _("End") . "</th>\n"; + print "<th field=\"remove\" width=\"80px\">" . _("Remove") . "</th>\n"; print "</tr>\n"; print "</thead>\n"; print "</table>\n"; @@ -372,7 +381,7 @@ function blockAllocationForm() { print "</div><br>\n"; if($mode == 'requestBlockAllocation') { - print "<strong><big>Additional comments:</big></strong>\n"; + print "<strong><big>" . _("Additional comments") . ":</big></strong>\n"; print "<img src=\"images/helpicon.png\" id=\"commenthelp\" /><br>\n"; print "<textarea id=\"comments\" dojoType=\"dijit.form.Textarea\" style=\"width: 400px;\">\n"; print "</textarea><br><br>\n"; @@ -381,7 +390,7 @@ function blockAllocationForm() { print "<button dojoType=\"dijit.form.Button\" type=\"button\" "; print "id=\"requestBlockSubmitBtn\">\n"; if($mode == 'requestBlockAllocation') { - $btntxt = "Submit Block Allocation Request\n"; + $btntxt = _("Submit Block Allocation Request\n"); $arg = 'request'; } elseif($mode == 'newBlockAllocation') { @@ -400,10 +409,16 @@ function blockAllocationForm() { $cont = addContinuationsEntry('AJvalidateUserid'); print "<input type=\"hidden\" id=\"valuseridcont\" value=\"$cont\">\n"; - print "<div id=\"confirmDialog\" dojoType=\"dijit.Dialog\" title=\"Confirm Block Allocation\">\n"; - print "<h2>Confirm Block Allocation</h2>\n"; - print "Please confirm the following values and then<br>click <strong>$btntxt</strong><br><br>\n"; - print "<table summary=\"\">\n"; + print "<div id=\"confirmDialog\" dojoType=\"dijit.Dialog\" title=\""; + print _("Confirm Block Allocation") . "\">\n"; + print "<h2>" . _("Confirm Block Allocation") . "</h2>\n"; + if($mode == 'requestBlockAllocation') + print _("Please confirm the following values and then click <strong>Submit Block Allocation Request</strong>"); + else { + print "Please confirm the following values and then<br>click <strong>"; + print "$btntxt</strong>"; + } + print "<br><br>\n<table summary=\"\">\n"; print " <tr>\n"; print " <th align=\"right\"><span id=\"confnametitle\"></span></th>\n"; print " <td><span id=\"confname\"></span></td>\n"; @@ -413,19 +428,19 @@ function blockAllocationForm() { print " <td><span id=\"confowner\"></span></td>\n"; print " </tr>\n"; print " <tr>\n"; - print " <th align=\"right\">Environment:</th>\n"; + print " <th align=\"right\">" . _("Environment") . ":</th>\n"; print " <td><span id=\"confimage\"></span></td>\n"; print " </tr>\n"; print " <tr>\n"; - print " <th align=\"right\">User Group:</th>\n"; + print " <th align=\"right\">" . _("User group") . ":</th>\n"; print " <td><span id=\"confgroup\"></span></td>\n"; print " </tr>\n"; print " <tr>\n"; - print " <th align=\"right\">Seats:</th>\n"; + print " <th align=\"right\">" . _("Seats") . ":</th>\n"; print " <td><span id=\"confseats\"></span></td>\n"; print " </tr>\n"; print " <tr>\n"; - print " <th align=\"right\">Repeating:</th>\n"; + print " <th align=\"right\">" . _("Repeating") . ":</th>\n"; print " <td><span id=\"confrepeat\"></span></td>\n"; print " </tr>\n"; print " <tr valign=\"top\">\n"; @@ -445,7 +460,7 @@ function blockAllocationForm() { print " <td><span id=\"confvalue4\"></span></td>\n"; print " </tr>\n"; print "</table>\n"; - print "<span id=\"commentsnote\" class=\"hidden\">Your additional comments will be submitted.<br><br></span>\n"; + print "<span id=\"commentsnote\" class=\"hidden\">" . _("Your additional comments will be submitted.") . "<br><br></span>\n"; $data = array('extragroups' => $extragroups); if($mode == 'newBlockAllocation') $data['method'] = 'new'; @@ -464,7 +479,7 @@ function blockAllocationForm() { print " </script>\n"; print "</button>\n"; print "<button dojoType=\"dijit.form.Button\" type=\"button\">\n"; - print " Cancel\n"; + print _( "Cancel") . "\n"; print " <script type=\"dojo/method\" event=\"onClick\">\n"; print " clearHideConfirmForm();\n"; print " </script>\n"; @@ -472,81 +487,79 @@ function blockAllocationForm() { print "</div>\n"; # confirm dialog # tooltips - print <<<END -<div dojoType="dijit.Tooltip" connectId="seathelp"> -This is the number of environments that<br> -will be loaded for the Block Allocation. -</div> -<div dojoType="dijit.Tooltip" connectId="grouphelp"> -User in this user group will be able to make reservations<br> -for the computers set aside for this block allocation.<br> -If you do not see an applicable user group listed, please<br> -select "<font color="blue">(group not listed)</font>" and describe the group you need<br> -in the <strong>Additional Comments</strong> section at the bottom of<br> -the page. If this is for a class, make sure to list the course<br> -and section number. -</div> -<div dojoType="dijit.Tooltip" connectId="admingrouphelp"> -Users in this user group can modify this<br> -block allocation. Select None to keep<br> -anyone else from being able to modify it. -</div> -<div dojoType="dijit.Tooltip" connectId="repeattypehelp"> -For repeating block allocations, there are three ways you can enter the dates and times:<br> -<ul> -<li>Repeating Weekly - Use this if the block allocation needs to occur every week.<br> -You can make it repeat on a single day each week or on multiple days. The time(s)<br> -that it occurs will be the same on all days. You can list as many times as needed.</li> -<li>Repeating Monthly - Use this if the block allocation needs to occur on a certain<br> -day of the month (i.e. 2nd Tuesday each month). You can list as many times as<br> -needed for that day of the month.</li> -<li>List of Dates/Times - Use this to specify any other cases, including single<br> -events. You can specify as many date/time combinations as needed.</li> -</ul> -</div> -<div dojoType="dijit.Tooltip" connectId="wkfdhelp"> -This is the first date the block allocation will be used. -</div> -<div dojoType="dijit.Tooltip" connectId="wkldhelp"> -This is the last date the block allocation will be used. -</div> -<div dojoType="dijit.Tooltip" connectId="wkdayshelp"> -Select the checkbox for each of the days you<br> -would like the block allocation to occur. For<br> -example, check Monday, Wednesday, and Friday<br> -for a class that meets on those days. -</div> -<div dojoType="dijit.Tooltip" connectId="wktimeshelp"> -Here you specify the start and end times of the<br> -block allocation. The times will occur on each<br> -of the selected days. You might specify more than<br> -one start/end combination if you had multiple<br> -sections that met on the same day. -</div> -<div dojoType="dijit.Tooltip" connectId="mnfdhelp"> -This is the first date the block allocation will be used. -</div> -<div dojoType="dijit.Tooltip" connectId="mnldhelp"> -This is the last date the block allocation will be used. -</div> -<div dojoType="dijit.Tooltip" connectId="mntimeshelp"> -Here you specify the start and end times of the<br> -block allocation. You might specify more than<br> -one start/end combination if you had multiple<br> -sections that met on the same day. -</div> -<div dojoType="dijit.Tooltip" connectId="listhelp"> -Specify individual dates and times during<br> -which the block allocation will occur. -</div> -<div dojoType="dijit.Tooltip" connectId="commenthelp"> -Enter any additional information about this block allocation.<br> -< and > are not allowed.<br> -If you selected "<font color="blue">(group not listed)</font>" as the User group, make sure<br> -to clearly describe the requirements of a new user group that<br> -will be created for this block allocation. -</div> -END; + print "<div dojoType=\"dijit.Tooltip\" connectId=\"seathelp\">\n"; + print _("This is the number of environments that<br>\n"); + print _("will be loaded for the Block Allocation.\n"); + print "</div>\n"; + print "<div dojoType=\"dijit.Tooltip\" connectId=\"grouphelp\">\n"; + print _("User in this user group will be able to make reservations<br>\n"); + print _("for the computers set aside for this block allocation.<br>\n"); + print _("If you do not see an applicable user group listed, please<br>\n"); + print _("select \"<font color=\"blue\">(group not listed)</font>\" and describe the group you need<br>\n"); + print _("in the <strong>Additional Comments</strong> section at the bottom of<br>\n"); + print _("the page. If this is for a class, make sure to list the course<br>\n"); + print _("and section number.\n"); + print "</div>\n"; + print "<div dojoType=\"dijit.Tooltip\" connectId=\"admingrouphelp\">\n"; + print _("Users in this user group can modify this<br>\n"); + print _("block allocation. Select None to keep<br>\n"); + print _("anyone else from being able to modify it.\n"); + print "</div>\n"; + print "<div dojoType=\"dijit.Tooltip\" connectId=\"repeattypehelp\">\n"; + print _("For repeating block allocations, there are three ways you can enter the dates and times:<br>\n"); + print "<ul>\n"; + print _("<li>Repeating Weekly - Use this if the block allocation needs to occur every week.<br>\n"); + print _("You can make it repeat on a single day each week or on multiple days. The time(s)<br>\n"); + print _("that it occurs will be the same on all days. You can list as many times as needed.</li>\n"); + print _("<li>Repeating Monthly - Use this if the block allocation needs to occur on a certain<br>\n"); + print _("day of the month (i.e. 2nd Tuesday each month). You can list as many times as<br>\n"); + print _("needed for that day of the month.</li>\n"); + print _("<li>List of Dates/Times - Use this to specify any other cases, including single<br>\n"); + print _("events. You can specify as many date/time combinations as needed.</li>\n"); + print "</ul>\n"; + print "</div>\n"; + print "<div dojoType=\"dijit.Tooltip\" connectId=\"wkfdhelp\">\n"; + print _("This is the first date the block allocation will be used.\n"); + print "</div>\n"; + print "<div dojoType=\"dijit.Tooltip\" connectId=\"wkldhelp\">\n"; + print _("This is the last date the block allocation will be used.\n"); + print "</div>\n"; + print "<div dojoType=\"dijit.Tooltip\" connectId=\"wkdayshelp\">\n"; + print _("Select the checkbox for each of the days you<br>\n"); + print _("would like the block allocation to occur. For<br>\n"); + print _("example, check Monday, Wednesday, and Friday<br>\n"); + print _("for a class that meets on those days.\n"); + print "</div>\n"; + print "<div dojoType=\"dijit.Tooltip\" connectId=\"wktimeshelp\">\n"; + print _("Here you specify the start and end times of the<br>\n"); + print _("block allocation. The times will occur on each<br>\n"); + print _("of the selected days. You might specify more than<br>\n"); + print _("one start/end combination if you had multiple<br>\n"); + print _("sections that met on the same day.\n"); + print "</div>\n"; + print "<div dojoType=\"dijit.Tooltip\" connectId=\"mnfdhelp\">\n"; + print _("This is the first date the block allocation will be used.\n"); + print "</div>\n"; + print "<div dojoType=\"dijit.Tooltip\" connectId=\"mnldhelp\">\n"; + print _("This is the last date the block allocation will be used.\n"); + print "</div>\n"; + print "<div dojoType=\"dijit.Tooltip\" connectId=\"mntimeshelp\">\n"; + print _("Here you specify the start and end times of the<br>\n"); + print _("block allocation. You might specify more than<br>\n"); + print _("one start/end combination if you had multiple<br>\n"); + print _("sections that met on the same day.\n"); + print "</div>\n"; + print "<div dojoType=\"dijit.Tooltip\" connectId=\"listhelp\">\n"; + print _("Specify individual dates and times during<br>\n"); + print _("which the block allocation will occur.\n"); + print "</div>\n"; + print "<div dojoType=\"dijit.Tooltip\" connectId=\"commenthelp\">\n"; + print _("Enter any additional information about this block allocation.<br>\n"); + print _("< and > are not allowed.<br>\n"); + print _("If you selected \"<font color=\"blue\">(group not listed)</font>\" as the User group, make sure<br>\n"); + print _("to clearly describe the requirements of a new user group that<br>\n"); + print _("will be created for this block allocation.\n"); + print "</div>\n"; } //////////////////////////////////////////////////////////////////////////////// @@ -657,7 +670,7 @@ function AJblockAllocationSubmit() { . "status, " . "comments) " . "VALUES " - . "('(awaiting approval)', " + . "('(" . _("awaiting approval") . ")', " . "{$data['imageid']}, " . "{$data['seats']}, " . "{$data['groupid']}, " @@ -802,18 +815,18 @@ function AJblockAllocationSubmit() { } if($method == 'request') { print "clearHideConfirmForm();"; - $txt = "<h2>Request New Block Allocation</h2>"; - $txt .= "Your request for a Block Allocation has been submitted for<br>" - . "approval. "; + $txt = "<h2>" . _("Request New Block Allocation") . "</h2>"; + $txt .= _("Your request for a Block Allocation has been submitted for<br>") + . _("approval. "); if(! empty($user['email'])) { - $txt .= "You should be notified within a few business days<br>" - . "of its acceptance or rejection."; + $txt .= _("You should be notified within a few business days<br>") + . _("of its acceptance or rejection."); } else { - $txt .= "<br><br><font color=\"red\"><b>Note:</b> You do not have an " - . "email address registered<br>with VCL. Therefore, you will " - . "not receive automatic<br>notification when this block " - . "allocation is accepted<br>or rejected.</font>"; + $txt .= _("<br><br><font color=\"red\"><b>Note:</b> You do not have an ") + . _("email address registered<br>with VCL. Therefore, you will ") + . _("not receive automatic<br>notification when this block ") + . _("allocation is accepted<br>or rejected.</font>"); } print "dojo.byId('content').innerHTML = '$txt';"; print "scroll(0, 0);"; @@ -1123,9 +1136,11 @@ function getCurrentBlockHTML($listonly=0 . "LEFT JOIN affiliation a ON (g.affiliationid = a.id) " . "LEFT JOIN user u ON (b.ownerid = u.id) " . "LEFT JOIN affiliation ua ON (u.affiliationid = ua.id) " - . "WHERE b.ownerid = {$user['id']} AND " - . "b.imageid = i.id AND " - . "b.status = 'accepted' " + . "WHERE b.imageid = i.id AND "; + if(! checkUserHasPerm('Manage Block Allocations (global)') && + checkUserHasPerm('Manage Block Allocations (affiliation only)')) + $query .= "u.affiliationid = {$user['affiliationid']} AND "; + $query .= "b.status = 'accepted' " . "ORDER BY b.name"; $allblockids = array(); $qh = doQuery($query, 101); @@ -1438,16 +1453,14 @@ function getUserCurrentBlockHTML($liston . "b.repeating AS available, " . "b.status " . "FROM image i, " - . "usergroup g, " - . "affiliation a, " . "blockRequest b " . "LEFT JOIN user u ON (b.ownerid = u.id) " . "LEFT JOIN affiliation ua ON (u.affiliationid = ua.id) " + . "LEFT JOIN usergroup g ON (b.groupid = g.id) " + . "LEFT JOIN affiliation a ON (g.affiliationid = a.id) " . "WHERE b.ownerid = {$user['id']} AND " . "b.imageid = i.id AND " - . "b.status IN ('accepted', 'requested') AND " - . "b.groupid = g.id AND " - . "g.affiliationid = a.id " + . "b.status IN ('accepted', 'requested') " . "ORDER BY b.name"; $qh = doQuery($query, 101); $blocks = array(); @@ -1457,6 +1470,8 @@ function getUserCurrentBlockHTML($liston return; foreach($blocks as $id => $request) { + if($blocks[$id]['group'] == '') + $blocks[$id]['group'] = _('(unspecified)'); if($request['available'] == 'weekly') { $query = "SELECT DATE_FORMAT(start, '%m/%d/%y') AS swdate, " . "DATE_FORMAT(end, '%m/%d/%y')AS ewdate, " @@ -1559,22 +1574,22 @@ function getUserCurrentBlockHTML($liston } } $rt = ''; - $rt .= "<h2>Manage Block Allocations</h2>\n"; + $rt .= "<h2>" . _("Manage Block Allocations") . "</h2>\n"; $rt .= "<div id=\"blocklist\">\n"; $rt .= "<table summary=\"lists current block allocations\">\n"; $rt .= " <TR align=center>\n"; $rt .= " <TD colspan=2></TD>\n"; - $rt .= " <TH>Name</TH>\n"; - $rt .= " <TH>Environment</TH>\n"; - $rt .= " <TH>Reserved<br>Machines</TH>\n"; - $rt .= " <TH>Reserved<br>For</TH>\n"; - $rt .= " <TH>Repeating</TH>\n"; + $rt .= " <TH>" . _("Name") . "</TH>\n"; + $rt .= " <TH>" . _("Environment") . "</TH>\n"; + $rt .= " <TH>" . _("Reserved<br>Machines") . "</TH>\n"; + $rt .= " <TH>" . _("Reserved<br>For") . "</TH>\n"; + $rt .= " <TH>" . _("Repeating") . "</TH>\n"; $rt .= " </TR>\n"; foreach($blocks as $block) { $rt .= " <TR align=center>\n"; $rt .= " <TD>\n"; $rt .= " <button dojoType=\"dijit.form.Button\" type=\"button\">\n"; - $rt .= " View\n"; + $rt .= _( "View") . "\n"; $rt .= " <script type=\"dojo/method\" event=\"onClick\">\n"; $cont = addContinuationsEntry('AJviewBlockAllocation', $block, SECINDAY); $rt .= " viewBlockAllocation('$cont');\n"; @@ -1584,7 +1599,7 @@ function getUserCurrentBlockHTML($liston $rt .= " <TD>\n"; if($block['status'] == 'accepted') { $rt .= " <button dojoType=\"dijit.form.Button\" type=\"button\">\n"; - $rt .= " View Times\n"; + $rt .= _( "View Times") . "\n"; $rt .= " <script type=\"dojo/method\" event=\"onClick\">\n"; $cont = addContinuationsEntry('AJviewBlockAllocationTimes', array('blockid' => $block['id']), SECINDAY); $rt .= " viewBlockTimes('$cont');\n"; @@ -1596,7 +1611,7 @@ function getUserCurrentBlockHTML($liston $rt .= " <TD>{$block['image']}</TD>\n"; $rt .= " <TD>{$block['machinecnt']}</TD>\n"; $rt .= " <TD>{$block['group']}</TD>\n"; - $rt .= " <TD>{$block['available']}</TD>\n"; + $rt .= " <TD>" . _($block['available']) . "</TD>\n"; $rt .= " </TR>\n"; } $rt .= "</table>\n"; @@ -1604,30 +1619,31 @@ function getUserCurrentBlockHTML($liston if($listonly) return $rt; - $rt .= "<div id=\"viewDialog\" dojoType=\"dijit.Dialog\" title=\"Block Allocation\">\n"; + $rt .= "<div id=\"viewDialog\" dojoType=\"dijit.Dialog\" title=\""; + $rt .= _("Block Allocation") . "\">\n"; $rt .= "<table summary=\"\">\n"; $rt .= " <tr>\n"; - $rt .= " <th align=\"right\">Name:</th>\n"; + $rt .= " <th align=\"right\">" . _("Name") . ":</th>\n"; $rt .= " <td><span id=\"confname\"></span></td>\n"; $rt .= " </tr>\n"; $rt .= " <tr>\n"; - $rt .= " <th align=\"right\">Owner:</th>\n"; + $rt .= " <th align=\"right\">" . _("Owner") . ":</th>\n"; $rt .= " <td><span id=\"confowner\"></span></td>\n"; $rt .= " </tr>\n"; $rt .= " <tr>\n"; - $rt .= " <th align=\"right\">Environment:</th>\n"; + $rt .= " <th align=\"right\">" . _("Environment") . ":</th>\n"; $rt .= " <td><span id=\"confimage\"></span></td>\n"; $rt .= " </tr>\n"; $rt .= " <tr>\n"; - $rt .= " <th align=\"right\">User Group:</th>\n"; + $rt .= " <th align=\"right\">" . _("User group") . ":</th>\n"; $rt .= " <td><span id=\"confgroup\"></span></td>\n"; $rt .= " </tr>\n"; $rt .= " <tr>\n"; - $rt .= " <th align=\"right\">Seats:</th>\n"; + $rt .= " <th align=\"right\">" . _("Seats") . ":</th>\n"; $rt .= " <td><span id=\"confseats\"></span></td>\n"; $rt .= " </tr>\n"; $rt .= " <tr>\n"; - $rt .= " <th align=\"right\">Repeating:</th>\n"; + $rt .= " <th align=\"right\">" . _("Repeating") . ":</th>\n"; $rt .= " <td><span id=\"confrepeat\"></span></td>\n"; $rt .= " </tr>\n"; $rt .= " <tr valign=\"top\">\n"; @@ -1649,7 +1665,7 @@ function getUserCurrentBlockHTML($liston $rt .= "</table>\n"; $rt .= "<div align=\"center\">\n"; $rt .= "<button dojoType=\"dijit.form.Button\" type=\"button\">\n"; - $rt .= " Close\n"; + $rt .= _( "Close") . "\n"; $rt .= " <script type=\"dojo/method\" event=\"onClick\">\n"; $rt .= " clearHideView();\n"; $rt .= " </script>\n"; @@ -1657,8 +1673,9 @@ function getUserCurrentBlockHTML($liston $rt .= "</div>\n"; $rt .= "</div>\n"; # confirm dialog - $rt .= "<div id=\"viewtimesDialog\" dojoType=\"dijit.Dialog\" title=\"Block Allocation Times\">\n"; - $rt .= "<h2>Block Allocation Times</h2>\n"; + $rt .= "<div id=\"viewtimesDialog\" dojoType=\"dijit.Dialog\" title=\""; + $rt .= _("Block Allocation Times") . "\">\n"; + $rt .= "<h2>" . _("Block Allocation Times") . "</h2>\n"; $rt .= "<table dojoType=\"dojox.grid.DataGrid\" jsId=\"blockTimesGrid\" sortInfo=1 "; $rt .= "style=\"width: 278px; height: 200px;\">\n"; $rt .= "<script type=\"dojo/method\" event=\"onStyleRow\" args=\"row\">\n"; @@ -1666,16 +1683,19 @@ function getUserCurrentBlockHTML($liston $rt .= "</script>\n"; $rt .= "<thead>\n"; $rt .= "<tr>\n"; - $rt .= "<th field=\"start\" width=\"60px\" formatter=\"blockTimesGridDate\">Date</th>\n"; - $rt .= "<th field=\"start\" width=\"54px\" formatter=\"blockTimesGridStart\">Start</th>\n"; - $rt .= "<th field=\"end\" width=\"54px\" formatter=\"blockTimesGridEnd\">End</th>\n"; - $rt .= "<th field=\"delbtn\" width=\"60px\">Skip</th>\n"; + $rt .= "<th field=\"start\" width=\"60px\" formatter=\"blockTimesGridDate\">"; + $rt .= _("Date") . "</th>\n"; + $rt .= "<th field=\"start\" width=\"54px\" formatter=\"blockTimesGridStart\">"; + $rt .= _("Start") . "</th>\n"; + $rt .= "<th field=\"end\" width=\"54px\" formatter=\"blockTimesGridEnd\">"; + $rt .= _("End") . "</th>\n"; + $rt .= "<th field=\"delbtn\" width=\"60px\">" . _("Skip") . "</th>\n"; $rt .= "</tr>\n"; $rt .= "</thead>\n"; $rt .= "</table>\n"; $rt .= "<div align=\"center\">\n"; $rt .= "<button dojoType=\"dijit.form.Button\" type=\"button\">\n"; - $rt .= " Close\n"; + $rt .= _( "Close") . "\n"; $rt .= " <script type=\"dojo/method\" event=\"onClick\">\n"; $rt .= " dijit.byId('viewtimesDialog').hide();\n"; $rt .= " </script>\n"; @@ -2207,11 +2227,11 @@ function AJviewBlockAllocation() { 'repeating' => $data['available'], 'startdate' => $data['smdate'], 'lastdate' => $data['emdate']); - $weeknumArr = array(1 => "1st", - 2 => "2nd", - 3 => "3rd", - 4 => "4th", - 5 => "5th"); + $weeknumArr = array(1 => _("1st"), + 2 => _("2nd"), + 3 => _("3rd"), + 4 => _("4th"), + 5 => _("5th")); $rt['date1'] = "{$weeknumArr[$data['weeknum']]} {$days[($data['day'] - 1)]}"; $rt['times'] = array(); foreach(array_keys($data['smhour']) as $key) { @@ -2718,7 +2738,7 @@ function AJtoggleBlockTime() { //////////////////////////////////////////////////////////////////////////////// function viewBlockStatus() { $blockid = getContinuationVar('id'); - print "<H2>Block Allocation</H2>\n"; + print "<H2>" . _("Block Allocation") . "</H2>\n"; $data = getBlockAllocationStatus($blockid); if(is_null($data)) { print "The selected Block Allocation no longer exists."; @@ -2726,31 +2746,31 @@ function viewBlockStatus() { } $startunix = datetimeToUnix($data['start']); $endunix = datetimeToUnix($data['end']); - $start = date('g:ia n/j/Y', $startunix); - $end = date('g:ia n/j/Y', $endunix); + $start = strftime('%x %l:%M %P', $startunix); + $end = strftime('%x %l:%M %P', $endunix); print "<div id=statusdiv>\n"; print "<table class=blockStatusData summary=\"lists attributes of block allocation\">\n"; print " <tr>\n"; - print " <th>Name:</th>\n"; + print " <th>" . _("Name") . ":</th>\n"; print " <td>{$data['name']}</td>\n"; print " </tr>\n"; print " <tr>\n"; - print " <th>Environment:</th>\n"; + print " <th>" . _("Environment") . ":</th>\n"; print " <td>{$data['image']}</td>\n"; print " </tr>\n"; print " <tr>\n"; - print " <th>Resources:</th>\n"; + print " <th>" . _("Resources") . ":</th>\n"; if($data['subimages']) print " <td>{$data['numMachines']} clusters</td>\n"; else print " <td>{$data['numMachines']} computers</td>\n"; print " </tr>\n"; print " <tr>\n"; - print " <th>Starting:</th>\n"; + print " <th>" . _("Starting") . ":</th>\n"; print " <td>$start</td>\n"; print " </tr>\n"; print " <tr>\n"; - print " <th>Ending:</th>\n"; + print " <th>" . _("Ending") . ":</th>\n"; print " <td>$end</td>\n"; print " </tr>\n"; print "</table><br>\n"; @@ -2768,7 +2788,7 @@ function viewBlockStatus() { $used++; } $failed = $data['numMachines'] - $available - $reloading - $used; - print "Current status of computers:<br>\n"; + print _("Current status of computers") . ":<br>\n"; } else { $imgdata = getImages(0, $data['imageid']); @@ -2808,19 +2828,19 @@ function viewBlockStatus() { } print "<table class=blockStatusData summary=\"lists status of block allocation\">\n"; print " <tr>\n"; - print " <th><font color=green>Available:</th>\n"; + print " <th><font color=green>" . _("Available") . ":</th>\n"; print " <td id=available>$available</td>\n"; print " </tr>\n"; print " <tr>\n"; - print " <th>Reloading:</th>\n"; + print " <th>" . _("Reloading") . ":</th>\n"; print " <td id=reloading>$reloading</td>\n"; print " </tr>\n"; print " <tr>\n"; - print " <th nowrap><font color=#e58304>Reserved/In use:</th>\n"; + print " <th nowrap><font color=#e58304>" . _("Reserved/In use") . ":</th>\n"; print " <td id=used>$used</td>\n"; print " </tr>\n"; print " <tr>\n"; - print " <th><font color=red>Failed:</th>\n"; + print " <th><font color=red>" . _("Failed") . ":</th>\n"; print " <td id=failed>$failed</td>\n"; print " </tr>\n"; print "</table>\n"; Modified: incubator/vcl/trunk/web/.ht-inc/conf-default.php URL: http://svn.apache.org/viewvc/incubator/vcl/trunk/web/.ht-inc/conf-default.php?rev=1327259&r1=1327258&r2=1327259&view=diff ============================================================================== --- incubator/vcl/trunk/web/.ht-inc/conf-default.php (original) +++ incubator/vcl/trunk/web/.ht-inc/conf-default.php Tue Apr 17 20:01:13 2012 @@ -36,6 +36,8 @@ define("HOMEURL", "http://vcl.example.or date_default_timezone_set('America/New_York'); // set this to your timezone; a list of available values can // be found at http://php.net/manual/en/timezones.php +define("DEFAULTLOCALE", "en_US"); // default locale for the site + // Any time someone creates a new image, they will be required to agree to a click through // agreement. This is the text that will be displayed that the user must agree to. // Place a '%s' where you want the 'I agree' and 'I do not agree' buttons to be placed.