Guest User

Untitled

a guest
May 27th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.52 KB | None | 0 0
  1. var addedNode,
  2. newNode,
  3. treeviewOl;
  4.  
  5. Y.on('helpEditJS:updateEntries',function(){
  6. Y.log('helpEditJS:updateEntries','info','help.js');
  7.  
  8.  
  9. if(Y.one('#helpEntryDisplayOptions').get('value')=='thread'){
  10. Y.log('make list sortable');
  11. var list = new Y.Sortable({
  12. container:'#helpKeywordOl',
  13. nodes:'li',
  14. opacity:'.5',
  15. opacityNode:'dragNode',
  16. moveType:'insert'
  17. });
  18. Y.log('plugging treeview');
  19. treeviewOl = Y.one('#helpKeywordOl').plug(Y.Plugin.TreeviewLite);
  20. Y.log('treview plugged');
  21. }
  22. });
  23.  
  24.  
  25. // make a new node that can be inserted as a new tree sometimes
  26. Y.DD.DDM.on('drag:start', function(ev){
  27. newNode = Y.Node.create( '<ol></ol>' );
  28. newNode.setAttribute('id', Y.guid() );
  29. });
  30.  
  31. // insert the nodes where needed
  32. Y.DD.DDM.on('drag:over', function(ev){
  33. // remove it from where it was
  34. if( addedNode !== undefined ) {
  35. addedNode.remove();
  36. }
  37.  
  38. var t = ev.drop.get('node'),
  39. // tOl is looking for a child ol below the li
  40. tOl = t.one( 'ol' );
  41.  
  42. // if we've over an li, add the new ol child block
  43. switch( t.get('nodeName').toLowerCase() ) {
  44. case 'li':
  45. // try and append it to existing ol on the target
  46. if( tOl ) {
  47. try {
  48. tOl.append( ev.drag.get('node') );
  49. } catch(e){ }
  50.  
  51. // else add a new ol to the target
  52. } else {
  53. // try adding newNode
  54. try{
  55. t.append( newNode );
  56. newNode.append( ev.drag.get( 'node' ) );
  57. addedNode = newNode;
  58. } catch(e){ }
  59. }
  60. break;
  61.  
  62. // if we're over an ol, just add this as a new li child
  63. case 'ol':
  64. try{
  65. t.append( ev.drag.get('node') );
  66. } catch(e){}
  67. break;
  68. default:
  69. break;
  70. }
  71. });
  72.  
  73. // reset things at the end of the drag
  74. Y.DD.DDM.after("drag:end", function( ev ){
  75. addedNode = undefined;
  76. newNode = undefined;
  77. // DD somewhere sets some element styles, which mess up alignment somewhere in IE
  78. var targetNode = ev.target.get("node");
  79. targetNode.removeAttribute( "style" );
  80. // re-read the DOM of the tree to put + and - classes in the right places
  81. treeviewOl.treeviewLite.renderUI();
  82. });
  83.  
  84. // overwrite to check dragging onto itself:
  85. Y.Sortable.prototype._onDragOver = function(e){
  86. var NODE = "node",
  87. NODES = "nodes",
  88. PARENT_NODE = "parentNode",
  89. ID = "id";
  90. if (!e.drop.get(NODE).test(this.get(NODES))) {
  91. return;
  92. }
  93. if (e.drag.get(NODE) == e.drop.get(NODE)) {
  94. return;
  95. }
  96.  
  97. // is drop a child of drag? - this is the bit that's added:
  98. if ( e.drag.get(NODE).contains( e.drop.get(NODE) ) ) {
  99. return;
  100. }
  101.  
  102. switch (this.get('moveType').toLowerCase()) {
  103. case 'insert':
  104. var dir = ((this._up) ? 'before' : 'after');
  105. e.drop.get(NODE).insert(e.drag.get(NODE), dir);
  106. break;
  107. case 'swap':
  108. Y.DD.DDM.swapNode(e.drag, e.drop);
  109. break;
  110. case 'move':
  111. case 'copy':
  112. var dropsort = Y.Sortable.getSortable(e.drop.get(NODE).get(PARENT_NODE)),
  113. oldNode,
  114. newNode;
  115. if (!dropsort) {
  116. Y.log('No delegate parent found', 'error');
  117. return;
  118. }
  119. Y.DD.DDM.getDrop(e.drag.get(NODE)).addToGroup(dropsort.get(ID));
  120.  
  121. //Same List
  122. if (e.drag.get(NODE).get(PARENT_NODE).contains(e.drop.get(NODE))) {
  123. Y.DD.DDM.swapNode(e.drag, e.drop);
  124. } else {
  125. if (this.get('moveType') == 'copy') {
  126. //New List
  127. oldNode = e.drag.get(NODE);
  128. newNode = oldNode.cloneNode(true);
  129. newNode.set(ID, '');
  130. e.drag.set(NODE, newNode);
  131. dropsort.delegate.createDrop(newNode, [dropsort.get(ID)]);
  132. oldNode.setStyles({ top: '', left: '' });
  133. }
  134. e.drop.get(NODE).insert(e.drag.get(NODE), 'before');
  135. }
  136. break;
  137. }
  138. };
Add Comment
Please, Sign In to add comment