spree_core 0.30.2 → 0.40.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (104) hide show
  1. data/app/controllers/admin/base_controller.rb +0 -31
  2. data/app/controllers/admin/orders_controller.rb +10 -9
  3. data/app/controllers/admin/overview_controller.rb +1 -1
  4. data/app/controllers/admin/products_controller.rb +8 -8
  5. data/app/controllers/admin/properties_controller.rb +1 -1
  6. data/app/controllers/admin/shipments_controller.rb +6 -3
  7. data/app/controllers/admin/shipping_methods_controller.rb +1 -1
  8. data/app/controllers/admin/tax_rates_controller.rb +2 -2
  9. data/app/controllers/admin/taxons_controller.rb +1 -2
  10. data/app/controllers/admin/users_controller.rb +7 -8
  11. data/app/controllers/admin/variants_controller.rb +2 -2
  12. data/app/controllers/countries_controller.rb +1 -1
  13. data/app/controllers/locale_controller.rb +1 -1
  14. data/app/controllers/spree/base_controller.rb +1 -117
  15. data/app/controllers/states_controller.rb +1 -1
  16. data/app/helpers/spree/base_helper.rb +1 -7
  17. data/app/helpers/taxons_helper.rb +2 -2
  18. data/app/models/app_configuration.rb +0 -3
  19. data/app/models/calculator/flat_percent_item_total.rb +2 -1
  20. data/app/models/calculator/vat.rb +1 -1
  21. data/app/models/creditcard.rb +1 -1
  22. data/app/models/gateway/authorize_net.rb +13 -2
  23. data/app/models/gateway/authorize_net_cim.rb +11 -0
  24. data/app/models/gateway/beanstream.rb +30 -7
  25. data/app/models/inventory_unit.rb +21 -31
  26. data/app/models/line_item.rb +7 -8
  27. data/app/models/order.rb +4 -1
  28. data/app/models/product_group.rb +4 -8
  29. data/app/models/property.rb +1 -3
  30. data/app/models/return_authorization.rb +6 -1
  31. data/app/models/state_event.rb +3 -3
  32. data/app/models/state_monitor.rb +16 -16
  33. data/app/models/taxon.rb +6 -7
  34. data/app/models/user.rb +4 -0
  35. data/app/views/admin/general_settings/edit.html.erb +0 -8
  36. data/app/views/admin/general_settings/show.html.erb +5 -10
  37. data/app/views/admin/images/_form.html.erb +1 -1
  38. data/app/views/admin/images/index.html.erb +1 -1
  39. data/app/views/admin/option_types/new.html.erb +1 -1
  40. data/app/views/admin/orders/_add_product.html.erb +3 -3
  41. data/app/views/admin/orders/_form.html.erb +3 -0
  42. data/app/views/admin/orders/_user_form.html.erb +1 -1
  43. data/app/views/admin/orders/index.html.erb +2 -2
  44. data/app/views/admin/orders/show.html.erb +3 -8
  45. data/app/views/admin/orders/user.html.erb +1 -1
  46. data/app/views/admin/product_groups/index.html.erb +1 -1
  47. data/app/views/admin/product_groups/show.html.erb +1 -1
  48. data/app/views/admin/products/index.html.erb +1 -1
  49. data/app/views/admin/return_authorizations/_form.html.erb +3 -1
  50. data/app/views/admin/shared/_address_form.html.erb +1 -1
  51. data/app/views/admin/shared/_configuration_menu.html.erb +11 -11
  52. data/app/views/admin/shared/_order_tabs.html.erb +12 -12
  53. data/app/views/admin/shared/_product_tabs.html.erb +6 -6
  54. data/app/views/admin/states/_state_list.html.erb +2 -2
  55. data/app/views/admin/taxonomies/_js_head.html.erb +6 -8
  56. data/app/views/admin/taxonomies/edit.html.erb +11 -11
  57. data/app/views/admin/taxonomies/get_children.json.erb +5 -5
  58. data/app/views/admin/taxons/available.js.erb +10 -10
  59. data/app/views/admin/taxons/selected.html.erb +13 -13
  60. data/app/views/admin/variants/index.html.erb +1 -1
  61. data/app/views/checkout/_address.html.erb +2 -2
  62. data/app/views/layouts/admin.html.erb +1 -2
  63. data/app/views/layouts/spree_application.html.erb +1 -2
  64. data/app/views/shared/_admin_head.html.erb +3 -3
  65. data/app/views/shared/_doc_and_xmlns.html.erb +2 -0
  66. data/app/views/shared/_filters.html.erb +3 -28
  67. data/app/views/taxons/show.html.erb +7 -5
  68. data/config/initializers/spree.rb +1 -19
  69. data/config/locales/en.yml +0 -2
  70. data/config/routes.rb +3 -5
  71. data/db/migrate/20091007134354_change_taxons_to_nested_set.rb +2 -2
  72. data/lib/product_filters.rb +10 -11
  73. data/lib/scopes/product.rb +15 -0
  74. data/lib/spree/mail_settings.rb +2 -4
  75. data/lib/spree/preference_access.rb +3 -3
  76. data/lib/spree_base.rb +116 -0
  77. data/lib/spree_core.rb +3 -1
  78. data/lib/spree_core/preferences/model_hooks.rb +1 -1
  79. data/lib/tasks/install.rake +0 -1
  80. data/public/javascripts/admin.js +0 -6
  81. data/public/javascripts/admin/checkouts/edit.js +41 -40
  82. data/public/javascripts/admin/orders/edit_form.js +5 -4
  83. data/public/javascripts/jquery.cookie.js +96 -0
  84. data/public/javascripts/jquery.delayedobserver.js +35 -0
  85. data/public/javascripts/jsTree/jquery.jstree.js +3510 -0
  86. data/public/javascripts/jsTree/themes/apple/d.png +0 -0
  87. data/public/javascripts/jsTree/themes/apple/style.css +60 -34
  88. data/public/javascripts/jsTree/themes/apple/throbber.gif +0 -0
  89. data/public/javascripts/taxonomy.js +150 -149
  90. data/public/stylesheets/admin/admin.css +0 -34
  91. metadata +36 -43
  92. data/app/controllers/password_resets_controller.rb +0 -48
  93. data/app/helpers/users_helper.rb +0 -13
  94. data/app/models/spree/alert.rb +0 -13
  95. data/app/views/admin/shared/_alert.html.erb +0 -6
  96. data/app/views/shared/_login.html.erb +0 -21
  97. data/app/views/shared/_user_form.html.erb +0 -17
  98. data/lib/spree/i18n_utils.rb +0 -47
  99. data/public/javascripts/jquery.js +0 -19
  100. data/public/javascripts/jrails.autocomplete.js +0 -274
  101. data/public/javascripts/jrails.js +0 -1
  102. data/public/javascripts/jsTree/jquery.tree.js +0 -2058
  103. data/public/javascripts/jsTree/plugins/jquery.tree.contextmenu.js +0 -129
  104. data/public/javascripts/jsTree/themes/apple/icons.png +0 -0
@@ -1,34 +1,60 @@
1
- /* BACKGROUND */
2
- .tree-apple .ltr, .tree-apple .rtl { background:url("bg.jpg") left top repeat; min-width:100%; _width:100%; margin-left:0; margin-right:0; display:table; }
3
- .tree-apple .ltr > li.leaf, .tree-apple .rtl > li.leaf { background-image:none; }
4
-
5
- /* LOCKED */
6
- .tree-apple .locked li a { color:gray; }
7
- /* DOTS */
8
- .tree-apple ul { background-position:6px 1px; background-repeat:repeat-y; background-image:url(data:image/gif;base64,R0lGODlhAgACAIAAAB4dGf///yH5BAEAAAEALAAAAAACAAIAAAICRF4AOw==); _background-image:url("dot_for_ie.gif"); *background-image:url("dot_for_ie.gif"); }
9
- .tree-apple li { background-position:-64px -16px; background-repeat:no-repeat; background-image:url("icons.png"); }
10
- /* NO DOTS */
11
- .tree-apple .no_dots, .tree-apple .no_dots ul { background:transparent; }
12
- .tree-apple .no_dots li.leaf { background-image:none; background-color:transparent; }
13
- /* OPEN or CLOSED */
14
- .tree-apple li.open { background:url("icons.png") -32px -48px no-repeat; }
15
- .tree-apple li.closed, #jstree-dragged.tree-apple li li.open { background:url("icons.png") -48px -32px no-repeat; }
16
- #jstree-marker { background-image:url("icons.png"); }
17
- /* DEFAULT, HOVER, CLICKED, LOADING STATES */
18
- .tree-apple li a, .tree-apple li span { border-radius:3px; -moz-border-radius:3px; -webkit-border-radius:3px; }
19
- .tree-apple li a:hover, .tree-apple li a.hover, .tree-apple li span { background: #e7f4f9; border:1px solid #d8f0fa; padding:0px 3px 0px 3px; }
20
- .tree-apple li a.clicked, .tree-apple li a.clicked:hover, .tree-apple li span.clicked { background: #beebff; border:1px solid #99defd; padding:0px 3px 0px 3px; }
21
- /* ICONS */
22
- .tree-apple ins { background-image:url("icons.png"); background-position:0 0; background-repeat:no-repeat; }
23
- .tree-apple ul li a.loading ins { background-image:url("throbber.gif") !important; background-position:0 0 !important; } /* UL is added to make selector stronger */
24
- .tree-apple li a ins.forbidden { background-position:-16px -16px; }
25
- .tree-apple .locked li a ins { background-position:0 -48px; }
26
- .tree-apple li span ins { background-position:-16px 0; }
27
- #jstree-dragged.tree-apple ins { background:url("icons.png") -16px -32px no-repeat; }
28
- #jstree-dragged.tree-apple ins.forbidden { background:url("icons.png") -16px -16px no-repeat; }
29
-
30
- /* CONTEXT MENU */
31
- .tree-apple-context a ins { background-image:url("icons.png"); background-repeat:no-repeat; background-position:-64px -64px; }
32
- .tree-apple-context a ins.create { background-position:0 -16px; }
33
- .tree-apple-context a ins.rename { background-position:-16px 0px; }
34
- .tree-apple-context a ins.remove { background-position:0 -32px; }
1
+ /*
2
+ * jsTree apple theme 1.0
3
+ * Supported features: dots/no-dots, icons/no-icons, focused, loading
4
+ * Supported plugins: ui (hovered, clicked), checkbox, contextmenu, search
5
+ */
6
+
7
+ .jstree-apple > ul { background:url("bg.jpg") left top repeat; }
8
+ .jstree-apple li,
9
+ .jstree-apple ins { background-image:url("d.png"); background-repeat:no-repeat; background-color:transparent; }
10
+ .jstree-apple li { background-position:-90px 0; background-repeat:repeat-y; }
11
+ .jstree-apple li.jstree-last { background:transparent; }
12
+ .jstree-apple .jstree-open > ins { background-position:-72px 0; }
13
+ .jstree-apple .jstree-closed > ins { background-position:-54px 0; }
14
+ .jstree-apple .jstree-leaf > ins { background-position:-36px 0; }
15
+
16
+ .jstree-apple a { border-radius:4px; -moz-border-radius:4px; -webkit-border-radius:4px; text-shadow:1px 1px 1px white; }
17
+ .jstree-apple .jstree-hovered { background:#e7f4f9; border:1px solid #d8f0fa; padding:0 3px 0 1px; text-shadow:1px 1px 1px silver; }
18
+ .jstree-apple .jstree-clicked { background:#beebff; border:1px solid #99defd; padding:0 3px 0 1px; }
19
+ .jstree-apple a .jstree-icon { background-position:-56px -20px; }
20
+ .jstree-apple a.jstree-loading .jstree-icon { background:url("throbber.gif") center center no-repeat !important; }
21
+
22
+ .jstree-apple.jstree-focused { background:white; }
23
+
24
+ .jstree-apple .jstree-no-dots li,
25
+ .jstree-apple .jstree-no-dots .jstree-leaf > ins { background:transparent; }
26
+ .jstree-apple .jstree-no-dots .jstree-open > ins { background-position:-18px 0; }
27
+ .jstree-apple .jstree-no-dots .jstree-closed > ins { background-position:0 0; }
28
+
29
+ .jstree-apple .jstree-no-icons a .jstree-icon { display:none; }
30
+
31
+ .jstree-apple .jstree-search { font-style:italic; }
32
+
33
+ .jstree-apple .jstree-no-icons .jstree-checkbox { display:inline-block; }
34
+ .jstree-apple .jstree-no-checkboxes .jstree-checkbox { display:none !important; }
35
+ .jstree-apple .jstree-checked > a > .jstree-checkbox { background-position:-38px -19px; }
36
+ .jstree-apple .jstree-unchecked > a > .jstree-checkbox { background-position:-2px -19px; }
37
+ .jstree-apple .jstree-undetermined > a > .jstree-checkbox { background-position:-20px -19px; }
38
+ .jstree-apple .jstree-checked > a > .checkbox:hover { background-position:-38px -37px; }
39
+ .jstree-apple .jstree-unchecked > a > .jstree-checkbox:hover { background-position:-2px -37px; }
40
+ .jstree-apple .jstree-undetermined > a > .jstree-checkbox:hover { background-position:-20px -37px; }
41
+
42
+ #vakata-dragged.jstree-apple ins { background:transparent !important; }
43
+ #vakata-dragged.jstree-apple .jstree-ok { background:url("d.png") -2px -53px no-repeat !important; }
44
+ #vakata-dragged.jstree-apple .jstree-invalid { background:url("d.png") -18px -53px no-repeat !important; }
45
+ #jstree-marker.jstree-apple { background:url("d.png") -41px -57px no-repeat !important; }
46
+
47
+ .jstree-apple a.jstree-search { color:aqua; }
48
+
49
+ #vakata-contextmenu.jstree-apple-context,
50
+ #vakata-contextmenu.jstree-apple-context li ul { background:#f0f0f0; border:1px solid #979797; -moz-box-shadow: 1px 1px 2px #999; -webkit-box-shadow: 1px 1px 2px #999; box-shadow: 1px 1px 2px #999; }
51
+ #vakata-contextmenu.jstree-apple-context li { }
52
+ #vakata-contextmenu.jstree-apple-context a { color:black; }
53
+ #vakata-contextmenu.jstree-apple-context a:hover,
54
+ #vakata-contextmenu.jstree-apple-context .vakata-hover > a { padding:0 5px; background:#e8eff7; border:1px solid #aecff7; color:black; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
55
+ #vakata-contextmenu.jstree-apple-context li.jstree-contextmenu-disabled a,
56
+ #vakata-contextmenu.jstree-apple-context li.jstree-contextmenu-disabled a:hover { color:silver; background:transparent; border:0; padding:1px 4px; }
57
+ #vakata-contextmenu.jstree-apple-context li.vakata-separator { background:white; border-top:1px solid #e0e0e0; margin:0; }
58
+ #vakata-contextmenu.jstree-apple-context li ul { margin-left:-4px; }
59
+
60
+ /* TODO: IE6 support - the `>` selectors */
@@ -1,191 +1,190 @@
1
1
  var base_url = "/admin/taxonomies/" + taxonomy_id + "/taxons/";
2
2
  var child_url = "/admin/taxonomies/" + taxonomy_id + "/get_children.json"
3
- var creating = false;
4
- var delete_confirmed = false;
3
+ var is_cut = false;
5
4
  var last_rollback = null;
6
5
 
7
6
  var handle_ajax_error = function(XMLHttpRequest, textStatus, errorThrown){
8
- jQuery.tree.rollback(last_rollback);
9
-
7
+ jQuery.jstree.rollback(last_rollback);
10
8
  jQuery("#ajax_error").show().html("<strong>" + server_error + "</strong><br/>" + taxonomy_tree_error);
11
9
  };
12
10
 
13
- var handle_move = function(li, target, droppped, tree, rb) {
14
- last_rollback = rb;
15
- var position = jQuery(li).prevAll().length;
16
-
17
- var parent = -1;
18
-
19
- if(droppped=='inside'){
20
- parent = target;
21
- }else if(droppped=='after'){
22
- parent = jQuery(target).parents()[1];
23
- }else if(droppped=='before'){
24
- parent = jQuery(target).parents()[1];
25
- }
11
+ //var handle_move = function(li, target, droppped, tree, rb) {
12
+ var handle_move = function(e, data) {
13
+ last_rollback = data.rlbk;
14
+ var position = data.rslt.cp;
15
+ var node = data.rslt.o;
16
+ var new_parent = data.rslt.np;
26
17
 
27
18
  jQuery.ajax({
28
19
  type: "POST",
29
- url: base_url + li.id + ".json",
30
- data: ({_method: "put", "taxon[parent_id]": parent.id, "taxon[position]": position, authenticity_token: AUTH_TOKEN}),
20
+ url: base_url + node.attr("id") + ".json",
21
+ data: ({_method: "put", "taxon[parent_id]": new_parent.attr("id"), "taxon[position]": position, authenticity_token: AUTH_TOKEN}),
31
22
  error: handle_ajax_error
32
23
  });
33
24
 
34
25
  return true
35
26
  };
36
27
 
37
- var handle_dblclick = function(li, tree) {
38
- tree.rename();
39
- };
40
-
41
- var handle_create = function(parent, sib, created, tree, rb){
42
- last_rollback = rb;
43
- creating=true;
44
- };
45
-
46
- var handle_created = function(id,result) {
47
- jQuery.tree.reference('taxonomy_tree').selected.attr('id', id);
48
- }
49
-
50
- var handle_rename = function(li, tree, rb) {
51
- var name = jQuery(li).children(":first").text();
52
- name = jQuery.trim(name);
53
-
54
- if (creating){
55
- //actually creating new
56
- var position = jQuery(li).prevAll().length;
57
- var parent = jQuery(li).parents()[1];
58
-
59
- jQuery.ajax({
60
- type: "POST",
61
- url: base_url,
62
- data: ({"taxon[name]": name, "taxon[parent_id]": parent.id, "taxon[position]": position, authenticity_token: AUTH_TOKEN}),
63
- error: handle_ajax_error,
64
- success: handle_created
65
- });
66
-
67
- creating = false;
68
- }else{
69
- //just renaming
70
- last_rollback = rb;
71
-
72
- jQuery.ajax({
73
- type: "POST",
74
- url: base_url + li.id + ".json",
75
- data: ({_method: "put", "taxon[name]": name, authenticity_token: AUTH_TOKEN}),
76
- error: handle_ajax_error
77
- });
78
- }
79
- };
28
+ var handle_create = function(e, data) {
29
+ last_rollback = data.rlbk;
30
+ var node = data.rslt.obj;
31
+ var name = data.rslt.name;
32
+ var position = data.rslt.position;
33
+ var new_parent = data.rslt.parent;
80
34
 
81
- var handle_before_delete = function(li){
82
- if (!delete_confirmed){
83
- jConfirm('Are you sure you want to delete this taxon?', 'Confirm Taxon Deletion', function(r) {
84
- if(r){
85
- delete_confirmed = true;
86
- jQuery.tree.reference('taxonomy_tree').remove(li);
87
- }
88
- });
89
- }
35
+ jQuery.ajax({
36
+ type: "POST",
37
+ url: base_url,
38
+ data: ({"taxon[name]": name, "taxon[parent_id]": new_parent.attr("id"), "taxon[position]": position, authenticity_token: AUTH_TOKEN}),
39
+ error: handle_ajax_error,
40
+ success: function(id,result) {
41
+ node.attr('id', id);
42
+ }
43
+ });
90
44
 
91
- return delete_confirmed;
92
45
  };
93
46
 
94
- var handle_delete = function(li, tree, rb){
95
- last_rollback = rb;
47
+ var handle_rename = function(e, data) {
48
+ last_rollback = data.rlbk;
49
+ var node = data.rslt.obj;
50
+ var name = data.rslt.new_name;
96
51
 
97
52
  jQuery.ajax({
98
53
  type: "POST",
99
- url: base_url + li.id,
100
- data: ({_method: "delete", authenticity_token: AUTH_TOKEN}),
54
+ url: base_url + node.attr("id") + ".json",
55
+ data: ({_method: "put", "taxon[name]": name, authenticity_token: AUTH_TOKEN}),
101
56
  error: handle_ajax_error
102
57
  });
58
+ };
59
+
60
+ var handle_delete = function(e, data){
61
+ last_rollback = data.rlbk;
62
+ var node = data.rslt.obj;
63
+
64
+ jConfirm('Are you sure you want to delete this taxon?', 'Confirm Taxon Deletion', function(r) {
65
+ if(r){
66
+ jQuery.ajax({
67
+ type: "POST",
68
+ url: base_url + node.attr("id"),
69
+ data: ({_method: "delete", authenticity_token: AUTH_TOKEN}),
70
+ error: handle_ajax_error
71
+ });
72
+ }else{
73
+ jQuery.jstree.rollback(last_rollback);
74
+ last_rollback = null;
75
+ }
76
+ });
103
77
 
104
- delete_confirmed = false;
105
78
  };
106
79
 
107
80
  jQuery(document).ready(function(){
108
- conf = {
109
- data : {
110
- type : "json",
111
- async : true,
112
- opts : {
113
- method : "GET",
114
- url : child_url
115
- }
116
- },
117
- ui : {
118
- theme_name : "apple"
119
- },
120
- lang : {
121
- new_node : new_taxon,
122
- loading : loading + "..."
123
- },
124
- plugins : {
125
- contextmenu : {
126
- items : {
127
- // get rid of the remove item
128
- remove :{
129
- visible : function (NODE, TREE_OBJ) { if(jQuery(NODE[0]).attr('rel')=="root") return false; return TREE_OBJ.check("renameable", NODE); },
130
- },
131
- rename :{
132
- visible : function (NODE, TREE_OBJ) { if(jQuery(NODE[0]).attr('rel')=="root") return false; return TREE_OBJ.check("renameable", NODE); },
133
- },
134
- cut :{
135
- id : "cut",
136
- label : "Cut",
137
- visible : function (NODE, TREE_OBJ) { if(NODE.length != 1 || NODE[0].id == 'root') return false; return true; },
138
- action : function (NODE, TREE_OBJ) { TREE_OBJ.cut(NODE); jQuery(NODE).hide(); },
139
- separator_before : true
140
- },
141
- paste :{
142
- id : "paste",
143
- label : "Paste",
144
- visible : function (NODE, TREE_OBJ) { if(NODE.length != 1 || NODE[0].id == 'root') return false; return true; },
145
- action : function (NODE, TREE_OBJ) { TREE_OBJ.open_branch(NODE); TREE_OBJ.paste(NODE, "inside"); jQuery(NODE).find("li").show(); }
146
- },
147
- edit :{
148
- id : "edit",
149
- label : "Edit",
150
- visible : function (NODE, TREE_OBJ) { if(NODE.length != 1 || NODE[0].id == 'root') return false; return TREE_OBJ.check("renameable", NODE); },
151
- action : function (NODE, TREE_OBJ) { jQuery.each(NODE, function () { window.location = base_url + this.id + "/edit/"; }); }
152
- }
153
-
81
+ var conf = {
82
+ json_data : {
83
+ "data" : initial,
84
+ "ajax" : {
85
+ "url" : child_url,
86
+ "data" : function (n) {
87
+ return { parent_id : n.attr ? n.attr("id") : 0 };
154
88
  }
155
89
  }
156
90
  },
157
- rules : {
158
- // only nodes of type root can be top level nodes
159
- valid_children : [ "root" ]
91
+ "themes" : {
92
+ "theme" : "apple",
93
+ "url" : "/javascripts/jsTree/themes/apple/style.css"
94
+ },
95
+ "strings" : {
96
+ "new_node" : new_taxon,
97
+ "loading" : loading + "..."
160
98
  },
161
- types : {
162
- // all node types inherit the "default" node type
163
- "taxon" : {},
164
- "root" : {
165
- deletable : false,
166
- renameable : false,
167
- draggable : false,
168
- valid_children : [ "taxon" ]
99
+ "crrm" : {
100
+ "move" : {
101
+ "check_move" : function (m) {
102
+ var position = m.cp;
103
+ var node = m.o;
104
+ var new_parent = m.np;
105
+
106
+ if(!new_parent) return false; //no parent
107
+
108
+ if(node.attr("rel")=="root") return false; //can't drag root
109
+
110
+ if(new_parent.attr("id")=="taxonomy_tree" && position==0) return false; // can't drop before root
111
+
112
+ return true;
113
+
114
+ }
115
+ }
116
+ },
117
+ "contextmenu" : {
118
+ "items" : function(obj) {
119
+ var id_of_node = obj.attr("id");
120
+ var type_of_node = obj.attr("rel");
121
+ var menu = {};
122
+ if(type_of_node == "root") {
123
+ menu = {
124
+ "create" : {
125
+ "label" : "Create",
126
+ "action" : function (obj) { this.create(obj); }
127
+ },
128
+ "paste" : {
129
+ "separator_before" : true,
130
+ "label" : "Paste",
131
+ "action" : function (obj) { is_cut = false; this.paste(obj); },
132
+ "_disabled" : is_cut == false
133
+ },
134
+ "edit" : {
135
+ "separator_before" : true,
136
+ "label" : "Edit",
137
+ "action" : function (obj) { window.location = base_url + obj.attr("id") + "/edit/"; }
138
+ }
139
+ }
140
+ } else {
141
+ menu = {
142
+ "create" : {
143
+ "label" : "Create",
144
+ "action" : function (obj) { this.create(obj); }
145
+ },
146
+ "rename" : {
147
+ "label" : "Rename",
148
+ "action" : function (obj) { this.rename(obj); }
149
+ },
150
+ "remove" : {
151
+ "label" : "Remove",
152
+ "action" : function (obj) { this.remove(obj); }
153
+ },
154
+ "cut" : {
155
+ "separator_before" : true,
156
+ "label" : "Cut",
157
+ "action" : function (obj) { is_cut = true; this.cut(obj); }
158
+ },
159
+ "paste" : {
160
+ "label" : "Paste",
161
+ "action" : function (obj) { is_cut = false; this.paste(obj); },
162
+ "_disabled" : is_cut == false
163
+ },
164
+ "edit" : {
165
+ "separator_before" : true,
166
+ "label" : "Edit",
167
+ "action" : function (obj) { window.location = base_url + obj.attr("id") + "/edit/"; }
168
+ }
169
+ }
170
+ }
171
+ return menu;
169
172
  }
170
173
  },
171
- callback : {
172
- onmove: handle_move,
173
- ondblclk: handle_dblclick,
174
- onrename: handle_rename,
175
- oncreate: handle_create,
176
- beforedelete: handle_before_delete,
177
- ondelete: handle_delete,
178
- beforedata: function (n, t) {
179
- if(n == false) t.settings.data.opts.static = initial;
180
- else t.settings.data.opts.static = false;
181
-
182
- return { parent_id : $(n).attr("id") || 0 };
183
- }
184
174
 
185
- }
175
+ "plugins" : [ "themes", "json_data", "dnd", "crrm", "contextmenu"]
186
176
  }
187
177
 
188
- jQuery("#taxonomy_tree").tree(conf);
178
+ jQuery("#taxonomy_tree").jstree(conf)
179
+ .bind("move_node.jstree", handle_move)
180
+ .bind("remove.jstree", handle_delete)
181
+ .bind("create.jstree", handle_create)
182
+ .bind("rename.jstree", handle_rename);
183
+
184
+ jQuery("#taxonomy_tree").delegate("a", "dblclick", function (e) {
185
+ jQuery("#taxonomy_tree").jstree("rename", this)
186
+ });
187
+
189
188
 
190
189
  jQuery(document).keypress(function(e){
191
190
  //surpress form submit on enter/return
@@ -194,3 +193,5 @@ jQuery(document).ready(function(){
194
193
  }
195
194
  });
196
195
  });
196
+
197
+
@@ -577,37 +577,3 @@ table#product_scopes tr td table tr td {
577
577
  }
578
578
 
579
579
 
580
- span.handle{
581
- background-image: url(../../images/reorder.jpg);
582
- display: inline-block;
583
- width:14px;
584
- height:15px;
585
- }
586
-
587
- .alert {
588
- -moz-border-radius: 5px;
589
- -webkit-border-radius: 5px;
590
- border-radius: 5px;
591
- font-size: 1.3em;
592
- margin-bottom: 1em;
593
- padding: 0.8em;
594
- }
595
- .alert a.dismiss {
596
- float:right;
597
- font-size: 0.8em;
598
- }
599
- .alert.release {
600
- background: #ccddff url(../images/shadow_top.png) 0px -50px repeat-x;
601
- color: #556699;
602
- border: 1px solid #99aacc;
603
- }
604
- .alert.security {
605
- background: #f4b4b4 url(../images/shadow_top.png) 0px -50px repeat-x;
606
- color: #000000;
607
- border: 1px solid #e75b5b;
608
- }
609
- .alert.news {
610
- background: #ccffd4 url(../images/shadow_top.png) 0px -50px repeat-x;
611
- color: #000000;
612
- border: 1px solid #66ff7e;
613
- }