dynatree-rails 0.0.4 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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 ****************************