Changeset 687
- Timestamp:
- 03/03/10 19:43:39 (6 months ago)
- Location:
- trunk/src/com/calenco
- Files:
-
- 4 edited
-
CalencoV2App.java (modified) (1 diff)
-
resource/workspace/PublicationsResource.java (modified) (3 diffs)
-
staticres/workspace-html.ftl (modified) (24 diffs)
-
staticres/workspaces-html.ftl (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/com/calenco/CalencoV2App.java
r677 r687 131 131 wrouter.attach("/{wksp}/languages/{lang}", LanguageResource.class); 132 132 wrouter.attach("/{wksp}/publications", PublicationsResource.class); 133 wrouter.attach("/{wksp}/publications{.fmt}", PublicationsResource.class); 133 134 wrouter.attach("/{wksp}/publications/{pub}", PublicationResource.class); 134 135 wrouter.attach("/{wksp}/pubsqueue", PublicationQueueResource.class); -
trunk/src/com/calenco/resource/workspace/PublicationsResource.java
r637 r687 50 50 import org.restlet.representation.Representation; 51 51 import org.restlet.representation.StringRepresentation; 52 import org.restlet.representation.Variant; 52 53 import org.restlet.resource.Get; 53 54 import org.restlet.resource.Post; … … 247 248 } 248 249 249 @Get("json") 250 public Representation toJSON() throws ResourceException { 250 @Get 251 @Override 252 public Representation get(Variant variant) throws ResourceException { 253 String fmt = (String) getRequestAttributes().get(".fmt"); // NOI18N 254 if (fmt == null) { 255 String accept = getHttpHeader("Accept"); // NOI18N 256 MediaType mt = variant.getMediaType(); 257 if (accept != null) { 258 mt = new MediaType(accept); 259 } 260 if (MediaType.APPLICATION_JSON.equals(mt)) { 261 fmt = ".json"; // NOI18N 262 } 263 } 264 if (".json".equals(fmt)) { // NOI18N 265 return toJSON(); 266 } else { 267 return toXML(); // Preferred representation 268 } 269 } 270 271 private Representation toJSON() throws ResourceException { 251 272 try { 252 273 JSONObject pubsj = new JSONObject(); … … 267 288 } 268 289 269 @Get("xml") 270 public Representation toXML() throws ResourceException { 290 private Representation toXML() throws ResourceException { 271 291 try { 272 292 DomRepresentation rep = new DomRepresentation(MediaType.TEXT_XML); -
trunk/src/com/calenco/staticres/workspace-html.ftl
r685 r687 30 30 <style type="text/css"> 31 31 #preloader, body, html {width:100%;height:100%;margin:0;padding:0;} 32 /*#preloader {background:#fff url("http://o.aolcdn.com/dojo/1.3.2/dojox/image/resources/images/loading.gif") no-repeat center center;position:absolute;z-index:999;}*/33 #preloader {background:#fff url("/res/img/cco-loading.gif") no-repeat center center;position:absolute;z-index:999;}32 #preloader {background:#fff url("http://o.aolcdn.com/dojo/1.3.2/dojox/image/resources/images/loading.gif") no-repeat center center;position:absolute;z-index:999;} 33 /*#preloader {background:#fff url("/res/img/cco-loading.gif") no-repeat center center;position:absolute;z-index:999;}*/ 34 34 </style> 35 35 <script type="text/javascript">djConfig = {parseOnLoad:false,isDebug:true,dojoBlankHtmlUrl:'/res/html/blank.html',baseUrl:'/res'};</script> … … 66 66 <!--[if IE]> 67 67 <script type='text/javascript' src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script> 68 <script type='text/javascript'>firebug.env.height = 150</script> 68 69 <![endif]--> 69 70 <script type="text/javascript"> … … 82 83 var schref = "/workspaces/${wksp}/depstree?lang=" + (lang == "" ? "INTL" : lang); 83 84 var plistNewState = false; 84 var wlistNewState = false;85 85 var editor = "${editor}"; 86 86 var pubs = []; … … 92 92 var syslangs = {}; 93 93 var ctmenu; 94 var plist; 95 var revlog; 96 var wlist; 94 97 95 98 /* Ticket #155 96 99 * Firefox(other browsers?) submit automatically a form containing only one 97 * input when the ENTER key is pressed. This leads to unexpected and annoying98 * b ehaviors. The only fix I found so far is to disablethe ENTER key.100 * input when the ENTER key is pressed. This leads to annoying behavior, 101 * block the ENTER key. 99 102 */ 100 103 function blockEnter(event) { … … 222 225 }); 223 226 224 // Publications List Dialog225 dojo.connect(dojo.byId("plist.rld.btn"), "onclick", function(e) { showPubs(); });226 // Workspaces List Dialog227 dojo.connect(dojo.byId("wlist.rld.btn"), "onclick", function(e) { showWorkspaces(); });228 // Revhistory Dialog229 dojo.connect(dojo.byId("revlog.rld.btn"), "onclick", function(e) { showRevLog(); });230 if (isSA) {231 dojo.connect(dojo.byId("wlist.new.btn"), "onclick", function(e) {232 wlistNewState = !wlistNewState; // Toggle it233 if (wlistNewState) {234 dojo.byId("wlist.new").setAttribute("style", "display:block;padding:5px;margin:2px;");235 } else { // Hide the new workspace form236 dojo.byId("wlist.new").setAttribute("style", "display:none;")237 }238 });239 }240 227 if (isSA || isWA) { 241 228 /* 'Add Language' Click Handler */ 242 229 dojo.connect(dojo.byId("llistnew.btn"), "onclick", function(e) { addLangToWorkspace(); }); 243 /* New Pub Dialog */ 244 dojo.connect(dojo.byId("plist.new.btn"), "onclick", function(e) { createPub(); }); 230 } 231 232 /* Wire blockEnter to workspace creation text input */ 233 if (isSA) { 234 dojo.connect(dijit.byId("wdescription").textbox, "onkeypress", function(e) { blockEnter(e); }); 245 235 } 246 236 } … … 324 314 #filesMenuBar {display:block;margin-bottom:2px;} 325 315 #fileView {padding-top:10px;} 326 .brow {padding:5px; padding-left:80%;}316 .brow {padding:5px;} 327 317 .brow-top {padding-top:2px;padding-bottom:7px;} 318 .dlg-cont {margin:2px;padding:3px;padding-top:0px;} 328 319 .pflabl {width:25%;float:left;text-align:right;padding-right:1%;} 329 320 .pfctrl {width:73%;} … … 362 353 <div> 363 354 <span id="wksps-btn-help"></span> 364 < span class="button"><a id="wksplist" onclick="showWorkspaces()">Workspaces</a></span>355 <button id="wksplist" onclick="showWorkspaces()" dojotype="dijit.form.Button">Workspaces</button> 365 356 </div> 366 357 </div> 367 <div id="wlist" dojoType="dijit.Dialog" style="width:60%;"> 368 <div id="wlist.container"> 369 <#if user.isSA> 370 <a id="wlist.new.btn" style="cursor:pointer;"><img src="/res/img/document-new.png" border="0" /> New</a> <a id="wlist.rld.btn" style="cursor:pointer;"><img src="/res/img/view-refresh.png" border="0" /> Refresh List</a> 371 <div id="wlist.new" style="display:none;"> 372 <form id="wnewf" name="wnewf" enctype="application/x-www-form-urlencoded" method="post" action="/workspaces"> 373 <div class="frow"> 374 <div class="pflabl"> 375 <label for="wdescription">Workspace Name: </label> 376 </div> 377 <div class="pfctrl"> 378 <input id="wdescription" name="description" type="text" onkeypress="return blockEnter(event)"/> 379 </div> 380 </div> 381 <div class="brow" style="padding-left:55%;"> 382 <span class="button"><a onclick="createWorkspace()">Create</a></span> 383 </div> 384 </form> 358 <#if user.isSA> 359 <div id="wnew" title="Create Workspace" dojotype="dijit.Dialog" style="width:40%;"> 360 <form id="wnewf" name="wnewf" enctype="application/x-www-form-urlencoded" method="post" action="/workspaces" dojotype="dijit.form.Form"> 361 <div class="frow"> 362 <span style="width:37%;"> 363 <label for="wdescription">Workspace Name: </label> 364 </span> 365 <span style="width:51%;"> 366 <input id="wdescription" name="description" type="text" dojotype="dijit.form.ValidationTextBox" trim="true" required="true" invalidmessage="Workspace name is required" /> 367 </span> 385 368 </div> 386 <#else> 387 <a id="wlist.rld.btn" style="cursor:pointer;"><img src="/res/img/view-refresh.png" border="0" /> Refresh List</a> 388 </#if> 389 <div id="wlist.list"></div> 390 </div> 369 <div class="brow"br> 370 <button onclick="doCreateWorkspace()" dojotype="dijit.form.Button">Create</button> 371 </div> 372 </form> 391 373 </div> 374 </#if> 392 375 </div> <#-- /Header --> 393 376 <#-- Toolbar with action buttons and user prefs link --> … … 567 550 <span id="lock"></span> 568 551 </div> 569 <div id="plist" dojoType="dijit.Dialog" style="width: 60%;">570 <div id="plist.container">571 <div class="brow-top">572 <#if user.isSA || user.isWA>573 <a id="plist.new.btn" style="cursor:pointer;"><img src="/res/img/document-new.png" border="0" /> New</a> 574 </#if>575 <a id="plist.rld.btn" style="cursor:pointer;"><img src="/res/img/view-refresh.png" border="0" /> Refresh List</a>576 </div>577 <div id="plist.list"></div>578 </div>579 </div>580 552 <#if user.isSA || user.isWA> 581 553 <div id="pnew" dojoType="dijit.Dialog" style="width:50%;"> … … 724 696 </div> 725 697 </#if> 726 <div id="revlog" dojoType="dijit.Dialog" style="width:60%;">727 <div id="revlog.container">728 <a id="revlog.rld.btn" style="cursor:pointer;"><img src="/res/img/view-refresh.png" border="0" /> Refresh</a>729 <div id="revlog.list"></div>730 </div>731 </div>732 698 <div id="fileviewhelp" style="float: right;"></div> 733 699 <div id="fileView"<#--style="margin:2px;"-->> … … 1155 1121 1156 1122 function createWorkspace() { 1157 dojo.xhrPost({ 1158 url: "/workspaces", 1159 form: dojo.byId("wnewf"), 1160 handleAs: "text", 1161 handle: function(response, ioArgs) { 1162 if (ioArgs.xhr.status != 201) { 1163 errorDialog("Cannot Create Workspace", response); 1164 console.warn(response, ioArgs); 1165 } else { 1166 showWorkspaces(); 1167 } 1168 return response; 1169 } 1170 }); 1171 // Hide new workspace pane 1172 dojo.byId("wnewf").reset(); 1173 wlistNewState = false; 1174 dojo.byId("wlist.new").setAttribute("style", "display:none;"); 1123 dijit.byId("wlist.dlg").hide(); 1124 var nform = dojo.byId("wnewf"); 1125 nform.reset(); 1126 var dlg = dijit.byId("wnew"); 1127 dojo.connect(dlg, "onCancel", function(e) {dijit.byId("wlist.dlg").show();}); 1128 dlg.show(); 1129 } 1130 1131 function doCreateWorkspace() { 1132 var nform = dijit.byId("wnewf"); 1133 if (nform.validate()) { 1134 dojo.xhrPost({ 1135 url: "/workspaces", 1136 form: dojo.byId("wnewf"), 1137 handle: function(response, ioArgs) { 1138 if (ioArgs.xhr.status != 201) { 1139 errorDialog("Cannot Create Workspace", response); 1140 console.warn(response, ioArgs); 1141 } else { 1142 showWorkspaces(); 1143 } 1144 return response; 1145 } 1146 }); 1147 nform.reset(); 1148 dijit.byId("wnew").hide(); 1149 } else { 1150 console.warn("Form not valid!", nform); 1151 } 1175 1152 } 1176 1153 … … 1208 1185 dojo.xhrGet({ 1209 1186 url: "/workspaces", 1187 handleAs: "json", 1210 1188 headers: {Accept: "application/json"}, 1211 handleAs: "json", 1212 load: function(response, ioArgs) { 1213 var wlDlg = dijit.byId("wlist"); 1214 wlDlg.attr("title", "Available Workspaces [" + response.count + "]"); 1215 dojo.byId("wlist.list").innerHTML = wlistHTML(response.items); 1216 wlDlg.attr("content", dojo.byId("wlist.container")); 1217 dojo.connect(wlDlg, "onCancel", function(e) { dojo.empty("wlist.list"); }); 1218 wlDlg.show(); 1219 return response; 1220 }, 1221 error: function(response, ioArgs) { 1222 errorDialog("Cannot Obtain Workspace List", response); 1223 console.warn(response, ioArgs); 1224 return response; 1225 } 1226 }); 1227 } 1228 1229 function wlistHTML(wlist) { 1230 if (wlist.length > 0) { 1189 preventCache: true, 1190 handle: function(response, ioArgs) { 1191 if (ioArgs.xhr.status != 200) { 1192 errorDialog("Cannot Retrieve Workspace List", response); 1193 console.warn(response, ioArgs); 1194 } else { 1195 if (wlist && wlist != null) { 1196 wlist.attr("title", "Available Workspaces [" + response.count + "]"); 1197 dojo.empty("wlist.list"); 1198 dojo.byId("wlist.list").innerHTML = wlistHTML(response.items); 1199 wlist.show(); 1200 } else { 1201 wlist = new dijit.Dialog({ 1202 id: "wlist.dlg", 1203 title: "Available Workspaces [" + response.count + "]", 1204 style: "width:60%" 1205 }); 1206 var contDiv = dojo.create("div", {"class": "dlg-cont"}); 1207 var browDiv = dojo.create("div", {"class": "brow-top"}, contDiv); 1208 if (isSA) { 1209 var newBtn = dojo.create("button", {id: "wlist.new.btn", onclick: "createWorkspace()", dojotype: "dijit.form.Button"}, browDiv); 1210 newBtn.appendChild(document.createTextNode("New ")); 1211 dojo.create("img", {src: '/res/img/document-new.png', border: 0}, newBtn); 1212 } 1213 var rldBtn = dojo.create("button", {id: "wlist.rld.btn", onclick: "showWorkspaces()", dojotype: "dijit.form.Button"}, browDiv); 1214 rldBtn.appendChild(document.createTextNode("Refresh List ")); 1215 dojo.create("img", {src: "/res/img/view-refresh.png", border: 0}, rldBtn); 1216 dojo.create("div", {id: "wlist.list", innerHTML: wlistHTML(response.items)}, contDiv); 1217 wlist.attr("content", contDiv); 1218 var handle = dojo.connect(wlist, "onCancel", function(e) {dojo.disconnect(handle); wlist.destroyRecursive(false); wlist = null;}); 1219 wlist.show(); 1220 } 1221 } 1222 return response; 1223 } 1224 }); 1225 } 1226 1227 function wlistHTML(list) { 1228 if (list.length > 0) { 1231 1229 var html = "<table class=\"list\"><thead><tr><th>Name</th><th>Active</th></tr></thead><tbody>"; 1232 for (var i = 0; i < wlist.length; i++) {1233 var w = wlist[i];1230 for (var i = 0; i < list.length; i++) { 1231 var w = list[i]; 1234 1232 var active = w.active == "true"; 1235 1233 html += "<tr class=\"" + ((active) ? "on" : "off") + "\" id=\"wr" + i + "\"><td>"; … … 1290 1288 return html; 1291 1289 } else { 1292 return "<div class=\"info\"> No publications for the selected file.Please ask the workspace administrator to create publications for this file.</p></div>";1290 return "<div class=\"info\"><p>No publications for the selected file.<br/>Please ask the workspace administrator to create publications for this file.</p></div>"; 1293 1291 } 1294 1292 } … … 1297 1295 var fname = new String(selectedFile).replace(noPathRE, ""); 1298 1296 dojo.xhrGet({ 1299 url: "/workspaces/${wksp}/publications ?file=" + selectedFile,1300 headers: {Accept: "application/json"},1297 url: "/workspaces/${wksp}/publications.json?file=" + selectedFile, 1298 preventCache: true, 1301 1299 handleAs: "json", 1302 load: function(response, ioArgs) { 1303 var plist = response.publications; 1304 var dlg = dijit.byId("plist"); 1305 dlg.attr("title", "Publications [" + response.count + "] for " + fname); 1306 dojo.byId("plist.list").innerHTML = plistHTML(plist); 1307 dlg.attr("content", dojo.byId("plist.container")); 1308 dojo.connect(dlg, "onCancel", function(e) { dojo.empty("plist.list"); }); 1309 dlg.show(); 1310 return response; 1311 }, 1312 error: function(response, ioArgs) { 1313 errorDialog("Cannot Retrieve Publications for '" + fname + "'", response); 1314 console.warn(response, ioArgs); 1300 handle: function(response, ioArgs) { 1301 if (ioArgs.xhr.status != 200) { 1302 errorDialog("Cannot Retrieve Publications for '" + fname + "'", response); 1303 console.warn(response, ioArgs); 1304 } else { 1305 if (plist && plist != null) { 1306 plist.attr("title", "Publications [" + response.count + "] for " + fname); 1307 dojo.empty("plist.list"); 1308 dojo.byId("plist.list").innerHTML = plistHTML(response.publications); 1309 plist.show(); 1310 } else { 1311 plist = new dijit.Dialog({ 1312 id: "plist.dlg", 1313 title: "Publications [" + response.count + "] for " + fname, 1314 style: "width:60%" 1315 }); 1316 var contDiv = dojo.create("div", {"class": "dlg-cont"}); 1317 var browDiv = dojo.create("div", {"class": "brow-top"}, contDiv); 1318 if (isSA || isWA) { 1319 var newBtn = dojo.create("button", {id: "plist.new.btn", onclick: "createPub()", dojotype: "dijit.form.Button"}, browDiv); 1320 newBtn.appendChild(document.createTextNode("New ")); 1321 dojo.create("img", {src: '/res/img/document-new.png', border: 0}, newBtn); 1322 } 1323 var rldBtn = dojo.create("button", {id: "plist.rld.btn", onclick: "showPubs()", dojotype: "dijit.form.Button"}, browDiv); 1324 rldBtn.appendChild(document.createTextNode("Refresh List ")); 1325 dojo.create("img", {src: '/res/img/view-refresh.png', border: 0}, rldBtn); 1326 dojo.create("div", {id: 'plist.list', innerHTML: plistHTML(response.publications)}, contDiv); 1327 plist.attr("content", contDiv); 1328 var handle = dojo.connect(plist, "onCancel", function(e) {dojo.disconnect(handle); plist.destroyRecursive(false); plist = null;}); 1329 plist.show(); 1330 } 1331 } 1315 1332 return response; 1316 1333 } … … 1352 1369 url: "/workspaces/${wksp}/pubsqueue", 1353 1370 form: dojo.byId("pnewf"), 1354 handleAs: "text",1355 1371 handle: function(response, ioArgs) { 1356 1372 if (ioArgs.xhr.status != 202) { … … 1371 1387 url: "/workspaces/${wksp}/publications", 1372 1388 form: dojo.byId("pnewf"), 1373 handleAs: "text",1374 1389 handle: function(response, ioArgs) { 1375 1390 if (ioArgs.xhr.status != 201) { … … 1390 1405 1391 1406 function createPub() { 1392 dijit.byId("plist ").hide();1407 dijit.byId("plist.dlg").hide(); 1393 1408 var nform = dojo.byId("pnewf"); 1394 1409 nform.reset(); … … 1397 1412 var dlg = dijit.byId("pnew"); 1398 1413 dlg.attr("title", "Create Publication for " + selectedFile); 1399 dojo.connect(dlg, "onCancel", function(e) {dijit.byId("plist ").show();});1414 dojo.connect(dlg, "onCancel", function(e) {dijit.byId("plist.dlg").show();}); 1400 1415 dlg.show(); 1401 1416 } 1402 1417 1403 1418 function editPub(/* int */index) { 1404 dijit.byId("plist ").hide(); // Hide pubs list dialog (in dojo 1.4 it should be possible to have a dialog pop another one up, so this should be reviewed)1419 dijit.byId("plist.dlg").hide(); // Hide pubs list dialog (in dojo 1.4 it should be possible to have a dialog pop another one up, so this should be reviewed) 1405 1420 var eform = dojo.byId("peditf") 1406 1421 eform.reset(); … … 1437 1452 var peDlg = dijit.byId("pedit"); 1438 1453 peDlg.attr("title", "Modify Publication Parameters for " + p.name); 1439 dojo.connect(peDlg, "onCancel", function(e) {dijit.byId("plist ").show();}); // See comment above about 1.4 and multipopups1454 dojo.connect(peDlg, "onCancel", function(e) {dijit.byId("plist.dlg").show();}); // See comment above about 1.4 and multipopups 1440 1455 peDlg.show(); 1441 1456 oname.focus(); … … 1447 1462 url: "/workspaces/${wksp}/publications/" + dojo.byId("pename").value, 1448 1463 form: eform, 1449 handleAs: "text", 1450 load: function(response, ioArgs) { 1464 handle: function(response, ioArgs) { 1465 if (ioArgs.xhr.status != 200) { 1466 console.error(response, ioArgs); 1467 errorDialog("Error Modifying Publication", response); 1468 } 1451 1469 eform.reset(); 1452 console.info(response, ioArgs);1453 return response;1454 },1455 error: function(response, ioArgs) {1456 eform.reset();1457 console.error(response, ioArgs);1458 1470 return response; 1459 1471 } … … 1464 1476 1465 1477 function showRevLog() { 1478 var fname = new String(selectedFile).replace(noPathRE, ""); 1466 1479 dojo.xhrGet({ 1467 1480 url: selectedFile + "/revhistory", … … 1469 1482 handle: function(response, ioArgs) { 1470 1483 if (ioArgs.xhr.status != 200) { 1471 errorDialog("Error Retrieving Revhistory", response); 1484 errorDialog("Cannot Retrieve Revhistory for '" + fname + "'", response); 1485 console.warn(response, ioArgs); 1472 1486 } else { 1473 var fname = new String(selectedFile).replace(noPathRE, ""); 1474 var rlist = response.revisions; 1475 var dlg = dijit.byId("revlog"); 1476 dlg.attr("title", "Revisions [" + response.count + "] history for " + fname); 1477 dojo.byId("revlog.list").innerHTML = rlistHTML(rlist); 1478 dlg.attr("content", dojo.byId("revlog.container")); 1479 dojo.connect(dlg, "onCancel", function(e) { dojo.empty("revlog.list"); }); 1480 dlg.show(); 1487 if (revlog && revlog != null) { 1488 revlog.attr("title", "Revisions [" + response.count + "] history for " + fname); 1489 dojo.empty("revlog.list"); 1490 dojo.byId("revlog.list").innerHTML = rlistHTML(response.revisions); 1491 revlog.show(); 1492 } else { 1493 revlog = new dijit.Dialog({ 1494 id: "revlog.dlg", 1495 title: "Revisions [" + response.count + "] history for " + fname, 1496 style: "width:60%" 1497 }); 1498 var contDiv = dojo.create("div", {"class" : "dlg-cont"}); 1499 var browDiv = dojo.create("div", {"class": "brow-top"}, contDiv); 1500 var rldBtn = dojo.create("button", {id: "revlog.rld.btn", onclick: "showRevLog()", dojotype: "dijit.form.Button"}, browDiv); 1501 rldBtn.appendChild(document.createTextNode("Refresh ")); 1502 dojo.create("img", {src: "/res/img/view-refresh.png", border: 0}, rldBtn); 1503 dojo.create("div", {id: "revlog.list", innerHTML: rlistHTML(response.revisions)}, contDiv); 1504 revlog.attr("content", contDiv); 1505 var handle = dojo.connect(revlog, "onCancel", function(e) {dojo.disconnect(handle); revlog.destroyRecursive(false); revlog = null;}); 1506 revlog.show(); 1507 } 1481 1508 } 1482 1509 return response; … … 1889 1916 headers: {Accept: "application/json"}, 1890 1917 handleAs: "json", 1918 preventCache: true, 1891 1919 load: function(response, ioArgs) { 1892 1920 var node = dojo.byId("lock"); … … 1895 1923 if (locker == "${user.email}" || isWA || isSA) { 1896 1924 var span = dojo.create("span", {"class": "button"}, node); 1897 dojo.create("a", { onclick: "unLock('" + href + "')", innerHTML: "Unlock"}, span);1925 dojo.create("a", {href: "javascript:unLock('" + href + "')", innerHTML: "Unlock"}, span); 1898 1926 } 1899 1927 dojo.create("img", {src: "/res/img/lock.png", alt: "[lock]", style: "padding-left: 5px; vertical-align: middle;" }, node); … … 1904 1932 else { 1905 1933 var span = dojo.create("span", {"class": "button"}, node); 1906 dojo.create("a", { onclick: "lock('" + href + "')", innerHTML: "Lock"}, span);1934 dojo.create("a", {href: "javascript:lock('" + href + "')", innerHTML: "Lock"}, span); 1907 1935 } 1908 1936 return response; -
trunk/src/com/calenco/staticres/workspaces-html.ftl
r685 r687 29 29 <style type="text/css"> 30 30 #preloader, body, html {width:100%;height:100%;margin:0;padding:0;} 31 /*#preloader {background:#fff url("http://o.aolcdn.com/dojo/1.3.2/dojox/image/resources/images/loading.gif") no-repeat center center;position:absolute;z-index:999;}*/32 #preloader {background:#fff url("/res/img/cco-loading.gif") no-repeat center center;position:absolute;z-index:999;}31 #preloader {background:#fff url("http://o.aolcdn.com/dojo/1.3.2/dojox/image/resources/images/loading.gif") no-repeat center center;position:absolute;z-index:999;} 32 /*#preloader {background:#fff url("/res/img/cco-loading.gif") no-repeat center center;position:absolute;z-index:999;}*/ 33 33 </style> 34 34 <script type="text/javascript">djConfig = {parseOnLoad:false,isDebug:true,dojoBlankHtmlUrl:'/res/html/blank.html',baseUrl:'/res'};</script> … … 44 44 dojo.require("dijit.Dialog"); 45 45 dojo.require("dijit.form.Button"); 46 dojo.require("dojo.io.iframe");47 46 dojo.require("dijit.form.TextBox"); 47 dojo.require("dijit.form.ValidationTextBox"); 48 48 dojo.require("dijit.form.FilteringSelect"); 49 49 dojo.require("dijit.form.CheckBox"); 50 dojo.require("dijit.form.Form"); 51 dojo.require("dojo.io.iframe"); 50 52 dojo.require("dojo.data.ItemFileReadStore"); 51 53 … … 61 63 if (evt.keyCode == dojo.keys.ENTER) { 62 64 evt.preventDefault(); 63 } 65 return false; 66 } 67 return true; 64 68 } 65 69 … … 117 121 showUsers(); 118 122 }); 123 } 124 125 /* Wire blockEnter to workspace creation text input */ 126 if (isSA) { 127 dojo.connect(dijit.byId("wdescription").textbox, "onkeypress", function(e) { blockEnter(e); }); 119 128 } 120 129 } … … 165 174 <!--[if IE]> 166 175 <script type='text/javascript' src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script> 176 <script type='text/javascript'>firebug.env.height = 150</script> 167 177 <![endif]--> 168 178 <#-- Page title --> … … 205 215 <div dojoType="dijit.Tooltip" connectId="ueditp.button">Change user <strong>${user.name}</strong> properties</div> 206 216 <#if user.isSA == true> 207 <button id="create.button" dojoType="dijit.form.Button" type="button" style="padding-top:4px;"> 208 Create 209 <script type="dojo/method" event="onClick" args="evt"> 210 dijit.byId("create").show(); 211 </script> 212 </button> 213 <div id="create" title="Create Workspace" dojoType="dijit.Dialog"> 217 <button id="create.button" dojoType="dijit.form.Button" onclick="createWorkspace()" type="button" style="padding-top:4px;">Create</button> 218 <div id="wnew" title="Create Workspace" dojotype="dijit.Dialog" style="width:40%;"> 219 <form id="wnewf" name="wnewf" enctype="application/x-www-form-urlencoded" method="post" action="/workspaces" dojotype="dijit.form.Form"> 220 <div class="frow"> 221 <span style="width:37%;"> 222 <label for="wdescription">Workspace Name: </label> 223 </span> 224 <span style="width:51%;"> 225 <input id="wdescription" name="description" type="text" dojotype="dijit.form.ValidationTextBox" trim="true" required="true" invalidmessage="Workspace name is required" /> 226 </span> 227 </div> 228 <div class="brow"br> 229 <button onclick="doCreateWorkspace()" dojotype="dijit.form.Button">Create</button> 230 </div> 231 </form> 232 </div> 233 <#-- <div id="create" title="Create Workspace" dojoType="dijit.Dialog"> 214 234 <div id="create.container"> 215 235 <form id="createf" name="createf" enctype="application/x-www-form-urlencoded"> … … 220 240 </form> 221 241 </div> 222 </div> 242 </div> --> 223 243 </#if> 224 244 </div> <#-- /Toolbar --> … … 514 534 }); 515 535 } 516 536 517 537 function createWorkspace() { 518 dojo.xhrPost({ 519 url: "/workspaces", 520 form: dojo.byId("createf"), 521 handle: function(response, ioArgs) { 522 if (ioArgs.xhr.status != 201) { 523 errorDialog("Error creating workspace", response); 524 } else { 525 updateWorkspaceList(); 526 } 527 return response; 528 } 529 }); 530 dijit.byId("create").hide(); 531 dojo.byId("createf").reset(); 538 var nform = dojo.byId("wnewf"); 539 nform.reset(); 540 var dlg = dijit.byId("wnew"); 541 dlg.show(); 542 } 543 544 function doCreateWorkspace() { 545 var nform = dijit.byId("wnewf"); 546 if (nform.validate()) { 547 dojo.xhrPost({ 548 url: "/workspaces", 549 form: dojo.byId("wnewf"), 550 handle: function(response, ioArgs) { 551 if (ioArgs.xhr.status != 201) { 552 errorDialog("Cannot Create Workspace", response); 553 console.warn(response, ioArgs); 554 } else { 555 updateWorkspaceList(); 556 } 557 return response; 558 } 559 }); 560 nform.reset(); 561 dijit.byId("wnew").hide(); 562 } else { 563 console.warn("Form not valid!", nform); 564 } 532 565 } 533 566
Note: See TracChangeset
for help on using the changeset viewer.
