First, create a derived work record and add the fields HTMLAREA and EP_STORE_PB
Second, add the fields from step one to the EP_APPR_MAIN1 and EP_APPR_BASE1.
*Make sure you set the EP_STORE_PB to invisible and modifiable via JavaScript and give it a page field name of ZZ_EP_STORE.
Third, add the following PeopleCode to the work records.
Add some FieldChange PeopleCode to the EP_STORE_PB to save the Document. This can be copied from the Delivered Save Logic.
/******************************************* RITM0054746 8.53 TOOLS UPGRADE UMBMOD KCW002 Autosave code changed to for new timout logic in 8.53 *****************************************/ import EP_FUNCTIONS:EP_Utilities; Declare Function TransferToDocumentSelection PeopleCode FUNCLIB_EP.EP_APPRAISAL_ID FieldFormula; Global Record &EP_GBLKEYS_WRK; Component string &PushButton; Evaluate %Component When = Component.EP_APPR_BASE &ReturnCode = "RETURN_EST_SAVE"; &TransferPg = "Page.EP_APPR_BASE1"; Break; When = Component.EP_APPR_MAIN &ReturnCode = "RETURN_EVL_SAVE"; &TransferPg = "Page.EP_APPR_MAIN1"; Break; When-Other Exit; Break; End-Evaluate; /* Clear error messages, if any, and Save */ EP_BTN_LINK_WRK.EP_HTMLAREA_ERROR1.SetDefault(); EP_BTN_LINK_WRK.EP_HTMLAREA_ERROR2.SetDefault(); EP_BTN_LINK_WRK.EP_HTMLAREA_ERROR1.Visible = False; EP_BTN_LINK_WRK.EP_HTMLAREA_ERROR2.Visible = False; &PushButton = "STORE"; DoSaveNow(); Rem: Set Return Status to display a confirmation message; &EP_GBLKEYS_WRK.EP_RETURN_STATUS.Value = &ReturnCode; Rem: Set the Return Status HTML Area; Local EP_FUNCTIONS:EP_Utilities &EP_Utilities = create EP_FUNCTIONS:EP_Utilities(); &EP_Utilities.SetReturnStatusHtmlArea(); Rem: Set focus to the top of the page for the return status message; If ZZ_DERIVED_EP.EP_STORE_PB.Value = "T" Then REM DO TIMEOUT; ZZ_DERIVED_EP.HTMLAREA.Value = GetHTMLText(HTML.ZZ_EP_TIMEOUT); Else ZZ_DERIVED_EP.EP_STORE_PB.Value = ""; End-If;
Also add some PeopleCode to the RowInit of the HTMLAREA.
/******************************************* RITM0054746 8.53 TOOLS UPGRADE UMBMOD KCW002 Autosave code changed to for new timout logic in 8.53 Setup JavaScript for UMB Autosave timeout *****************************************/ ZZ_DERIVED_EP.HTMLAREA.Value = GetHTMLText(HTML.ZZ_EP_AUTOSAVE);
Fourth, create two HTML Objects.
HTML.ZZ_EP_AUTOSAVE below:
<input type="hidden" name="ZZ_EP_STORE" id="ZZ_EP_STORE" value=""/> <script type="text/javascript"> threadLock = false; var xStore = document.getElementById("ZZ_EP_STORE"); function user_function() { //alert('starting process'); //debugger; if (!threadLock) { threadLock = true; if ("%page" == "EP_APPR_MAIN1" || "%page" == "EP_APPR_BASE1" ) { xStore.value = 'T'; //alert(xStore.value); document.%formname.submit(); } } } </script> <script type="text/javascript" language="javascript"> window.onbeforeunload = function(e) { var changes = checkFormChanged(document.%formname); if (changes && !threadLock) { threadLock = true; if ("%page" == "EP_APPR_MAIN1" || "%page" == "EP_APPR_BASE1" ) { return "You have unsaved changes, please save them." }; } } </script> <script type="text/javascript"> function adaptLinks() { var links = document.getElementsByTagName('a'); for (i = 0; i != links.length; i++) { links[i].onclick = (function () { var origOnClick = links[i].onclick; return function (e) { //add logic to save if the user is adding and item to the document //linkId = this.id.split('$'); //if (linkId[0] == 'EP_BTN_LINK_WRK_EP_ADD_ITEM_PB') // { // xStore.value = 'Z'; // } //end mod to auto save if the user is adding an item to the document window.onbeforeunload = function(){}; if (origOnClick != null && !origOnClick()) { return false; } } })(); } } (function() { var originaldisplayTimeoutMsg = displayTimeoutMsg2; displayTimeoutMsg2 = function() { window.onbeforeunload = function(){}; user_function(); } })(); adaptLinks(); </script>
HTML.ZZ_EP_TIMEOUT below:
<input type="hidden" name="TIMEOUT" value=""/> <script type="text/javascript"> self.location=timeOutURL; ; </script>