/******************************************************************************* * IBM Confidential * * OCO Source Materials * * A and PM: PD * * (c) Copyright IBM Corp. 2014 * * The source code for this program is not published or otherwise divested of * its trade secrets, irrespective of what has been deposited with the U.S. * Copyright Office. ******************************************************************************/ define([ "dojo/_base/declare", "bux/dialogs/FileDialog", "dojo/_base/array" ],function(declare, FileDialog, array){ var pdFileDialog = declare("pd/widgets/FileDialog", [FileDialog], { //override bux function, so that my folder will be the default. createSpecialLocationsUiElements: function(topLevelNodes) { if ( !topLevelNodes ) { // this.model.getChildren() is calling the callback with null when there's an error in the request. this.onCancel(); return; } this._topLevelNodes = topLevelNodes; //Reverse order for now so that the Public Folders appears first. for (var i = topLevelNodes.length - 1; i >= 0; i--) { this._addSpecialLocationFromTreeView(topLevelNodes[i]); } this.onSpecialLocationsClick("myFolders"); this._locationSelector.dropDown = this._locationSelector.createMenu(); this._locationSelector.startup(); }, _addSpecialLocationFromTreeView: function(node) { //add supplementId for location buttons. this.inherited(arguments); var sNodeClass = node.i.bux$uiclass; var parentNode = this._leftSectionSpecialLocations.domNode.childNodes; var currentNode = parentNode[parentNode.length - 1]; if (sNodeClass == "publicFolders") { pd.setSupplementId(currentNode, "PUBLISH_DIALOG_PUBLIC_FOLDERS"); } else if (sNodeClass == "myFolders") { pd.setSupplementId(currentNode, "PUBLISH_DIALOG_MY_FOLDERS"); } }, onNewFolderButtonClick: function() { //add supplementId for input box and action buttons in newFolder dialog. this.inherited(arguments); if (this.simplePromptDialog) { var textField = this.simplePromptDialog.textField; pd.setSupplementId(textField.domNode, "PUBLISH_DIALOG_NEW_FOLDER_NAME_INPUT"); pd.setSupplementId(textField.oDlgBtns[0].domNode, "PUBLISH_DIALOG_NEW_FOLDER_OK_BUTTON"); pd.setSupplementId(textField.oDlgBtns[1].domNode, "PUBLISH_DIALOG_NEW_FOLDER_CANCEL_BUTTON"); } }, _newFolderErrHandler: function(folderName, error){ var sMessageDesc = BUXMSG.FDG.IDS_FDG_NEW_FOLDER_ERROR_DESC; var bFolderExists = (error.message && (error.message.indexOf('CM-REQ-4024')>=0 || error.message.indexOf('BUX-ACM-1507')>=0)) || error.status==409; if(bFolderExists){ sMessageDesc = dojo.string.substitute(BUXMSG.FDG.IDS_FDG_NEW_FOLDER_ALREADY_EXISTS_ERROR, [bux.Bidi.enforceTextDir(folderName)]); }else{ this.simplePromptDialog.destroyRecursive(); delete this.simplePromptDialog; } return pd.messageBox(pd.statics.MB_ERROR, BUXMSG.FDG.IDS_FDG_NEW_FOLDER_ERROR, sMessageDesc, error.message); } }); var SaveDialog = declare("pd/widgets/SaveDialog", [bux.dialogs.SaveDialog, pdFileDialog], { constructor: function(args){ this.inherited(arguments); this.pdDefaultName = args.pdDefaultName; var ALLOWED_OPERATION = ["refresh", "createNewFolder"]; dojo.mixin(bux.IWidgetUtils, { //override bux object so that "refresh" and "createNewFolder" button showed in the publish dialog. getIWidgetById: function(){ return { iScope:{ isOperationAllowed: function(operation) { return array.indexOf(ALLOWED_OPERATION, operation) != -1; } } }; } }); }, checkAndEnableMainAction: function(_item) { var sSaveAsName = this._objectNameField.get('value'); if(bux.Bidi.getTextDir()) { if(!_item && dojo.isIE) { this._objectNameField.focusNode.style.overflowX = "visible"; } if(!_item || !_item.keyCode || bux.Bidi.doesKeyImpactsDir(_item.keyCode)) { bux.Bidi.setInputDirByValue(this._objectNameField.domNode, sSaveAsName); } } var bIsValid = ( ((this.oCurrentPath && (this.oCurrentPath.bux$uiclass == "myFolders" || this.oCurrentPath.bux$uiclass == "publicFolders")) || (_item && bux.CMHelper.hasPermissions(_item.cm$permissions, "WT&") && this._getCurrentNodeFromView())) && (sSaveAsName && dojo.trim(sSaveAsName).length >0 ? true : false)); if(this._aButtonObjects && this._aButtonObjects[0]){ this._aButtonObjects[0].set( 'disabled', !bIsValid ); } this._bCanExecuteAction = bIsValid; return bIsValid; }, onMainAction: function() { if (this.saveAsHandler) { var saveAsName = this._objectNameField.get('value'); // check for presence of both ' and " - this is not supported by CM if (-1 != saveAsName.indexOf("'") && -1 != saveAsName.indexOf('"')) { bux.messageBox(bux.MB_ERROR, BUXMSG.CDG.IDS_CDG_SAVE_CHANGE_NAME_TITLE, dojo.string.substitute(BUXMSG.EDG.IDS_EDG_ERROR_MIXED_USE_QUOTES, [bux.Bidi.enforceTextDir(saveAsName)])); return; } var containerNodeFromView = this._getCurrentNodeFromView(); var containerNode = null; if (containerNodeFromView) { var containerNodeItem = containerNodeFromView.getItem(); if (containerNodeItem && containerNodeItem.cm$objectClass != "folder" && containerNodeItem.cm$objectClass != "package") { containerNode = containerNodeFromView.getParent(); } else { containerNode = containerNodeFromView; } } var fHandler = this.saveAsHandler; var oLink = null; var fCallback = this.callBackFunction; if (saveAsName && containerNode && this.getCurrentTreeView().getNodeLink(containerNode, "up")) { oLink = this.getCurrentTreeView().getNodeLink(containerNode, "self"); } else if ((this.oCurrentPath.bux$uiclass == "myFolders" || this.oCurrentPath.bux$uiclass == "publicFolders") && saveAsName) { var _myFolderPath = dojox.json.query("?rel='self'",this.oCurrentPath.link); oLink = _myFolderPath[0].href; } var oContainerItem = {"i" : this._getCurrentSelectedContainer()};//Extra parent container item if (oLink) { // Refresh the Tree's data for the next time the dialog is opened. if (this.treeView) { this.treeView.clearTree(); } if (this.listView) { this.listView.clearTree(); } this.hide(); setTimeout(function() {fHandler(saveAsName, oLink, fCallback, oContainerItem)}, 10); } else { window.alert(BUXMSG.FDG.IDS_FDG_INVALID_ARGUMENTS); } } }, startup: function() { this.inherited(arguments); this._objectNameField.set("value", this.pdDefaultName); //add supplementId for publish dialog pd.setSupplementId(this.domNode, "PUBLISH_DIALOG"); //add supplementId for action buttons pd.setSupplementId(this._aButtonObjects[0].domNode, "PUBLISH_DIALOG_PUBLISH_BUTTON"); pd.setSupplementId(this._aButtonObjects[1].domNode, "PUBLISH_DIALOG_CANCEL_BUTTON"); //add supplementId for newFolder button pd.setSupplementId(this.newFolderButton.domNode, "PUBLISH_DIALOG_NEW_FOLDER"); //add supplementId for name input box pd.setSupplementId(this._objectNameField.domNode, "PUBLISH_DIALOG_NAME_INPUT"); } }); return SaveDialog; });