alertify-rails 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in alertify-rails.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Rudolf Schmidt
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,29 @@
1
+ # Alertify::Rails
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'alertify-rails'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install alertify-rails
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,19 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'alertify/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "alertify-rails"
8
+ gem.version = Alertify::Rails::VERSION
9
+ gem.authors = ["Rudolf Schmidt"]
10
+
11
+ gem.description = %q{Use Alertify.js with Rails 3}
12
+ gem.summary = %q{This gem provides the Alertify.js deiver for Rails 3 applications}
13
+ gem.homepage = ""
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+ end
@@ -0,0 +1,7 @@
1
+ require 'alertify/engine' if ::Rails.version >= '3.1'
2
+ require 'alertify/railtie'
3
+ require 'alertify/version'
4
+
5
+ module Alertify #:nodoc:
6
+ end
7
+
@@ -0,0 +1,5 @@
1
+ module Alertify
2
+ class Engine < ::Rails::Engine
3
+ end
4
+ end
5
+
@@ -0,0 +1,12 @@
1
+ module Alertify
2
+
3
+ class Railtie < ::Rails::Railtie
4
+ config.before_configuration do
5
+ if config.action_view.javascript_expansions
6
+ config.action_view.javascript_expansions[:defaults] << 'alertify'
7
+ end
8
+ end
9
+ end
10
+
11
+ end
12
+
@@ -0,0 +1,7 @@
1
+ module Alertify
2
+ module Rails
3
+ VERSION = "0.0.1"
4
+
5
+ end
6
+ end
7
+
@@ -0,0 +1,393 @@
1
+ /**
2
+ * Alertify
3
+ * An unobtrusive customizable JavaScript notification system
4
+ *
5
+ * @author Fabien Doiron <fabien.doiron@gmail.com>
6
+ * @copyright Fabien Doiron 2012
7
+ * @license The MIT License (MIT) <http://opensource.org/licenses/mit-license.php>
8
+ * @link http://www.github.com/fabien-d
9
+ * @module Alertify
10
+ * @version 0.1a1
11
+ */
12
+
13
+ ;(function( window, undefined ) {
14
+
15
+ var
16
+ // Use the correct document accordingly with window argument (sandbox)
17
+ document = window.document,
18
+
19
+ // The ready event handler and self cleanup method
20
+ DOMContentLoaded = function() {
21
+ if ( document.addEventListener ) {
22
+ document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
23
+
24
+ window.alertify = new Alertify();
25
+ } else if ( document.readyState === "complete" ) {
26
+ // we're here because readyState === "complete" in oldIE
27
+ // which is good enough for us to call the dom ready!
28
+ document.detachEvent( "onreadystatechange", DOMContentLoaded );
29
+
30
+ window.alertify = new Alertify();
31
+ }
32
+ },
33
+
34
+ // sandboxed Alertify
35
+ Alertify = function () {
36
+
37
+ var init, addListeners, bind, unbind, build, close, extend, hide, notify, setup, alert, confirm, log, prompt,
38
+ $, cover, element, logElement,
39
+ dialogs = {},
40
+ delay = 5000,
41
+ keys = {},
42
+ labels = {},
43
+ queue = [],
44
+ isopen = false;
45
+
46
+ keys = {
47
+ ENTER : 13,
48
+ ESC : 27
49
+ };
50
+
51
+ labels = {
52
+ ok : "OK",
53
+ cancel : "Cancel"
54
+ };
55
+
56
+ dialogs = {
57
+ buttons : {
58
+ holder : "<nav class=\"alertify-buttons\">{{buttons}}</nav>",
59
+ ok : "<a href=\"#\" class=\"alertify-button alertify-button-ok\" id=\"aOK\">{{ok}}</a>",
60
+ cancel : "<a href=\"#\" class=\"alertify-button alertify-button-cancel\" id=\"aCancel\">{{cancel}}</a>"
61
+ },
62
+ input : "<input type=\"text\" class=\"alertify-text\" id=\"aText\">",
63
+ message : "<p class=\"alertify-message\">{{message}}</p>",
64
+ log : "<article class=\"alertify-log{{class}}\">{{message}}</article>"
65
+ };
66
+
67
+ /**
68
+ * Shorthand for document.getElementById()
69
+ *
70
+ * @param {String} id A specific element ID
71
+
72
+ * @return {Object} HTML element
73
+ */
74
+ $ = function (id) {
75
+ return document.getElementById(id);
76
+ };
77
+
78
+ /**
79
+ * Initialize Alertify
80
+ * Create the 2 main elements
81
+ *
82
+ * @return {undefined}
83
+ */
84
+ init = function () {
85
+ // ensure legacy browsers support html5 tags
86
+ document.createElement("nav");
87
+ document.createElement("article");
88
+ document.createElement("section");
89
+ // cover
90
+ cover = document.createElement("div");
91
+ cover.setAttribute("id", "alertifycover");
92
+ cover.className = "alertify-cover alertify-hidden";
93
+ document.body.appendChild(cover);
94
+ // main element
95
+ element = document.createElement("section");
96
+ element.setAttribute("id", "alertify");
97
+ element.className = "alertify alertify-hidden";
98
+ document.body.appendChild(element);
99
+ // main element
100
+ logElement = document.createElement("section");
101
+ logElement.setAttribute("id", "alertifylogs");
102
+ logElement.className = "alertify-logs";
103
+ document.body.appendChild(logElement);
104
+ };
105
+
106
+ /**
107
+ * Set the proper button click events
108
+ *
109
+ * @param {Function} fn [Optional] Callback function
110
+ *
111
+ * @return {undefined}
112
+ */
113
+ addListeners = function (fn) {
114
+ var btnOK = $("aOK") || undefined,
115
+ btnCancel = $("aCancel") || undefined,
116
+ input = $("aText") || undefined,
117
+ val = "",
118
+ ok, cancel, common, key;
119
+
120
+ // ok event handler
121
+ ok = function (event) {
122
+ common(event);
123
+ if (typeof input !== "undefined") val = input.value;
124
+ if (typeof fn === "function") fn(true, val);
125
+ if (typeof event.preventDefault !== "undefined") event.preventDefault();
126
+ };
127
+
128
+ // cancel event handler
129
+ cancel = function (event) {
130
+ common(event);
131
+ if (typeof fn === "function") fn(false);
132
+ if (typeof event.preventDefault !== "undefined") event.preventDefault();
133
+ };
134
+
135
+ // common event handler (keyup, ok and cancel)
136
+ common = function (event) {
137
+ hide();
138
+ unbind(document.body, "keyup", key);
139
+ };
140
+
141
+ // keyup handler
142
+ key = function (event) {
143
+ var keyCode = event.keyCode;
144
+ if (keyCode === keys.ENTER && typeof btnOK !== "undefined") ok(event);
145
+ else if (keyCode === keys.ESC && typeof btnCancel !== "undefined") cancel(event);
146
+ };
147
+
148
+ // handle OK click
149
+ if (typeof btnOK !== "undefined") bind(btnOK, "click", ok);
150
+ // handle Cancel click
151
+ if (typeof btnCancel !== "undefined") bind(btnCancel, "click", cancel);
152
+
153
+ // clear focus off activeElement element to ensure
154
+ // the ENTER key triggers the correct behaviour
155
+ // Firefox has an issue if this isn't done and the current
156
+ // focus is an anchor
157
+ document.activeElement.blur();
158
+ // listen for keys, OK => ENTER, Cancel => ESC
159
+ bind(document.body, "keyup", key);
160
+ };
161
+
162
+ /**
163
+ * Bind events to elements
164
+ *
165
+ * @param {Object} el HTML Object
166
+ * @param {Event} event Event to attach to element
167
+ * @param {Function} fn Callback function
168
+ *
169
+ * @return {undefined}
170
+ */
171
+ bind = function (el, event, fn) {
172
+ if (typeof el.addEventListener === "function") {
173
+ el.addEventListener(event, fn, false);
174
+ } else if (el.attachEvent) {
175
+ el.attachEvent("on" + event, fn);
176
+ }
177
+ };
178
+
179
+ /**
180
+ * Unbind events to elements
181
+ *
182
+ * @param {Object} el HTML Object
183
+ * @param {Event} event Event to detach to element
184
+ * @param {Function} fn Callback function
185
+ *
186
+ * @return {undefined}
187
+ */
188
+ unbind = function (el, event, fn) {
189
+ if (typeof el.removeEventListener === "function") {
190
+ el.removeEventListener(event, fn, false);
191
+ } else if (el.detachEvent) {
192
+ el.detachEvent("on" + event, fn);
193
+ }
194
+ };
195
+
196
+ /**
197
+ * Build the proper message box
198
+ *
199
+ * @param {Object} item Current object in the queue
200
+ * @return {String} An HTML string of the message box
201
+ */
202
+ build = function (item) {
203
+ var html = "",
204
+ type = item.type,
205
+ message = item.message;
206
+
207
+ html += "<div class=\"alertify-dialog\">";
208
+ html += "<article class=\"alertify-inner\">";
209
+ html += dialogs.message.replace("{{message}}", message);
210
+
211
+ if (type === "prompt") { html += dialogs.input; }
212
+
213
+ html += dialogs.buttons.holder;
214
+ html += "</article>";
215
+ html += "</div>";
216
+
217
+ switch (type) {
218
+ case "confirm":
219
+ case "prompt":
220
+ html = html.replace("{{buttons}}", dialogs.buttons.cancel + dialogs.buttons.ok);
221
+ html = html.replace("{{ok}}", labels.ok).replace("{{cancel}}", labels.cancel);
222
+ break;
223
+ case "alert":
224
+ html = html.replace("{{buttons}}", dialogs.buttons.ok);
225
+ html = html.replace("{{ok}}", labels.ok);
226
+ break;
227
+ default:
228
+ break;
229
+ }
230
+
231
+ element.className = "alertify alertify-show alertify-" + type;
232
+ cover.className = "alertify-cover";
233
+ return html;
234
+ };
235
+
236
+ /**
237
+ * Close the log messages
238
+ *
239
+ * @return {undefined}
240
+ */
241
+ close = function () {
242
+ setTimeout(function () {
243
+ var child = logElement.childNodes[logElement.childNodes.length - 1];
244
+ if (typeof child !== "undefined") logElement.removeChild(child);
245
+ }, delay);
246
+ };
247
+
248
+ /**
249
+ * Extend the log method to create custom methods
250
+ *
251
+ * @param {String} type Custom method name
252
+ * @return {Function}
253
+ */
254
+ extend = function (type) {
255
+ return function (message) { log(message, type); };
256
+ };
257
+
258
+ /**
259
+ * Add new log message
260
+ * If a type is passed, a class name "alertify-log-{type}" will get added.
261
+ * This allows for custom look and feel for various types of notifications.
262
+ *
263
+ * @param {String} message The message passed from the callee
264
+ * @param {String} type [Optional] Type of log message
265
+ *
266
+ * @return {undefined}
267
+ */
268
+ notify = function (message, type) {
269
+ var log = document.createElement("article");
270
+ log.className = "alertify-log" + ((typeof type === "string" && type !== "") ? " alertify-log-" + type : "");
271
+ log.innerHTML = message;
272
+ // prepend child
273
+ logElement.insertBefore(log, logElement.firstChild);
274
+ // triggers the CSS animation
275
+ setTimeout(function() { log.className = log.className + " alertify-log-show"; }, 50);
276
+ close();
277
+ };
278
+
279
+ /**
280
+ * Hide the dialog and rest to defaults
281
+ *
282
+ * @return {undefined}
283
+ */
284
+ hide = function () {
285
+ // remove reference from queue
286
+ queue.splice(0,1);
287
+ // if items remaining in the queue
288
+ if (queue.length > 0) setup();
289
+ else {
290
+ isopen = false;
291
+ element.className = "alertify alertify-hide alertify-hidden";
292
+ cover.className = "alertify-cover alertify-hidden";
293
+ }
294
+ };
295
+
296
+ /**
297
+ * Initiate all the required pieces for the dialog box
298
+ *
299
+ * @return {undefined}
300
+ */
301
+ setup = function () {
302
+ var item = queue[0];
303
+
304
+ isopen = true;
305
+ element.innerHTML = build(item);
306
+ addListeners(item.callback);
307
+ };
308
+
309
+ /**
310
+ * Create an alert dialog box
311
+ *
312
+ * @param {String} message The message passed from the callee
313
+ * @param {Function} fn [Optional] Callback function
314
+ *
315
+ * @return {Object}
316
+ */
317
+ alert = function (message, fn) {
318
+ queue.push({ type: "alert", message: message, callback: fn });
319
+ if (!isopen) setup();
320
+
321
+ return this;
322
+ };
323
+
324
+ /**
325
+ * Create a confirm dialog box
326
+ *
327
+ * @param {String} message The message passed from the callee
328
+ * @param {Function} fn [Optional] Callback function
329
+ *
330
+ * @return {Object}
331
+ */
332
+ confirm = function (message, fn) {
333
+ queue.push({ type: "confirm", message: message, callback: fn });
334
+ if (!isopen) setup();
335
+
336
+ return this;
337
+ };
338
+
339
+ /**
340
+ * Show a new log message box
341
+ *
342
+ * @param {String} message The message passed from the callee
343
+ * @param {String} type [Optional] Optional type of log message
344
+ *
345
+ * @return {Object}
346
+ */
347
+ log = function (message, type) {
348
+ notify(message, type);
349
+ return this;
350
+ };
351
+
352
+ /**
353
+ * Create a prompt dialog box
354
+ *
355
+ * @param {String} message The message passed from the function
356
+ * @param {Function} fn [Optional] Callback function
357
+ *
358
+ * @return {Object}
359
+ */
360
+ prompt = function (message, fn) {
361
+ queue.push({ type: "prompt", message: message, callback: fn });
362
+ if (!isopen) setup();
363
+
364
+ return this;
365
+ };
366
+
367
+ // Bootstrap
368
+ init();
369
+
370
+ return {
371
+ alert : alert,
372
+ confirm : confirm,
373
+ log : log,
374
+ prompt : prompt,
375
+ success : function (message) { log(message, "success"); },
376
+ error : function (message) { log(message, "error"); },
377
+ extend : extend,
378
+
379
+ labels : labels,
380
+ delay : delay
381
+ };
382
+ };
383
+
384
+ /*
385
+ * Trigger DOMContentLoaded function when DOM is ready
386
+ */
387
+ if (window.addEventListener) { // W3C standard
388
+ window.addEventListener('load', DOMContentLoaded, false);
389
+ } else if (window.attachEvent) { // Microsoft
390
+ window.attachEvent('onload', DOMContentLoaded);
391
+ };
392
+
393
+ })( window );
@@ -0,0 +1,155 @@
1
+ .alertify-show,
2
+ .alertify-log {
3
+ -webkit-transition: all 500ms cubic-bezier(0.175, 0.885, 0.320, 1); /* older webkit */
4
+ -webkit-transition: all 500ms cubic-bezier(0.175, 0.885, 0.320, 1.275);
5
+ -moz-transition: all 500ms cubic-bezier(0.175, 0.885, 0.320, 1.275);
6
+ -ms-transition: all 500ms cubic-bezier(0.175, 0.885, 0.320, 1.275);
7
+ -o-transition: all 500ms cubic-bezier(0.175, 0.885, 0.320, 1.275);
8
+ transition: all 500ms cubic-bezier(0.175, 0.885, 0.320, 1.275); /* easeOutBack */
9
+ }
10
+ .alertify-hide {
11
+ -webkit-transition: all 250ms cubic-bezier(0.600, 0, 0.735, 0.045); /* older webkit */
12
+ -webkit-transition: all 250ms cubic-bezier(0.600, -0.280, 0.735, 0.045);
13
+ -moz-transition: all 250ms cubic-bezier(0.600, -0.280, 0.735, 0.045);
14
+ -ms-transition: all 250ms cubic-bezier(0.600, -0.280, 0.735, 0.045);
15
+ -o-transition: all 250ms cubic-bezier(0.600, -0.280, 0.735, 0.045);
16
+ transition: all 250ms cubic-bezier(0.600, -0.280, 0.735, 0.045); /* easeInBack */
17
+ }
18
+ .alertify-cover {
19
+ position: fixed; z-index: 99999;
20
+ top: 0; right: 0; bottom: 0; left: 0;
21
+ }
22
+ .alertify {
23
+ position: fixed; z-index: 99999;
24
+ top: 50px; left: 50%;
25
+ width: 550px;
26
+ margin-left: -275px;
27
+ }
28
+ .alertify-hidden {
29
+ top: -50px;
30
+ visibility: hidden;
31
+ }
32
+ .alertify-logs {
33
+ position: fixed;
34
+ z-index: 5000;
35
+ bottom: 10px;
36
+ right: 10px;
37
+ width: 300px;
38
+ }
39
+ .alertify-log {
40
+ display: block;
41
+ margin-top: 10px;
42
+ position: relative;
43
+ right: -300px;
44
+ }
45
+ .alertify-log-show {
46
+ right: 0;
47
+ }
48
+ .alertify-dialog {
49
+ padding: 25px;
50
+ }
51
+ .alertify-inner {
52
+ text-align: center;
53
+ }
54
+ .alertify-text {
55
+ margin-bottom: 15px;
56
+ width: 100%;
57
+ -webkit-box-sizing: border-box;
58
+ -moz-box-sizing: border-box;
59
+ box-sizing: border-box;
60
+ font-size: 100%;
61
+ }
62
+ .alertify-buttons {
63
+ }
64
+ .alertify-button {
65
+ display: inline-block;
66
+ cursor: pointer;
67
+ margin-left: 5px;
68
+ }
69
+
70
+ @media only screen and (max-width: 680px) {
71
+ .alertify,
72
+ .alertify-logs {
73
+ width: 90%;
74
+ -webkit-box-sizing: border-box;
75
+ -moz-box-sizing: border-box;
76
+ box-sizing: border-box;
77
+ }
78
+ .alertify {
79
+ left: 5%;
80
+ margin: 0;
81
+ }
82
+ }
83
+
84
+ /**
85
+ * Default Look and Feel
86
+ */
87
+ .alertify,
88
+ .alertify-log {
89
+ font-family: sans-serif;
90
+ }
91
+ .alertify {
92
+ background: #FFF;
93
+ border: 10px solid #333; /* browsers that don't support rgba */
94
+ border: 10px solid rgba(0,0,0,.7);
95
+ border-radius: 8px;
96
+ box-shadow: 0 3px 3px rgba(0,0,0,.3);
97
+ -webkit-background-clip: padding; /* Safari 4? Chrome 6? */
98
+ -moz-background-clip: padding; /* Firefox 3.6 */
99
+ background-clip: padding-box; /* Firefox 4, Safari 5, Opera 10, IE 9 */
100
+ }
101
+ .alertify-text {
102
+ border: 1px solid #CCC;
103
+ padding: 10px;
104
+ border-radius: 4px;
105
+ }
106
+ .alertify-button {
107
+ border-radius: 4px;
108
+ color: #FFF;
109
+ font-weight: bold;
110
+ padding: 6px 15px;
111
+ text-decoration: none;
112
+ text-shadow: 1px 1px 0 rgba(0,0,0,.5);
113
+ box-shadow: inset 0 1px 0 0 rgba(255,255,255,.5);
114
+ background-image: -webkit-linear-gradient(top, rgba(255,255,255,.3), rgba(255,255,255,0));
115
+ background-image: -moz-linear-gradient(top, rgba(255,255,255,.3), rgba(255,255,255,0));
116
+ background-image: -ms-linear-gradient(top, rgba(255,255,255,.3), rgba(255,255,255,0));
117
+ background-image: -o-linear-gradient(top, rgba(255,255,255,.3), rgba(255,255,255,0));
118
+ background-image: linear-gradient(top, rgba(255,255,255,.3), rgba(255,255,255,0));
119
+ }
120
+ .alertify-button:hover,
121
+ .alertify-button:focus {
122
+ background-image: -webkit-linear-gradient(top, rgba(0,0,0,.1), rgba(0,0,0,0));
123
+ background-image: -moz-linear-gradient(top, rgba(0,0,0,.1), rgba(0,0,0,0));
124
+ background-image: -ms-linear-gradient(top, rgba(0,0,0,.1), rgba(0,0,0,0));
125
+ background-image: -o-linear-gradient(top, rgba(0,0,0,.1), rgba(0,0,0,0));
126
+ background-image: linear-gradient(top, rgba(0,0,0,.1), rgba(0,0,0,0));
127
+ }
128
+ .alertify-button:active {
129
+ position: relative;
130
+ top: 1px;
131
+ }
132
+ .alertify-button-cancel {
133
+ background-color: #FE1A00;
134
+ border: 1px solid #D83526;
135
+ }
136
+ .alertify-button-ok {
137
+ background-color: #5CB811;
138
+ border: 1px solid #3b7808;
139
+ }
140
+ .alertify-log {
141
+ background: #1F1F1F;
142
+ background: rgba(0,0,0,.9);
143
+ padding: 15px;
144
+ border-radius: 4px;
145
+ color: #FFF;
146
+ text-shadow: -1px -1px 0 rgba(0,0,0,.5);
147
+ }
148
+ .alertify-log-error {
149
+ background: #FE1A00;
150
+ background: rgba(254,26,0,.9);
151
+ }
152
+ .alertify-log-success {
153
+ background: #5CB811;
154
+ background: rgba(92,184,17,.9);
155
+ }
metadata ADDED
@@ -0,0 +1,56 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: alertify-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Rudolf Schmidt
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-11-29 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: Use Alertify.js with Rails 3
15
+ email:
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - .gitignore
21
+ - Gemfile
22
+ - LICENSE.txt
23
+ - README.md
24
+ - Rakefile
25
+ - alertify-rails.gemspec
26
+ - lib/alertify-rails.rb
27
+ - lib/alertify/engine.rb
28
+ - lib/alertify/railtie.rb
29
+ - lib/alertify/version.rb
30
+ - vendor/assets/javascripts/alertify.js
31
+ - vendor/assets/stylesheets/alertify.css
32
+ homepage: ''
33
+ licenses: []
34
+ post_install_message:
35
+ rdoc_options: []
36
+ require_paths:
37
+ - lib
38
+ required_ruby_version: !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ required_rubygems_version: !ruby/object:Gem::Requirement
45
+ none: false
46
+ requirements:
47
+ - - ! '>='
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ requirements: []
51
+ rubyforge_project:
52
+ rubygems_version: 1.8.24
53
+ signing_key:
54
+ specification_version: 3
55
+ summary: This gem provides the Alertify.js deiver for Rails 3 applications
56
+ test_files: []