Changeset 687


Ignore:
Timestamp:
03/03/10 19:43:39 (6 months ago)
Author:
fabman
Message:

Implemented tkt #117 (LOTS of UI fixes)

Location:
trunk/src/com/calenco
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/com/calenco/CalencoV2App.java

    r677 r687  
    131131        wrouter.attach("/{wksp}/languages/{lang}", LanguageResource.class); 
    132132        wrouter.attach("/{wksp}/publications", PublicationsResource.class); 
     133        wrouter.attach("/{wksp}/publications{.fmt}", PublicationsResource.class); 
    133134        wrouter.attach("/{wksp}/publications/{pub}", PublicationResource.class); 
    134135        wrouter.attach("/{wksp}/pubsqueue", PublicationQueueResource.class); 
  • trunk/src/com/calenco/resource/workspace/PublicationsResource.java

    r637 r687  
    5050import org.restlet.representation.Representation; 
    5151import org.restlet.representation.StringRepresentation; 
     52import org.restlet.representation.Variant; 
    5253import org.restlet.resource.Get; 
    5354import org.restlet.resource.Post; 
     
    247248    } 
    248249 
    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 { 
    251272        try { 
    252273            JSONObject pubsj = new JSONObject(); 
     
    267288    } 
    268289 
    269     @Get("xml") 
    270     public Representation toXML() throws ResourceException { 
     290    private Representation toXML() throws ResourceException { 
    271291        try { 
    272292            DomRepresentation rep = new DomRepresentation(MediaType.TEXT_XML); 
  • trunk/src/com/calenco/staticres/workspace-html.ftl

    r685 r687  
    3030        <style type="text/css"> 
    3131            #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;}*/ 
    3434        </style> 
    3535        <script type="text/javascript">djConfig = {parseOnLoad:false,isDebug:true,dojoBlankHtmlUrl:'/res/html/blank.html',baseUrl:'/res'};</script> 
     
    6666        <!--[if IE]> 
    6767        <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> 
    6869        <![endif]--> 
    6970        <script type="text/javascript"> 
     
    8283            var schref = "/workspaces/${wksp}/depstree?lang=" + (lang == "" ? "INTL" : lang); 
    8384            var plistNewState = false; 
    84             var wlistNewState = false; 
    8585            var editor = "${editor}"; 
    8686            var pubs = []; 
     
    9292            var syslangs = {}; 
    9393            var ctmenu; 
     94            var plist; 
     95            var revlog; 
     96            var wlist; 
    9497 
    9598            /* Ticket #155 
    9699             * Firefox(other browsers?) submit automatically a form containing only one 
    97              * input when the ENTER key is pressed. This leads to unexpected and annoying 
    98              * behaviors. The only fix I found so far is to disable the ENTER key. 
     100             * input when the ENTER key is pressed. This leads to annoying behavior, 
     101             * block the ENTER key. 
    99102             */ 
    100103            function blockEnter(event) { 
     
    222225                }); 
    223226 
    224                 // Publications List Dialog 
    225                 dojo.connect(dojo.byId("plist.rld.btn"), "onclick", function(e) { showPubs(); }); 
    226                 // Workspaces List Dialog 
    227                 dojo.connect(dojo.byId("wlist.rld.btn"), "onclick", function(e) { showWorkspaces(); }); 
    228                 // Revhistory Dialog 
    229                 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 it 
    233                         if (wlistNewState) { 
    234                             dojo.byId("wlist.new").setAttribute("style", "display:block;padding:5px;margin:2px;"); 
    235                         } else { // Hide the new workspace form 
    236                             dojo.byId("wlist.new").setAttribute("style", "display:none;") 
    237                         } 
    238                     }); 
    239                 } 
    240227                if (isSA || isWA) { 
    241228                    /* 'Add Language' Click Handler */ 
    242229                    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); }); 
    245235                } 
    246236            } 
     
    324314            #filesMenuBar {display:block;margin-bottom:2px;} 
    325315            #fileView {padding-top:10px;} 
    326             .brow {padding:5px;padding-left:80%;} 
     316            .brow {padding:5px;} 
    327317            .brow-top {padding-top:2px;padding-bottom:7px;} 
     318            .dlg-cont {margin:2px;padding:3px;padding-top:0px;} 
    328319            .pflabl {width:25%;float:left;text-align:right;padding-right:1%;} 
    329320            .pfctrl {width:73%;} 
     
    362353                    <div> 
    363354                        <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> 
    365356                    </div> 
    366357                </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" />&nbsp;New</a> <a id="wlist.rld.btn" style="cursor:pointer;"><img src="/res/img/view-refresh.png" border="0" />&nbsp;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> 
    385368                        </div> 
    386                         <#else> 
    387                         <a id="wlist.rld.btn" style="cursor:pointer;"><img src="/res/img/view-refresh.png" border="0" />&nbsp;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> 
    391373                </div> 
     374                </#if> 
    392375            </div> <#-- /Header --> 
    393376            <#-- Toolbar with action buttons and user prefs link --> 
     
    567550                                <span id="lock"></span> 
    568551                            </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" />&nbsp;New</a>&nbsp; 
    574                                         </#if> 
    575                                         <a id="plist.rld.btn" style="cursor:pointer;"><img src="/res/img/view-refresh.png" border="0" />&nbsp;Refresh List</a> 
    576                                     </div> 
    577                                     <div id="plist.list"></div> 
    578                                 </div> 
    579                             </div> 
    580552                            <#if user.isSA || user.isWA> 
    581553                            <div id="pnew" dojoType="dijit.Dialog" style="width:50%;"> 
     
    724696                            </div> 
    725697                            </#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" />&nbsp;Refresh</a> 
    729                                     <div id="revlog.list"></div> 
    730                                 </div> 
    731                             </div> 
    732698                            <div id="fileviewhelp" style="float: right;"></div> 
    733699                            <div id="fileView"<#--style="margin:2px;"-->> 
     
    11551121 
    11561122            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                } 
    11751152            } 
    11761153 
     
    12081185                dojo.xhrGet({ 
    12091186                    url: "/workspaces", 
     1187                    handleAs: "json", 
    12101188                    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) { 
    12311229                    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]; 
    12341232                        var active = w.active == "true"; 
    12351233                        html += "<tr class=\"" + ((active) ? "on" : "off") + "\" id=\"wr" + i + "\"><td>"; 
     
    12901288                    return html; 
    12911289                } 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>"; 
    12931291                } 
    12941292            } 
     
    12971295                var fname = new String(selectedFile).replace(noPathRE, ""); 
    12981296                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, 
    13011299                    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                        } 
    13151332                        return response; 
    13161333                    } 
     
    13521369                    url: "/workspaces/${wksp}/pubsqueue", 
    13531370                    form: dojo.byId("pnewf"), 
    1354                     handleAs: "text", 
    13551371                    handle: function(response, ioArgs) { 
    13561372                        if (ioArgs.xhr.status != 202) { 
     
    13711387                        url: "/workspaces/${wksp}/publications", 
    13721388                        form: dojo.byId("pnewf"), 
    1373                         handleAs: "text", 
    13741389                        handle: function(response, ioArgs) { 
    13751390                            if (ioArgs.xhr.status != 201) { 
     
    13901405 
    13911406            function createPub() { 
    1392                 dijit.byId("plist").hide(); 
     1407                dijit.byId("plist.dlg").hide(); 
    13931408                var nform = dojo.byId("pnewf"); 
    13941409                nform.reset(); 
     
    13971412                var dlg = dijit.byId("pnew"); 
    13981413                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();}); 
    14001415                dlg.show(); 
    14011416            } 
    14021417 
    14031418            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) 
    14051420                var eform = dojo.byId("peditf") 
    14061421                eform.reset(); 
     
    14371452                var peDlg = dijit.byId("pedit"); 
    14381453                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 multipopups 
     1454                dojo.connect(peDlg, "onCancel", function(e) {dijit.byId("plist.dlg").show();}); // See comment above about 1.4 and multipopups 
    14401455                peDlg.show(); 
    14411456                oname.focus(); 
     
    14471462                    url: "/workspaces/${wksp}/publications/" + dojo.byId("pename").value, 
    14481463                    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                        } 
    14511469                        eform.reset(); 
    1452                         console.info(response, ioArgs); 
    1453                         return response; 
    1454                     }, 
    1455                     error: function(response, ioArgs) { 
    1456                         eform.reset(); 
    1457                         console.error(response, ioArgs); 
    14581470                        return response; 
    14591471                    } 
     
    14641476 
    14651477            function showRevLog() { 
     1478                var fname = new String(selectedFile).replace(noPathRE, ""); 
    14661479                dojo.xhrGet({ 
    14671480                    url: selectedFile + "/revhistory", 
     
    14691482                    handle: function(response, ioArgs) { 
    14701483                        if (ioArgs.xhr.status != 200) { 
    1471                             errorDialog("Error Retrieving Revhistory", response); 
     1484                            errorDialog("Cannot Retrieve Revhistory for '" + fname + "'", response); 
     1485                            console.warn(response, ioArgs); 
    14721486                        } 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                            } 
    14811508                        } 
    14821509                        return response; 
     
    18891916                    headers: {Accept: "application/json"}, 
    18901917                    handleAs: "json", 
     1918                    preventCache: true, 
    18911919                    load: function(response, ioArgs) { 
    18921920                        var node = dojo.byId("lock"); 
     
    18951923                            if (locker == "${user.email}" || isWA || isSA) { 
    18961924                                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); 
    18981926                            } 
    18991927                            dojo.create("img", {src: "/res/img/lock.png", alt: "[lock]", style: "padding-left: 5px; vertical-align: middle;" }, node); 
     
    19041932                        else { 
    19051933                            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); 
    19071935                        } 
    19081936                        return response; 
  • trunk/src/com/calenco/staticres/workspaces-html.ftl

    r685 r687  
    2929        <style type="text/css"> 
    3030            #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;}*/ 
    3333        </style> 
    3434        <script type="text/javascript">djConfig = {parseOnLoad:false,isDebug:true,dojoBlankHtmlUrl:'/res/html/blank.html',baseUrl:'/res'};</script> 
     
    4444            dojo.require("dijit.Dialog"); 
    4545            dojo.require("dijit.form.Button"); 
    46             dojo.require("dojo.io.iframe"); 
    4746            dojo.require("dijit.form.TextBox"); 
     47            dojo.require("dijit.form.ValidationTextBox"); 
    4848            dojo.require("dijit.form.FilteringSelect"); 
    4949            dojo.require("dijit.form.CheckBox"); 
     50            dojo.require("dijit.form.Form"); 
     51            dojo.require("dojo.io.iframe"); 
    5052            dojo.require("dojo.data.ItemFileReadStore"); 
    5153 
     
    6163                if (evt.keyCode == dojo.keys.ENTER) { 
    6264                    evt.preventDefault(); 
    63                 } 
     65                    return false; 
     66                } 
     67                return true; 
    6468            } 
    6569 
     
    117121                        showUsers(); 
    118122                    }); 
     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); }); 
    119128                } 
    120129            } 
     
    165174        <!--[if IE]> 
    166175        <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> 
    167177        <![endif]--> 
    168178        <#-- Page title --> 
     
    205215                <div dojoType="dijit.Tooltip" connectId="ueditp.button">Change user <strong>${user.name}</strong> properties</div> 
    206216                <#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"> 
    214234                    <div id="create.container"> 
    215235                        <form id="createf" name="createf" enctype="application/x-www-form-urlencoded"> 
     
    220240                        </form> 
    221241                    </div> 
    222                 </div> 
     242                </div> --> 
    223243                </#if> 
    224244            </div> <#-- /Toolbar --> 
     
    514534                }); 
    515535            } 
    516              
     536 
    517537            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                } 
    532565            } 
    533566 
Note: See TracChangeset for help on using the changeset viewer.