Add frontend assets and plugin bundles
Add the legacy frontend themes, scripts, and plugin assets required by the main SPOTA interfaces.
This commit is contained in:
248
assets/plugins/dynatree/doc/sample-contextmenu.html
Normal file
248
assets/plugins/dynatree/doc/sample-contextmenu.html
Normal file
@@ -0,0 +1,248 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
|
||||
<title>Dynatree - Example</title>
|
||||
|
||||
<script src="../jquery/jquery.js" type="text/javascript"></script>
|
||||
<script src="../jquery/jquery-ui.custom.js" type="text/javascript"></script>
|
||||
<script src="../jquery/jquery.cookie.js" type="text/javascript"></script>
|
||||
|
||||
<link href="../src/skin/ui.dynatree.css" rel="stylesheet" type="text/css">
|
||||
<script src="../src/jquery.dynatree.js" type="text/javascript"></script>
|
||||
|
||||
<!-- jquery.contextmenu, A Beautiful Site (http://abeautifulsite.net/) -->
|
||||
<script src="contextmenu/jquery.contextMenu-custom.js" type="text/javascript"></script>
|
||||
<link href="contextmenu/jquery.contextMenu.css" rel="stylesheet" type="text/css" >
|
||||
|
||||
<!-- Start_Exclude: This block is not part of the sample code -->
|
||||
<link href="prettify.css" rel="stylesheet">
|
||||
<script src="prettify.js" type="text/javascript"></script>
|
||||
<link href="sample.css" rel="stylesheet" type="text/css">
|
||||
<script src="sample.js" type="text/javascript"></script>
|
||||
<!-- End_Exclude -->
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
// --- Implement Cut/Copy/Paste --------------------------------------------
|
||||
var clipboardNode = null;
|
||||
var pasteMode = null;
|
||||
|
||||
function copyPaste(action, node) {
|
||||
switch( action ) {
|
||||
case "cut":
|
||||
case "copy":
|
||||
clipboardNode = node;
|
||||
pasteMode = action;
|
||||
break;
|
||||
case "paste":
|
||||
if( !clipboardNode ) {
|
||||
alert("Clipoard is empty.");
|
||||
break;
|
||||
}
|
||||
if( pasteMode == "cut" ) {
|
||||
// Cut mode: check for recursion and remove source
|
||||
var isRecursive = false;
|
||||
var cb = clipboardNode.toDict(true, function(dict){
|
||||
// If one of the source nodes is the target, we must not move
|
||||
if( dict.key == node.data.key )
|
||||
isRecursive = true;
|
||||
});
|
||||
if( isRecursive ) {
|
||||
alert("Cannot move a node to a sub node.");
|
||||
return;
|
||||
}
|
||||
node.addChild(cb);
|
||||
clipboardNode.remove();
|
||||
} else {
|
||||
// Copy mode: prevent duplicate keys:
|
||||
var cb = clipboardNode.toDict(true, function(dict){
|
||||
dict.title = "Copy of " + dict.title;
|
||||
delete dict.key; // Remove key, so a new one will be created
|
||||
});
|
||||
node.addChild(cb);
|
||||
}
|
||||
clipboardNode = pasteMode = null;
|
||||
break;
|
||||
default:
|
||||
alert("Unhandled clipboard action '" + action + "'");
|
||||
}
|
||||
};
|
||||
|
||||
// --- Contextmenu helper --------------------------------------------------
|
||||
function bindContextMenu(span) {
|
||||
// Add context menu to this node:
|
||||
$(span).contextMenu({menu: "myMenu"}, function(action, el, pos) {
|
||||
// The event was bound to the <span> tag, but the node object
|
||||
// is stored in the parent <li> tag
|
||||
var node = $.ui.dynatree.getNode(el);
|
||||
switch( action ) {
|
||||
case "cut":
|
||||
case "copy":
|
||||
case "paste":
|
||||
copyPaste(action, node);
|
||||
break;
|
||||
default:
|
||||
alert("Todo: appply action '" + action + "' to node " + node);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// --- Init dynatree during startup ----------------------------------------
|
||||
|
||||
$(function(){
|
||||
|
||||
$("#tree").dynatree({
|
||||
persist: true,
|
||||
onActivate: function(node) {
|
||||
$("#echoActivated").text(node.data.title + ", key=" + node.data.key);
|
||||
},
|
||||
onClick: function(node, event) {
|
||||
// Close menu on click
|
||||
if( $(".contextMenu:visible").length > 0 ){
|
||||
$(".contextMenu").hide();
|
||||
// return false;
|
||||
}
|
||||
},
|
||||
onKeydown: function(node, event) {
|
||||
// Eat keyboard events, when a menu is open
|
||||
if( $(".contextMenu:visible").length > 0 )
|
||||
return false;
|
||||
|
||||
switch( event.which ) {
|
||||
|
||||
// Open context menu on [Space] key (simulate right click)
|
||||
case 32: // [Space]
|
||||
$(node.span).trigger("mousedown", {
|
||||
preventDefault: true,
|
||||
button: 2
|
||||
})
|
||||
.trigger("mouseup", {
|
||||
preventDefault: true,
|
||||
pageX: node.span.offsetLeft,
|
||||
pageY: node.span.offsetTop,
|
||||
button: 2
|
||||
});
|
||||
return false;
|
||||
|
||||
// Handle Ctrl-C, -X and -V
|
||||
case 67:
|
||||
if( event.ctrlKey ) { // Ctrl-C
|
||||
copyPaste("copy", node);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case 86:
|
||||
if( event.ctrlKey ) { // Ctrl-V
|
||||
copyPaste("paste", node);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case 88:
|
||||
if( event.ctrlKey ) { // Ctrl-X
|
||||
copyPaste("cut", node);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
},
|
||||
/*Bind context menu for every node when it's DOM element is created.
|
||||
We do it here, so we can also bind to lazy nodes, which do not
|
||||
exist at load-time. (abeautifulsite.net menu control does not
|
||||
support event delegation)*/
|
||||
onCreate: function(node, span){
|
||||
bindContextMenu(span);
|
||||
},
|
||||
/*Load lazy content (to show that context menu will work for new items too)*/
|
||||
onLazyRead: function(node){
|
||||
node.appendAjax({
|
||||
url: "sample-data2.json"
|
||||
});
|
||||
},
|
||||
/* D'n'd, just to show it's compatible with a context menu.
|
||||
See http://code.google.com/p/dynatree/issues/detail?id=174 */
|
||||
dnd: {
|
||||
preventVoidMoves: true, // Prevent dropping nodes 'before self', etc.
|
||||
onDragStart: function(node) {
|
||||
return true;
|
||||
},
|
||||
onDragEnter: function(node, sourceNode) {
|
||||
if(node.parent !== sourceNode.parent)
|
||||
return false;
|
||||
return ["before", "after"];
|
||||
},
|
||||
onDrop: function(node, sourceNode, hitMode, ui, draggable) {
|
||||
sourceNode.move(node, hitMode);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body class="example">
|
||||
<h1>Example: Context Menu</h1>
|
||||
<p class="description">
|
||||
Implementation of a context menu. Right-click a node and see what happens.<br>
|
||||
Also [space] key is supported to open the menu.<br>
|
||||
<br>
|
||||
This example also demonstrates, how to copy or move branches and how
|
||||
to implement clipboard functionality.
|
||||
<br>
|
||||
A keyboard handler implements Cut, Copy, and Paste with <code>Ctrl-X</code>,
|
||||
<code>Ctrl-C</code>, <code>Ctrl-V</code>.
|
||||
</p>
|
||||
<p class="description">
|
||||
This sample uses the jQuery Context Menu Plugin by Cory S.N. LaViska.
|
||||
Visit <a href="http://abeautifulsite.net/">A Beautiful Site</a> for usage and more information.
|
||||
<br>
|
||||
<b>NOTE:</b></br>
|
||||
I had to <a href="http://code.google.com/p/dynatree/issues/detail?id=174">patch Cory's code</a> in order to make it work. Please understand, that I am not able to support this plugin. There are many other context menus
|
||||
out there :-)
|
||||
</p>
|
||||
|
||||
<!-- Definition of context menu -->
|
||||
<ul id="myMenu" class="contextMenu">
|
||||
<li class="edit"><a href="#edit">Edit</a></li>
|
||||
<li class="cut separator"><a href="#cut">Cut</a></li>
|
||||
<li class="copy"><a href="#copy">Copy</a></li>
|
||||
<li class="paste"><a href="#paste">Paste</a></li>
|
||||
<li class="delete"><a href="#delete">Delete</a></li>
|
||||
<li class="quit separator"><a href="#quit">Quit</a></li>
|
||||
</ul>
|
||||
|
||||
<!-- Definition tree structure -->
|
||||
<div id="tree">
|
||||
<ul>
|
||||
<li id="id1" title="Look, a tool tip!">item1 with key and tooltip
|
||||
<li id="id2" class="activate">item2: activated on init
|
||||
<li id="id3" class="folder">Folder with some children
|
||||
<ul>
|
||||
<li id="id3.1">Sub-item 3.1
|
||||
<li id="id3.2">Sub-item 3.2
|
||||
</ul>
|
||||
|
||||
<li id="id4" class="expanded">Document with some children (expanded on init)
|
||||
<ul>
|
||||
<li id="id4.1">Sub-item 4.1
|
||||
<li id="id4.2">Sub-item 4.2
|
||||
</ul>
|
||||
|
||||
<li id="id5" class="lazy folder">Lazy folder
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div>Selected node: <span id="echoActivated">-</span></div>
|
||||
|
||||
<!-- Start_Exclude: This block is not part of the sample code -->
|
||||
<hr>
|
||||
<p class="sample-links no_code">
|
||||
<a class="hideInsideFS" href="http://dynatree.googlecode.com">jquery.dynatree.js project home</a>
|
||||
<a class="hideOutsideFS" href="#">Link to this page</a>
|
||||
<a class="hideInsideFS" href="samples.html">Example Browser</a>
|
||||
<a href="#" id="codeExample">View source code</a>
|
||||
</p>
|
||||
<pre id="sourceCode" class="prettyprint" style="display:none"></pre>
|
||||
<!-- End_Exclude -->
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user