From fc54701386d3b98c67cc85be6c722c4aa524d226 Mon Sep 17 00:00:00 2001 From: jennylee Date: Thu, 29 Nov 2012 16:35:20 -0400 Subject: [PATCH] BUG-5437 New Feature 'Edit the file Name' in HOME -> DOCUMENTS. I add a new function: UPDATE in 'engine/classes/model/AppFolder.php', and in 'engine/methods/appFolder/appFolderAjax.php' to save the new name of the file. --- workflow/engine/classes/model/AppFolder.php | 47 ++++++++++++++++++- .../methods/appFolder/appFolderAjax.php | 37 +++++++++++++-- .../engine/templates/cases/casesDocuments.js | 29 ++++++------ 3 files changed, 95 insertions(+), 18 deletions(-) diff --git a/workflow/engine/classes/model/AppFolder.php b/workflow/engine/classes/model/AppFolder.php index cc04b654b..8da08f5ae 100755 --- a/workflow/engine/classes/model/AppFolder.php +++ b/workflow/engine/classes/model/AppFolder.php @@ -24,7 +24,6 @@ */ class AppFolder extends BaseAppFolder { - /** * * @param string $folderName @@ -86,6 +85,52 @@ class AppFolder extends BaseAppFolder } } + /** + * Update the application document registry + * + * @param array $aData + * @return string + * + */ + public function update ($aData) + { + $oConnection = Propel::getConnection( AppDocumentPeer::DATABASE_NAME ); + try { + $oAppFolder = AppFolderPeer::retrieveByPK( $aData['FOLDER_UID'] ); + if (! is_null( $oAppFolder )) { + $oAppFolder->fromArray( $aData, BasePeer::TYPE_FIELDNAME ); + if ($oAppFolder->validate()) { + $oConnection->begin(); + if (isset( $aData['FOLDER_NAME'] )) { + $oAppFolder->setFolderName( $aData['FOLDER_NAME'] ); + } + if (isset( $aData['FOLDER_UID'] )) { + $oAppFolder->setFolderUid( $aData['FOLDER_UID'] ); + } + if (isset( $aData['FOLDER_UPDATE_DATE'] )) { + $oAppFolder->setFolderUpdateDate( $aData['FOLDER_UPDATE_DATE'] ); + } + $iResult = $oAppFolder->save(); + $oConnection->commit(); + return $iResult; + } else { + $sMessage = ''; + $aValidationFailures = $oAppFolder->getValidationFailures(); + foreach ($aValidationFailures as $oValidationFailure) { + $sMessage .= $oValidationFailure->getMessage() . '
'; + } + throw (new Exception( 'The registry cannot be updated!
' . $sMessage )); + } + } else { + throw (new Exception( 'This row doesn\'t exist!' )); + } + } catch (Exception $oError) { + $oConnection->rollback(); + throw ($oError); + } + } + + /** * * @param string $folderPath diff --git a/workflow/engine/methods/appFolder/appFolderAjax.php b/workflow/engine/methods/appFolder/appFolderAjax.php index 4cdfce319..ddea3f606 100755 --- a/workflow/engine/methods/appFolder/appFolderAjax.php +++ b/workflow/engine/methods/appFolder/appFolderAjax.php @@ -13,11 +13,42 @@ if (! function_exists ($_REQUEST ['action'])) { die (); } -$functionName = $_REQUEST ['action']; -$functionParams = isset ($_REQUEST ['params']) ? $_REQUEST ['params'] : array (); +if (($_REQUEST['action']) != 'rename') { + $functionName = $_REQUEST ['action']; + $functionParams = isset ($_REQUEST ['params']) ? $_REQUEST ['params'] : array (); + + $functionName ($functionParams); +} else { + $functionName = 'renameFolder'; + $functionParams = isset ($_REQUEST ['params']) ? $_REQUEST ['params'] : array (); + $oldname = $_REQUEST ['item']; + $newname = $_REQUEST ['newitemname']; + $uid = $_REQUEST ['selitems']; + + $functionName ($oldname, $newname, $uid); +} -$functionName ($functionParams); ///////////////////////////////////////////// + +function renameFolder($oldname, $newname, $uid) +{ + $folder = new AppFolder(); + + //Clean Folder name (delete spaces...) + $newname = trim( $newname ); + + $fiels = array(); + + $fiels['FOLDER_UID'] = $uid[0]; + $fiels['FOLDER_NAME'] = $newname; + $fiels['FOLDER_UPDATE_DATE'] = date('Y-m-d H:i:s'); + + $folder->update($fiels); + + $msgLabel= G::LoadTranslation ('ID_EDIT_SUCCESSFULLY'); + echo "{action: '', error:'error',message: '$msgLabel', success: 'success',folderUID: 'root'}"; +} + /** * delete folders and documents * created by carlos pacha carlos@colosa.com, pckrlos@gmail.com diff --git a/workflow/engine/templates/cases/casesDocuments.js b/workflow/engine/templates/cases/casesDocuments.js index 5f63c06d7..9cd6aeba0 100755 --- a/workflow/engine/templates/cases/casesDocuments.js +++ b/workflow/engine/templates/cases/casesDocuments.js @@ -73,6 +73,7 @@ streamFilefromPM=function(fileStream) { }; var swHandleCallbackRootNodeLoad = 0; +var dirTreeEd; function rootNodeCreate() { @@ -298,7 +299,6 @@ function openActionDialog( caller, action ) { case 'edit': case 'newFolder': case 'moveAction': - case 'rename': case 'search': case 'uploadDocument': requestParams = getRequestParams(); @@ -486,6 +486,9 @@ function openActionDialog( caller, action ) { * messageText, false, true ); }else{ alert("sadasd"); } */ break; + case 'rename': + dirTreeEd.triggerEdit(Ext.getCmp('dirTreePanel').getSelectionModel().getSelectedNode()); + break; } } @@ -737,8 +740,8 @@ datastore = new Ext.data.Store({ url : "../appFolder/appFolderAjax.php", directory : "/", params : { - start : 0, - limit : 25, + start: 0, + limit: 100, dir : this.directory, node : this.directory, option : "gridDocuments", @@ -1082,11 +1085,11 @@ function filterDataStore(btn, e) { } // add a paging toolbar to the grid's footer var gridbb = new Ext.PagingToolbar({ - store : datastore, - pageSize : 25 , - displayInfo : true, - // displayMsg : '% % %', - emptyMsg : TRANSLATIONS.ID_DISPLAY_EMPTY, + store: datastore, + pageSize: 100, + displayInfo: true, + displayMsg: _("ID_DISPLAY_TOTAL"), + emptyMsg: _("ID_DISPLAY_EMPTY"), beforePageText : TRANSLATIONS.ID_PAGE, // afterPageText : 'of %', firstText : TRANSLATIONS.ID_FIRST, @@ -1299,8 +1302,8 @@ function loadDir() { // console.trace(); datastore.load({ params : { - start : 0, - limit : 25, + start: 0, + limit: 100, dir : datastore.directory, node : datastore.directory, option : 'gridDocuments', @@ -1441,7 +1444,7 @@ function dirContext(node, e) { // Unselect all files in the grid ext_itemgrid.getSelectionModel().clearSelections(); - dirCtxMenu.items.get('dirCtxMenu_rename')[node.attributes.is_deletable ? 'disable': 'disable'](); + dirCtxMenu.items.get('dirCtxMenu_rename')[node.attributes.is_deletable ? 'enable': 'disable'](); // dirCtxMenu.items.get('dirCtxMenu_remove')[node.attributes.is_deletable ? 'enable':'disable'](); dirCtxMenu.items.get('dirCtxMenu_remove')[permitodelete==1 && node.attributes.id!='root' ? 'show':'hide'](); @@ -1502,8 +1505,6 @@ var dirCtxMenu = new Ext.menu.Menu( { id : 'dirCtxMenu_rename', iconCls: 'button_menu_ext ss_sprite ss_textfield_rename',// icon - // : - hidden: true, // '/images/documents/_fonts.png', text : TRANSLATIONS.ID_RENAME, handler : function() { dirCtxMenu.hide(); @@ -1898,7 +1899,7 @@ var documentsTab = { // create the editor for the directory // tree - var dirTreeEd = new Ext.tree.TreeEditor( + dirTreeEd = new Ext.tree.TreeEditor( dirTree, { allowBlank : false,