Przeglądaj źródła

Fix: Make sure that the "ownership lock" is always released when clicking on the "Cancel" button of a form.

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@3716 a333f486-631f-4898-b8df-5754b55c2be0
dflaven 9 lat temu
rodzic
commit
7fd1127dd2

+ 2 - 2
application/cmdbabstract.class.inc.php

@@ -2213,7 +2213,7 @@ EOF
 
 		// Hook the cancel button via jQuery so that it can be unhooked easily as well if needed
 		$sDefaultUrl = utils::GetAbsoluteUrlAppRoot().'pages/UI.php?operation=cancel&'.$oAppContext->GetForLink();
-		$oPage->add_ready_script("$('#form_{$this->m_iFormId} button.cancel').click( function() { BackToDetails('$sClass', $iKey, '$sDefaultUrl')} );");
+		$oPage->add_ready_script("$('#form_{$this->m_iFormId} button.cancel').click( function() { BackToDetails('$sClass', $iKey, '$sDefaultUrl', $sJSToken)} );");
 		$oPage->add("</form>\n");
 		
 		if (isset($aExtraParams['wizard_container']) && $aExtraParams['wizard_container'])
@@ -2467,7 +2467,7 @@ EOF
 		}
 		$oAppContext = new ApplicationContext();
 		$oPage->add($oAppContext->GetForForm());
-		$oPage->add("<button type=\"button\" class=\"action cancel\" onClick=\"BackToDetails('$sClass', ".$this->GetKey().")\"><span>".Dict::S('UI:Button:Cancel')."</span></button>&nbsp;&nbsp;&nbsp;&nbsp;\n");
+		$oPage->add("<button type=\"button\" class=\"action cancel\" onClick=\"BackToDetails('$sClass', ".$this->GetKey().", '', '$sOwnershipToken')\"><span>".Dict::S('UI:Button:Cancel')."</span></button>&nbsp;&nbsp;&nbsp;&nbsp;\n");
 		$oPage->add("<button type=\"submit\" class=\"action\"><span>$sActionLabel</span></button>\n");
 		$oPage->add("</form>\n");
 		$oPage->add("</div>\n");

+ 7 - 2
application/itopwebpage.class.inc.php

@@ -459,12 +459,17 @@ EOF
 			window.history.back();
 		}
 		
-		function BackToDetails(sClass, id, sDefaultUrl)
+		function BackToDetails(sClass, id, sDefaultUrl, sOwnershipToken)
 		{
 			window.bInCancel = true;
 			if (id > 0)
 			{
-				window.location.href = AddAppContext(GetAbsoluteUrlAppRoot()+'pages/UI.php?operation=release_lock_and_details&class='+sClass+'&id='+id);
+				sToken = '';
+				if (sOwnershipToken != undefined)
+				{
+					sToken = '&token='+sOwnershipToken;
+				}
+				window.location.href = AddAppContext(GetAbsoluteUrlAppRoot()+'pages/UI.php?operation=release_lock_and_details&class='+sClass+'&id='+id+sToken);
 			}
 			else
 			{

+ 1 - 1
application/uilinkswizard.class.inc.php

@@ -275,7 +275,7 @@ EOF
 		$this->DisplayFormTable($oP, $this->m_aTableConfig, $aForm);
 		$oP->add("<span style=\"float:left;\">&nbsp;&nbsp;&nbsp;<img src=\"../images/tv-item-last.gif\">&nbsp;&nbsp;<input id=\"btnRemove\" type=\"button\" value=\"".Dict::S('UI:RemoveLinkedObjectsOf_Class')."\" onClick=\"RemoveSelected();\" >");
 		$oP->add("&nbsp;&nbsp;&nbsp;<input id=\"btnAdd\" type=\"button\" value=\"".Dict::Format('UI:AddLinkedObjectsOf_Class', MetaModel::GetName($this->m_sLinkedClass))."\" onClick=\"AddObjects();\"></span>\n");
-		$oP->add("<span style=\"float:right;\"><input id=\"btnCancel\" type=\"button\" value=\"".Dict::S('UI:Button:Cancel')."\" onClick=\"BackToDetails('".$sTargetClass."', ".$this->m_iObjectId.");\">");
+		$oP->add("<span style=\"float:right;\"><input id=\"btnCancel\" type=\"button\" value=\"".Dict::S('UI:Button:Cancel')."\" onClick=\"BackToDetails('".$sTargetClass."', ".$this->m_iObjectId.", '', '');\">");
 		$oP->add("&nbsp;&nbsp;&nbsp;<input id=\"btnOk\" type=\"submit\" value=\"".Dict::S('UI:Button:Ok')."\"></span>\n");
 		$oP->add("<span style=\"clear:both;\"><p>&nbsp;</p></span>\n");
 		$oP->add("</div>\n");

+ 5 - 0
pages/UI.php

@@ -356,6 +356,11 @@ try
 		$sClass = utils::ReadParam('class', '');
 		$id = utils::ReadParam('id', '');
 		$oObj = MetaModel::GetObject($sClass, $id);
+		$sToken = utils::ReadParam('token', '');
+		if ($sToken != '')
+		{
+			iTopOwnershipLock::ReleaseLock($sClass, $id, $sToken);
+		}
 		cmdbAbstractObject::ReloadAndDisplay($oP, $oObj, array('operation' => 'details'));
 		break;