caboose-cms 0.1.101 → 0.1.102

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.
Files changed (37) hide show
  1. data/app/assets/images/caboose/caboose_logo_small.png +0 -0
  2. data/app/assets/images/caboose/caboose_nav_black.png +0 -0
  3. data/app/assets/images/caboose/loading_small_white_on_black.gif +0 -0
  4. data/app/assets/images/caboose/loading_white_on_black.gif +0 -0
  5. data/app/assets/javascripts/caboose/admin.js +3 -2
  6. data/app/assets/javascripts/caboose/application.js +3 -24
  7. data/app/assets/javascripts/caboose/login.js +7 -3
  8. data/app/assets/javascripts/caboose/modal.js +36 -0
  9. data/app/assets/javascripts/caboose/modal_integration.js +56 -0
  10. data/app/assets/javascripts/caboose/model.form.user.js +36 -0
  11. data/app/assets/javascripts/caboose/register.js +29 -0
  12. data/app/assets/javascripts/caboose/station_modal.js +42 -0
  13. data/app/assets/stylesheets/caboose/admin.css +43 -2
  14. data/app/assets/stylesheets/caboose/application.css +6 -2
  15. data/app/assets/stylesheets/caboose/caboose.css +0 -271
  16. data/app/assets/stylesheets/caboose/login.css +23 -0
  17. data/app/assets/stylesheets/caboose/modal.css +68 -0
  18. data/app/assets/stylesheets/caboose/page_bar_generator.css +34 -0
  19. data/app/assets/stylesheets/caboose/register.css +25 -0
  20. data/app/assets/stylesheets/caboose/station_modal.css +104 -0
  21. data/app/assets/stylesheets/caboose/station_sidebar.css +232 -0
  22. data/app/controllers/caboose/login_controller.rb +4 -0
  23. data/app/controllers/caboose/register_controller.rb +52 -0
  24. data/app/controllers/caboose/station_controller.rb +12 -1
  25. data/app/views/caboose/login/index.html.erb +19 -18
  26. data/app/views/caboose/register/index.html.erb +32 -0
  27. data/app/views/caboose/station/index.html.erb +40 -0
  28. data/app/views/caboose/users/edit.html.erb +9 -0
  29. data/app/views/caboose/users/index.html.erb +6 -0
  30. data/app/views/layouts/caboose/_admin_top_nav.html.erb +14 -0
  31. data/app/views/layouts/caboose/_top_nav.html.erb +7 -2
  32. data/app/views/layouts/caboose/admin.html.erb +2 -2
  33. data/app/views/layouts/caboose/modal.html.erb +21 -0
  34. data/config/routes.rb +10 -6
  35. data/lib/caboose/engine.rb +1 -0
  36. data/lib/caboose/version.rb +1 -1
  37. metadata +202 -119
@@ -12,6 +12,8 @@
12
12
  //
13
13
  //= require jquery
14
14
  //= require jquery_ujs
15
+ //= require colorbox-rails
16
+ //= require caboose/modal_integration
15
17
  //= require jquery.ui.all
16
18
  //= require tinymce-jquery
17
19
  //= require class
@@ -33,5 +35,4 @@
33
35
  //= require attribute/textjs
34
36
  //= require attribute/h1
35
37
  //= require attribute/time
36
- //= require attribute/video
37
- //= require caboose/station
38
+ //= require attribute/video
@@ -12,27 +12,6 @@
12
12
  //
13
13
  //= require jquery
14
14
  //= require jquery_ujs
15
- //= require jquery.ui.all
16
- //= require tinymce-jquery
17
- //= require class
18
- //= require model
19
- //= require attribute
20
- //= require form
21
- //= require form/embedded
22
- //= require attribute/checkbox-multiple
23
- //= require attribute/checkbox
24
- //= require attribute/date-time
25
- //= require attribute/file
26
- //= require attribute/hidden
27
- //= require attribute/image
28
- //= require attribute/password
29
- //= require attribute/radio
30
- //= require attribute/rich-text
31
- //= require attribute/select
32
- //= require attribute/texarea
33
- //= require attribute/textjs
34
- //= require attribute/h1
35
- //= require attribute/time
36
- //= require attribute/video
37
- //= require caboose/station
38
- //= require application
15
+ //= require colorbox-rails
16
+ //= require caboose/modal_integration
17
+ //= require application
@@ -1,7 +1,10 @@
1
1
 
2
2
  function login()
3
3
  {
4
+ $('#message').hide();
4
5
  $('#message').html("<p class='loading'>Logging in...</p>");
6
+ $('#message').slideDown({ duration: 350 });
7
+ parent.$.fn.colorbox.resize({ height:"340px" })
5
8
 
6
9
  $.ajax({
7
10
  url: '/login',
@@ -9,13 +12,14 @@ function login()
9
12
  data: $('#login_form').serialize(),
10
13
  success: function(resp) {
11
14
  if (resp.error)
12
- $('#message').html("<p class='note error'>" + resp.error + "</p>");
15
+ $('#message').html("<p class='note error'>" + resp.error + "</p>");
13
16
  else if (resp.redirect != false)
14
- window.location = resp.redirect;
17
+ parent.window.location = resp.redirect;
18
+ else
19
+ parent.location.reload(true);
15
20
  },
16
21
  error: function() {
17
22
  $('#message').html("<p class='note error'>Error</p>");
18
23
  }
19
24
  });
20
25
  }
21
-
@@ -0,0 +1,36 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
+ // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // the compiled file.
9
+ //
10
+ // WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
11
+ // GO AFTER THE REQUIRES BELOW.
12
+ //
13
+ //= require jquery
14
+ //= require jquery_ujs
15
+ //= require jquery.ui.all
16
+ //= require tinymce-jquery
17
+ //= require class
18
+ //= require model
19
+ //= require attribute
20
+ //= require form
21
+ //= require form/embedded
22
+ //= require attribute/checkbox-multiple
23
+ //= require attribute/checkbox
24
+ //= require attribute/date-time
25
+ //= require attribute/file
26
+ //= require attribute/hidden
27
+ //= require attribute/image
28
+ //= require attribute/password
29
+ //= require attribute/radio
30
+ //= require attribute/rich-text
31
+ //= require attribute/select
32
+ //= require attribute/texarea
33
+ //= require attribute/textjs
34
+ //= require attribute/h1
35
+ //= require attribute/time
36
+ //= require attribute/video
@@ -0,0 +1,56 @@
1
+
2
+ $(document).ready(function() {
3
+ $('#caboose_login').colorbox({
4
+ iframe: true,
5
+ initialWidth: 400,
6
+ initialHeight: 200,
7
+ innerWidth: 400,
8
+ innerHeight: 200,
9
+ scrolling: false,
10
+ transition: 'fade',
11
+ closeButton: false,
12
+ onComplete: fix_colorbox,
13
+ opacity: 0.50
14
+ });
15
+ $('#caboose_register').colorbox({
16
+ iframe: true,
17
+ initialWidth: 400,
18
+ initialHeight: 324,
19
+ innerWidth: 400,
20
+ innerHeight: 324,
21
+ scrolling: false,
22
+ transition: 'fade',
23
+ closeButton: false,
24
+ onComplete: fix_colorbox,
25
+ opacity: 0.50
26
+ });
27
+ $.ajax({
28
+ url: '/station/plugin-count',
29
+ success: function (count) {
30
+ $('#caboose_station').colorbox({
31
+ iframe: true,
32
+ innerWidth: 200,
33
+ innerHeight: count * 50,
34
+ transition: 'fade',
35
+ closeButton: false,
36
+ onComplete: fix_colorbox,
37
+ opacity: 0.50
38
+ });
39
+ }
40
+ });
41
+ });
42
+
43
+ function fix_colorbox() {
44
+ $("#cboxTopLeft" ).css('background', '#111');
45
+ $("#cboxTopRight" ).css('background', '#111');
46
+ $("#cboxBottomLeft" ).css('background', '#111');
47
+ $("#cboxBottomRight" ).css('background', '#111');
48
+ $("#cboxMiddleLeft" ).css('background', '#111');
49
+ $("#cboxMiddleRight" ).css('background', '#111');
50
+ $("#cboxTopCenter" ).css('background', '#111');
51
+ $("#cboxBottomCenter" ).css('background', '#111');
52
+ $("#cboxClose" ).hide();
53
+ //$('#cboxLoadedContent').css('margin-bottom', 0);
54
+ //h = $('#cboxLoadedContent').height();
55
+ //$('#cboxLoadedContent').css('height', ''+(h+28)+'px');
56
+ }
@@ -0,0 +1,36 @@
1
+
2
+ Model.Form.User = Model.Form.extend({
3
+
4
+ class_name: 'Model.Form.User',
5
+
6
+ // Returns the form for editing a model or false for an embedded form.
7
+ edit: function()
8
+ {
9
+ var m = this.model;
10
+
11
+ var this2 = this;
12
+ var div = $('<div/>');
13
+ $(m.attributes).each(function(i, a) {
14
+ if (a.type == 'hidden')
15
+ return;
16
+ div.append(
17
+ $('<div/>')
18
+ .attr('id', m.name + '_' + m.id + '_' + a.name + '_container')
19
+ .click(function() { m.edit_attribute(a.name); })
20
+ .append($('<input/>')
21
+ .attr('placeholder', a.nice_name)
22
+ .val(a.value)
23
+ )
24
+ );
25
+ });
26
+
27
+ div.append($('<div/>').attr('id', this.message))
28
+ .append($('<p/>')
29
+ .append($('<input/>').attr('type', 'button').val('Back').click(function() { caboose_station.close_url('/pages/'+m.id+'/redirect'); }))
30
+ .append(' ')
31
+ .append($('<input/>').attr('type', 'button').val('Delete ' + m.name).click(function() { m.ajax_delete(); }))
32
+ );
33
+ return div;
34
+ }
35
+
36
+ });
@@ -0,0 +1,29 @@
1
+
2
+ function register()
3
+ {
4
+ resize_colorbox("<p class='loading'>Registering...</p>");
5
+
6
+ $.ajax({
7
+ url: '/register',
8
+ type: 'post',
9
+ data: $('#register_form').serialize(),
10
+ success: function(resp) {
11
+ if (resp.error)
12
+ resize_colorbox("<p class='note error'>" + resp.error + "</p>");
13
+ else if (resp.redirect != false)
14
+ window.location = resp.redirect;
15
+ else
16
+ parent.location.reload(true);
17
+ },
18
+ error: function() {
19
+ $('#message').html("<p class='note error'>Error</p>");
20
+ }
21
+ });
22
+ }
23
+
24
+ function resize_colorbox(html)
25
+ {
26
+ $('#message').html(html);
27
+ height = $('#modal_content').outerHeight(true);
28
+ parent.$.fn.colorbox.resize({ innerHeight: '' + height + 'px' })
29
+ }
@@ -0,0 +1,42 @@
1
+
2
+ $(document).ready(function() {
3
+
4
+ // Make the main nav open the subnav
5
+ $('#station > ul > li > a').each(function(i, a) {
6
+ var href = $(a).attr('href');
7
+ $(a).click(function(event) {
8
+ event.preventDefault();
9
+ id = $(this).parent().attr('id').replace('nav_item_', '');
10
+ caboose_subnav(id, href);
11
+ })
12
+ });
13
+
14
+ // Make the subnav links take over the entire page instead of just the iframe
15
+ //$('#station ul li ul li a').each(function(i, a) {
16
+ // var href = $(a).attr('href');
17
+ // $(a).click(function(event) {
18
+ // event.preventDefault();
19
+ // parent.window.location = href;
20
+ // })
21
+ //});
22
+
23
+ });
24
+
25
+ function caboose_subnav(id, href)
26
+ {
27
+ parent.$.fn.colorbox.resize({ innerHeight: plugin_count * 50, innerWidth: '400px' });
28
+
29
+ $('#station > ul > li').each(function(i, li) {
30
+ id2 = $(li).attr('id').replace('nav_item_', '');
31
+ if (id == id2)
32
+ $(li).addClass('selected');
33
+ else
34
+ $(li).removeClass('selected');
35
+ });
36
+
37
+ $('#station ul li ul').hide();
38
+ $('#station ul li#nav_item_' + id + ' ul').show();
39
+
40
+ var height = $('#station > ul').height();
41
+ $('#station ul li#nav_item_' + id + ' ul').height(height);
42
+ }
@@ -8,23 +8,64 @@
8
8
  * You're free to add application-wide styles to this file and they'll appear at the top of the
9
9
  * compiled file, but it's generally better to create a new file per style scope.
10
10
  *
11
+ *= require colorbox-rails
11
12
  *= require modeljs
12
13
  *= require caboose/fonts
13
14
  *= require caboose/caboose
14
15
  */
15
16
 
17
+ #cboxLoadedContent { margin-bottom: 0; }
18
+
16
19
  body {
17
20
  margin: 0;
18
21
  padding: 0;
19
22
  }
20
23
 
21
24
  #top_nav {
22
- display: none;
25
+ background: #000;
26
+ border-bottom: #333 1px solid;
27
+ height: 50px;
28
+ position: relative;
29
+ }
30
+
31
+ #top_nav .caboose_logo {
32
+ position: absolute;
33
+ top: 0;
34
+ left: 0;
35
+ width: 50px;
36
+ height: 50px;
37
+ background: url(/assets/caboose/caboose_logo_small.png);
38
+ }
39
+
40
+ #top_nav ul {
41
+ margin: 0;
42
+ padding: 0 8px 0 0;
43
+ list-style: none;
44
+ text-align: right;
23
45
  }
24
46
 
47
+ #top_nav ul li {
48
+ margin: 0;
49
+ padding: 0;
50
+ list-style: none;
51
+ display: inline-block;
52
+ }
53
+
54
+ #top_nav ul li a {
55
+ display: block;
56
+ margin: 8px 4px;
57
+ padding: 8px 16px;
58
+ border: #333 1px solid;
59
+ text-decoration: none;
60
+ height: 16px;
61
+ }
62
+
63
+ #top_nav ul li a { color: #ccc; border: #333 1px solid; background: #000; }
64
+ #top_nav ul li a:hover { color: #fff; border: #444 1px solid; background: #000; }
65
+ #top_nav ul li a:active { color: #fff; border: #666 1px solid; background: #333; }
66
+
25
67
  #content_wrapper {
26
68
  position: relative;
27
- margin-left: 208px;
28
69
  }
29
70
 
30
71
  #content {
@@ -7,9 +7,13 @@
7
7
  *
8
8
  * You're free to add application-wide styles to this file and they'll appear at the top of the
9
9
  * compiled file, but it's generally better to create a new file per style scope.
10
- *
11
- *= require modeljs
10
+ *
11
+ *= require colorbox-rails
12
+ *= require modeljs
12
13
  *= require caboose/fonts
14
+ *= require caboose/page_bar_generator
13
15
  *= require caboose/caboose
14
16
  *= require application
15
17
  */
18
+
19
+ #cboxLoadedContent { margin-bottom: 0; }
@@ -2,274 +2,3 @@
2
2
  body {
3
3
  font-family: Helvetica, Tahoma, Arial;
4
4
  }
5
-
6
- #wrapper {
7
- width: 960px;
8
- position: relative;
9
- }
10
-
11
- .page_links {
12
-
13
- }
14
-
15
- .page_links a {
16
- display: inline-block;
17
- margin: 0 2px;
18
- padding: 5px 8px 3px 8px;
19
-
20
- border: #505050 1px solid;
21
- background: #e1e1e1;
22
- color: #505050;
23
- text-decoration: none;
24
- }
25
-
26
- .page_links a:hover {
27
- background: #505050;
28
- color: #fff;
29
- }
30
-
31
- .page_links .middle_links a {
32
-
33
- }
34
-
35
- .page_links span.current_page {
36
- display: inline-block;
37
- padding: 5px 8px 3px 8px;
38
-
39
- border: #941403 1px solid;
40
- background: #941403;
41
- color: #fff;
42
- text-decoration: none;
43
- }
44
-
45
- #caboose_white {
46
- z-index: 99;
47
- }
48
-
49
- #caboose_station_wrapper {
50
- display: none;
51
- position: absolute;
52
- top: 0;
53
- right: 0;
54
- z-index: 100;
55
- width: 210px;
56
- height: 100%;
57
- overflow: hidden;
58
- }
59
-
60
- #caboose_station {
61
- width: 208px;
62
- height: 100%;
63
- background: #e1e1e1;
64
- border: #aaa 1px solid;
65
- font-family: BigNoodleTitling, Tahoma;
66
- }
67
-
68
- #caboose_station .caboose_logo {
69
- height: 100px;
70
- background-image: url('/assets/caboose/caboose_nav.png');
71
- background-position: 64px 0;
72
- margin: 0;
73
- padding: 0;
74
- border-bottom: #aaa 1px solid;
75
- }
76
-
77
- #caboose_station h2 {
78
- display: none;
79
- height: 40px;
80
- background-image: url('/assets/caboose/caboose_nav.png');
81
- background-position: 64px 0;
82
- margin: 0;
83
- padding: 80px 0 0 0;
84
- border-bottom: #aaa 1px solid;
85
-
86
- /* Hide the text. */
87
- /*
88
- text-indent: 100%;
89
- white-space: nowrap;
90
- overflow: hidden;
91
- */
92
- }
93
-
94
- #caboose_station h2 span {
95
- display: block;
96
- color: #941403;
97
- text-align: center;
98
- font-size: 20px;
99
- font-weight: normal;
100
- background: #e1e1e1;
101
- height: 40px;
102
- }
103
-
104
- #caboose_station ul.account {
105
- margin: 0;
106
- padding: 0;
107
- list-style: none;
108
- height: 33px;
109
- }
110
-
111
- #caboose_station ul.account li {
112
- margin: 0;
113
- padding: 0;
114
- list-style: none;
115
- float: left;
116
- border: 0;
117
- background: #ccc;
118
- }
119
-
120
- #caboose_station ul.account li a {
121
- display: block;
122
- margin: 0;
123
- padding: 0;
124
- height: 33px;
125
-
126
- /* Hide the text. */
127
- /*
128
- text-indent: 100%;
129
- white-space: nowrap;
130
- overflow: hidden;
131
- */
132
- font-family: BigNoodleTitling, Tahoma;
133
- font-size: 16px;
134
- color: #505050;
135
- background: #aaa;
136
- text-decoration: none;
137
- text-align: center;
138
- border-bottom: #cecece 1px solid;
139
- }
140
- #caboose_station ul.account li a span {
141
- padding-top: 8px;
142
- }
143
-
144
- #caboose_station ul.account li.my_account a { width: 103px; border-right: #828181 1px solid; }
145
- #caboose_station ul.account li.logout a { width: 103px; border-left: #cecece 1px solid; }
146
-
147
- #caboose_station ul.account li a:hover {
148
- color: #941403;
149
- }
150
-
151
- #caboose_station ul.admin {
152
- margin: 0;
153
- padding: 0;
154
- list-style: none;
155
- }
156
-
157
- #caboose_station ul.admin li {
158
- margin: 0;
159
- padding: 0;
160
- list-style: none;
161
- }
162
-
163
- #caboose_station ul.admin li ul {
164
- margin: 0;
165
- padding: 0;
166
- list-style: none;
167
- }
168
-
169
- #caboose_station ul.admin a {
170
- display: block !important;
171
- margin: 1px 0 0 0;
172
- padding: 8px 10px;
173
- color: #505050;
174
- text-decoration: none;
175
- }
176
-
177
- #caboose_station ul.admin a:hover {
178
- color: #941403;
179
- }
180
-
181
- #caboose_station ul.admin li a.top_level {
182
- background-image: url('/assets/caboose/caboose_nav.png');
183
- background-repeat: no-repeat;
184
- background-position: 0 0;
185
-
186
- width: 208px;
187
- height: 50px;
188
- margin: 0;
189
- padding: 0;
190
- border-top: #f7f7f7 1px solid;
191
- border-bottom: #aaa 1px solid;
192
- position: relative;
193
-
194
- /* Hide the text. */
195
- /*
196
- text-indent: 100%;
197
- white-space: nowrap;
198
- overflow: hidden;
199
- */
200
- font-family: BigNoodleTitling, Tahoma;
201
- font-size: 16px;
202
- }
203
-
204
- #caboose_station ul.admin li a.top_level span {
205
- display: block !important;
206
- margin: 0 0 0 60px;
207
- padding: 16px 0 0 0;
208
- height: 34px;
209
- background: #e1e1e1;
210
- vertical-align: middle;
211
- font-family: BigNoodleTitling, Tahoma;
212
- font-size: 16px;
213
- }
214
- #caboose_station ul.admin li a.top_level:hover span { color: #941403; }
215
- #caboose_station ul.admin li a.top_level:active span { color: #941403; }
216
-
217
- #caboose_station ul.admin li a.top_level { background-position: 0px -350px; }
218
- #caboose_station ul.admin li#nav_item_users a.top_level { background-position: 0px -100px; }
219
- #caboose_station ul.admin li#nav_item_roles a.top_level { background-position: 0px -150px; }
220
- #caboose_station ul.admin li#nav_item_permissions a.top_level { background-position: 0px -200px; }
221
- #caboose_station ul.admin li#nav_item_pages a.top_level { background-position: 0px -250px; }
222
- #caboose_station ul.admin li#nav_item_settings a.top_level { background-position: 0px -300px; }
223
- #caboose_station ul.admin li#nav_item_star a.top_level { background-position: 0px -350px; }
224
-
225
- #caboose_station ul.admin li a.top_level:hover { background-position: -250px -350px; }
226
- #caboose_station ul.admin li#nav_item_users a.top_level:hover { background-position: -250px -100px; }
227
- #caboose_station ul.admin li#nav_item_roles a.top_level:hover { background-position: -250px -150px; }
228
- #caboose_station ul.admin li#nav_item_permissions a.top_level:hover { background-position: -250px -200px; }
229
- #caboose_station ul.admin li#nav_item_pages a.top_level:hover { background-position: -250px -250px; }
230
- #caboose_station ul.admin li#nav_item_settings a.top_level:hover { background-position: -250px -300px; }
231
- #caboose_station ul.admin li#nav_item_star a.top_level:hover { background-position: -250px -350px; }
232
-
233
- #caboose_station ul.admin li a.top_level:active { background-position: -500px -350px; }
234
- #caboose_station ul.admin li#nav_item_users a.top_level:active { background-position: -500px -100px; }
235
- #caboose_station ul.admin li#nav_item_roles a.top_level:active { background-position: -500px -150px; }
236
- #caboose_station ul.admin li#nav_item_permissions a.top_level:active { background-position: -500px -200px; }
237
- #caboose_station ul.admin li#nav_item_pages a.top_level:active { background-position: -500px -250px; }
238
- #caboose_station ul.admin li#nav_item_settings a.top_level:active { background-position: -500px -300px; }
239
- #caboose_station ul.admin li#nav_item_star a.top_level:active { background-position: -500px -350px; }
240
-
241
- #caboose_station_wrapper.state_min a.close,
242
- #caboose_station_wrapper.state_left a.close,
243
- #caboose_station_wrapper.state_right a.close {
244
- display: block;
245
- background-image: url('/assets/caboose/caboose_nav.png');
246
- background-repeat: no-repeat;
247
- background-position: 0 0;
248
- width: 208px;
249
- height: 50px;
250
- font-family: BigNoodleTitling, Tahoma;
251
- text-decoration: none;
252
- }
253
-
254
- #caboose_station_wrapper a.close span {
255
- display: block;
256
- margin: 0 0 0 60px;
257
- padding: 16px 0 0 0;
258
- height: 34px;
259
-
260
- font-family: BigNoodleTitling, Tahoma;
261
- font-size: 16px;
262
- }
263
- #caboose_station_wrapper a.close span { background: #e1e1e1; color: #505050; }
264
- #caboose_station_wrapper a.close:hover span { background: #e1e1e1; color: #941403; }
265
- #caboose_station_wrapper a.close:active span { background: #d2d2d2; color: #941403; }
266
-
267
- #caboose_station_wrapper.state_left a.close { background-position: 0px -450px; }
268
- #caboose_station_wrapper.state_right a.close { background-position: 0px -400px; }
269
- #caboose_station_wrapper.state_min a.close { background-position: 0px -400px; }
270
- #caboose_station_wrapper.state_left a.close:hover { background-position: -250px -450px; }
271
- #caboose_station_wrapper.state_right a.close:hover { background-position: -250px -400px; }
272
- #caboose_station_wrapper.state_min a.close:hover { background-position: -250px -400px; }
273
- #caboose_station_wrapper.state_left a.close:active { background-position: -500px -450px; }
274
- #caboose_station_wrapper.state_right a.close:active { background-position: -500px -400px; }
275
- #caboose_station_wrapper.state_min a.close:active { background-position: -500px -400px; }