diff --git a/workflow/engine/methods/appFolder/appFolderAjax.php b/workflow/engine/methods/appFolder/appFolderAjax.php
index d958040e9..fd163c5b4 100755
--- a/workflow/engine/methods/appFolder/appFolderAjax.php
+++ b/workflow/engine/methods/appFolder/appFolderAjax.php
@@ -764,19 +764,55 @@ function moveAction()
{
copyMoveAction("move");
}
+
+function findChilds($uidFolder, $path, $arrayPath) {
+ $Criteria = new Criteria ();
+ $Criteria->addSelectColumn ( AppFolderPeer::FOLDER_UID );
+ $Criteria->addSelectColumn ( AppFolderPeer::FOLDER_PARENT_UID );
+ $Criteria->addSelectColumn ( AppFolderPeer::FOLDER_NAME );
+ $Criteria->addSelectColumn ( AppFolderPeer::FOLDER_CREATE_DATE );
+ $Criteria->addSelectColumn ( AppFolderPeer::FOLDER_UPDATE_DATE );
+
+ $Criteria->add(AppFolderPeer::FOLDER_PARENT_UID, $uidFolder);
+ $Criteria->addAscendingOrderByColumn(AppFolderPeer::FOLDER_NAME);
+
+ $rs = appFolderPeer::doSelectRS ( $Criteria );
+ $rs->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
+
+ $folderResult = array ();
+ $appFoder = new AppFolder ();
+ while ($rs->next()) {
+ $row = $rs->getRow();
+ $path = ($uidFolder != '/')? $path : '';
+ $path = $path."/".$row['FOLDER_NAME'];
+ $arrayPath[] = array($row['FOLDER_UID'],$path);
+ $arrayPath = findChilds($row['FOLDER_UID'], $path, $arrayPath);
+ }
+ return $arrayPath;
+}
function copyMoveAction($type)
{
require_once ("classes/model/AppFolder.php");
$oPMFolder = new AppFolder ();
$dir=$_REQUEST['dir'];
+ $paths = array();
+ $folderResult = findChilds('/', '', $paths);
+ $withCombo = 30;
+ foreach ($folderResult as $key => $value) {
+ $count = strlen($value[1]);
+ $withCombo = ($count>$withCombo) ? $count : $withCombo;
+ }
+ $root = array("/","/");
+ array_unshift ($folderResult,$root);
$dirCompletePath=$oPMFolder->getFolderStructure($dir);
- $copyDialog["xtype"]="form";
- $copyDialog["id"]="simpleform";
- $copyDialog["labelWidth"]=125;
- $copyDialog["width"]=340;
- $copyDialog["url"]="URL_SCRIPT";
+ $copyDialog["xtype"] = "form";
+ $copyDialog["id"] = "simpleform";
+ $copyDialog["labelWidth"] = 80;
+ $copyDialog["width"] = 500;
+ $copyDialog["modal"] = true;
+ $copyDialog["url"] = "URL_SCRIPT";
if ($type=="copy") {
$copyDialog["dialogtitle"]= "Copy";
} else {
@@ -787,19 +823,28 @@ function copyMoveAction($type)
$copyDialog["items"]=array();
$itemField=array();
- $itemField["xtype"]="textfield";
- $itemField["fieldLabel"]="Destination";
- $itemField["name"]="new_dir_label";
- $itemField["value"]=$dirCompletePath['PATH'];
- $itemField["width"]=175;
+ $itemField["xtype"] = "combo";
+ $itemField["hiddenName"] = "new_dir";
+ $itemField["id"] = "new_dir_label";
+ $itemField["name"] = "new_dir_label";
+ $itemField["mode"] = "local";
+ $itemField["triggerAction"] = "all";
+ $itemField["store"] = $folderResult;
+ $itemField["valueField"] = "FOLDER_UID";
+ $itemField["displayField"] = "FOLDER_NAME";
+ $itemField["selectOnFocus"] = true;
+ $itemField["tpl"] = '{field2}
';
+ $itemField["fieldLabel"] = "Destination";
+ $itemField["emptyText"] = "Select a directory...";
+ $itemField["width"] = 390;
$itemField["allowBlank"]=false;
$copyDialog["items"][]=$itemField;
$itemField=array();
$itemField["xtype"]="hidden";
- $itemField["fieldLabel"]="Destination";
- $itemField["name"]="new_dir";
- $itemField["value"]="$dirCompletePath";
+ $itemField["fieldLabel"]="copyMove";
+ $itemField["name"]="copyMove";
+ $itemField["value"]="all";
$itemField["width"]=175;
$itemField["allowBlank"]=false;
$copyDialog["items"][]=$itemField;
@@ -813,47 +858,58 @@ function copyMoveAction($type)
$itemButton["text"]= "Move";
}
$itemButton["handler"]="copyDialogCreateButtonFunction";
+ $itemButton["id"]="buttonCopy";
$functionsToReplace["copyDialogCreateButtonFunction"]="function() {
- form = Ext.getCmp('simpleform').getForm();
- statusBarMessage('Please wait...', true, true);
- var requestParams = getRequestParams();
- requestParams.confirm = 'true';
- requestParams.action = '".$type."Execute';
- form.submit({
- //reset: true,
- reset: false,
- success: function(form, action) {
+ form = Ext.getCmp('simpleform').getForm();
+ var requestParams = getRequestParams();
+ requestParams.confirm = 'true';
+ if (Ext.getCmp('new_dir_label').getValue() == '') {
+ statusBarMessage('Select a Directory', false, false);
+ return false;
+ }
+ requestParams.new_dir = Ext.getCmp('new_dir_label').getValue()
+ statusBarMessage('Please wait...', true, true);
+ Ext.getCmp('new_dir_label').disable();
+ Ext.getCmp('buttonCopy').disable();
+ Ext.getCmp('buttonCancel').disable();
+ requestParams.action = '".$type."Execute';
+ form.submit({
+ reset: false,
+ success: function(form, action) {
if(action.result.success){
- if(action.result.success=='success'){
- statusBarMessage(action.result.message, false, true);
- try{
- dirTree.getSelectionModel().getSelectedNode().reload();
- } catch(e) {}
- datastore.reload();
- Ext.getCmp('dialog').destroy();
+ if(action.result.success=='success'){
+ statusBarMessage(action.result.message, false, true);
+ var node = dirTree.getNodeById('root');
+ node.select();
+ datastore.directory = 'root';
+ datastore.reload();
+ dirTree.getRootNode().reload();
+ requestParams.dir = 'root';
+ Ext.getCmp('dialog').destroy();
}else{
- statusBarMessage(action.result.message, false, false);
+ statusBarMessage(action.result.message, false, false);
}
- }else{
+ }else{
if(!action.result) return;
Ext.MessageBox.alert('Error!', action.result.error);
statusBarMessage(action.result.error, false, false);
- }
- },
- failure: function(form, action) {
- if(!action.result) return;
- Ext.MessageBox.alert('Error!', action.result.error);
- statusBarMessage(action.result.error, false, false);
- },
- scope: form,
- // add some vars to the request, similar to hidden fields
- params: requestParams
- });
- }";
+ }
+ },
+ failure: function(form, action) {
+ if(!action.result) return;
+ Ext.MessageBox.alert('Error!', action.result.error);
+ statusBarMessage(action.result.error, false, false);
+ },
+ scope: form,
+ // add some vars to the request, similar to hidden fields
+ params: requestParams
+ });
+ }";
$copyDialog["buttons"][]=$itemButton;
$itemButton=array();
$itemButton["text"]="Cancel";
+ $itemButton["id"]="buttonCancel";
$itemButton["handler"]= "copyDialogCancelButtonFunction";
$functionsToReplace["copyDialogCancelButtonFunction"]="function() { Ext.getCmp('dialog').destroy(); }";
$copyDialog["buttons"][]=$itemButton;
@@ -924,6 +980,54 @@ function overwriteFile ($node, $fileName) {
}
}
+
+function copyMoveExecuteTree($uidFolder, $newUidFolder)
+{
+ require_once ("classes/model/AppDocument.php");
+ require_once ('classes/model/AppFolder.php');
+
+ $appFoder = new AppFolder ();
+ $folderContent = $appFoder->getFolderContent($uidFolder);
+ $folderOrigin = $appFoder->getFolderStructure($uidFolder);
+ $FolderParentUid = trim($newUidFolder);//$form['FOLDER_PARENT_UID'];
+ $FolderName = $folderOrigin[$uidFolder]['NAME'];
+ $newFolderContent = $appFoder->createFolder ($FolderName, $FolderParentUid, "new");
+
+ $appDocument = new AppDocument();
+ if ($_REQUEST['action'] == 'moveExecute') {
+ $appFoder->remove($uidFolder,$folderOrigin[$uidFolder]['PARENT']);
+ }
+ $action = $_REQUEST['action'];
+ foreach ($folderContent['documents'] as $keys => $value) {
+ $docInfo = $appDocument->load($value['APP_DOC_UID'],$value['DOC_VERSION']);
+ $docInfo['FOLDER_UID'] = $newFolderContent['folderUID'];
+ $docInfo['APP_DOC_CREATE_DATE'] = date('Y-m-d H:i:s');
+ $docInfo['APP_DOC_STATUS'] = 'ACTIVE';
+ if ($action == 'copyExecute') {
+ unset($docInfo['APP_DOC_UID']);
+ $docUid = $appDocument->create($docInfo);
+ } else {
+ $appDocument->update($docInfo);
+ }
+ }
+ return $newFolderContent['folderUID'];
+}
+
+function checkTree ($uidOriginFolder, $uidNewFolder)
+{
+ require_once ('classes/model/AppFolder.php');
+ $appFoder = new AppFolder ();
+ $newFoldercontent = copyMoveExecuteTree($uidOriginFolder, $uidNewFolder);
+ $listfolder = $appFoder->getFolderList($uidOriginFolder);
+ if (count($listfolder)>0) {
+ foreach ($listfolder['folders'] as $key => $value) {
+ copyMoveExecuteTree($value['FOLDER_UID'],$newFoldercontent);
+ }
+ } else {
+ return;
+ }
+}
+
function uploadExternalDocument()
{
$response['action']=$_POST['action']. " - ".$_POST['option'];
@@ -980,19 +1084,30 @@ function uploadExternalDocument()
}
} elseif (isset($_POST['selitems'])) {
$response="";
- $response['msg']="correct reload";
+ $response['msg']= "correct reload";
$response['success']=true;
- require_once ("classes/model/AppDocument.php");
- require_once ('classes/model/AppFolder.php');
- $oAppDocument = new AppDocument();
- foreach ($_POST['selitems'] as $docId) {
- $arrayDocId = explode ('_',$docId);
- //print "$docId";
- $docInfo=$oAppDocument->load($arrayDocId[0]);
- $docInfo['FOLDER_UID'] = $_POST['new_dir'];
- $docInfo['APP_DOC_CREATE_DATE'] = date('Y-m-d H:i:s');
- $oAppDocument->update($docInfo);
- //G::pr($docInfo);
+ if (isset($_REQUEST['option']) && isset($_REQUEST['copyMove'])) {
+ if ($_REQUEST['option'] == 'directory' && $_REQUEST['copyMove'] == 'all') {
+ $response['action'] = $_POST['action']. " - ".$_POST['option'];
+ $response['error'] = "Complete";
+ $response['message']= str_replace("Execute", "", $_POST['action']). " ". "Complete";
+ $response['success']= 'success';
+ $response['node'] = '';
+ $_POST ['node'] = "";
+ $newFolderUid = checkTree($_REQUEST['dir'], $_REQUEST['new_dir']);
+ }
+ $_POST['selitems'] = array();
+ } else {
+ require_once ("classes/model/AppDocument.php");
+ $oAppDocument = new AppDocument();
+ foreach ($_POST['selitems'] as $docId) {
+ $arrayDocId = explode ('_',$docId);
+ $docInfo=$oAppDocument->load($arrayDocId[0]);
+ $docInfo['FOLDER_UID'] = $_POST['new_dir'];
+ $docInfo['APP_DOC_CREATE_DATE'] = date('Y-m-d H:i:s');
+ $oAppDocument->update($docInfo);
+ //G::pr($docInfo);
+ }
}
}
//G::pr($quequeUpload);