Guest User

Untitled

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