فهرست منبع

Fix gh-2629 Configmr - Save As Button

  - Add a 'Save Envrionment As' button to toolbar
  - 'Save Environment As' can be used in read-only or write-mode
    - In write-mode 'Save Environment As' will save in memory/volatile
      configuration to target file.
  - 'Save Environment As' in read-only mode will load the target
    file after save
  - 'Save Environment As...' from Navigator context menu (Hardware)
    will behave identically to the 'Save Envrionment As' button

Signed-off-by: Gleb Aronsky <gleb.aronsky@lexisnexis.com>
Gleb Aronsky 13 سال پیش
والد
کامیت
a742011eb4
2فایلهای تغییر یافته به همراه13 افزوده شده و 17 حذف شده
  1. 7 11
      esp/files/scripts/configmgr/navtree.js
  2. 6 6
      esp/services/WsDeploy/WsDeployService.cpp

+ 7 - 11
esp/files/scripts/configmgr/navtree.js

@@ -151,7 +151,6 @@ function invokeWizard() {
       {
         document.getElementById('ReadWrite').disabled = true;
         document.getElementById('savebutton').disabled = true;
-        document.getElementById('saveasbutton').disabled = false;
         document.getElementById('validatebutton').disabled = true;
       }
       document.getElementById('top1').style.display = 'block';
@@ -784,7 +783,7 @@ function createNavigationTree(navTreeData) {
       saveAndUnlockEnv();
     else if (menuItemName === 'Save Environment')
       saveEnvironment();
-    else if (menuItemName === 'Save Environment As...') {
+    else if (menuItemName === 'Save Environment As') {
       saveEnvironmentAs();
     }
     else if (menuItemName === 'Validate Environment')
@@ -1092,7 +1091,7 @@ function createNavigationTree(navTreeData) {
 
   var oContextMenuItems = {
     "Environment": [{text: "Save Environment", onclick: { fn: onMenuItemClick } },
-                    { text: "Save Environment As...", onclick: { fn: onMenuItemClick } },
+                    { text: "Save Environment As", onclick: { fn: onMenuItemClick } },
                     {text: "Validate Environment", onclick: { fn: onMenuItemClick } }
                           ],
     "Hardware": [
@@ -1222,7 +1221,8 @@ function createNavigationTree(navTreeData) {
         for (iGroup = 0; iGroup < groups.length; iGroup++) {
           if (typeof (groups[iGroup]) !== 'undefined')
             for (i = 0; i < groups[iGroup].length; i++)
-            groups[iGroup][i].cfg.setProperty("disabled", true);
+            if (groups[iGroup][i].element.innerText != "Save Environment As")
+              groups[iGroup][i].cfg.setProperty("disabled", true);
         }
       }
 
@@ -1817,14 +1817,15 @@ function saveEnvironment(saveas) {
 }
 
 function saveEnvironmentAs() {
- if (document.getElementById('ReadWrite').checked == true)
-   return;
+ getWaitDlg().show();
+
  var handleCancel = function() {
     getWaitDlg().hide();
     top.document.envSaveAsDialog.hide();
   }
 
   var handleOk = function() {
+    getWaitDlg().hide();
     loadAndCheckFileNames('3');
   };
 
@@ -3355,7 +3356,6 @@ function saveAndUnlockEnv() {
 function updateEnvCtrls(flag) {
  var Dom = YAHOO.util.Dom;
   var sbtn = Dom.get("savebutton");
-  var sabtn = Dom.get("saveasbutton");
   var vbtn = Dom.get("validatebutton");
   var fileopened = window.location.href.split(/\?/g);
   if (document.forms['treeForm'].wizops.value != '3' || fileopened.length <= 1)
@@ -3363,19 +3363,15 @@ function updateEnvCtrls(flag) {
   
   if (flag) {
     Dom.removeClass(sbtn, "yui-button-disabled");
-    Dom.addClass(sabtn, "yui-button-disabled");
     Dom.removeClass(vbtn, "yui-button-disabled");
     document.getElementById('savebutton').disabled = false;
-    document.getElementById('saveasbutton').disabled = true;
     document.getElementById('validatebutton').disabled = false;
     document.getElementById('ReadWrite').checked = true;
   }
   else {
     Dom.addClass(sbtn, "yui-button-disabled");
-    Dom.removeClass(sabtn, "yui-button-disabled");
     Dom.addClass(vbtn, "yui-button-disabled");
     document.getElementById('savebutton').disabled = true;
-    document.getElementById('saveasbutton').disabled = false;
     document.getElementById('validatebutton').disabled = true;
     document.getElementById('ReadWrite').checked = false;
   }

+ 6 - 6
esp/services/WsDeploy/WsDeployService.cpp

@@ -912,10 +912,11 @@ bool CWsDeployFileInfo::navMenuEvent(IEspContext &context,
         else
         {
           CWsDeployFileInfo* fi = m_pService->getFileInfo(envSaveAs, true);
-          StringBuffer sbUser, sbIp, sbXml, sbErrMsg;
-          if ((fi->isLocked(sbUser, sbIp) && m_userWithLock.length() != 0 && m_userIp.length() != 0 &&
-               !strcmp(m_userWithLock.str(), sbUser.str()) && !strcmp(m_userIp.str(), sbIp.str())) ||
-               (!fi->isLocked(sbUser, sbIp) && m_userWithLock.length() != 0 && m_userIp.length() != 0))
+          StringBuffer sbUser, sbIp, sbXml;
+
+          if ( fi->isLocked(sbUser, sbIp) == true)
+            throw MakeStringException(-1, "%s is locked by another user. File not saved.", envSaveAs);
+          if (isLocked(sbUser,sbIp) == true)  // if we are in write only mode then save the working environment
             toXML(&m_Environment->getPTree(), sbXml);
           else
             toXML(&m_constEnvRdOnly->getPTree(), sbXml);
@@ -925,9 +926,8 @@ bool CWsDeployFileInfo::navMenuEvent(IEspContext &context,
           else
             throw MakeStringException(-1, "Environment Save as operation has failed");
 
-          if (m_userWithLock.length() != 0 && m_userIp.length() != 0)
+        if (m_userWithLock.length() != 0 && m_userIp.length() != 0)
           {
-            unlockEnvironment(&context, &req.getReqInfo(), "", sbErrMsg);
             if (sbErrMsg.length())
             {
               resp.setXmlArgs(sbErrMsg.str());