dynatree-rails 0.0.4 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,23 +2,27 @@
2
2
  jquery.dynatree.js
3
3
  Dynamic tree view control, with support for lazy loading of branches.
4
4
 
5
- Copyright (c) 2008-2011, Martin Wendt (http://wwWendt.de)
5
+ Copyright (c) 2006-2012, Martin Wendt (http://wwWendt.de)
6
6
  Dual licensed under the MIT or GPL Version 2 licenses.
7
7
  http://code.google.com/p/dynatree/wiki/LicenseInfo
8
8
 
9
9
  A current version and some documentation is available at
10
10
  http://dynatree.googlecode.com/
11
11
 
12
- $Version: 1.2.1_rc3$
13
- $Revision: 585, 2012-01-10 00:07:39$
12
+ $Version: 1.2.2$
13
+ $Revision: 627, 2012-10-07 16:55:00$
14
14
 
15
15
  @depends: jquery.js
16
16
  @depends: jquery.ui.core.js
17
17
  @depends: jquery.cookie.js
18
18
  *************************************************************************/
19
19
 
20
+ /* jsHint options*/
20
21
  // Note: We currently allow eval() to parse the 'data' attribtes, when initializing from HTML.
21
- /*jslint laxbreak: true, browser: true, evil: true, indent: 0, white: false, onevar: false */
22
+ // TODO: pass jsHint with the options given in grunt.js only.
23
+ // The following should not be required:
24
+ /*global alert */
25
+ /*jshint nomen:false, smarttabs:true, eqeqeq:false, evil:true, regexp:false */
22
26
 
23
27
  /*************************************************************************
24
28
  * Debug functions
@@ -188,7 +192,8 @@ DynaTreeNode.prototype = {
188
192
  cache = tree.cache,
189
193
  level = this.getLevel(),
190
194
  data = this.data,
191
- res = "";
195
+ res = "",
196
+ imageSrc;
192
197
  // connector (expanded, expandable or simple)
193
198
  if( level < opts.minExpandLevel ) {
194
199
  if(level > 1){
@@ -206,10 +211,15 @@ DynaTreeNode.prototype = {
206
211
  }
207
212
  // folder or doctype icon
208
213
  if ( data.icon ) {
209
- res += "<img src='" + opts.imagePath + data.icon + "' alt='' />";
214
+ if (data.icon.charAt(0) === "/"){
215
+ imageSrc = data.icon;
216
+ }else{
217
+ imageSrc = opts.imagePath + data.icon;
218
+ }
219
+ res += "<img src='" + imageSrc + "' alt='' />";
210
220
  } else if ( data.icon === false ) {
211
221
  // icon == false means 'no icon'
212
- noop(); // keep JSLint happy
222
+ // noop(); // keep JSLint happy
213
223
  } else {
214
224
  // icon == null means 'default icon'
215
225
  res += cache.tagNodeIcon;
@@ -898,6 +908,8 @@ DynaTreeNode.prototype = {
898
908
  for(i=0, l=p.childList.length; i<l; i++) {
899
909
  var n = p.childList[i];
900
910
  if( !n.bSelected && !n.data.isStatusNode && !n.data.unselectable) {
911
+ // issue 305 proposes this:
912
+ // if( !n.bSelected && !n.data.isStatusNode ) {
901
913
  allChildsSelected = false;
902
914
  break;
903
915
  }
@@ -1155,12 +1167,8 @@ DynaTreeNode.prototype = {
1155
1167
  this._userActivate();
1156
1168
  var aTag = this.span.getElementsByTagName("a");
1157
1169
  if(aTag[0]){
1158
- // issue 154
1159
- // TODO: check if still required on IE 9:
1160
- // Chrome and Safari don't focus the a-tag on click,
1161
- // but calling focus() seem to have problems on IE:
1162
- // http://code.google.com/p/dynatree/issues/detail?id=154
1163
- if(!$.browser.msie){
1170
+ // issue 154, 313
1171
+ if(!($.browser.msie && parseInt($.browser.version, 10) < 9)){
1164
1172
  aTag[0].focus();
1165
1173
  }
1166
1174
  }else{
@@ -1272,7 +1280,7 @@ DynaTreeNode.prototype = {
1272
1280
 
1273
1281
  _onFocus: function(event) {
1274
1282
  // Handles blur and focus events.
1275
- // this.tree.logDebug("dtnode.onFocus(%o): %o", event, this);
1283
+ // this.tree.logDebug("dtnode._onFocus(%o): %o", event, this);
1276
1284
  var opts = this.tree.options;
1277
1285
  if ( event.type == "blur" || event.type == "focusout" ) {
1278
1286
  if ( opts.onBlur ){
@@ -1478,39 +1486,44 @@ DynaTreeNode.prototype = {
1478
1486
  throw "Key path must be relative (don't start with '/')";
1479
1487
  }
1480
1488
  var seg = segList.shift();
1481
-
1482
- for(var i=0, l=this.childList.length; i < l; i++){
1483
- var child = this.childList[i];
1484
- if( child.data.key === seg ){
1485
- if(segList.length === 0) {
1486
- // Found the end node
1487
- callback.call(tree, child, "ok");
1488
-
1489
- }else if(child.data.isLazy && (child.childList === null || child.childList === undefined)){
1490
- tree.logDebug("%s._loadKeyPath(%s) -> reloading %s...", this, keyPath, child);
1491
- var self = this;
1492
- child.reloadChildren(function(node, isOk){
1493
- // After loading, look for direct child with that key
1494
- if(isOk){
1495
- tree.logDebug("%s._loadKeyPath(%s) -> reloaded %s.", node, keyPath, node);
1496
- callback.call(tree, child, "loaded");
1497
- node._loadKeyPath(segList.join(tree.options.keyPathSeparator), callback);
1498
- }else{
1499
- tree.logWarning("%s._loadKeyPath(%s) -> reloadChildren() failed.", self, keyPath);
1500
- callback.call(tree, child, "error");
1501
- }
1502
- }); // Note: this line gives a JSLint warning (Don't make functions within a loop)
1503
- // we can ignore it, since it will only be exectuted once, the the loop is ended
1504
- // See also http://stackoverflow.com/questions/3037598/how-to-get-around-the-jslint-error-dont-make-functions-within-a-loop
1505
- } else {
1506
- callback.call(tree, child, "loaded");
1507
- // Look for direct child with that key
1508
- child._loadKeyPath(segList.join(tree.options.keyPathSeparator), callback);
1489
+ if(this.childList){
1490
+ for(var i=0, l=this.childList.length; i < l; i++){
1491
+ var child = this.childList[i];
1492
+ if( child.data.key === seg ){
1493
+ if(segList.length === 0) {
1494
+ // Found the end node
1495
+ callback.call(tree, child, "ok");
1496
+
1497
+ }else if(child.data.isLazy && (child.childList === null || child.childList === undefined)){
1498
+ tree.logDebug("%s._loadKeyPath(%s) -> reloading %s...", this, keyPath, child);
1499
+ var self = this;
1500
+ // Note: this line gives a JSLint warning (Don't make functions within a loop)
1501
+ /*jshint loopfunc:true */
1502
+ child.reloadChildren(function(node, isOk){
1503
+ // After loading, look for direct child with that key
1504
+ if(isOk){
1505
+ tree.logDebug("%s._loadKeyPath(%s) -> reloaded %s.", node, keyPath, node);
1506
+ callback.call(tree, child, "loaded");
1507
+ node._loadKeyPath(segList.join(tree.options.keyPathSeparator), callback);
1508
+ }else{
1509
+ tree.logWarning("%s._loadKeyPath(%s) -> reloadChildren() failed.", self, keyPath);
1510
+ callback.call(tree, child, "error");
1511
+ }
1512
+ });
1513
+ // we can ignore it, since it will only be exectuted once, the the loop is ended
1514
+ // See also http://stackoverflow.com/questions/3037598/how-to-get-around-the-jslint-error-dont-make-functions-within-a-loop
1515
+ } else {
1516
+ callback.call(tree, child, "loaded");
1517
+ // Look for direct child with that key
1518
+ child._loadKeyPath(segList.join(tree.options.keyPathSeparator), callback);
1519
+ }
1520
+ return;
1509
1521
  }
1510
- return;
1511
1522
  }
1512
1523
  }
1513
1524
  // Could not find key
1525
+ // Callback params: child: undefined, the segment, isEndNode (segList.length === 0)
1526
+ callback.call(tree, undefined, "notfound", seg, segList.length === 0);
1514
1527
  tree.logWarning("Node not found: " + seg);
1515
1528
  return;
1516
1529
  },
@@ -1729,7 +1742,7 @@ DynaTreeNode.prototype = {
1729
1742
  // Process ASPX WebMethod JSON object inside "d" property
1730
1743
  // http://code.google.com/p/dynatree/issues/detail?id=202
1731
1744
  else if (data && data.hasOwnProperty("d")) {
1732
- data = (typeof data.d) == "string" ? $.parseJSON(data.d) : response.d;
1745
+ data = (typeof data.d) == "string" ? $.parseJSON(data.d) : data.d;
1733
1746
  }
1734
1747
  if(!$.isArray(data) || data.length !== 0){
1735
1748
  self.addChild(data, null);
@@ -1789,7 +1802,7 @@ DynaTreeNode.prototype = {
1789
1802
  }
1790
1803
  // Unlink this node from current parent
1791
1804
  if( this.parent.childList.length == 1 ) {
1792
- this.parent.childList = null;
1805
+ this.parent.childList = this.parent.data.isLazy ? [] : null;
1793
1806
  this.parent.bExpanded = false;
1794
1807
  } else {
1795
1808
  pos = $.inArray(this, this.parent.childList);
@@ -1799,7 +1812,9 @@ DynaTreeNode.prototype = {
1799
1812
  this.parent.childList.splice(pos, 1);
1800
1813
  }
1801
1814
  // Remove from source DOM parent
1802
- this.parent.ul.removeChild(this.li);
1815
+ if(this.parent.ul){
1816
+ this.parent.ul.removeChild(this.li);
1817
+ }
1803
1818
 
1804
1819
  // Insert this node to target parent's child list
1805
1820
  this.parent = targetParent;
@@ -1839,8 +1854,10 @@ DynaTreeNode.prototype = {
1839
1854
  targetParent.ul.style.display = "none";
1840
1855
  targetParent.li.appendChild(targetParent.ul);
1841
1856
  }
1842
- // Add to target DOM parent
1843
- targetParent.ul.appendChild(this.li);
1857
+ // Issue 319: Add to target DOM parent (only if node was already rendered(expanded))
1858
+ if(this.li){
1859
+ targetParent.ul.appendChild(this.li);
1860
+ }
1844
1861
 
1845
1862
  if( this.tree !== targetNode.tree ) {
1846
1863
  // Fix node.tree for all source nodes
@@ -2026,7 +2043,7 @@ var DynaTree = Class.create();
2026
2043
 
2027
2044
  // --- Static members ----------------------------------------------------------
2028
2045
 
2029
- DynaTree.version = "$Version: 1.2.1_rc3$";
2046
+ DynaTree.version = "$Version: 1.2.2$";
2030
2047
 
2031
2048
  /*
2032
2049
  DynaTree._initTree = function() {
@@ -2139,10 +2156,10 @@ DynaTree.prototype = {
2139
2156
  this.tnRoot.render();
2140
2157
  this.divTree.appendChild(this.tnRoot.ul);
2141
2158
 
2142
- var root = this.tnRoot;
2143
- var isReloading = ( opts.persist && this.persistence.isReloading() );
2144
- var isLazy = false;
2145
- var prevFlag = this.enableUpdate(false);
2159
+ var root = this.tnRoot,
2160
+ isReloading = ( opts.persist && this.persistence.isReloading() ),
2161
+ isLazy = false,
2162
+ prevFlag = this.enableUpdate(false);
2146
2163
 
2147
2164
  this.logDebug("Dynatree._load(): read tree structure...");
2148
2165
 
@@ -2535,8 +2552,9 @@ TODO: better?
2535
2552
  if( !this.$dndMarker ) {
2536
2553
  this.$dndMarker = $("<div id='dynatree-drop-marker'></div>")
2537
2554
  .hide()
2555
+ .css({"z-index": 1000})
2538
2556
  .prependTo($(this.divTree).parent());
2539
- // .prependTo("body");
2557
+
2540
2558
  // logMsg("Creating marker: %o", this.$dndMarker);
2541
2559
  }
2542
2560
  /*
@@ -2546,29 +2564,28 @@ TODO: better?
2546
2564
  // sourceNode.removeClass("dynatree-drop-target");
2547
2565
  }
2548
2566
  */
2549
- // this.$dndMarker.attr("class", hitMode);
2550
2567
  if(hitMode === "after" || hitMode === "before" || hitMode === "over"){
2551
2568
  // $source && $source.addClass("dynatree-drag-source");
2552
- var pos = $target.offset();
2553
-
2554
2569
  // $target.addClass("dynatree-drop-target");
2555
2570
 
2571
+ var markerOffset = "0 0";
2572
+
2556
2573
  switch(hitMode){
2557
2574
  case "before":
2558
2575
  this.$dndMarker.removeClass("dynatree-drop-after dynatree-drop-over");
2559
2576
  this.$dndMarker.addClass("dynatree-drop-before");
2560
- pos.top -= 8;
2577
+ markerOffset = "0 -8";
2561
2578
  break;
2562
2579
  case "after":
2563
2580
  this.$dndMarker.removeClass("dynatree-drop-before dynatree-drop-over");
2564
2581
  this.$dndMarker.addClass("dynatree-drop-after");
2565
- pos.top += 8;
2582
+ markerOffset = "0 8";
2566
2583
  break;
2567
2584
  default:
2568
2585
  this.$dndMarker.removeClass("dynatree-drop-after dynatree-drop-before");
2569
2586
  this.$dndMarker.addClass("dynatree-drop-over");
2570
2587
  $target.addClass("dynatree-drop-target");
2571
- pos.left += 8;
2588
+ markerOffset = "8 0";
2572
2589
  }
2573
2590
  // logMsg("Creating marker: %o", this.$dndMarker);
2574
2591
  // logMsg(" $target.offset=%o", $target);
@@ -2581,13 +2598,15 @@ TODO: better?
2581
2598
  // var parentPos = $target.offsetParent().offset();
2582
2599
  // var bodyPos = $target.offsetParent().offset();
2583
2600
 
2584
- this.$dndMarker //.offset({left: pos.left, top: pos.top})
2585
- .css({
2586
- "left": pos.left,
2587
- "top": pos.top,
2588
- "z-index": 1000
2589
- })
2590
- .show();
2601
+ this.$dndMarker
2602
+ .show()
2603
+ .position({
2604
+ my: "left top",
2605
+ at: "left top",
2606
+ of: $target,
2607
+ offset: markerOffset
2608
+ });
2609
+
2591
2610
  // helper.addClass("dynatree-drop-hover");
2592
2611
  } else {
2593
2612
  // $source && $source.removeClass("dynatree-drag-source");
@@ -2659,7 +2678,8 @@ TODO: better?
2659
2678
  dnd = this.options.dnd,
2660
2679
  res = null,
2661
2680
  nodeTag = $(node.span),
2662
- hitMode;
2681
+ hitMode,
2682
+ enterResponse;
2663
2683
 
2664
2684
  switch (eventName) {
2665
2685
  case "helper":
@@ -2693,20 +2713,26 @@ TODO: better?
2693
2713
  break;
2694
2714
  case "enter":
2695
2715
  res = dnd.onDragEnter ? dnd.onDragEnter(node, otherNode) : null;
2696
- res = {
2697
- over: (res !== false) && ((res === true) || (res === "over") || $.inArray("over", res) >= 0),
2698
- before: (res !== false) && ((res === true) || (res === "before") || $.inArray("before", res) >= 0),
2699
- after: (res !== false) && ((res === true) || (res === "after") || $.inArray("after", res) >= 0)
2700
- };
2716
+ if(!res){
2717
+ // convert null, undefined, false to false
2718
+ res = false;
2719
+ }else{
2720
+ res = {
2721
+ over: ((res === true) || (res === "over") || $.inArray("over", res) >= 0),
2722
+ before: ((res === true) || (res === "before") || $.inArray("before", res) >= 0),
2723
+ after: ((res === true) || (res === "after") || $.inArray("after", res) >= 0)
2724
+ };
2725
+ }
2701
2726
  ui.helper.data("enterResponse", res);
2702
2727
  // this.logDebug("helper.enterResponse: %o", res);
2703
2728
  break;
2704
2729
  case "over":
2705
- var enterResponse = ui.helper.data("enterResponse");
2730
+ enterResponse = ui.helper.data("enterResponse");
2706
2731
  hitMode = null;
2707
2732
  if(enterResponse === false){
2708
2733
  // Don't call onDragOver if onEnter returned false.
2709
- break;
2734
+ // issue 332
2735
+ // break;
2710
2736
  } else if(typeof enterResponse === "string") {
2711
2737
  // Use hitMode from onEnter if provided.
2712
2738
  hitMode = enterResponse;
@@ -2766,12 +2792,19 @@ TODO: better?
2766
2792
  }
2767
2793
  if(hitMode && dnd.onDragOver){
2768
2794
  res = dnd.onDragOver(node, otherNode, hitMode);
2795
+ if(res === "over" || res === "before" || res === "after") {
2796
+ hitMode = res;
2797
+ }
2769
2798
  }
2770
- this._setDndStatus(otherNode, node, ui.helper, hitMode, res!==false);
2799
+ // issue 332
2800
+ // this._setDndStatus(otherNode, node, ui.helper, hitMode, res!==false);
2801
+ this._setDndStatus(otherNode, node, ui.helper, hitMode, res!==false && hitMode !== null);
2771
2802
  break;
2772
2803
  case "drop":
2804
+ // issue 286: don't trigger onDrop, if DnD status is 'reject'
2805
+ var isForbidden = ui.helper.hasClass("dynatree-drop-reject");
2773
2806
  hitMode = ui.helper.data("hitMode");
2774
- if(hitMode && dnd.onDrop){
2807
+ if(hitMode && dnd.onDrop && !isForbidden){
2775
2808
  dnd.onDrop(node, otherNode, hitMode, ui, draggable);
2776
2809
  }
2777
2810
  break;
@@ -2908,6 +2941,7 @@ $.widget("ui.dynatree", {
2908
2941
  return dtnode ? dtnode._onFocus(event) : false;
2909
2942
  }
2910
2943
  var div = this.tree.divTree;
2944
+
2911
2945
  if( div.addEventListener ) {
2912
2946
  div.addEventListener("focus", __focusHandler, true);
2913
2947
  div.addEventListener("blur", __focusHandler, true);
@@ -2972,7 +3006,7 @@ if( parseFloat($.ui.version) < 1.8 ) {
2972
3006
  /*******************************************************************************
2973
3007
  * Tools in ui.dynatree namespace
2974
3008
  */
2975
- $.ui.dynatree.version = "$Version: 1.2.1_rc3$";
3009
+ $.ui.dynatree.version = "$Version: 1.2.2$";
2976
3010
 
2977
3011
  /**
2978
3012
  * Return a DynaTreeNode object for a given DOM element
@@ -3007,7 +3041,7 @@ $.ui.dynatree.getNode = function(el) {
3007
3041
  });
3008
3042
  return node;
3009
3043
  */
3010
- }
3044
+ };
3011
3045
 
3012
3046
  /**Return persistence information from cookies.*/
3013
3047
  $.ui.dynatree.getPersistData = DynaTreeStatus._getTreePersistData;
@@ -3055,6 +3089,9 @@ $.ui.dynatree.prototype.options = {
3055
3089
  onCustomRender: null, // Callback(dtnode) before a node is rendered. Return a HTML string to override.
3056
3090
  onCreate: null, // Callback(dtnode, nodeSpan) after a node was rendered for the first time.
3057
3091
  onRender: null, // Callback(dtnode, nodeSpan) after a node was rendered.
3092
+ // postProcess is similar to the standard dataFilter hook,
3093
+ // but it is also called for JSONP
3094
+ postProcess: null, // Callback(data, dataType) before an Ajax result is passed to dynatree
3058
3095
 
3059
3096
  // Drag'n'drop support
3060
3097
  dnd: {
@@ -3194,8 +3231,10 @@ function _initDragAndDrop(tree) {
3194
3231
  return sourceNode.tree._onDragEvent("helper", sourceNode, null, event, null, null);
3195
3232
  },
3196
3233
  start: function(event, ui) {
3234
+ // See issues 211, 268, 278
3197
3235
  // var sourceNode = $.ui.dynatree.getNode(event.target);
3198
- // don't return false if sourceNode == null (see issue 268)
3236
+ var sourceNode = ui.helper.data("dtSourceNode");
3237
+ return !!sourceNode; // Abort dragging if no Node could be found
3199
3238
  },
3200
3239
  _last: null
3201
3240
  });
@@ -3269,7 +3308,7 @@ var _registerDnd = function() {
3269
3308
  if(targetNode){
3270
3309
  if(!targetNode.tree.options.dnd.onDrop) {
3271
3310
  // not enabled as drop target
3272
- noop(); // Keep JSLint happy
3311
+ // noop(); // Keep JSLint happy
3273
3312
  } else if(targetNode === prevTargetNode) {
3274
3313
  // Moving over same node
3275
3314
  targetNode.tree._onDragEvent("over", targetNode, sourceNode, event, ui, draggable);
@@ -3309,4 +3348,4 @@ var _registerDnd = function() {
3309
3348
  };
3310
3349
 
3311
3350
  // ---------------------------------------------------------------------------
3312
- })(jQuery);
3351
+ }(jQuery));
@@ -35,7 +35,7 @@ ul
35
35
  padding: 1px 0 0 0
36
36
  &.dynatree-lastsib
37
37
  background-image: none
38
- &.dynatree-no-connector li
38
+ &.dynatree-no-connector > li
39
39
  background-image: none
40
40
 
41
41
  /* Suppress lines for last child node
@@ -46,7 +46,7 @@ ul
46
46
 
47
47
  .ui-dynatree-disabled ul.dynatree-container
48
48
  opacity: 0.5
49
- /* filter: alpha(opacity=50); /* Yields a css warning
49
+ /* filter: alpha(opacity=50); /* Yields a css warning
50
50
  background-color: silver
51
51
 
52
52
  /*******************************************************************************
@@ -56,27 +56,27 @@ span
56
56
  &.dynatree-empty, &.dynatree-vline, &.dynatree-connector, &.dynatree-expander, &.dynatree-icon, &.dynatree-checkbox, &.dynatree-radio, &.dynatree-drag-helper-img
57
57
  width: 16px
58
58
  height: 16px
59
- /* display: -moz-inline-box; /* @ FF 1+2 removed for issue 221
60
- /* -moz-box-align: start; /* issue 221
59
+ /* display: -moz-inline-box; /* @ FF 1+2 removed for issue 221
60
+ /* -moz-box-align: start; /* issue 221
61
61
  display: inline-block
62
62
  /* Required to make a span sizeable
63
63
  vertical-align: top
64
64
  background-repeat: no-repeat
65
65
  background-position: left
66
- background-image: image-url("dynatree/vista_icons.gif")
66
+ background-image: url("icons.gif")
67
67
  background-position: 0 0
68
68
 
69
69
  #dynatree-drop-marker
70
70
  width: 16px
71
71
  height: 16px
72
- /* display: -moz-inline-box; /* @ FF 1+2 removed for issue 221
73
- /* -moz-box-align: start; /* issue 221
72
+ /* display: -moz-inline-box; /* @ FF 1+2 removed for issue 221
73
+ /* -moz-box-align: start; /* issue 221
74
74
  display: inline-block
75
75
  /* Required to make a span sizeable
76
76
  vertical-align: top
77
77
  background-repeat: no-repeat
78
78
  background-position: left
79
- background-image: image-url("dynatree/vista_icons.gif")
79
+ background-image: url("icons.gif")
80
80
  background-position: 0 0
81
81
 
82
82
  /** Used by 'icon' node option:
@@ -115,14 +115,14 @@ span
115
115
  /*******************************************************************************
116
116
  * Expander icon
117
117
  * Note: IE6 doesn't correctly evaluate multiples class names,
118
- * so we create combined class names that can be used in the CSS.
118
+ * so we create combined class names that can be used in the CSS.
119
119
  *
120
120
  * Prefix: dynatree-exp-
121
121
  * 1st character: 'e': expanded, 'c': collapsed
122
122
  * 2nd character (optional): 'd': lazy (Delayed)
123
123
  * 3rd character (optional): 'l': Last sibling
124
124
 
125
- .dynatree-exp-cl span.dynatree-expander, .dynatree-exp-cd span.dynatree-expander, .dynatree-exp-cdl span.dynatree-expander
125
+ .dynatree-exp-cl! span.dynatree-expander, .dynatree-exp-cd! span.dynatree-expander, .dynatree-exp-cdl! span.dynatree-expander
126
126
 
127
127
  .dynatree-exp-e span.dynatree-expander, .dynatree-exp-ed span.dynatree-expander, .dynatree-exp-el span.dynatree-expander, .dynatree-exp-edl span.dynatree-expander
128
128
  background-position: -32px -80px
@@ -132,7 +132,7 @@ span
132
132
 
133
133
  .dynatree-loading span.dynatree-expander
134
134
  background-position: 0 0
135
- background-image: image-url("dynatree/vista_loading.gif")
135
+ background-image: url("loading.gif")
136
136
 
137
137
  /*******************************************************************************
138
138
  * Checkbox icon
@@ -177,7 +177,7 @@ span.dynatree-radio
177
177
  /*******************************************************************************
178
178
  * Node type icon
179
179
  * Note: IE6 doesn't correctly evaluate multiples class names,
180
- * so we create combined class names that can be used in the CSS.
180
+ * so we create combined class names that can be used in the CSS.
181
181
  *
182
182
  * Prefix: dynatree-ico-
183
183
  * 1st character: 'e': expanded, 'c': collapsed
@@ -199,10 +199,11 @@ span.dynatree-icon
199
199
  /* Status node icons
200
200
 
201
201
  .dynatree-statusnode-wait span.dynatree-icon
202
- background-image: image-url("dynatree/vista_loading.gif")
202
+ background-image: url("loading.gif")
203
203
 
204
204
  .dynatree-statusnode-error span.dynatree-icon
205
205
  background-position: 0px -112px
206
+ /* background-image: url("ltError.gif");
206
207
 
207
208
  /*******************************************************************************
208
209
  * Node titles
@@ -211,8 +212,8 @@ span.dynatree-icon
211
212
  * Removed again for issue 165; (133 couldn't be reproduced)
212
213
 
213
214
  span.dynatree-node
214
- /* display: -moz-inline-box; /* issue 133, 165, 172, 192. removed for issue 221
215
- /* -moz-box-align: start; /* issue 221
215
+ /* display: -moz-inline-box; /* issue 133, 165, 172, 192. removed for issue 221
216
+ /* -moz-box-align: start; /* issue 221
216
217
  /* display: inline-block; /* Required to make a span sizeable
217
218
 
218
219
  /* Remove blue color and underline from title links
@@ -224,13 +225,13 @@ ul.dynatree-container a
224
225
  vertical-align: top
225
226
  margin: 0px
226
227
  margin-left: 3px
227
- /* outline: 0; /* @ Firefox, prevent dotted border after click
228
+ /* outline: 0; /* @ Firefox, prevent dotted border after click
228
229
  /* Set transparent border to prevent jumping when active node gets a border
229
230
  * (we can do this, because this theme doesn't use vertical lines)
230
231
  border: 1px solid white
231
232
  /* Note: 'transparent' would not work in IE6
232
233
  &:hover
233
- /* text-decoration: underline;
234
+ /* text-decoration: underline;
234
235
  background: #F2F7FD
235
236
  /* light blue
236
237
  border-color: #B8D6FB
@@ -240,13 +241,13 @@ span
240
241
  &.dynatree-node a
241
242
  display: inline-block
242
243
  /* Better alignment, when title contains <br>
243
- /* vertical-align: top;
244
+ /* vertical-align: top;
244
245
  padding-left: 3px
245
246
  padding-right: 3px
246
247
  /* Otherwise italic font will be outside bounds
247
- /* line-height: 16px; /* should be the same as img height, in case 16 px
248
+ /* line-height: 16px; /* should be the same as img height, in case 16 px
248
249
  &.dynatree-folder a
249
- /* font-weight: bold;
250
+ /* font-weight: bold;
250
251
  /* custom
251
252
 
252
253
  ul.dynatree-container a:focus
@@ -258,10 +259,10 @@ span
258
259
  background-color: #EFEBDE
259
260
  /* gray
260
261
  &.dynatree-has-children a
261
- /* font-style: oblique; /* custom:
262
- &.dynatree-expanded a
262
+ /* font-style: oblique; /* custom:
263
+ &.dynatree-expanded! a
263
264
  &.dynatree-selected a
264
- /* color: green;
265
+ /* color: green;
265
266
  font-style: italic
266
267
  &.dynatree-active a
267
268
  border: 1px solid #99DEFD
@@ -287,7 +288,7 @@ span.dynatree-drag-helper-img
287
288
  div
288
289
  &.dynatree-drag-helper
289
290
  /* border-color: green;
290
- * background-color: red;
291
+ * background-color: red;
291
292
  &.dynatree-drop-accept span.dynatree-drag-helper-img
292
293
  background-position: -32px -112px
293
294
  &.dynatree-drag-helper.dynatree-drop-reject
@@ -318,7 +319,7 @@ span
318
319
  color: gray
319
320
  &.dynatree-drop-target
320
321
  /*border: 1px solid gray;
321
- a
322
+ a!
322
323
  &.dynatree-drop-accept a
323
324
  /*border: 1px solid green;
324
325
  background-color: #3169C6 !important
@@ -327,6 +328,6 @@ span
327
328
  text-decoration: none
328
329
  &.dynatree-drop-reject
329
330
  /*border: 1px solid red;
330
- &.dynatree-drop-after a
331
+ &.dynatree-drop-after! a
331
332
 
332
333
  /*** Target node while dragging cursor is over it ****************************