much cleaner drap&drop support

This commit is contained in:
Uwe Steinmann 2016-03-08 06:56:58 +01:00
parent 691565473d
commit 6098fc9057
2 changed files with 102 additions and 50 deletions

View File

@ -396,37 +396,6 @@ function allowDrop(ev) {
return false;
}
function onDragStartDocument(ev) {
attr_rel = $(ev.target).attr('rel');
ev.dataTransfer.setData("id", attr_rel.split("_")[1]);
ev.dataTransfer.setData("type","document");
}
function onDragStartFolder(ev) {
attr_rel = $(ev.target).attr('rel');
ev.dataTransfer.setData("id", attr_rel.split("_")[1]);
ev.dataTransfer.setData("type","folder");
}
function onDrop(ev) {
ev.preventDefault();
ev.stopPropagation();
attr_rel = $(ev.currentTarget).attr('rel');
target_type = attr_rel.split("_")[0];
target_id = attr_rel.split("_")[1];
source_type = ev.dataTransfer.getData("type");
source_id = ev.dataTransfer.getData("id");
if(source_type == 'document') {
url = "../out/out.MoveDocument.php?documentid="+source_id+"&targetid="+target_id;
document.location = url;
} else if(source_type == 'folder') {
url = "../out/out.MoveFolder.php?folderid="+source_id+"&targetid="+target_id;
document.location = url;
}
// console.log(attr_rel);
// console.log(ev.dataTransfer.getData("type") + ev.dataTransfer.getData("id"));
}
function onAddClipboard(ev) {
ev.preventDefault();
source_type = ev.originalEvent.dataTransfer.getData("type");
@ -624,7 +593,10 @@ $(document).ready(function() {
obj.on('dragenter', function (e) {
e.stopPropagation();
e.preventDefault();
$(this).css('border', '2px dotted #0B85A1');
$(this).css('border', '2px dashed #0B85A1');
});
obj.on('dragleave', function (e) {
$(this).css('border', '0px solid white');
});
obj.on('dragover', function (e) {
e.stopPropagation();
@ -639,29 +611,109 @@ $(document).ready(function() {
SeedDMSUpload.handleFileUpload(files,obj);
});
var clipboard = $("#main-clipboard");
var folder = $(".table-row-folder");
folder.on('dragenter', function (e) {
e.stopPropagation();
e.preventDefault();
$(e.currentTarget).css('border', '2px dashed #0B85A1');
});
folder.on('dragleave', function (e) {
e.stopPropagation();
e.preventDefault();
$(e.currentTarget).css('border', '0px solid white');
});
folder.on('dragover', function (e) {
e.stopPropagation();
e.preventDefault();
});
folder.on('drop', function (e) {
e.preventDefault();
e.stopPropagation();
attr_rel = $(e.currentTarget).attr('rel');
target_type = attr_rel.split("_")[0];
target_id = attr_rel.split("_")[1];
source_type = e.originalEvent.dataTransfer.getData("type");
source_id = e.originalEvent.dataTransfer.getData("id");
if(source_type == 'document') {
url = "../out/out.MoveDocument.php?documentid="+source_id+"&targetid="+target_id;
document.location = url;
} else if(source_type == 'folder') {
url = "../out/out.MoveFolder.php?folderid="+source_id+"&targetid="+target_id;
document.location = url;
}
});
folder.on('dragstart', function (e) {
attr_rel = $(e.target).attr('rel');
if(typeof attr_rel == 'undefined')
return;
e.originalEvent.dataTransfer.setData("id", attr_rel.split("_")[1]);
e.originalEvent.dataTransfer.setData("type","folder");
});
var doc = $(".table-row-document");
doc.on('dragstart', function (e) {
attr_rel = $(e.target).attr('rel');
if(typeof attr_rel == 'undefined')
return;
e.originalEvent.dataTransfer.setData("id", attr_rel.split("_")[1]);
e.originalEvent.dataTransfer.setData("type","document");
});
var clipboard = $("#main-clipboard div.alert");
clipboard.on('dragenter', function (e) {
e.stopPropagation();
e.preventDefault();
$(this).css('border', '2px dotted #0B85A1');
$(this).css('border', '2px dashed #0B85A1');
});
clipboard.on('dragleave', function (e) {
$(this).css('border', '0px solid white');
});
clipboard.on('dragover', function (e) {
e.preventDefault();
});
clipboard.on('drop', function (e) {
$(this).css('border', '0px dotted #0B85A1');
onAddClipboard(e);
});
$(document).on('dragenter', function (e) {
$("#jqtree").on('dragenter', function (e) {
attr_rel = $(e.srcElement).attr('rel');
if(typeof attr_rel == 'undefined')
return;
$(e.srcElement).parent().css('border', '2px dashed #0B85A1');
e.stopPropagation();
e.preventDefault();
});
$(document).on('dragover', function (e) {
$("#jqtree").on('dragleave', function (e) {
attr_rel = $(e.srcElement).attr('rel');
if(typeof attr_rel == 'undefined')
return;
$(e.srcElement).parent().css('border', '0px solid white');
e.stopPropagation();
e.preventDefault();
});
$(document).on('drop', function (e) {
$("#jqtree").on('dragover', function (e) {
e.stopPropagation();
e.preventDefault();
});
$("#jqtree").on('drop', function (e) {
e.stopPropagation();
e.preventDefault();
attr_rel = $(e.srcElement).attr('rel');
if(typeof attr_rel == 'undefined')
return;
target_type = attr_rel.split("_")[0];
target_id = attr_rel.split("_")[1];
source_type = e.originalEvent.dataTransfer.getData("type");
source_id = e.originalEvent.dataTransfer.getData("id");
if(source_type == 'document') {
url = "../out/out.MoveDocument.php?documentid="+source_id+"&targetid="+target_id;
document.location = url;
} else if(source_type == 'folder') {
url = "../out/out.MoveFolder.php?folderid="+source_id+"&targetid="+target_id;
document.location = url;
}
});
$('div.splash').each(function(index) {
var element = $(this);

View File

@ -329,7 +329,7 @@ $(document).ready(function () {
for ($i = 0; $i < count($path); $i++) {
$txtpath .= "<li>";
if ($i +1 < count($path)) {
$txtpath .= "<a href=\"../out/out.ViewFolder.php?folderid=".$path[$i]->getID()."&showtree=".showtree()."\" rel=\"folder_".$path[$i]->getID()."\" ondragover=\"allowDrop(event)\" ondrop=\"onDrop(event)\">".
$txtpath .= "<a href=\"../out/out.ViewFolder.php?folderid=".$path[$i]->getID()."&showtree=".showtree()."\" rel=\"folder_".$path[$i]->getID()."\" class=\"table-row-folder\">".
htmlspecialchars($path[$i]->getName())."</a>";
}
else {
@ -1308,7 +1308,7 @@ $(function() {
onCreateLi: function(node, $li) {
// Add 'icon' span before title
if(node.is_folder)
$li.find('.jqtree-title').before('<i class="icon-folder-close-alt" rel="folder_' + node.id + '" ondragover="allowDrop(event)" ondrop="onDrop(event)"></i> ').attr('rel', 'folder_' + node.id).attr('ondragover', 'allowDrop(event)').attr('ondrop', 'onDrop(event)');
$li.find('.jqtree-title').before('<i class="icon-folder-close-alt table-row-folder" rel="folder_' + node.id + '" _ondragover="allowDrop(event)" _ondrop="onDrop(event)"></i> ').attr('rel', 'folder_' + node.id).attr('_ondragover', 'allowDrop(event)').attr('_ondrop', 'onDrop(event)');
else
$li.find('.jqtree-title').before('<i class="icon-file"></i> ');
}
@ -1351,9 +1351,9 @@ $(function() {
if($folder = $dms->getFolder($folderid)) {
$comment = $folder->getComment();
if (strlen($comment) > 150) $comment = substr($comment, 0, 147) . "...";
$content .= "<tr rel=\"folder_".$folder->getID()."\" class=\"folder\" ondragover=\"allowDrop(event)\" ondrop=\"onDrop(event)\">";
$content .= "<td><a rel=\"folder_".$folder->getID()."\" draggable=\"true\" ondragstart=\"onDragStartFolder(event);\" href=\"out.ViewFolder.php?folderid=".$folder->getID()."&showtree=".showtree()."\"><img draggable=\"false\" src=\"".$this->imgpath."folder.png\" width=\"24\" height=\"24\" border=0></a></td>\n";
$content .= "<td><a href=\"out.ViewFolder.php?folderid=".$folder->getID()."&showtree=".showtree()."\">" . htmlspecialchars($folder->getName()) . "</a>";
$content .= "<tr draggable=\"true\" rel=\"folder_".$folder->getID()."\" class=\"folder table-row-folder\">";
$content .= "<td><a draggable=\"false\" href=\"out.ViewFolder.php?folderid=".$folder->getID()."&showtree=".showtree()."\"><img draggable=\"false\" src=\"".$this->imgpath."folder.png\" width=\"24\" height=\"24\" border=0></a></td>\n";
$content .= "<td><a draggable=\"false\" href=\"out.ViewFolder.php?folderid=".$folder->getID()."&showtree=".showtree()."\">" . htmlspecialchars($folder->getName()) . "</a>";
if($comment) {
$content .= "<br /><span style=\"font-size: 85%;\">".htmlspecialchars($comment)."</span>";
}
@ -1378,10 +1378,10 @@ $(function() {
$version = $latestContent->getVersion();
$status = $latestContent->getStatus();
$content .= "<tr>";
$content .= "<tr draggable=\"true\" rel=\"document_".$docid."\" class=\"table-row-document\">";
if (file_exists($dms->contentDir . $latestContent->getPath())) {
$content .= "<td><a rel=\"document_".$docid."\" draggable=\"true\" ondragstart=\"onDragStartDocument(event);\" href=\"../op/op.Download.php?documentid=".$docid."&version=".$version."\">";
$content .= "<td><a draggable=\"false\" href=\"../op/op.Download.php?documentid=".$docid."&version=".$version."\">";
if($previewer->hasPreview($latestContent)) {
$content .= "<img draggable=\"false\" class=\"mimeicon\" width=\"40\"src=\"../op/op.Preview.php?documentid=".$document->getID()."&version=".$latestContent->getVersion()."&width=40\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">";
} else {
@ -1425,7 +1425,7 @@ $(function() {
*/
function printClipboard($clipboard){ /* {{{ */
$this->contentHeading(getMLText("clipboard"), true);
echo "<div id=\"main-clipboard\" _class=\"well\" ondragover=\"allowDrop(event)\" _ondrop=\"onAddClipboard(event)\">\n";
echo "<div id=\"main-clipboard\">\n";
echo $this->mainClipboard($clipboard);
echo "</div>\n";
} /* }}} */
@ -1626,7 +1626,7 @@ $(function() {
$docID = $document->getID();
if(!$skipcont)
$content .= "<tr id=\"table-row-document-".$docID."\">";
$content .= "<tr id=\"table-row-document-".$docID."\" class=\"table-row-document\" rel=\"document_".$docID."\" draggable=\"true\">";
if($latestContent = $document->getLatestContent()) {
$previewer->createPreview($latestContent);
@ -1648,7 +1648,7 @@ $(function() {
$links = SeedDMS_Core_DMS::filterDocumentLinks($user, $links);
if (file_exists($dms->contentDir . $latestContent->getPath())) {
$content .= "<td><a rel=\"document_".$docID."\" draggable=\"true\" ondragstart=\"onDragStartDocument(event);\" href=\"../op/op.Download.php?documentid=".$docID."&version=".$version."\">";
$content .= "<td><a draggable=\"false\" href=\"../op/op.Download.php?documentid=".$docID."&version=".$version."\">";
if($previewer->hasPreview($latestContent)) {
$content .= "<img draggable=\"false\" class=\"mimeicon\" width=\"".$previewwidth."\"src=\"../op/op.Preview.php?documentid=".$document->getID()."&version=".$latestContent->getVersion()."&width=".$previewwidth."\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">";
} else {
@ -1726,10 +1726,10 @@ $(function() {
$subdoc = SeedDMS_Core_DMS::filterAccess($subdoc, $user, M_READ);
$content = '';
$content .= "<tr id=\"table-row-folder-".$subFolder->getID()."\" rel=\"folder_".$subFolder->getID()."\" class=\"folder\" ondragover=\"allowDrop(event)\" ondrop=\"onDrop(event)\">";
$content .= "<tr id=\"table-row-folder-".$subFolder->getID()."\" draggable=\"true\" rel=\"folder_".$subFolder->getID()."\" class=\"folder table-row-folder\">";
// $content .= "<td><img src=\"images/folder_closed.gif\" width=18 height=18 border=0></td>";
$content .= "<td><a rel=\"folder_".$subFolder->getID()."\" draggable=\"true\" ondragstart=\"onDragStartFolder(event);\" href=\"out.ViewFolder.php?folderid=".$subFolder->getID()."&showtree=".$showtree."\"><img draggable=\"false\" src=\"".$this->imgpath."folder.png\" width=\"24\" height=\"24\" border=0></a></td>\n";
$content .= "<td><a href=\"out.ViewFolder.php?folderid=".$subFolder->getID()."&showtree=".$showtree."\">" . htmlspecialchars($subFolder->getName()) . "</a>";
$content .= "<td><a _rel=\"folder_".$subFolder->getID()."\" draggable=\"false\" href=\"out.ViewFolder.php?folderid=".$subFolder->getID()."&showtree=".$showtree."\"><img draggable=\"false\" src=\"".$this->imgpath."folder.png\" width=\"24\" height=\"24\" border=0></a></td>\n";
$content .= "<td><a draggable=\"false\" _rel=\"folder_".$subFolder->getID()."\" href=\"out.ViewFolder.php?folderid=".$subFolder->getID()."&showtree=".$showtree."\">" . htmlspecialchars($subFolder->getName()) . "</a>";
$content .= "<br /><span style=\"font-size: 85%; font-style: italic; color: #666;\">".getMLText('owner').": <b>".htmlspecialchars($owner->getFullName())."</b>, ".getMLText('creation_date').": <b>".date('Y-m-d', $subFolder->getDate())."</b></span>";
if($comment) {
$content .= "<br /><span style=\"font-size: 85%;\">".htmlspecialchars($comment)."</span>";