diff --git a/CHANGELOG b/CHANGELOG index 55b24ce4d..d31d16d83 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -358,6 +358,9 @@ - use table for list of caches - propper error msgs when saving extension configuration - creating backup archives has been removed +- add javascript table sorter +- use table sorter on clear cache page and conversion services page +- droping an url in the drag&drop area will download the url -------------------------------------------------------------------------------- Changes in version 5.1.42 diff --git a/Gruntfile.js b/Gruntfile.js index 4f86296ac..b7524e85a 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -242,6 +242,15 @@ module.exports = function (grunt) { ], dest: bootstrapDir + '/editor.md', flatten: false + },{ + expand: true, + cwd: nodeDir + '/tablesort/dist/', + src: [ + 'tablesort.min.js', + 'sorts/**' + ], + dest: bootstrapDir + '/tablesort', + flatten: false },{ expand: true, src: [ diff --git a/composer-dist.json b/composer-dist.json index cc71eb34d..23a4d0311 100644 --- a/composer-dist.json +++ b/composer-dist.json @@ -71,7 +71,8 @@ "cache/memcached-adapter": "^1.2", "symfony/console": "^7.2", "twig/twig": "^3.0", - "league/commonmark": "^2.7" + "league/commonmark": "^2.7", + "symfony/process": "^7.3" }, "require-dev": { "composer/composer": "dev-main" diff --git a/composer.json b/composer.json index 4da7943e6..50aa63c2a 100644 --- a/composer.json +++ b/composer.json @@ -74,7 +74,8 @@ "cache/memcached-adapter": "^1.2", "symfony/console": "^7.2", "twig/twig": "^3.0", - "league/commonmark": "^2.7" + "league/commonmark": "^2.7", + "symfony/process": "^7.3" }, "require-dev": { "composer/composer": "dev-main", diff --git a/op/op.Ajax.php b/op/op.Ajax.php index 02b23b5f3..61d58f071 100644 --- a/op/op.Ajax.php +++ b/op/op.Ajax.php @@ -793,6 +793,217 @@ switch($command) { } break; /* }}} */ + case 'uploadremotedocument': /* {{{ */ + if($user) { + if(checkFormKey('')) { + if (!isset($_POST["folderid"]) || !is_numeric($_POST["folderid"]) || intval($_POST["folderid"])<1) { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText("invalid_folder_id"))); + exit; + } + + $folderid = $_POST["folderid"]; + $folder = $dms->getFolder($folderid); + + if (!is_object($folder)) { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText("invalid_folder_id"))); + exit; + } + + if ($folder->getAccessMode($user, 'addDocument') < M_READWRITE) { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText("access_denied"))); + exit; + } + + if($settings->_quota > 0) { + $remain = checkQuota($user); + if ($remain < 0) { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText("quota_exceeded", array('bytes'=>SeedDMS_Core_File::format_filesize(abs($remain)))))); + exit; + } + } + + $fullfile = tempnam(sys_get_temp_dir(), ''); + $fp = fopen($fullfile, 'w'); + set_time_limit(0); // unlimited max execution time + $headers = []; + $options = array( + CURLOPT_FILE => $fp, + CURLOPT_TIMEOUT => 120, + CURLOPT_URL => $_POST['remoteurl'], + CURLOPT_HEADER => false, + CURLOPT_FOLLOWLOCATION => true, + ); + $options[CURLOPT_HEADERFUNCTION] = function($curl, $header) use (&$headers) { + $len = strlen($header); + $header = explode(':', $header, 2); + if (count($header) < 2) // ignore invalid headers + return $len; + + $headers[strtolower(trim($header[0]))][] = trim($header[1]); + + return $len; + }; + if($settings->_proxyUrl) { + $options[CURLOPT_PROXY] = $settings->_proxyUrl; + if($settings->_proxyUser) { + $options[CURLOPT_PROXYUSERPWD] = $settings->_proxyUser.':'.$settings->_proxyPassword; + } + } + + $ch = curl_init(); + curl_setopt_array($ch, $options); + $result = curl_exec($ch); + curl_close($ch); + fclose($fp); + + $userfiletmp = $fullfile; + $userfilename = basename(urldecode($_POST['remoteurl'])); + if (preg_match('/Content-Disposition:.*?filename="(.+?)"/', $headers['content-disposition'][0], $matches)) { + $userfilename = $matches[1]; + } + + $userfiletype = $headers['content-type'][0]; + $fileType = ".".pathinfo($userfilename, PATHINFO_EXTENSION); + if($fileType == ".") { + $fileType = ".".SeedDMS_Core_File::fileExtension($userfiletype); + $userfilename .= ".".SeedDMS_Core_File::fileExtension($userfiletype); + } + + //$finfo = finfo_open(FILEINFO_MIME_TYPE); + //finfo_file($finfo, $fullfile); + + if (!empty($_POST["name"])) + $name = $_POST["name"]; + else + $name = utf8_basename($userfilename); + + /* Check if name already exists in the folder */ + if(!$settings->_enableDuplicateDocNames) { + if($folder->hasDocumentByName($name)) { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText("document_duplicate_name"))); + exit; + } + } + + if(isset($_POST["attributes"])) + $attributes = $_POST["attributes"]; + else + $attributes = array(); + + if(isset($_POST["comment"])) + $comment = trim($_POST["comment"]); + else + $comment = ''; + + // Get the list of reviewers and approvers for this document. + $reviewers = array(); + $approvers = array(); + $reviewers["i"] = array(); + $reviewers["g"] = array(); + $approvers["i"] = array(); + $approvers["g"] = array(); + $workflow = null; + + if($settings->_workflowMode == 'traditional' || $settings->_workflowMode == 'traditional_only_approval') { + // add mandatory reviewers/approvers + if($settings->_workflowMode == 'traditional') { + $mreviewers = getMandatoryReviewers($folder, null, $user); + if($mreviewers['i']) + $reviewers['i'] = array_merge($reviewers['i'], $mreviewers['i']); + if($mreviewers['g']) + $reviewers['g'] = array_merge($reviewers['g'], $mreviewers['g']); + } + $mapprovers = getMandatoryApprovers($folder, null, $user); + if($mapprovers['i']) + $approvers['i'] = array_merge($approvers['i'], $mapprovers['i']); + if($mapprovers['g']) + $approvers['g'] = array_merge($approvers['g'], $mapprovers['g']); + + } elseif($settings->_workflowMode == 'advanced') { + $workflow = $user->getMandatoryWorkflow(); + } + + $expires = false; + if($settings->_presetExpirationDate) { + $expires = strtotime($settings->_presetExpirationDate); + } + + $keywords = isset($_POST["keywords"]) ? trim($_POST["keywords"]) : ''; + + $categories = isset($_POST["categories"]) ? $_POST["categories"] : null; + $cats = array(); + if($categories) { + foreach($categories as $catid) { + if($cat = $dms->getDocumentCategory($catid)) + $cats[] = $cat; + } + } + + $controller = Controller::factory('AddDocument', array('dms'=>$dms, 'user'=>$user)); + $controller->setParam('documentsource', 'upload'); + $controller->setParam('folder', $folder); + $controller->setParam('fulltextservice', $fulltextservice); + $controller->setParam('name', $name); + $controller->setParam('comment', $comment); + $controller->setParam('expires', $expires); + $controller->setParam('keywords', $keywords); + $controller->setParam('categories', $cats); + $controller->setParam('owner', $user); + $controller->setParam('userfiletmp', $userfiletmp); + $controller->setParam('userfilename', $userfilename); + $controller->setParam('filetype', $fileType); + $controller->setParam('userfiletype', $userfiletype); + $minmax = $folder->getDocumentsMinMax(); + $deviation = rand(10, 1000)/10; + if($settings->_defaultDocPosition == 'start') + $controller->setParam('sequence', $minmax['min'] - $deviation); + else + $controller->setParam('sequence', $minmax['max'] + $deviation); + $controller->setParam('reviewers', $reviewers); + $controller->setParam('approvers', $approvers); + $controller->setParam('reqversion', 1); + $controller->setParam('versioncomment', ''); + $controller->setParam('attributes', $attributes); + $controller->setParam('attributesversion', array()); + $controller->setParam('workflow', $workflow); + $controller->setParam('notificationgroups', array()); + $controller->setParam('notificationusers', array()); + $controller->setParam('maxsizeforfulltext', $settings->_maxSizeForFullText); + $controller->setParam('defaultaccessdocs', $settings->_defaultAccessDocs); + + if(!$document = $controller()) { + $err = $controller->getErrorMsg(); + if(is_string($err)) + $errmsg = getMLText($err); + elseif(is_array($err)) { + $errmsg = getMLText($err[0], $err[1]); + } else { + $errmsg = $err; + } + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>$errmsg)); + exit; + } else { + // Send notification to subscribers of folder. + if($notifier) { + $notifier->sendNewDocumentMail($document, $user); + } + } + header('Content-Type: application/json'); + echo json_encode(array('success'=>true, 'message'=>getMLText('splash_document_updated'), 'data'=>$document->getID())); + add_log_line("updated document ".$document->getId()); + } else { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText('invalid_request_token'), 'data'=>'')); + } + } + break; /* }}} */ + case 'uploaddocument': /* {{{ */ if($user) { if(checkFormKey('')) { diff --git a/package.json b/package.json index 45ad8745b..6c449d109 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "popper.js": "^1.16.1", "select2": "^4.0.13", "spectrum-colorpicker2": "^2.0.10", + "tablesort": "^5.6.0", "vis-timeline": "^7.4.7" } } diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 603fe7200..03a2908c3 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -2077,7 +2077,8 @@ $(document).ready(function() { $attrs = $attribute->getValueAsArray(); $tmp = array(); foreach($attrs as $targetfolder) { - $tmp[] = ''.htmlspecialchars($targetfolder->getName()).''; + if ($targetfolder) + $tmp[] = ''.htmlspecialchars($targetfolder->getName()).''; } return implode('
', $tmp); break; @@ -2085,7 +2086,8 @@ $(document).ready(function() { $attrs = $attribute->getValueAsArray(); $tmp = array(); foreach($attrs as $targetdoc) { - $tmp[] = ''.htmlspecialchars($targetdoc->getName()).''; + if ($targetdoc) + $tmp[] = ''.htmlspecialchars($targetdoc->getName()).''; } return implode('
', $tmp); break; @@ -2093,7 +2095,8 @@ $(document).ready(function() { $attrs = $attribute->getValueAsArray(); $tmp = array(); foreach($attrs as $curuser) { - $tmp[] = htmlspecialchars($curuser->getFullname()." (".$curuser->getLogin().")"); + if ($curuser) + $tmp[] = htmlspecialchars($curuser->getFullname()." (".$curuser->getLogin().")"); } return implode('
', $tmp); break; @@ -2101,7 +2104,8 @@ $(document).ready(function() { $attrs = $attribute->getValueAsArray(); $tmp = array(); foreach($attrs as $curgroup) { - $tmp[] = htmlspecialchars($curgroup->getName()); + if ($curgroup) + $tmp[] = htmlspecialchars($curgroup->getName()); } return implode('
', $tmp); break; diff --git a/views/bootstrap/class.ClearCache.php b/views/bootstrap/class.ClearCache.php index 577ff62b7..cf373f504 100644 --- a/views/bootstrap/class.ClearCache.php +++ b/views/bootstrap/class.ClearCache.php @@ -13,11 +13,6 @@ * @version Release: @package_version@ */ -/** - * Include parent class - */ -//require_once("class.Bootstrap.php"); - /** * Class which outputs the html page for ClearCache view * @@ -31,11 +26,18 @@ */ class SeedDMS_View_ClearCache extends SeedDMS_Theme_Style { + function js() { /* {{{ */ + header('Content-Type: application/javascript; charset=UTF-8'); +?> + new Tablesort(document.getElementById('clearcachetable')); +'; echo ''.$title.''; - echo ''.($space !== NULL ? SeedDMS_Core_File::format_filesize($space) : '').''; - echo ''.($c !== NULL ? $c : '').''; + echo ''.($space !== NULL ? SeedDMS_Core_File::format_filesize($space) : '').''; + echo ''.($c !== NULL ? $c : '').''; echo ''; } @@ -44,6 +46,9 @@ class SeedDMS_View_ClearCache extends SeedDMS_Theme_Style { $user = $this->params['user']; $cachedir = $this->params['cachedir']; + $this->htmlAddHeader(''."\n", 'js'); + $this->htmlAddHeader(''."\n", 'js'); + $this->htmlStartPage(getMLText("admin_tools")); $this->globalNavigation(); $this->contentStart(); @@ -53,9 +58,9 @@ class SeedDMS_View_ClearCache extends SeedDMS_Theme_Style { ?>
- +
- + + new Tablesort(document.getElementById('servicetable')); +\n"; + echo "
CacheSizeFiles
CacheSizeFiles
\n"; echo ""; - echo "\n"; + echo "\n"; echo ""; echo ""; foreach($allservices as $from=>$tos) { @@ -48,6 +55,9 @@ class SeedDMS_View_ConversionServices extends SeedDMS_Theme_Style { $user = $this->params['user']; $conversionmgr = $this->params['conversionmgr']; + $this->htmlAddHeader(''."\n", 'js'); + $this->htmlAddHeader(''."\n", 'js'); + $this->htmlStartPage(getMLText("admin_tools")); $this->globalNavigation(); $this->contentStart(); @@ -57,7 +67,7 @@ class SeedDMS_View_ConversionServices extends SeedDMS_Theme_Style { $allservices = $conversionmgr->getServices(); if($data = $dms->getStatisticalData('docspermimetype')) { $this->contentHeading(getMLText("list_conversion_overview")); - echo "
".getMLText('service_list_from')."".getMLText('service_list_to')."".getMLText('class_name')."".getMLText('service_list_info')."
".getMLText('service_list_from')."".getMLText('service_list_to')."".getMLText('class_name')."".getMLText('service_list_info')."
\n"; + echo "
\n"; echo ""; echo "\n"; echo ""; diff --git a/views/bootstrap/styles/application.js b/views/bootstrap/styles/application.js index cf1188d22..8e0ee517c 100644 --- a/views/bootstrap/styles/application.js +++ b/views/bootstrap/styles/application.js @@ -767,7 +767,7 @@ $(document).ready( function() { function onAddClipboard(ev) { /* {{{ */ ev.preventDefault(); - var source_info = JSON.parse(ev.originalEvent.dataTransfer.getData("text")); + var source_info = JSON.parse(ev.originalEvent.dataTransfer.getData("text/json")); source_type = source_info.type; source_id = source_info.id; formtoken = source_info.formtoken; @@ -1004,16 +1004,117 @@ function onAddClipboard(ev) { /* {{{ */ } } - SeedDMSUpload.handleFileUpload = function(target_id, target_type, items,obj,statusbar) { - /* target is set for the quick upload area */ -// var target_id = obj.data('target'); -// var target_type = 'folder'; - /* droptarget is set for folders and documents in lists */ -// var droptarget = obj.data('droptarget'); -// if(droptarget) { -// target_type = droptarget.split("_")[0]; -// target_id = droptarget.split("_")[1]; -// } + SeedDMSUpload.handleUrlUpload = function(target_id, target_type, url, obj, status, afteruploadfunc) { + if(target_type == 'folder' && target_id) { + var fd = new FormData(); + fd.append('targettype', target_type); + fd.append('folderid', target_id); + fd.append('formtoken', obj.data('uploadformtoken')); + fd.append('command', 'uploadremotedocument'); + fd.append('remoteurl', url); + + $.ajax({ + url: ajaxurl, + type: "POST", + contentType: false, + dataType:"json", + processData: false, + cache: false, + data: fd, + success: function(data) { + if(data.success) { + noty({ + text: data.message, + type: 'success', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500 + }); + // if(editBtnLabel) + // status.statusbar.after($('' + editBtnLabel + '')); + if(afteruploadfunc) { + afteruploadfunc(); + } + } else { + noty({ + text: data.message, + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 3500 + }); + } + } + }); + } else if(target_type == 'document' && target_id) { + var fd = new FormData(); + fd.append('targettype', target_type); + fd.append('documentid', target_id); + fd.append('formtoken', obj.data('uploadformtoken')); + fd.append('command', 'updateremotedocument'); + fd.append('remoteurl', url); + } else if(target_type == 'attachment' && target_id) { + var fd = new FormData(); + fd.append('targettype', target_type); + fd.append('documentid', target_id); + fd.append('formtoken', obj.data('uploadformtoken')); + fd.append('command', 'addremotefile'); + fd.append('remoteurl', url); + } + } + + /* Upload a new file into a folder, as a new document version, or as + * a new attachment + */ + SeedDMSUpload.handleFileUpload = function(target_id, target_type, file, obj, statusbar, afteruploadfunc) { + if(file.size <= maxFileSize) { + var fd = new FormData(); + fd.append('targettype', target_type); + if (target_type == "folder") { + fd.append('folderid', target_id); + fd.append('command', 'uploaddocument'); + } else if (target_type == "document") { + fd.append('documentid', target_id); + fd.append('command', 'updatedocument'); + } else if (target_type == "attachment") { + fd.append('documentid', target_id); + fd.append('command', 'addfile'); + } + fd.append('formtoken', obj.data('uploadformtoken')); + if (typeof obj.data('comment') !== 'undefined') { + fd.append('comment', obj.data('comment')); + } + if (typeof obj.data('keywords') !== 'undefined') { + fd.append('keywords', obj.data('keywords')); + } + fd.append('userfile', file); + SeedDMSUpload.getFormData(fd, obj.data('attributes'), 'attributes'); + SeedDMSUpload.getFormData(fd, obj.data('categories'), 'categories'); + + statusbar.parent().show(); + var status = new SeedDMSUpload.createStatusbar(statusbar); + status.setFileNameSize(file.name,file.size); + SeedDMSUpload.sendFileToServer(fd,status,afteruploadfunc); + } else { + noty({ + text: maxFileSizeMsg + '
' + file.name + ' (' + file.size + ' Bytes)', + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 5000 + }); + } + } + + /* Upload several files (of type FileSystemEntry) as new documents + * into a folder, or as attachments, or as a new document version. + * items may contain elements of type FileSystemFileEntry or + * FileSystemDirectoryEntry. + */ + SeedDMSUpload.handleFilesUpload = function(target_id, target_type, items, obj, statusbar) { var afterupload = obj.data('afterupload'); if(afterupload) { afteruploadfunc = eval(afterupload); @@ -1025,40 +1126,10 @@ function onAddClipboard(ev) { /* {{{ */ } if(target_type == 'folder' && target_id) { for (var i = 0; i < items.length; i++) { - var item = items[i]; //.webkitGetAsEntry(); + var item = items[i]; if (item.isFile) { item.file(function(file) { - if(file.size <= maxFileSize) { - var fd = new FormData(); - fd.append('targettype', target_type); - fd.append('folderid', target_id); - fd.append('formtoken', obj.data('uploadformtoken')); - if (typeof obj.data('comment') !== 'undefined') { - fd.append('comment', obj.data('comment')); - } - if (typeof obj.data('keywords') !== 'undefined') { - fd.append('keywords', obj.data('keywords')); - } - fd.append('userfile', file); - fd.append('command', 'uploaddocument'); - SeedDMSUpload.getFormData(fd, obj.data('attributes'), 'attributes'); - SeedDMSUpload.getFormData(fd, obj.data('categories'), 'categories'); - // fd.append('path', file.webkitRelativePath); - - statusbar.parent().show(); - var status = new SeedDMSUpload.createStatusbar(statusbar); - status.setFileNameSize(file.name,file.size); - SeedDMSUpload.sendFileToServer(fd,status,afteruploadfunc); - } else { - noty({ - text: maxFileSizeMsg + '
' + file.name + ' (' + file.size + ' Bytes)', - type: 'error', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 5000 - }); - } + SeedDMSUpload.handleFileUpload(target_id, target_type, file, obj, statusbar, afteruploadfunc); }); } else if(item.isDirectory) { var fd = new FormData(); @@ -1074,7 +1145,7 @@ function onAddClipboard(ev) { /* {{{ */ // obj.data('afterupload', '()=>{}'); var dirReader = item.createReader(); dirReader.readEntries(function(entries) { - SeedDMSUpload.handleFileUpload(fid, 'folder', entries, obj, statusbar); + SeedDMSUpload.handleFilesUpload(fid, 'folder', entries, obj, statusbar); }); } /* Just reload the parent folder */ @@ -1085,62 +1156,19 @@ function onAddClipboard(ev) { /* {{{ */ } } else if(target_type == 'document' && target_id) { for (var i = 0; i < items.length; i++) { - var item = items[i]; //.webkitGetAsEntry(); + var item = items[i]; if (item.isFile) { item.file(function(file) { - if(file.size <= maxFileSize) { - var fd = new FormData(); - fd.append('targettype', target_type); - fd.append('documentid', target_id); - fd.append('formtoken', obj.data('uploadformtoken')); - fd.append('userfile', file); - fd.append('command', 'updatedocument'); - - var status = new SeedDMSUpload.createStatusbar(statusbar); - status.setFileNameSize(file.name,file.size); - SeedDMSUpload.sendFileToServer(fd,status); - $("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder}); - } else { - noty({ - text: maxFileSizeMsg + '
' + file.name + ' (' + file.size + ' Bytes)', - type: 'error', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 5000 - }); - } + SeedDMSUpload.handleFileUpload(target_id, target_type, file, obj, statusbar, afteruploadfunc); }); } } } else if(target_type == 'attachment' && target_id) { for (var i = 0; i < items.length; i++) { - var item = items[i]; //.webkitGetAsEntry(); + var item = items[i]; if (item.isFile) { item.file(function(file) { - if(file.size <= maxFileSize) { - var fd = new FormData(); - fd.append('targettype', target_type); - fd.append('documentid', target_id); - fd.append('formtoken', obj.data('uploadformtoken')); - fd.append('userfile', file); - fd.append('command', 'addfile'); - - var status = new SeedDMSUpload.createStatusbar(statusbar); - status.setFileNameSize(file.name,file.size); - SeedDMSUpload.sendFileToServer(fd,status, function(){ - $("div.ajax[data-action='documentFiles']").trigger('update', {documentid: target_id}); - }); - } else { - noty({ - text: maxFileSizeMsg + '
' + file.name + ' (' + file.size + ' Bytes)', - type: 'error', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 5000 - }); - } + SeedDMSUpload.handleFileUpload(target_id, target_type, file, obj, statusbar, function(){$("div.ajax[data-action='documentFiles']").trigger('update', {documentid: target_id});}); }); } } @@ -1172,16 +1200,51 @@ $(document).ready(function() { /* {{{ */ target_type = attr_rel.split("_")[0]; target_id = attr_rel.split("_")[1]; - var files = e.originalEvent.dataTransfer.files; + var afterupload = $(this).data('afterupload'); + if(afterupload) { + afteruploadfunc = eval(afterupload); + } else { + afteruploadfunc = function() { + if(target_id == seeddms_folder) + $("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder}); + } + } var items = e.originalEvent.dataTransfer.items; - //We need to send dropped files to Server - newitems = []; + newsysfiles = []; + newfile = null; if(items.length > 0) { - for (var i=0; i 0) { + SeedDMSUpload.handleFilesUpload(target_id, target_type, newsysfiles, $(this), $(this)); + } else if (newfile) { + SeedDMSUpload.handleFileUpload(target_id, target_type, newfile, $(this), $(this), afteruploadfunc); + } else { + /* Do a second iteration because getAsString() seems to be aysnc */ + for (const item of items) { + if (item.kind === "string" && item.type === "text/uri-list") { + item.getAsString((s) => { + try { + url = new URL(s); + SeedDMSUpload.handleUrlUpload(target_id, target_type, url.href, $(this), null, afteruploadfunc); + } catch(e) { + } + }); + } + } } - SeedDMSUpload.handleFileUpload(target_id, target_type, newitems, $(this), $(this)); } }); @@ -1210,109 +1273,123 @@ $(document).ready(function() { /* {{{ */ files = e.originalEvent.dataTransfer.files; items = e.originalEvent.dataTransfer.items; if(target_type == 'folder') { - /* check for files, because items has an entry if no file was dropped */ - if(files.length > 0) { -// console.log('Drop '+files.length+' files on '+target_type+' '+target_id); - newitems = []; - for (var i=0; i 0) { + SeedDMSUpload.handleFilesUpload(target_id, target_type, newitems, $(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/); } else { /* The data is passed in dataTransfer. The items are meaning less. */ - var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text")); - source_type = source_info.type; - source_id = source_info.id; - formtoken = source_info.formtoken; -// console.log('Drop '+source_type+' '+source_id+' on '+target_type+' '+target_id); - if(source_type == 'document') { - var bootbox_message = trans.confirm_move_document; - if(source_info.name) - bootbox_message += "

"+escapeHtml(source_info.name)+' '+escapeHtml(target_name)+"

"; - bootbox.dialog(bootbox_message, [{ - "label" : " "+trans.move_document, - "class" : "btn-danger", - "callback": function() { - $.get(seeddms_webroot+'op/op.Ajax.php', - { command: 'movedocument', docid: source_id, targetfolderid: target_id, formtoken: formtoken }, - function(data) { - if(data.success) { - $('#table-row-document-'+source_id).hide('slow'); - noty({ - text: data.message, - type: 'success', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 1500 - }); - } else { - noty({ - text: data.message, - type: 'error', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 3500 - }); - } - }, - 'json' - ); - } - }, { - "label" : trans.cancel, - "class" : "btn-cancel", - "callback": function() { - } - }]); + try { + var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text/json")); + source_type = source_info.type; + source_id = source_info.id; + formtoken = source_info.formtoken; + // console.log('Drop '+source_type+' '+source_id+' on '+target_type+' '+target_id); + if(source_type == 'document') { + var bootbox_message = trans.confirm_move_document; + if(source_info.name) + bootbox_message += "

"+escapeHtml(source_info.name)+' '+escapeHtml(target_name)+"

"; + bootbox.dialog(bootbox_message, [{ + "label" : " "+trans.move_document, + "class" : "btn-danger", + "callback": function() { + $.get(seeddms_webroot+'op/op.Ajax.php', + { command: 'movedocument', docid: source_id, targetfolderid: target_id, formtoken: formtoken }, + function(data) { + if(data.success) { + $('#table-row-document-'+source_id).hide('slow'); + noty({ + text: data.message, + type: 'success', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500 + }); + } else { + noty({ + text: data.message, + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 3500 + }); + } + }, + 'json' + ); + } + }, { + "label" : trans.cancel, + "class" : "btn-cancel", + "callback": function() { + } + }]); - url = seeddms_webroot+"out/out.MoveDocument.php?documentid="+source_id+"&targetid="+target_id; - // document.location = url; - } else if(source_type == 'folder' && source_id != target_id) { - var bootbox_message = trans.confirm_move_folder; - if(source_info.name) - bootbox_message += "

"+escapeHtml(source_info.name)+' '+escapeHtml(target_name)+"

"; - bootbox.dialog(bootbox_message, [{ - "label" : " "+trans.move_folder, - "class" : "btn-danger", - "callback": function() { - $.get(seeddms_webroot+'op/op.Ajax.php', - { command: 'movefolder', folderid: source_id, targetfolderid: target_id, formtoken: formtoken }, - function(data) { - if(data.success) { - $('#table-row-folder-'+source_id).hide('slow'); - noty({ - text: data.message, - type: 'success', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 1500 - }); - } else { - noty({ - text: data.message, - type: 'error', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 3500 - }); - } - }, - 'json' - ); - } - }, { - "label" : trans.cancel, - "class" : "btn-cancel", - "callback": function() { - } - }]); + url = seeddms_webroot+"out/out.MoveDocument.php?documentid="+source_id+"&targetid="+target_id; + // document.location = url; + } else if(source_type == 'folder' && source_id != target_id) { + var bootbox_message = trans.confirm_move_folder; + if(source_info.name) + bootbox_message += "

"+escapeHtml(source_info.name)+' '+escapeHtml(target_name)+"

"; + bootbox.dialog(bootbox_message, [{ + "label" : " "+trans.move_folder, + "class" : "btn-danger", + "callback": function() { + $.get(seeddms_webroot+'op/op.Ajax.php', + { command: 'movefolder', folderid: source_id, targetfolderid: target_id, formtoken: formtoken }, + function(data) { + if(data.success) { + $('#table-row-folder-'+source_id).hide('slow'); + noty({ + text: data.message, + type: 'success', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500 + }); + } else { + noty({ + text: data.message, + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 3500 + }); + } + }, + 'json' + ); + } + }, { + "label" : trans.cancel, + "class" : "btn-cancel", + "callback": function() { + } + }]); - url = seeddms_webroot+"out/out.MoveFolder.php?folderid="+source_id+"&targetid="+target_id; - // document.location = url; + url = seeddms_webroot+"out/out.MoveFolder.php?folderid="+source_id+"&targetid="+target_id; + // document.location = url; + } + } catch(e) { + } + try { + url = new URL(e.originalEvent.dataTransfer.getData("text")); + console.log(url.href); + SeedDMSUpload.handleUrlUpload(target_id, target_type, url.href, $(e.currentTarget), $('div.statusbar-container h1')); + } catch(e) { } } } else if(target_type == 'document') { @@ -1432,7 +1509,7 @@ $(document).ready(function() { /* {{{ */ for (var i=0; igetValueAsArray(); $tmp = array(); foreach($attrs as $targetfolder) { - $tmp[] = ''.htmlspecialchars($targetfolder->getName()).''; + if ($targetfolder) + $tmp[] = ''.htmlspecialchars($targetfolder->getName()).''; } return implode('
', $tmp); break; @@ -2029,7 +2030,8 @@ $(document).ready(function() { $attrs = $attribute->getValueAsArray(); $tmp = array(); foreach($attrs as $targetdoc) { - $tmp[] = ''.htmlspecialchars($targetdoc->getName()).''; + if ($targetdoc) + $tmp[] = ''.htmlspecialchars($targetdoc->getName()).''; } return implode('
', $tmp); break; @@ -2037,7 +2039,8 @@ $(document).ready(function() { $attrs = $attribute->getValueAsArray(); $tmp = array(); foreach($attrs as $curuser) { - $tmp[] = htmlspecialchars($curuser->getFullname()." (".$curuser->getLogin().")"); + if ($curuser) + $tmp[] = htmlspecialchars($curuser->getFullname()." (".$curuser->getLogin().")"); } return implode('
', $tmp); break; @@ -2045,7 +2048,8 @@ $(document).ready(function() { $attrs = $attribute->getValueAsArray(); $tmp = array(); foreach($attrs as $curgroup) { - $tmp[] = htmlspecialchars($curgroup->getName()); + if ($curgroup) + $tmp[] = htmlspecialchars($curgroup->getName()); } return implode('
', $tmp); break; diff --git a/views/bootstrap4/styles/application.js b/views/bootstrap4/styles/application.js index d984fe465..c10d6b6ea 100644 --- a/views/bootstrap4/styles/application.js +++ b/views/bootstrap4/styles/application.js @@ -117,6 +117,7 @@ function initMost() { /* {{{ */ $(".chzn-select-folder").select2({ /* {{{ */ theme: "bootstrap4", width: 'resolve', + debug: false, ajax: { url: seeddms_webroot+"op/op.Ajax.php", delay: 500, @@ -815,7 +816,7 @@ $(document).ready( function() { function onAddClipboard(ev) { /* {{{ */ ev.preventDefault(); - var source_info = JSON.parse(ev.originalEvent.dataTransfer.getData("text")); + var source_info = JSON.parse(ev.originalEvent.dataTransfer.getData("text/json")); source_type = source_info.type; source_id = source_info.id; formtoken = source_info.formtoken; @@ -1052,16 +1053,117 @@ function onAddClipboard(ev) { /* {{{ */ } } - SeedDMSUpload.handleFileUpload = function(target_id, target_type, items,obj,statusbar) { - /* target is set for the quick upload area */ -// var target_id = obj.data('target'); -// var target_type = 'folder'; - /* droptarget is set for folders and documents in lists */ -// var droptarget = obj.data('droptarget'); -// if(droptarget) { -// target_type = droptarget.split("_")[0]; -// target_id = droptarget.split("_")[1]; -// } + SeedDMSUpload.handleUrlUpload = function(target_id, target_type, url, obj, status, afteruploadfunc) { + if(target_type == 'folder' && target_id) { + var fd = new FormData(); + fd.append('targettype', target_type); + fd.append('folderid', target_id); + fd.append('formtoken', obj.data('uploadformtoken')); + fd.append('command', 'uploadremotedocument'); + fd.append('remoteurl', url); + + $.ajax({ + url: ajaxurl, + type: "POST", + contentType: false, + dataType:"json", + processData: false, + cache: false, + data: fd, + success: function(data) { + if(data.success) { + noty({ + text: data.message, + type: 'success', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500 + }); + // if(editBtnLabel) + // status.statusbar.after($('' + editBtnLabel + '')); + if(afteruploadfunc) { + afteruploadfunc(); + } + } else { + noty({ + text: data.message, + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 3500 + }); + } + } + }); + } else if(target_type == 'document' && target_id) { + var fd = new FormData(); + fd.append('targettype', target_type); + fd.append('documentid', target_id); + fd.append('formtoken', obj.data('uploadformtoken')); + fd.append('command', 'updateremotedocument'); + fd.append('remoteurl', url); + } else if(target_type == 'attachment' && target_id) { + var fd = new FormData(); + fd.append('targettype', target_type); + fd.append('documentid', target_id); + fd.append('formtoken', obj.data('uploadformtoken')); + fd.append('command', 'addremotefile'); + fd.append('remoteurl', url); + } + } + + /* Upload a new file into a folder, as a new document version, or as + * a new attachment + */ + SeedDMSUpload.handleFileUpload = function(target_id, target_type, file, obj, statusbar, afteruploadfunc) { + if(file.size <= maxFileSize) { + var fd = new FormData(); + fd.append('targettype', target_type); + if (target_type == "folder") { + fd.append('folderid', target_id); + fd.append('command', 'uploaddocument'); + } else if (target_type == "document") { + fd.append('documentid', target_id); + fd.append('command', 'updatedocument'); + } else if (target_type == "attachment") { + fd.append('documentid', target_id); + fd.append('command', 'addfile'); + } + fd.append('formtoken', obj.data('uploadformtoken')); + if (typeof obj.data('comment') !== 'undefined') { + fd.append('comment', obj.data('comment')); + } + if (typeof obj.data('keywords') !== 'undefined') { + fd.append('keywords', obj.data('keywords')); + } + fd.append('userfile', file); + SeedDMSUpload.getFormData(fd, obj.data('attributes'), 'attributes'); + SeedDMSUpload.getFormData(fd, obj.data('categories'), 'categories'); + + statusbar.parent().show(); + var status = new SeedDMSUpload.createStatusbar(statusbar); + status.setFileNameSize(file.name,file.size); + SeedDMSUpload.sendFileToServer(fd,status,afteruploadfunc); + } else { + noty({ + text: maxFileSizeMsg + '
' + file.name + ' (' + file.size + ' Bytes)', + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 5000 + }); + } + } + + /* Upload several files (of type FileSystemEntry) as new documents + * into a folder, or as attachments, or as a new document version. + * items may contain elements of type FileSystemFileEntry or + * FileSystemDirectoryEntry. + */ + SeedDMSUpload.handleFilesUpload = function(target_id, target_type, items, obj, statusbar) { var afterupload = obj.data('afterupload'); if(afterupload) { afteruploadfunc = eval(afterupload); @@ -1073,40 +1175,10 @@ function onAddClipboard(ev) { /* {{{ */ } if(target_type == 'folder' && target_id) { for (var i = 0; i < items.length; i++) { - var item = items[i]; //.webkitGetAsEntry(); + var item = items[i]; if (item.isFile) { item.file(function(file) { - if(file.size <= maxFileSize) { - var fd = new FormData(); - fd.append('targettype', target_type); - fd.append('folderid', target_id); - fd.append('formtoken', obj.data('uploadformtoken')); - if (typeof obj.data('comment') !== 'undefined') { - fd.append('comment', obj.data('comment')); - } - if (typeof obj.data('keywords') !== 'undefined') { - fd.append('keywords', obj.data('keywords')); - } - fd.append('userfile', file); - fd.append('command', 'uploaddocument'); - SeedDMSUpload.getFormData(fd, obj.data('attributes'), 'attributes'); - SeedDMSUpload.getFormData(fd, obj.data('categories'), 'categories'); - // fd.append('path', file.webkitRelativePath); - - statusbar.parent().show(); - var status = new SeedDMSUpload.createStatusbar(statusbar); - status.setFileNameSize(file.name,file.size); - SeedDMSUpload.sendFileToServer(fd,status,afteruploadfunc); - } else { - noty({ - text: maxFileSizeMsg + '
' + file.name + ' (' + file.size + ' Bytes)', - type: 'error', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 5000 - }); - } + SeedDMSUpload.handleFileUpload(target_id, target_type, file, obj, statusbar, afteruploadfunc); }); } else if(item.isDirectory) { var fd = new FormData(); @@ -1122,7 +1194,7 @@ function onAddClipboard(ev) { /* {{{ */ // obj.data('afterupload', '()=>{}'); var dirReader = item.createReader(); dirReader.readEntries(function(entries) { - SeedDMSUpload.handleFileUpload(fid, 'folder', entries, obj, statusbar); + SeedDMSUpload.handleFilesUpload(fid, 'folder', entries, obj, statusbar); }); } /* Just reload the parent folder */ @@ -1133,62 +1205,19 @@ function onAddClipboard(ev) { /* {{{ */ } } else if(target_type == 'document' && target_id) { for (var i = 0; i < items.length; i++) { - var item = items[i]; //.webkitGetAsEntry(); + var item = items[i]; if (item.isFile) { item.file(function(file) { - if(file.size <= maxFileSize) { - var fd = new FormData(); - fd.append('targettype', target_type); - fd.append('documentid', target_id); - fd.append('formtoken', obj.data('uploadformtoken')); - fd.append('userfile', file); - fd.append('command', 'updatedocument'); - - var status = new SeedDMSUpload.createStatusbar(statusbar); - status.setFileNameSize(file.name,file.size); - SeedDMSUpload.sendFileToServer(fd,status); - $("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder}); - } else { - noty({ - text: maxFileSizeMsg + '
' + file.name + ' (' + file.size + ' Bytes)', - type: 'error', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 5000 - }); - } + SeedDMSUpload.handleFileUpload(target_id, target_type, file, obj, statusbar, afteruploadfunc); }); } } } else if(target_type == 'attachment' && target_id) { for (var i = 0; i < items.length; i++) { - var item = items[i]; //.webkitGetAsEntry(); + var item = items[i]; if (item.isFile) { item.file(function(file) { - if(file.size <= maxFileSize) { - var fd = new FormData(); - fd.append('targettype', target_type); - fd.append('documentid', target_id); - fd.append('formtoken', obj.data('uploadformtoken')); - fd.append('userfile', file); - fd.append('command', 'addfile'); - - var status = new SeedDMSUpload.createStatusbar(statusbar); - status.setFileNameSize(file.name,file.size); - SeedDMSUpload.sendFileToServer(fd,status, function(){ - $("div.ajax[data-action='documentFiles']").trigger('update', {documentid: target_id}); - }); - } else { - noty({ - text: maxFileSizeMsg + '
' + file.name + ' (' + file.size + ' Bytes)', - type: 'error', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 5000 - }); - } + SeedDMSUpload.handleFileUpload(target_id, target_type, file, obj, statusbar, function(){$("div.ajax[data-action='documentFiles']").trigger('update', {documentid: target_id});}); }); } } @@ -1220,16 +1249,51 @@ $(document).ready(function() { /* {{{ */ target_type = attr_rel.split("_")[0]; target_id = attr_rel.split("_")[1]; - var files = e.originalEvent.dataTransfer.files; + var afterupload = $(this).data('afterupload'); + if(afterupload) { + afteruploadfunc = eval(afterupload); + } else { + afteruploadfunc = function() { + if(target_id == seeddms_folder) + $("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder}); + } + } var items = e.originalEvent.dataTransfer.items; - //We need to send dropped files to Server - newitems = []; + newsysfiles = []; + newfile = null; if(items.length > 0) { - for (var i=0; i 0) { + SeedDMSUpload.handleFilesUpload(target_id, target_type, newsysfiles, $(this), $(this)); + } else if (newfile) { + SeedDMSUpload.handleFileUpload(target_id, target_type, newfile, $(this), $(this), afteruploadfunc); + } else { + /* Do a second iteration because getAsString() seems to be aysnc */ + for (const item of items) { + if (item.kind === "string" && item.type === "text/uri-list") { + item.getAsString((s) => { + try { + url = new URL(s); + SeedDMSUpload.handleUrlUpload(target_id, target_type, url.href, $(this), null, afteruploadfunc); + } catch(e) { + } + }); + } + } } - SeedDMSUpload.handleFileUpload(target_id, target_type, newitems, $(this), $(this)); } }); @@ -1258,121 +1322,135 @@ $(document).ready(function() { /* {{{ */ files = e.originalEvent.dataTransfer.files; items = e.originalEvent.dataTransfer.items; if(target_type == 'folder') { - /* check for files, because items has an entry if no file was dropped */ - if(files.length > 0) { -// console.log('Drop '+files.length+' files on '+target_type+' '+target_id); - newitems = []; - for (var i=0; i 0) { + SeedDMSUpload.handleFilesUpload(target_id, target_type, newitems, $(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/); } else { /* The data is passed in dataTransfer. The items are meaning less. */ - var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text")); - source_type = source_info.type; - source_id = source_info.id; - formtoken = source_info.formtoken; -// console.log('Drop '+source_type+' '+source_id+' on '+target_type+' '+target_id); - if(source_type == 'document') { - var bootbox_message = trans.confirm_move_document; - if(source_info.name) - bootbox_message += "

"+escapeHtml(source_info.name)+' '+escapeHtml(target_name)+"

"; - bootbox.dialog({ - "message" : bootbox_message, - "buttons" : { - "cancel" : { - "label" : trans.cancel, - "className" : "btn-secondary", - "callback": function() { - } - }, - "move" : { - "label" : " "+trans.move_document, - "className" : "btn-danger", - "callback": function() { - $.get(seeddms_webroot+'op/op.Ajax.php', - { command: 'movedocument', docid: source_id, targetfolderid: target_id, formtoken: formtoken }, - function(data) { - if(data.success) { - $('#table-row-document-'+source_id).hide('slow'); - noty({ - text: data.message, - type: 'success', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 1500 - }); - } else { - noty({ - text: data.message, - type: 'error', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 3500 - }); - } - }, - 'json' - ); + try { + var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text/json")); + source_type = source_info.type; + source_id = source_info.id; + formtoken = source_info.formtoken; + // console.log('Drop '+source_type+' '+source_id+' on '+target_type+' '+target_id); + if(source_type == 'document') { + var bootbox_message = trans.confirm_move_document; + if(source_info.name) + bootbox_message += "

"+escapeHtml(source_info.name)+' '+escapeHtml(target_name)+"

"; + bootbox.dialog({ + "message" : bootbox_message, + "buttons" : { + "cancel" : { + "label" : trans.cancel, + "className" : "btn-secondary", + "callback": function() { + } + }, + "move" : { + "label" : " "+trans.move_document, + "className" : "btn-danger", + "callback": function() { + $.get(seeddms_webroot+'op/op.Ajax.php', + { command: 'movedocument', docid: source_id, targetfolderid: target_id, formtoken: formtoken }, + function(data) { + if(data.success) { + $('#table-row-document-'+source_id).hide('slow'); + noty({ + text: data.message, + type: 'success', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500 + }); + } else { + noty({ + text: data.message, + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 3500 + }); + } + }, + 'json' + ); + } } } - } - }); + }); - url = seeddms_webroot+"out/out.MoveDocument.php?documentid="+source_id+"&targetid="+target_id; - // document.location = url; - } else if(source_type == 'folder' && source_id != target_id) { - var bootbox_message = trans.confirm_move_folder; - if(source_info.name) - bootbox_message += "

"+escapeHtml(source_info.name)+' '+escapeHtml(target_name)+"

"; - bootbox.dialog({ - "message" : bootbox_message, - "buttons" : { - "cancel" : { - "label" : trans.cancel, - "className" : "btn-secondary", - "callback": function() { - } - }, - "move" : { - "label" : " "+trans.move_folder, - "className" : "btn-danger", - "callback": function() { - $.get(seeddms_webroot+'op/op.Ajax.php', - { command: 'movefolder', folderid: source_id, targetfolderid: target_id, formtoken: formtoken }, - function(data) { - if(data.success) { - $('#table-row-folder-'+source_id).hide('slow'); - noty({ - text: data.message, - type: 'success', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 1500 - }); - } else { - noty({ - text: data.message, - type: 'error', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 3500 - }); - } - }, - 'json' - ); + url = seeddms_webroot+"out/out.MoveDocument.php?documentid="+source_id+"&targetid="+target_id; + // document.location = url; + } else if(source_type == 'folder' && source_id != target_id) { + var bootbox_message = trans.confirm_move_folder; + if(source_info.name) + bootbox_message += "

"+escapeHtml(source_info.name)+' '+escapeHtml(target_name)+"

"; + bootbox.dialog({ + "message" : bootbox_message, + "buttons" : { + "cancel" : { + "label" : trans.cancel, + "className" : "btn-secondary", + "callback": function() { + } + }, + "move" : { + "label" : " "+trans.move_folder, + "className" : "btn-danger", + "callback": function() { + $.get(seeddms_webroot+'op/op.Ajax.php', + { command: 'movefolder', folderid: source_id, targetfolderid: target_id, formtoken: formtoken }, + function(data) { + if(data.success) { + $('#table-row-folder-'+source_id).hide('slow'); + noty({ + text: data.message, + type: 'success', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500 + }); + } else { + noty({ + text: data.message, + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 3500 + }); + } + }, + 'json' + ); + } } } - } - }); + }); - url = seeddms_webroot+"out/out.MoveFolder.php?folderid="+source_id+"&targetid="+target_id; - // document.location = url; + url = seeddms_webroot+"out/out.MoveFolder.php?folderid="+source_id+"&targetid="+target_id; + // document.location = url; + } + } catch(e) { + } + try { + url = new URL(e.originalEvent.dataTransfer.getData("text")); + console.log(url.href); + SeedDMSUpload.handleUrlUpload(target_id, target_type, url.href, $(e.currentTarget), $('div.statusbar-container h1')); + } catch(e) { } } } else if(target_type == 'document') { @@ -1406,14 +1484,14 @@ $(document).ready(function() { /* {{{ */ "label" : " "+trans.upload_new_version, "className" : "btn-danger", "callback": function() { - SeedDMSUpload.handleFileUpload(target_id, target_type, newitems,$(e.currentTarget),$('div.statusbar-container h1')); + SeedDMSUpload.handleFilesUpload(target_id, target_type, newitems,$(e.currentTarget),$('div.statusbar-container h1')); } } } }); } } else { - var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text")); + var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text/json")); source_type = source_info.type; source_id = source_info.id; formtoken = source_info.formtoken; @@ -1505,7 +1583,7 @@ $(document).ready(function() { /* {{{ */ for (var i=0; i
".getMLText('mimetype')."".getMLText('preview')."".getMLText('fullsearch')."".getMLText('preview_pdf')."