Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Y.on('helpEditJS:updateEntries',function(){
- Y.log('helpEditJS:updateEntries','info','help.js');
- if(Y.one('#helpEntryDisplayOptions').get('value')=='thread'){
- Y.log('make list sortable');
- DJ5.treeviewOl = Y.one('#helpKeywordOl');
- var list = new Y.Sortable({
- container:DJ5.treeviewOl,
- nodes:'li',
- opacity:'.5',
- opacityNode:'dragNode',
- moveType:'insert'
- });
- Y.log('plugging treeview');
- DJ5.treeviewOl.plug(Y.Plugin.TreeviewLite);
- Y.log('treview plugged');
- }
- });
- var addedNode,
- newNode;
- // make a new node that can be inserted as a new tree sometimes
- Y.DD.DDM.on('drag:start', function(ev){
- newNode = Y.Node.create( '<ol></ol>' );
- newNode.setAttribute('id', Y.guid() );
- });
- // insert the nodes where needed
- Y.DD.DDM.on('drag:over', function(ev){
- // remove it from where it was
- if( addedNode !== undefined ) {
- addedNode.remove();
- }
- var t = ev.drop.get('node'),
- // tOl is looking for a child ol below the li
- tOl = t.one( 'ol' );
- // if we've over an li, add the new ol child block
- switch( t.get('nodeName').toLowerCase() ) {
- case 'li':
- // try and append it to existing ol on the target
- if( tOl ) {
- try {
- tOl.append( ev.drag.get('node') );
- } catch(e){ }
- // else add a new ol to the target
- } else {
- // try adding newNode
- try{
- t.append( newNode );
- newNode.append( ev.drag.get( 'node' ) );
- addedNode = newNode;
- } catch(e){ }
- }
- break;
- // if we're over an ol, just add this as a new li child
- case 'ol':
- try{
- t.append( ev.drag.get('node') );
- } catch(e){}
- break;
- default:
- break;
- }
- });
- // reset things at the end of the drag
- Y.DD.DDM.after("drag:end", function( ev ){
- addedNode = undefined;
- newNode = undefined;
- // DD somewhere sets some element styles, which mess up alignment somewhere in IE
- var targetNode = ev.target.get("node");
- targetNode.removeAttribute( "style" );
- // re-read the DOM of the tree to put + and - classes in the right places
- DJ5.treeviewOl.treeviewLite.renderUI();
- });
- // overwrite to check dragging onto itself:
- Y.Sortable.prototype._onDragOver = function(e){
- var NODE = "node",
- NODES = "nodes",
- PARENT_NODE = "parentNode",
- ID = "id";
- if (!e.drop.get(NODE).test(this.get(NODES))) {
- return;
- }
- if (e.drag.get(NODE) == e.drop.get(NODE)) {
- return;
- }
- // is drop a child of drag? - this is the bit that's added:
- if ( e.drag.get(NODE).contains( e.drop.get(NODE) ) ) {
- return;
- }
- switch (this.get('moveType').toLowerCase()) {
- case 'insert':
- var dir = ((this._up) ? 'before' : 'after');
- e.drop.get(NODE).insert(e.drag.get(NODE), dir);
- break;
- case 'swap':
- Y.DD.DDM.swapNode(e.drag, e.drop);
- break;
- case 'move':
- case 'copy':
- var dropsort = Y.Sortable.getSortable(e.drop.get(NODE).get(PARENT_NODE)),
- oldNode,
- newNode;
- if (!dropsort) {
- Y.log('No delegate parent found', 'error');
- return;
- }
- Y.DD.DDM.getDrop(e.drag.get(NODE)).addToGroup(dropsort.get(ID));
- //Same List
- if (e.drag.get(NODE).get(PARENT_NODE).contains(e.drop.get(NODE))) {
- Y.DD.DDM.swapNode(e.drag, e.drop);
- } else {
- if (this.get('moveType') == 'copy') {
- //New List
- oldNode = e.drag.get(NODE);
- newNode = oldNode.cloneNode(true);
- newNode.set(ID, '');
- e.drag.set(NODE, newNode);
- dropsort.delegate.createDrop(newNode, [dropsort.get(ID)]);
- oldNode.setStyles({ top: '', left: '' });
- }
- e.drop.get(NODE).insert(e.drag.get(NODE), 'before');
- }
- break;
- }
- };
Add Comment
Please, Sign In to add comment