joshuaclayton-watchtower 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/Manifest +66 -0
  3. data/README.textile +34 -0
  4. data/Rakefile +35 -0
  5. data/app/controllers/watchtower_controller.rb +3 -0
  6. data/app/helpers/watchtower_helper.rb +27 -0
  7. data/app/models/watched_exception.rb +3 -0
  8. data/app/views/layouts/watchtower.erb +34 -0
  9. data/app/views/watchtower/_recordset.erb +10 -0
  10. data/app/views/watchtower/destroy.js.rjs +0 -0
  11. data/app/views/watchtower/destroy_multiple.js.rjs +6 -0
  12. data/app/views/watchtower/index.html.erb +59 -0
  13. data/app/views/watchtower/index.js.rjs +2 -0
  14. data/app/views/watchtower/show.html.erb +26 -0
  15. data/config/routes.rb +3 -0
  16. data/generators/watchtower/USAGE +1 -0
  17. data/generators/watchtower/templates/README +26 -0
  18. data/generators/watchtower/templates/migrations/create_watched_exceptions.rb +20 -0
  19. data/generators/watchtower/watchtower_generator.rb +12 -0
  20. data/generators/watchtower_assets/USAGE +1 -0
  21. data/generators/watchtower_assets/templates/public/javascripts/watchtower/jquery-1.3.2.min.js +19 -0
  22. data/generators/watchtower_assets/templates/public/javascripts/watchtower/jquery-ui-1.7.1.custom.min.js +160 -0
  23. data/generators/watchtower_assets/templates/public/javascripts/watchtower/jquery.watchtower.bindings.js +50 -0
  24. data/generators/watchtower_assets/templates/public/javascripts/watchtower/jquery.watchtower.events.js +102 -0
  25. data/generators/watchtower_assets/templates/public/javascripts/watchtower/jquery.watchtower.js +65 -0
  26. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/admin.css +60 -0
  27. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/assets/images/ajax-loader.gif +0 -0
  28. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/assets/images/bullet-black.png +0 -0
  29. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/assets/images/buttons/sprite-gray.png +0 -0
  30. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/assets/images/buttons/x.png +0 -0
  31. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/assets/images/icons/caution-sign-red.png +0 -0
  32. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/assets/images/icons/caution-sign-sm.png +0 -0
  33. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/assets/images/icons/caution-sign.png +0 -0
  34. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/assets/images/icons/edit-template.gif +0 -0
  35. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/assets/images/icons/success-badge.png +0 -0
  36. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/assets/images/nav-admin-shadow.png +0 -0
  37. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/extras.css +86 -0
  38. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/forms.css +312 -0
  39. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/ie.css +31 -0
  40. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  41. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  42. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  43. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  44. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  45. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/images/ui-bg_glass_75_ffffff_1x400.png +0 -0
  46. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  47. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/images/ui-bg_inset-soft_95_fef1ec_1x100.png +0 -0
  48. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/images/ui-icons_222222_256x240.png +0 -0
  49. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/images/ui-icons_2e83ff_256x240.png +0 -0
  50. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/images/ui-icons_454545_256x240.png +0 -0
  51. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/images/ui-icons_888888_256x240.png +0 -0
  52. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/images/ui-icons_cd0a0a_256x240.png +0 -0
  53. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/jquery-ui-1.7.1.custom.css +404 -0
  54. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/reset.css +235 -0
  55. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/screen.css +208 -0
  56. data/generators/watchtower_assets/templates/public/stylesheets/watchtower/watchtower.css +56 -0
  57. data/generators/watchtower_assets/watchtower_assets_generator.rb +19 -0
  58. data/lib/watchtower/application_controller_base.rb +40 -0
  59. data/lib/watchtower/controller_base.rb +54 -0
  60. data/lib/watchtower/watched_exception_base.rb +84 -0
  61. data/lib/watchtower/watched_exceptions_presenter.rb +23 -0
  62. data/lib/watchtower.rb +5 -0
  63. data/rails/init.rb +2 -0
  64. data/tasks/watchtower_tasks.rake +0 -0
  65. data/test/test_helper.rb +3 -0
  66. data/watchtower.gemspec +38 -0
  67. metadata +154 -0
@@ -0,0 +1,160 @@
1
+ /*
2
+ * jQuery UI 1.7.1
3
+ *
4
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
5
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
6
+ * and GPL (GPL-LICENSE.txt) licenses.
7
+ *
8
+ * http://docs.jquery.com/UI
9
+ */
10
+ * jQuery UI Datepicker 1.7.1
11
+ *
12
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
13
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
14
+ * and GPL (GPL-LICENSE.txt) licenses.
15
+ *
16
+ * http://docs.jquery.com/UI/Datepicker
17
+ *
18
+ * Depends:
19
+ * ui.core.js
20
+ */
21
+ * jQuery UI Effects 1.7.1
22
+ *
23
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
24
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
25
+ * and GPL (GPL-LICENSE.txt) licenses.
26
+ *
27
+ * http://docs.jquery.com/UI/Effects/
28
+ */
29
+ * jQuery UI Effects Blind 1.7.1
30
+ *
31
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
32
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
33
+ * and GPL (GPL-LICENSE.txt) licenses.
34
+ *
35
+ * http://docs.jquery.com/UI/Effects/Blind
36
+ *
37
+ * Depends:
38
+ * effects.core.js
39
+ */
40
+ * jQuery UI Effects Bounce 1.7.1
41
+ *
42
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
43
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
44
+ * and GPL (GPL-LICENSE.txt) licenses.
45
+ *
46
+ * http://docs.jquery.com/UI/Effects/Bounce
47
+ *
48
+ * Depends:
49
+ * effects.core.js
50
+ */
51
+ * jQuery UI Effects Clip 1.7.1
52
+ *
53
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
54
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
55
+ * and GPL (GPL-LICENSE.txt) licenses.
56
+ *
57
+ * http://docs.jquery.com/UI/Effects/Clip
58
+ *
59
+ * Depends:
60
+ * effects.core.js
61
+ */
62
+ * jQuery UI Effects Drop 1.7.1
63
+ *
64
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
65
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
66
+ * and GPL (GPL-LICENSE.txt) licenses.
67
+ *
68
+ * http://docs.jquery.com/UI/Effects/Drop
69
+ *
70
+ * Depends:
71
+ * effects.core.js
72
+ */
73
+ * jQuery UI Effects Explode 1.7.1
74
+ *
75
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
76
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
77
+ * and GPL (GPL-LICENSE.txt) licenses.
78
+ *
79
+ * http://docs.jquery.com/UI/Effects/Explode
80
+ *
81
+ * Depends:
82
+ * effects.core.js
83
+ */
84
+ * jQuery UI Effects Fold 1.7.1
85
+ *
86
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
87
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
88
+ * and GPL (GPL-LICENSE.txt) licenses.
89
+ *
90
+ * http://docs.jquery.com/UI/Effects/Fold
91
+ *
92
+ * Depends:
93
+ * effects.core.js
94
+ */
95
+ * jQuery UI Effects Highlight 1.7.1
96
+ *
97
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
98
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
99
+ * and GPL (GPL-LICENSE.txt) licenses.
100
+ *
101
+ * http://docs.jquery.com/UI/Effects/Highlight
102
+ *
103
+ * Depends:
104
+ * effects.core.js
105
+ */
106
+ * jQuery UI Effects Pulsate 1.7.1
107
+ *
108
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
109
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
110
+ * and GPL (GPL-LICENSE.txt) licenses.
111
+ *
112
+ * http://docs.jquery.com/UI/Effects/Pulsate
113
+ *
114
+ * Depends:
115
+ * effects.core.js
116
+ */
117
+ * jQuery UI Effects Scale 1.7.1
118
+ *
119
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
120
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
121
+ * and GPL (GPL-LICENSE.txt) licenses.
122
+ *
123
+ * http://docs.jquery.com/UI/Effects/Scale
124
+ *
125
+ * Depends:
126
+ * effects.core.js
127
+ */
128
+ * jQuery UI Effects Shake 1.7.1
129
+ *
130
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
131
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
132
+ * and GPL (GPL-LICENSE.txt) licenses.
133
+ *
134
+ * http://docs.jquery.com/UI/Effects/Shake
135
+ *
136
+ * Depends:
137
+ * effects.core.js
138
+ */
139
+ * jQuery UI Effects Slide 1.7.1
140
+ *
141
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
142
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
143
+ * and GPL (GPL-LICENSE.txt) licenses.
144
+ *
145
+ * http://docs.jquery.com/UI/Effects/Slide
146
+ *
147
+ * Depends:
148
+ * effects.core.js
149
+ */
150
+ * jQuery UI Effects Transfer 1.7.1
151
+ *
152
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
153
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
154
+ * and GPL (GPL-LICENSE.txt) licenses.
155
+ *
156
+ * http://docs.jquery.com/UI/Effects/Transfer
157
+ *
158
+ * Depends:
159
+ * effects.core.js
160
+ */
@@ -0,0 +1,50 @@
1
+ (function($) {
2
+ $(function() {
3
+ var $doc = $(document),
4
+ watchtower = $doc.data("watchtower");
5
+
6
+ var deleteIds = function(elements) {
7
+ var idsToDelete = [];
8
+ if(elements.length > 0 && !confirm("Are you sure you want to delete these exceptions?")) { return; }
9
+ elements.map(function(idx, li) {
10
+ idsToDelete.push($(li).attr("id").match(/\d+/)[0]);
11
+ });
12
+ watchtower.data.destroy(idsToDelete.join(","));
13
+ };
14
+
15
+ $doc.bind("delete-visible.watchtower", function(data) {
16
+ deleteIds($("ul.watched-exceptions li"));
17
+ });
18
+
19
+ $doc.bind("delete-selected.watchtower", function(data) {
20
+ deleteIds($("ul.watched-exceptions li.selected"));
21
+ });
22
+
23
+ $doc.bind("select-all.watchtower", function(data) {
24
+ $("ul.watched-exceptions li").each(function(idx, li) {
25
+ $(li).addClass("selected");
26
+ });
27
+ });
28
+
29
+ $doc.bind("select-none.watchtower", function(data) {
30
+ $("ul.watched-exceptions li").each(function(idx, li) {
31
+ $(li).removeClass("selected");
32
+ });
33
+ });
34
+
35
+ $doc.bind("clear-start-at.watchtower", function(data) {
36
+ $("#watchtower_exceptions_start_at").val("");
37
+ watchtower.utilities.handleDateChange("start_at", "");
38
+ });
39
+
40
+ $doc.bind("clear-end-at.watchtower", function(data) {
41
+ $("#watchtower_exceptions_end_at").val("");
42
+ watchtower.utilities.handleDateChange("end_at", "");
43
+ });
44
+
45
+ $doc.bind("clear-search.watchtower", function(data) {
46
+ $("#watched_exception_query").val("");
47
+ watchtower.filters("query").clear();
48
+ });
49
+ });
50
+ })(jQuery);
@@ -0,0 +1,102 @@
1
+ (function($) {
2
+ $(function() {
3
+ var $doc = $(document),
4
+ watchtower = $doc.data("watchtower");
5
+
6
+ $(".delete-visible").click(function() {
7
+ $doc.trigger("delete-visible.watchtower");
8
+ });
9
+
10
+ $(".delete-selected").click(function() {
11
+ $doc.trigger("delete-selected.watchtower");
12
+ });
13
+
14
+ $(".select-all").click(function() {
15
+ $doc.trigger("select-all.watchtower");
16
+ });
17
+
18
+ $(".select-none").click(function() {
19
+ $doc.trigger("select-none.watchtower");
20
+ });
21
+
22
+ $(".clear-watchtower-start-at").click(function() {
23
+ $doc.trigger("clear-start-at.watchtower");
24
+ });
25
+
26
+ $(".clear-watchtower-end-at").click(function() {
27
+ $doc.trigger("clear-end-at.watchtower");
28
+ });
29
+
30
+ $(".clear-watchtower-query").click(function() {
31
+ $doc.trigger("clear-search.watchtower");
32
+ });
33
+
34
+ $(".pagination a").live("click", function() {
35
+ watchtower.filters("page").set($(this).attr("href").match(/page\=(\d+)/)[1]);
36
+ });
37
+
38
+ $("ul.watched-exceptions li").live("click", function() {
39
+ $(this).toggleClass("selected");
40
+ });
41
+
42
+ $("ul.watched-exceptions li a").live("click", function(e) {
43
+ $(this).stopImmediatePropagation()
44
+ });
45
+
46
+ $("#watchtower-search").submit(function(evt) {
47
+ watchtower.filters("query").set($("input[type=text]", $(this)).val());
48
+ return false;
49
+ });
50
+
51
+ $doc.keydown(function(e) {
52
+ if (/(input|textarea|select)/i.test(e.target.nodeName)) { return; }
53
+
54
+ if(e.which == "37") { /* left */
55
+ e.preventDefault();
56
+ $(".pagination a[rel*=prev]:first").trigger("click");
57
+ } else if(e.which == "39") { /* right */
58
+ e.preventDefault();
59
+ $(".pagination a[rel*=next]:first").trigger("click");
60
+ } else if(String.fromCharCode(e.which) == "X") {
61
+ e.preventDefault();
62
+ $doc.trigger("delete-selected.watchtower");
63
+ } else if(String.fromCharCode(e.which) == "A") {
64
+ e.preventDefault();
65
+ $doc.trigger("select-all.watchtower");
66
+ } else if(String.fromCharCode(e.which) == "V") {
67
+ e.preventDefault();
68
+ $doc.trigger("delete-visible.watchtower");
69
+ } else if(String.fromCharCode(e.which) == "N") {
70
+ e.preventDefault();
71
+ $doc.trigger("select-none.watchtower");
72
+ }
73
+ });
74
+
75
+ $("div.filter button").each(function(idx, button) {
76
+ var $button = $(button),
77
+ filter = $button.parents("div.filter").attr("class").match(/filter\-(\w+)/).pop(),
78
+ name = $button.siblings(".action-name").text();
79
+
80
+ $button.click(function(e) {
81
+ var item = $(this).parent();
82
+ $(this).parents("div.filter").find("button span").each(function(i, s) {
83
+ $(s).html("");
84
+ });
85
+
86
+ if(item.hasClass("active-filter")) {
87
+ $(this).find("span").html("");
88
+ watchtower.filters(filter).clear(function() {
89
+ item.removeClass("active-filter");
90
+ });
91
+ } else {
92
+ $(this).find("span").html("✓");
93
+ watchtower.filters(filter).set(name, function() {
94
+ item.siblings().removeClass("active-filter");
95
+ item.addClass("active-filter");
96
+ });
97
+ }
98
+ return false;
99
+ });
100
+ });
101
+ });
102
+ })(jQuery);
@@ -0,0 +1,65 @@
1
+ (function($) {
2
+ var $doc = $(document);
3
+
4
+ $.watchtower = function(options) {
5
+ var self = {
6
+ params: {},
7
+ utilities: {
8
+ handleDateChange: function(dateName, date) {
9
+ var watchtower = $(document).data("watchtower");
10
+ if(date.length > 0) {
11
+ watchtower.filters(dateName).set(date);
12
+ } else {
13
+ watchtower.filters(dateName).clear();
14
+ }
15
+ }
16
+ },
17
+ data: {
18
+ get: function() {
19
+ var fn = arguments[0] || function() {};
20
+ $.get("/watchtower", self.params, function(data) { eval(data); fn(); });
21
+ },
22
+ destroy: function(ids) {
23
+ var fn = arguments[1] || function() {};
24
+ $.post("/watchtower/destroy_multiple", $.extend({id: ids, "_method": "delete", authenticity_token: $(document).data("authToken")}, self.params), function(data) { eval(data); fn(); });
25
+ }
26
+ },
27
+ filters: function(name) {
28
+ var watchtower = $(document).data("watchtower");
29
+ if(self.params["page"] && name != "page") { delete(self.params["page"]); }
30
+ return {
31
+ set: function(filter, fn) {
32
+ self.params[name] = filter;
33
+ watchtower.data.get(fn);
34
+ },
35
+ clear: function(fn) {
36
+ var oldFilter = self.params[name];
37
+ delete(self.params[name]);
38
+ watchtower.data.get(fn);
39
+ }
40
+ };
41
+ }
42
+ };
43
+
44
+ $doc.data("watchtower", self);
45
+ return $doc.data("watchtower");
46
+ };
47
+
48
+ $(function() {
49
+ $(".loading-progress").ajaxStart(function() {
50
+ $(this).stop(true, true).fadeIn("slow");
51
+ }).ajaxStop(function() {
52
+ $(this).stop(true, false).animate({opacity: 1.0}, 100).fadeOut("slow");
53
+ });
54
+
55
+ var watchtower = $doc.data("watchtower");
56
+
57
+ $("#watchtower_exceptions_start_at").datepicker({
58
+ onClose: function(date, inst) { watchtower.utilities.handleDateChange("start_at", date); }
59
+ });
60
+
61
+ $("#watchtower_exceptions_end_at").datepicker({
62
+ onClose: function(date, inst) { watchtower.utilities.handleDateChange("end_at", date); }
63
+ });
64
+ });
65
+ })(jQuery);
@@ -0,0 +1,60 @@
1
+ /** =admin.css
2
+ ************************************************************
3
+ @project Easel
4
+ @note Styles for the control panel and front end administration
5
+ ************************************************************/
6
+
7
+ /** =nav-admin
8
+ ************************************************************/
9
+ .nav-admin {
10
+ position: fixed;
11
+ bottom: 0;
12
+ left: 0;
13
+ width: 100%;
14
+ background: url(assets/images/nav-admin-shadow.png) repeat-x;
15
+ z-index: 1000;
16
+ font-size: 11px;
17
+ text-align: right;
18
+ color: #ccc;
19
+ padding-top: 10px;
20
+ }
21
+ .nav-admin .inner {
22
+ padding: 3px 0;
23
+ height: 18px;
24
+ background: #000;
25
+ border-bottom: 2px #fff solid;
26
+ }
27
+ .nav-admin ul {
28
+ margin-right: 10px;
29
+ }
30
+ .nav-admin ul,
31
+ .nav-admin .greeting {
32
+ display: inline;
33
+ }
34
+ .nav-admin li {
35
+ margin-left: 9px;
36
+ padding-left: 10px;
37
+ border-left: 1px solid #6c6759;
38
+ }
39
+ .nav-admin a,
40
+ .nav-admin a:hover {
41
+ background: none;
42
+ color: #fff;
43
+ }
44
+ .nav-admin a:hover {
45
+ text-decoration: underline;
46
+ }
47
+ .nav-admin .greeting {
48
+ font-style: italic;
49
+ margin-right: 1.5em;
50
+ }
51
+ .nav-admin .edit a {
52
+ background: url(assets/images/icons/edit-template.gif) no-repeat 0 50%;
53
+ padding-left: 15px;
54
+ }
55
+
56
+ /** =content entry callouts
57
+ ************************************************************/
58
+ .highlight {
59
+ background-color: rgba(255, 255, 0, .2);
60
+ }
@@ -0,0 +1,86 @@
1
+ /** =extras.css
2
+ ************************************************************
3
+ @project Easel
4
+ @note Reference and reusable techniques best kept out of the screen.css
5
+ @note Import into screen.css or just copy/paste as needed
6
+ @note Stick anything that may be able to be reused in here
7
+ @fontdef "Bradley Hand ITC", "Apple Chancery", "URW Chancery L", cursive; script/cursive
8
+ ************************************************************/
9
+
10
+ /** =css3 rounded corners for nice browsers
11
+ ************************************************************/
12
+ .rnd {
13
+ border-radius: 1em;
14
+ -moz-border-radius: 1em;
15
+ -webkit-border-radius: 1em;
16
+ padding: 1em;
17
+ }
18
+
19
+ /** =Safari 3 and 4 fix for light on dark text
20
+ ************************************************************
21
+ @note Fixes chunky light text on dark bg in Safari. Change #000 to the element's background color.
22
+ @see http://jonnotie.nl/blog/fix-the-bad-text-rendering-in-safari-take-two/
23
+ ************************************************************/
24
+ .safari-txt {
25
+ text-shadow: #000 0 0 1px;
26
+ }
27
+
28
+ /** =use the best ampersand available
29
+ ************************************************************/
30
+ .amp {
31
+ font-family: Baskerville, Palatino, Constantia, "Book Antiqua", "URW Palladio L", serif;
32
+ font-style: italic;
33
+ font-weight: normal;
34
+ }
35
+
36
+ /** =Helvetica Neue Light
37
+ ************************************************************
38
+ @see http://blog.gesteves.com/post/36097597/helvetica-neue-light
39
+ ************************************************************/
40
+ .hn-light {
41
+ font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", sans-serif;
42
+ font-weight: 300;
43
+ }
44
+
45
+ /** =sliding doors buttons (with hover)
46
+ ************************************************************
47
+ @see http://www.filamentgroup.com/lab/styling_the_button_element_with_sliding_doors
48
+ @see http://git.fusionary.com/?p=fusionary/build_tools.git
49
+ ************************************************************/
50
+ button.btn {
51
+ border:0;
52
+ cursor:pointer;
53
+ font-weight:bold;
54
+ padding:0 10px 0 0;
55
+ text-align:center;
56
+ font-size: 1em;
57
+ background: none;
58
+ position: relative;
59
+ }
60
+ button.btn span {
61
+ position:relative;
62
+ display:block;
63
+ white-space:nowrap;
64
+ padding:0 0 0 10px;
65
+ height:26px;
66
+ line-height:24px;
67
+ color:#fff;
68
+ }
69
+
70
+ /* removes 1px border in FF */
71
+ button::-moz-focus-inner { border: none; padding: 0;}
72
+
73
+ /* using a sprite instead of four separate images... */
74
+ button.btn,
75
+ button.btn span {
76
+ background-image: url(assets/images/buttons/sprite-gray.png);
77
+ background-repeat: no-repeat;
78
+ }
79
+ button.btn {background-position: 100% 0;}
80
+ button.btn span { background-position: 0 -50px; }
81
+ button.btn:hover, button.btn.active { background-position: 100% -100px; }
82
+ button.btn:hover span, button.btn.active span { background-position: 0 -150px; }
83
+
84
+ button.btn:active, button.btn.active {
85
+ top:1px;
86
+ }