Merge branch 'seeddms-5.1.x' into seeddms-6.0.x

This commit is contained in:
Uwe Steinmann 2024-03-06 17:38:04 +01:00
commit ac2ade6b6e
11 changed files with 436 additions and 115 deletions

View File

@ -286,6 +286,10 @@
- group managers can be used as mandatory reviewers/approvers for all
users of that group
- update sabre/dav to 4.*
- show parent folder of document in lists of documents (calendar, dashboard)
- documents can be updated by dragging a file on a document list item
- dragging a folder on a folder list item oder the drag and drop area will
recursively upload the folder hierarchy including all files
--------------------------------------------------------------------------------
Changes in version 5.1.33

View File

@ -922,6 +922,162 @@ switch($command) {
}
break; /* }}} */
case 'updatedocument': /* {{{ */
if($user) {
if(checkFormKey('')) {
if (!isset($_POST["documentid"]) || !is_numeric($_POST["documentid"]) || intval($_POST["documentid"])<1) {
header('Content-Type: application/json');
echo json_encode(array('success'=>false, 'message'=>getMLText("invalid_document_id")));
exit;
}
$documentid = $_POST["documentid"];
$document = $dms->getDocument($documentid);
if (!is_object($document)) {
header('Content-Type: application/json');
echo json_encode(array('success'=>false, 'message'=>getMLText("invalid_document_id")));
exit;
}
if ($document->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;
}
}
if (!is_uploaded_file($_FILES["userfile"]["tmp_name"]) || $_FILES['userfile']['error']!=0){
header('Content-Type: application/json');
echo json_encode(array('success'=>false, 'message'=>getMLText("uploading_failed")));
exit;
}
if ($_FILES["userfile"]["size"]==0) {
header('Content-Type: application/json');
echo json_encode(array('success'=>false, 'message'=>getMLText("uploading_zerosize")));
exit;
}
$maxuploadsize = SeedDMS_Core_File::parse_filesize($settings->_maxUploadSize);
if ($maxuploadsize && $_FILES["userfile"]["size"] > $maxuploadsize) {
header('Content-Type: application/json');
echo json_encode(array('success'=>false, 'message'=>getMLText("uploading_maxsize")));
exit;
}
$userfiletmp = $_FILES["userfile"]["tmp_name"];
$userfiletype = $_FILES["userfile"]["type"];
$userfilename = $_FILES["userfile"]["name"];
$fileType = ".".pathinfo($userfilename, PATHINFO_EXTENSION);
if($settings->_overrideMimeType) {
$userfiletype = SeedDMS_Core_File::mimetype($userfiletmp);
}
if (!empty($_POST["name"]))
$name = $_POST["name"];
else
$name = utf8_basename($userfilename);
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(null, $document, $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(null, $document, $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);
}
$controller = Controller::factory('UpdateDocument', array('dms'=>$dms, 'user'=>$user));
$controller->setParam('documentsource', 'upload');
$controller->setParam('fulltextservice', $fulltextservice);
$controller->setParam('document', $document);
$controller->setParam('folder', $document->getFolder());
$controller->setParam('name', $name);
$controller->setParam('comment', $comment);
$controller->setParam('expires', $expires);
$controller->setParam('userfiletmp', $userfiletmp);
$controller->setParam('userfilename', $userfilename);
$controller->setParam('filetype', $fileType);
$controller->setParam('userfiletype', $userfiletype);
$controller->setParam('reviewers', $reviewers);
$controller->setParam('approvers', $approvers);
$controller->setParam('reqversion', 1);
$controller->setParam('attributes', $attributes);
$controller->setParam('workflow', $workflow);
$controller->setParam('maxsizeforfulltext', $settings->_maxSizeForFullText);
if(!$content = $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->sendNewDocumentVersionMail($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; /* }}} */
/* Deprecated, has moved to op/op.TransmittalMgr.php */
case '___updatetransmittalitem': /* {{{ */
if($user) {
@ -957,6 +1113,99 @@ switch($command) {
}
break; /* }}} */
case 'addfolder': /* {{{ */
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, 'addFolder') < M_READWRITE) {
header('Content-Type: application/json');
echo json_encode(array('success'=>false, 'message'=>getMLText("access_denied")));
exit;
}
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 = '';
$controller = Controller::factory('AddSubFolder', 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);
$minmax = $folder->getFoldersMinMax();
$deviation = rand(10, 1000)/10;
if($settings->_defaultFolderPosition == 'start')
$controller->setParam('sequence', $minmax['min'] - $deviation);
else
$controller->setParam('sequence', $minmax['max'] + $deviation);
$controller->setParam('owner', $user);
$controller->setParam('attributes', $attributes);
$controller->setParam('notificationgroups', array());
$controller->setParam('notificationusers', array());
if(!$subfolder = $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->sendNewFolderMail($subfolder, $user);
}
}
header('Content-Type: application/json');
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_folder_added'), 'data'=>$subfolder->getID()));
add_log_line("add folder ".$subfolder->getId()." in folder ".$folder->getId());
} else {
header('Content-Type: application/json');
echo json_encode(array('success'=>false, 'message'=>getMLText('invalid_request_token'), 'data'=>''));
}
}
break; /* }}} */
case 'addfile': /* {{{ */
if($user) {
if(checkFormKey('addfile')) {

View File

@ -1822,7 +1822,7 @@ function folderSelected<?php echo $formid ?>(id, name) {
$formname = "targetid";
$formid = md5($formname.$form);
$content = '';
$content .= "<input type=\"hidden\" id=\"".$formid."\" name=\"".$formname."\" value=\"". (($default) ? $default->getID() : "") ."\" data-target-highlight=\"choosefoldersearch".$formid."\">";
$content .= "<input type=\"hidden\" id=\"".$formid."\" name=\"".$formname."\" value=\"". ($default ? $default->getID() : "") ."\" data-target-highlight=\"choosefoldersearch".$formid."\">";
$content .= "<div class=\"input-append\">\n";
$content .= "<input type=\"text\" id=\"choosefoldersearch".$formid."\" data-target=\"".$formid."\" data-provide=\"typeahead\" name=\"targetname".$formid."\" value=\"". (($default) ? htmlspecialchars($default->getName()) : "") ."\" placeholder=\"".getMLText('type_to_search')."\" autocomplete=\"off\" target=\"".$formid."\"".($default ? ' title="'.htmlspecialchars($default->getFolderPathPlain()).'"' : '')."/>";
$content .= "<button type=\"button\" class=\"btn\" id=\"clearfolder".$formid."\" data-target=\"".$formid."\"><i class=\"fa fa-remove\"></i></button>";
@ -3147,7 +3147,7 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
*/
function documentListRowStart($document, $class='') { /* {{{ */
$docID = $document->getID();
return "<tr id=\"table-row-document-".$docID."\" data-target-id=\"".$docID."\" class=\"table-row-document droptarget ".($class ? ' '.$class : '')."\" data-droptarget=\"document_".$docID."\" rel=\"document_".$docID."\" formtoken=\"".createFormKey('')."\" draggable=\"true\" data-name=\"".htmlspecialchars($document->getName(), ENT_QUOTES)."\">";
return "<tr id=\"table-row-document-".$docID."\" data-target-id=\"".$docID."\" class=\"table-row-document droptarget ".($class ? ' '.$class : '')."\" data-droptarget=\"document_".$docID."\" rel=\"document_".$docID."\" formtoken=\"".createFormKey('')."\" data-uploadformtoken=\"".createFormKey('')."\" draggable=\"true\" data-name=\"".htmlspecialchars($document->getName(), ENT_QUOTES)."\">";
} /* }}} */
function documentListRowEnd($document) { /* {{{ */

View File

@ -54,7 +54,14 @@ class SeedDMS_View_Calendar extends SeedDMS_Theme_Style {
else
$previewer->setConverters($previewconverters);
$document->verifyLastestContentExpriry();
echo $this->documentListRow($document, $previewer);
$txt = $this->callHook('documentListItem', $document, $previewer, false, 'calendar');
if(is_string($txt))
echo $txt;
else {
$extracontent = array();
$extracontent['below_title'] = $this->getListRowPath($document);
echo $this->documentListRow($document, $previewer, 0, false, $extracontent);
}
echo "</tbody>\n</table>\n";
}
if($event) {

View File

@ -47,7 +47,9 @@ class SeedDMS_View_Dashboard extends SeedDMS_Theme_Style {
if(is_string($txt))
echo $txt;
else {
echo $this->documentListRow($document, $previewer);
$extracontent = array();
$extracontent['below_title'] = $this->getListRowPath($document);
echo $this->documentListRow($document, $previewer, false, 0, $extracontent);
}
}

View File

@ -314,7 +314,6 @@ $(document).ready( function() {
$this->rowStart();
$this->columnStart(4);
$this->warningMsg(getMLText("confirm_rm_user_from_processes", array ("username" => htmlspecialchars($rmuser->getFullName()))));
$reviewStatus = $rmuser->getReviewStatus();
$tmpr = array();
@ -491,6 +490,8 @@ $(document).ready( function() {
);
}
if($out) {
$this->warningMsg(getMLText("confirm_rm_user_from_processes", array ("username" => htmlspecialchars($rmuser->getFullName()))));
?>
<form class="form-horizontal" action="../op/op.UsrMgr.php" name="form1" method="post">
@ -530,6 +531,9 @@ $(document).ready( function() {
</form>
<?php
} else {
$this->infoMsg(getMLText("info_rm_user_from_processes_none", array ("username" => htmlspecialchars($rmuser->getFullName()))));
}
$this->columnEnd();
$this->columnStart(8);
echo '<div id="kkkk" class="ajax" data-view="RemoveUserFromProcesses" data-action="printList" data-query="userid='.$rmuser->getId().'"></div>';

View File

@ -50,7 +50,7 @@ class SeedDMS_View_Search extends SeedDMS_Theme_Style {
function js() { /* {{{ */
header('Content-Type: application/javascript; charset=UTF-8');
parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder'));
parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder', 'must_drop_one_file','confirm_upload_new_version', 'upload_new_version'));
?>
$(document).ready( function() {

View File

@ -51,9 +51,14 @@ class SeedDMS_View_Timeline extends SeedDMS_Theme_Style {
$previewer->setConversionMgr($conversionmgr);
else
$previewer->setConverters($previewconverters);
$extracontent = array();
$extracontent['below_title'] = $this->getListRowPath($document);
echo $this->documentListRow($document, $previewer, 0, false, $extracontent);
$txt = $this->callHook('documentListItem', $document, $previewer, false, 'timeline');
if(is_string($txt))
echo $txt;
else {
$extracontent = array();
$extracontent['below_title'] = $this->getListRowPath($document);
echo $this->documentListRow($document, $previewer, 0, false, $extracontent);
}
echo "</tbody>\n</table>\n";
}
@ -141,7 +146,7 @@ class SeedDMS_View_Timeline extends SeedDMS_Theme_Style {
}
header('Content-Type: application/javascript; charset=UTF-8');
parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder'));
parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder', 'must_drop_one_file','confirm_upload_new_version', 'upload_new_version'));
?>
$(document).ready(function () {
$('#update').click(function(ev){

View File

@ -697,8 +697,6 @@ function onAddClipboard(ev) { /* {{{ */
// function sendFileToServer(formData,status,callback) {
SeedDMSUpload.sendFileToServer = function(formData,status,callback) {
var uploadURL = ajaxurl; //Upload URL
var extraData ={}; //Extra Data.
var jqXHR=$.ajax({
xhr: function() {
var xhrobj = $.ajaxSettings.xhr();
@ -716,7 +714,7 @@ function onAddClipboard(ev) { /* {{{ */
}
return xhrobj;
},
url: uploadURL,
url: ajaxurl,
type: "POST",
contentType: false,
dataType:"json",
@ -755,6 +753,43 @@ function onAddClipboard(ev) { /* {{{ */
status.setAbort(jqXHR);
}
SeedDMSUpload.addSubFolder = function(formData) {
var ret = false;
$.ajax({
url: ajaxurl,
type: "POST",
contentType: false,
dataType:"json",
processData: false,
cache: false,
async: false,
data: formData,
success: function(data, textStatus) {
if(data.success) {
noty({
text: data.message,
type: 'success',
dismissQueue: true,
layout: 'topRight',
theme: 'defaultTheme',
timeout: 1500
});
ret = data.data;
} else {
noty({
text: data.message,
type: 'error',
dismissQueue: true,
layout: 'topRight',
theme: 'defaultTheme',
timeout: 3500
});
}
}
});
return ret;
}
//function createStatusbar(obj) {
SeedDMSUpload.createStatusbar = function(obj) {
rowCount++;
@ -839,7 +874,7 @@ function onAddClipboard(ev) { /* {{{ */
afteruploadfunc = function() {
if(target_id == seeddms_folder)
$("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder});
}
}
}
if(target_type == 'folder' && target_id) {
for (var i = 0; i < items.length; i++) {
@ -879,24 +914,29 @@ function onAddClipboard(ev) { /* {{{ */
}
});
} else if(item.isDirectory) {
var dirReader = item.createReader();
dirReader.readEntries(function(entries) {
SeedDMSUpload.handleFileUpload(entries, obj, statusbar);
});
/*
noty({
text: 'Folders currently not supported',
type: 'error',
dismissQueue: true,
layout: 'topRight',
theme: 'defaultTheme',
timeout: 5000
});
*/
var fd = new FormData();
fd.append('folderid', target_id);
fd.append('formtoken', obj.data('uploadformtoken'));
fd.append('command', 'addfolder');
fd.append('name', item.name);
var fid = SeedDMSUpload.addSubFolder(fd);
if(fid) {
obj.data('target', fid);
obj.data('droptarget', 'folder_'+fid);
/* Set void afterupload to prevent tons of noty messages */
obj.data('afterupload', '()=>{}');
var dirReader = item.createReader();
dirReader.readEntries(function(entries) {
SeedDMSUpload.handleFileUpload(entries, obj, statusbar);
});
}
/* Just reload the parent folder */
if(target_id == seeddms_folder) {
$("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder});
}
}
}
} else if(target_type == 'document' && target_id) {
/*
for (var i = 0; i < items.length; i++) {
var item = items[i]; //.webkitGetAsEntry();
if (item.isFile) {
@ -906,15 +946,16 @@ function onAddClipboard(ev) { /* {{{ */
fd.append('targettype', target_type);
fd.append('documentid', target_id);
fd.append('formtoken', obj.data('uploadformtoken'));
fd.append('userfile', files[i]);
fd.append('command', 'uploaddocument');
fd.append('userfile', file);
fd.append('command', 'updatedocument');
var status = new SeedDMSUpload.createStatusbar(statusbar);
status.setFileNameSize(files[i].name,files[i].size);
status.setFileNameSize(file.name,file.size);
SeedDMSUpload.sendFileToServer(fd,status);
$("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder});
} else {
noty({
text: maxFileSizeMsg + '<br /><em>' + files[i].name + ' (' + files[i].size + ' Bytes)</em>',
text: maxFileSizeMsg + '<br /><em>' + file.name + ' (' + file.size + ' Bytes)</em>',
type: 'error',
dismissQueue: true,
layout: 'topRight',
@ -925,7 +966,6 @@ function onAddClipboard(ev) { /* {{{ */
});
}
}
*/
} else if(target_type == 'attachment' && target_id) {
for (var i = 0; i < items.length; i++) {
var item = items[i]; //.webkitGetAsEntry();
@ -1012,9 +1052,9 @@ $(document).ready(function() { /* {{{ */
target_type = attr_rel.split("_")[0];
target_id = attr_rel.split("_")[1];
target_name = $(e.currentTarget).data('name')+''; // Force this to be a string
files = e.originalEvent.dataTransfer.files;
items = e.originalEvent.dataTransfer.items;
if(target_type == 'folder') {
var files = e.originalEvent.dataTransfer.files;
var items = e.originalEvent.dataTransfer.items;
/* 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);
@ -1121,8 +1161,6 @@ $(document).ready(function() { /* {{{ */
}
}
} else if(target_type == 'document') {
var files = e.originalEvent.dataTransfer.files;
var items = e.originalEvent.dataTransfer.items;
/* 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);
@ -1135,37 +1173,23 @@ $(document).ready(function() { /* {{{ */
theme: 'defaultTheme',
timeout: 5000
});
} else if(0) {
bootbox.dialog({
"message" : trans.confirm_upload_new_version,
"buttons" : {
"cancel" : {
"label" : trans.cancel,
"className" : "btn-secondary",
"callback": function() {
}
},
"newversion" : {
"label" : "<i class='fa fa-link'></i> "+trans.upload_new_version,
"className" : "btn-danger",
"callback": function() {
console.log('Hallo');
/*
newitems = [];
for (var i=0; i<items.length; i++) {
newitems.push(items[i].webkitGetAsEntry());
}
SeedDMSUpload.handleFileUpload(newitems,$(e.currentTarget),$('div.statusbar-container h1'));
*/
}
}
}
});
} else if(1) {
newitems = [];
for (var i=0; i<items.length; i++) {
newitems.push(items[i].webkitGetAsEntry());
}
SeedDMSUpload.handleFileUpload(newitems,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
bootbox.dialog(trans.confirm_upload_new_version, [{
"label" : "<i class='fa fa-arrow-right'></i> "+trans.upload_new_version,
"class" : "btn-danger",
"callback": function() {
SeedDMSUpload.handleFileUpload(newitems,$(e.currentTarget),$('div.statusbar-container h1'));
}
}, {
"label" : trans.cancel,
"class" : "btn-cancel",
"callback": function() {
}
}]);
}
} else {
var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text"));
@ -1248,8 +1272,6 @@ $(document).ready(function() { /* {{{ */
}
}
} else if(target_type == 'attachment') {
var files = e.originalEvent.dataTransfer.files;
var items = e.originalEvent.dataTransfer.items;
if(files.length > 0) {
newitems = [];
for (var i=0; i<items.length; i++) {
@ -1544,7 +1566,7 @@ $(document).ready(function() { /* {{{ */
}( window.SeedDMSAjax = window.SeedDMSAjax || {}, jQuery )); /* }}} */
(function( SeedDMSBox, $, undefined ) { /* {{{ */
/* Open dialog box and
/* Open confirm box (which has just one callback) and
* redirect to the given url if confirm was pressed
*/
SeedDMSBox.redirect = function(url, boxparams) {
@ -1562,7 +1584,7 @@ $(document).ready(function() { /* {{{ */
}]);
}
/* Open confirm box and
/* Open confirm box (which has just one callback) and
* calls the callback if the confirm button was pressed
*/
SeedDMSBox.callback = function(callback, boxparams) {

View File

@ -1714,7 +1714,7 @@ $(document).ready(function() {
else
$folderid = $folder->getID();
$content = '';
$content .= "<input type=\"hidden\" class=\"fileupload-group\" id=\"".$formid."\" name=\"".$formname."\" data-target-highlight=\"choosedocsearch".$formid."\" value=\"". (($default) ? $default->getID() : "") ."\">";
$content .= "<input type=\"hidden\" class=\"fileupload-group\" id=\"".$formid."\" name=\"".$formname."\" data-target-highlight=\"choosedocsearch".$formid."\" value=\"". ($default ? $default->getID() : "") ."\">";
$content .= "<div class=\"input-group\">\n";
$content .= "<input class=\"form-control\" type=\"text\" id=\"choosedocsearch".$formid."\" data-target=\"".$formid."\" data-provide=\"typeahead\" name=\"docname".$formid."\"value=\"" . (($default) ? htmlspecialchars($default->getName()) : "") ."\" placeholder=\"".getMLText('type_to_search')."\" autocomplete=\"off\" />";
$content .= '<div class="input-group-append">';
@ -1781,7 +1781,7 @@ function folderSelected<?php echo $formid ?>(id, name) {
$formname = "targetid";
$formid = md5($formname.$form);
$content = '';
$content .= "<input type=\"hidden\" id=\"".$formid."\" name=\"".$formname."\" value=\"". (($default) ? $default->getID() : "") ."\" data-target-highlight=\"choosefoldersearch".$formid."\">";
$content .= "<input type=\"hidden\" id=\"".$formid."\" name=\"".$formname."\" value=\"". ($default ? $default->getID() : "") ."\" data-target-highlight=\"choosefoldersearch".$formid."\">";
$content .= "<div class=\"input-group\">\n";
$content .= "<input class=\"form-control\" type=\"text\" id=\"choosefoldersearch".$formid."\" data-target=\"".$formid."\" data-provide=\"typeahead\" name=\"targetname".$formid."\" value=\"". (($default) ? htmlspecialchars($default->getName()) : "") ."\" placeholder=\"".getMLText('type_to_search')."\" autocomplete=\"off\" target=\"".$formid."\"/>";
$content .= '<div class="input-group-append">';
@ -3146,7 +3146,7 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
$class = 'table-'.$class;
}
$docID = $document->getID();
return "<tr id=\"table-row-document-".$docID."\" data-target-id=\"".$docID."\" class=\"table-row-document droptarget ".($class ? ' '.$class : '')."\" data-droptarget=\"document_".$docID."\" rel=\"document_".$docID."\" formtoken=\"".createFormKey('')."\" draggable=\"true\" data-name=\"".htmlspecialchars($document->getName(), ENT_QUOTES)."\">";
return "<tr id=\"table-row-document-".$docID."\" data-target-id=\"".$docID."\" class=\"table-row-document droptarget ".($class ? ' '.$class : '')."\" data-droptarget=\"document_".$docID."\" rel=\"document_".$docID."\" formtoken=\"".createFormKey('')."\" data-uploadformtoken=\"".createFormKey('')."\" draggable=\"true\" data-name=\"".htmlspecialchars($document->getName(), ENT_QUOTES)."\">";
} /* }}} */
function documentListRowEnd($document) { /* {{{ */

View File

@ -743,8 +743,6 @@ function onAddClipboard(ev) { /* {{{ */
// function sendFileToServer(formData,status,callback) {
SeedDMSUpload.sendFileToServer = function(formData,status,callback) {
var uploadURL = ajaxurl; //Upload URL
var extraData ={}; //Extra Data.
var jqXHR=$.ajax({
xhr: function() {
var xhrobj = $.ajaxSettings.xhr();
@ -762,7 +760,7 @@ function onAddClipboard(ev) { /* {{{ */
}
return xhrobj;
},
url: uploadURL,
url: ajaxurl,
type: "POST",
contentType: false,
dataType:"json",
@ -801,6 +799,43 @@ function onAddClipboard(ev) { /* {{{ */
status.setAbort(jqXHR);
}
SeedDMSUpload.addSubFolder = function(formData) {
var ret = false;
$.ajax({
url: ajaxurl,
type: "POST",
contentType: false,
dataType:"json",
processData: false,
cache: false,
async: false,
data: formData,
success: function(data, textStatus) {
if(data.success) {
noty({
text: data.message,
type: 'success',
dismissQueue: true,
layout: 'topRight',
theme: 'defaultTheme',
timeout: 1500
});
ret = data.data;
} else {
noty({
text: data.message,
type: 'error',
dismissQueue: true,
layout: 'topRight',
theme: 'defaultTheme',
timeout: 3500
});
}
}
});
return ret;
}
//function createStatusbar(obj) {
SeedDMSUpload.createStatusbar = function(obj) {
rowCount++;
@ -885,7 +920,7 @@ function onAddClipboard(ev) { /* {{{ */
afteruploadfunc = function() {
if(target_id == seeddms_folder)
$("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder});
}
}
}
if(target_type == 'folder' && target_id) {
for (var i = 0; i < items.length; i++) {
@ -925,24 +960,29 @@ function onAddClipboard(ev) { /* {{{ */
}
});
} else if(item.isDirectory) {
var dirReader = item.createReader();
dirReader.readEntries(function(entries) {
SeedDMSUpload.handleFileUpload(entries, obj, statusbar);
});
/*
noty({
text: 'Folders currently not supported',
type: 'error',
dismissQueue: true,
layout: 'topRight',
theme: 'defaultTheme',
timeout: 5000
});
*/
var fd = new FormData();
fd.append('folderid', target_id);
fd.append('formtoken', obj.data('uploadformtoken'));
fd.append('command', 'addfolder');
fd.append('name', item.name);
var fid = SeedDMSUpload.addSubFolder(fd);
if(fid) {
obj.data('target', fid);
obj.data('droptarget', 'folder_'+fid);
/* Set void afterupload to prevent tons of noty messages */
obj.data('afterupload', '()=>{}');
var dirReader = item.createReader();
dirReader.readEntries(function(entries) {
SeedDMSUpload.handleFileUpload(entries, obj, statusbar);
});
}
/* Just reload the parent folder */
if(target_id == seeddms_folder) {
$("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder});
}
}
}
} else if(target_type == 'document' && target_id) {
/*
for (var i = 0; i < items.length; i++) {
var item = items[i]; //.webkitGetAsEntry();
if (item.isFile) {
@ -952,15 +992,16 @@ function onAddClipboard(ev) { /* {{{ */
fd.append('targettype', target_type);
fd.append('documentid', target_id);
fd.append('formtoken', obj.data('uploadformtoken'));
fd.append('userfile', files[i]);
fd.append('command', 'uploaddocument');
fd.append('userfile', file);
fd.append('command', 'updatedocument');
var status = new SeedDMSUpload.createStatusbar(statusbar);
status.setFileNameSize(files[i].name,files[i].size);
status.setFileNameSize(file.name,file.size);
SeedDMSUpload.sendFileToServer(fd,status);
$("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder});
} else {
noty({
text: maxFileSizeMsg + '<br /><em>' + files[i].name + ' (' + files[i].size + ' Bytes)</em>',
text: maxFileSizeMsg + '<br /><em>' + file.name + ' (' + file.size + ' Bytes)</em>',
type: 'error',
dismissQueue: true,
layout: 'topRight',
@ -971,7 +1012,6 @@ function onAddClipboard(ev) { /* {{{ */
});
}
}
*/
} else if(target_type == 'attachment' && target_id) {
for (var i = 0; i < items.length; i++) {
var item = items[i]; //.webkitGetAsEntry();
@ -1058,9 +1098,9 @@ $(document).ready(function() { /* {{{ */
target_type = attr_rel.split("_")[0];
target_id = attr_rel.split("_")[1];
target_name = $(e.currentTarget).data('name')+''; // Force this to be a string
files = e.originalEvent.dataTransfer.files;
items = e.originalEvent.dataTransfer.items;
if(target_type == 'folder') {
var files = e.originalEvent.dataTransfer.files;
var items = e.originalEvent.dataTransfer.items;
/* 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);
@ -1179,8 +1219,6 @@ $(document).ready(function() { /* {{{ */
}
}
} else if(target_type == 'document') {
var files = e.originalEvent.dataTransfer.files;
var items = e.originalEvent.dataTransfer.items;
/* 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);
@ -1193,7 +1231,11 @@ $(document).ready(function() { /* {{{ */
theme: 'defaultTheme',
timeout: 5000
});
} else if(0) {
} else if(1) {
newitems = [];
for (var i=0; i<items.length; i++) {
newitems.push(items[i].webkitGetAsEntry());
}
bootbox.dialog({
"message" : trans.confirm_upload_new_version,
"buttons" : {
@ -1207,23 +1249,11 @@ $(document).ready(function() { /* {{{ */
"label" : "<i class='fa fa-link'></i> "+trans.upload_new_version,
"className" : "btn-danger",
"callback": function() {
console.log('Hallo');
/*
newitems = [];
for (var i=0; i<items.length; i++) {
newitems.push(items[i].webkitGetAsEntry());
}
SeedDMSUpload.handleFileUpload(newitems,$(e.currentTarget),$('div.statusbar-container h1'));
*/
}
}
}
});
newitems = [];
for (var i=0; i<items.length; i++) {
newitems.push(items[i].webkitGetAsEntry());
}
SeedDMSUpload.handleFileUpload(newitems,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
}
} else {
var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text"));
@ -1313,8 +1343,6 @@ $(document).ready(function() { /* {{{ */
}
}
} else if(target_type == 'attachment') {
var files = e.originalEvent.dataTransfer.files;
var items = e.originalEvent.dataTransfer.items;
if(files.length > 0) {
newitems = [];
for (var i=0; i<items.length; i++) {