corn_js 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.md ADDED
@@ -0,0 +1,9 @@
1
+ # Popcorn
2
+
3
+ Popcorm is a pop up library that will handle list and menu associated
4
+ with an HTML control
5
+
6
+ # npm
7
+ use
8
+ npm install popcorn
9
+ to get popcorn from npm repository
data/Rakefile ADDED
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env rake
2
+ begin
3
+ require 'bundler/setup'
4
+ rescue LoadError
5
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
+ end
7
+ begin
8
+ require 'rdoc/task'
9
+ rescue LoadError
10
+ require 'rdoc/rdoc'
11
+ require 'rake/rdoctask'
12
+ RDoc::Task = Rake::RDocTask
13
+ end
14
+
15
+ RDoc::Task.new(:rdoc) do |rdoc|
16
+ rdoc.rdoc_dir = 'rdoc'
17
+ rdoc.title = 'CornJs'
18
+ rdoc.options << '--line-numbers'
19
+ rdoc.rdoc_files.include('README.rdoc')
20
+ rdoc.rdoc_files.include('lib/**/*.rb')
21
+ end
22
+
23
+ APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
24
+ load 'rails/tasks/engine.rake'
25
+
26
+
27
+
28
+ Bundler::GemHelper.install_tasks
29
+
@@ -0,0 +1 @@
1
+ //= require corn_js/corn.js
@@ -0,0 +1,326 @@
1
+ var Popcorn = function($element, defaults) {
2
+ this.$element = $element;
3
+ this.defaults = defaults;
4
+ };
5
+
6
+ Popcorn.prototype.decorateContainerWithHtml = function() {
7
+ if (this.positionType) {
8
+ throw "inferPositionType must be called after decorateContainerWithHtml";
9
+ }
10
+ this.containerOf().hide().addClass('popcorn');
11
+ this.containerOf().contents().wrap("<div class='popcorn-body'/>");
12
+ this.containerOf().append("<div class='popcorn-tail'></div>");
13
+ };
14
+
15
+ Popcorn.prototype.inferPositionType = function() {
16
+ var self = this;
17
+
18
+ function _createPositionType(defaults) {
19
+ if (self.collideLeft()) { return new LeftPosition(self); }
20
+ else if (self.collideRight()) { return new RightPosition(self); }
21
+ return new CenterPosition(self);
22
+ }
23
+
24
+ self.positionType = _createPositionType(self.defaults);
25
+ };
26
+
27
+ Popcorn.prototype.decorateContainerWithArrow = function() {
28
+ if (this.positionType == undefined) { throw "inferPositionType must be called in order to set up the arrows"; }
29
+
30
+ this.containerOf().find('.popcorn-tail').css('left', this.positionType.leftOffset());
31
+ };
32
+
33
+ var LeftPosition = function(popcorn) {
34
+ // TODO centrare la freccia sull'elemento puntato da fatpopcorn
35
+ // this.leftOffset = function() {return popcorn.$element.offset().left + (popcorn.$element.width() - popcorn.defaults.arrowWidth) / 2; }
36
+ this.leftOffset = function() { return popcorn.defaults.marginArrow; }
37
+ this.left = function() { return popcorn.defaults.marginBorder; }
38
+ this.top = function() { return popcorn.$element.offset().top + popcorn.defaults.verticalOffsetFromElement };
39
+ };
40
+
41
+ var RightPosition = function(popcorn) {
42
+ this.leftOffset = function() { return popcorn.containerOf().width() - (popcorn.defaults.arrowWidth + popcorn.defaults.marginArrow); }
43
+ this.left = function() { return $('html').width() - popcorn.defaults.marginBorder - popcorn.containerOf().width(); }
44
+ this.top = function() { return popcorn.$element.offset().top + popcorn.defaults.verticalOffsetFromElement };
45
+ };
46
+
47
+ var CenterPosition = function(popcorn) {
48
+ this.leftOffset = function() { return popcorn.containerOf().width() / 2 - Math.floor(popcorn.defaults.arrowWidth / 2); }
49
+ this.left = function() {
50
+ var middleOfElement = Popcorn.calculateMiddle(popcorn.$element.offset().left, popcorn.$element.width());
51
+ return Popcorn.calculateLeftOffset(middleOfElement, popcorn.containerOf().width());
52
+ }
53
+ this.top = function() { return popcorn.$element.offset().top + popcorn.defaults.verticalOffsetFromElement };
54
+ };
55
+
56
+ Popcorn.containerOf = function($element) {
57
+ return $element.next();
58
+ }
59
+
60
+ Popcorn.prototype.containerOf = function() {
61
+ return Popcorn.containerOf(this.$element);
62
+ }
63
+
64
+ Popcorn.prototype.setContainerPosition = function() {
65
+ this.containerOf().css('top', this.positionType.top());
66
+ this.containerOf().css('left', this.positionType.left());
67
+ }
68
+
69
+ Popcorn.prototype.collideRight = function() {
70
+ var middleOfElement = Popcorn.calculateMiddle(this.$element.offset().left, this.$element.width());
71
+ var rightOffset = middleOfElement + this.containerOf().width() / 2;
72
+ return ($('html').width() - (rightOffset + this.defaults.marginBorder)) < 0;
73
+ }
74
+
75
+ Popcorn.prototype.collideLeft = function() {
76
+ return (Popcorn.calculateLeftOffset(this.middleOf(), this.containerOf().width()) - this.defaults.marginBorder) < 0;
77
+ }
78
+
79
+ Popcorn.prototype.middleOf = function() {
80
+ return Popcorn.calculateMiddle(this.$element.offset().left, this.$element.width());
81
+ }
82
+
83
+ Popcorn.calculateMiddle = function(left, width) {
84
+ return left + width / 2;
85
+ }
86
+
87
+ Popcorn.calculateRightOffset = function(middlePoint, width) {
88
+ return middlePoint + width / 2;
89
+ }
90
+ Popcorn.calculateLeftOffset = function(middlePoint, width) {
91
+ return middlePoint - width / 2;
92
+ }
93
+ Popcorn.containerOf = function(element) {
94
+ return $(element).next();
95
+ }
96
+ Popcorn.hideAllContainers = function($elements) {
97
+ $elements.each(function() {
98
+ Popcorn.containerOf(this).hide();
99
+ });
100
+ }
101
+ Popcorn.hideAllContainersExcept = function($elements, element) {
102
+ $elements.not(element).each(function() {
103
+ Popcorn.containerOf(this).hide()
104
+ });
105
+ };
106
+
107
+ var FatPopcorn = function($element, defaults) {
108
+ function _checkOptions(options) {
109
+ return typeof options.modelName === undefined ||
110
+ options.modelId === undefined ||
111
+ options.token === undefined ||
112
+ options.current_user === undefined;
113
+ };
114
+ var self = this;
115
+
116
+ self.$element = $element;
117
+ self.defaults = defaults;
118
+ self.attributes = defaults;
119
+ this.get = function(option) {
120
+ return self.defaults[option];
121
+ }
122
+
123
+ if (_checkOptions(self.defaults)){
124
+ throw("parameters [modelName], [modelId], [token], [current_user] are required");
125
+ }
126
+ };
127
+ FatPopcorn.prototype = new Popcorn();
128
+
129
+ // // all'inizializzazione dello stream fa una richiesta e mostra la rotella di caricamento
130
+ // // all'arrivo della risposta toglie la rotella di caricamento e mostra lo stream arrivato
131
+ // FatPopcorn.prototype.initStream = function() {
132
+ // this.requestStream(onArrivedStream);
133
+ // this.showSpinner();
134
+ // };
135
+ // FatPopcorn.prototype.onArrivedStream = function() {
136
+ // this.hideSpinner();
137
+ // this.showStream();
138
+ // };
139
+ // FatPopcorn.prototype.initEdit = function() {
140
+ //
141
+ // };
142
+ // FatPopcorn.prototype.initHistory = function() {
143
+ //
144
+ // };
145
+
146
+ FatPopcorn.prototype.initEdit = function() {
147
+ this.setupFormAction();
148
+ this.setupFormToken();
149
+
150
+ };
151
+ FatPopcorn.prototype.actionUrl = function() {
152
+ return '/active_metadata/' + this.get('modelName') + '/' + this.get('modelId') + '/' + this.currentLabel() + '/notes';
153
+ };
154
+ FatPopcorn.prototype.setupFormAction = function() {
155
+ $('.fatpopcorn #notes_form').attr('action', this.actionUrl());
156
+ };
157
+ FatPopcorn.prototype.setupFormToken = function() {
158
+ $('.fatpopcorn #notes_form input[name="authenticity_token"]').val(this.get('token'));
159
+ };
160
+ FatPopcorn.prototype.currentLabel = function() {
161
+ return this.$element.attr('data-label');
162
+ };
163
+ FatPopcorn.hideContainer = function() {
164
+ $(window).off('resize');
165
+ return FatPopcorn.container().hide();
166
+ }
167
+ FatPopcorn.container = function() {
168
+ return $('.fatpopcorn').first();
169
+ }
170
+ FatPopcorn.prototype.containerOf = function() {
171
+ return $('.fatpopcorn').first();
172
+ }
173
+
174
+ FatPopcorn.decorateContainerWithHtml = function() {
175
+ var self = this;
176
+ function _html() {
177
+ return '<div class="fatpopcorn"><div class="popcorn-body"><div class="header"><ul><li class="stream-tab active"><div>stream</div></li>' +
178
+ '<li class="edit-tab"><div>edit</div></li><li class="history-tab"><div>history</div></li></ul></div>' +
179
+ '<div class="stream"><div class="content"></div></div><div class="history"><div class="content"></div></div>' +
180
+ '<div class="edit"><div class="watchlist"><h1>Watchlist</h1><div class="on-off _23states"><input type="radio" ' +
181
+ 'name="on" value="on" id="on"><label for="on" class="true"><span class="true">On</span></label><input type="radio" name="off" value="off" id="off"><label for="off" class="false">' +
182
+ '<span class="false">Off</span></label></div></div><hr/><div class="note"><h1>Nota</h1><form form action="" method="post" id="notes_form"><div style="margin:0;padding:0;display:inline"><input type="hidden" value="✓" name="utf8"><input type="hidden" value="' + self['token'] + '" name="authenticity_token"></div>' +
183
+ '<textarea name="note" rows="4"></textarea><a id="send_note" href="#">Inserisci</a></form></div><hr/>' +
184
+ '<div class="attachment"><h1>Allegati</h1><a href="#">Inserisci</a></div><div class="info"><h1>Info</h1><p>Lorem ipsum...</p></div></div></div><div class="popcorn-tail"></div><span class="loader"></span></div>';
185
+ };
186
+
187
+ if (FatPopcorn.container().size() == 0) {
188
+ $('body').append(_html());
189
+ }
190
+ FatPopcorn.container().hide();
191
+ }
192
+ FatPopcorn.prototype.addGripToElement = function($element) {
193
+ return $element.wrap('<span class="fatpopcorn_grip"/>');
194
+ };
195
+ FatPopcorn.prototype.gripOf = function($element) {
196
+ return $element.parent();
197
+ };
198
+
199
+ FatPopcorn.activateTheClickedTab = function() {
200
+ function _tabBodyName(tabName) { return '.' + tabName.split('-')[0].trim(); }
201
+ $('.fatpopcorn .header > ul > li').click(function(e){
202
+ e.stopPropagation();
203
+ e.preventDefault();
204
+ $('.fatpopcorn .active').removeClass('active');
205
+ $('.fatpopcorn .popcorn-body > div:not(.header)').hide();
206
+ $(_tabBodyName($(this).attr('class'))).show();
207
+ $(this).addClass('active');
208
+ });
209
+ };
210
+
211
+ FatPopcorn.containerVisible = function () {
212
+ return FatPopcorn.container().is(':visible');
213
+ };
214
+
215
+ FatPopcorn.bindRemoteEvents = function() {
216
+ $('.fatpopcorn').on('click', function(e) {
217
+ e.stopPropagation();
218
+ e.preventDefault();
219
+ });
220
+ $('#send_note').on('click',function() {
221
+ $.post($('form#notes_form').attr('action'), $('form#notes_form').serialize())
222
+ .success(FatPopcorn.newNoteSuccess);
223
+ });
224
+ $('.loader').ajaxSend(function(e) {
225
+ $(this).show();
226
+ });
227
+ $('.loader').ajaxComplete(function() {
228
+ $(this).hide();
229
+ });
230
+ };
231
+
232
+ FatPopcorn.prototype.newNoteSuccess = function() { $('.stream-tab').click(); };
233
+
234
+ (function($) {
235
+ $.fn.fatpopcorn = function(options) {
236
+
237
+ // plugin default options
238
+ var self = this, defaults = {
239
+ marginBorder: 4,
240
+ arrowWidth: 24,
241
+ marginArrow: 11,
242
+ verticalOffsetFromElement: 26
243
+ };
244
+
245
+ // extends defaults with options provided
246
+ if (options) {
247
+ $.extend(defaults, options);
248
+ }
249
+
250
+ $(window).click(function() { FatPopcorn.hideContainer(); });
251
+
252
+ FatPopcorn.decorateContainerWithHtml();
253
+ FatPopcorn.activateTheClickedTab();
254
+ FatPopcorn.bindRemoteEvents();
255
+
256
+ function _setUpElement() {
257
+ var $element = $(this), fatpopcorn = new FatPopcorn($element, defaults);
258
+ fatpopcorn.addGripToElement($element);
259
+
260
+ fatpopcorn.gripOf($element).click(function(e) {
261
+ e.stopPropagation();
262
+ e.preventDefault();
263
+ fatpopcorn.initEdit();
264
+
265
+ if (FatPopcorn.containerVisible()) {
266
+ FatPopcorn.hideContainer();
267
+ return;
268
+ }
269
+
270
+ fatpopcorn.inferPositionType();
271
+ fatpopcorn.setContainerPosition();
272
+ fatpopcorn.decorateContainerWithArrow();
273
+ fatpopcorn.containerOf().show();
274
+
275
+
276
+ $(window).on('resize',function() {
277
+ if (FatPopcorn.containerVisible()) fatpopcorn.setContainerPosition();
278
+ });
279
+ });
280
+
281
+ return this;
282
+ }
283
+ return self.each(_setUpElement);
284
+ }
285
+
286
+ $.fn.popcorn = function(options) {
287
+
288
+ // plugin default options
289
+ var elements = this, defaults = {
290
+ marginBorder: 4,
291
+ arrowWidth: 19,
292
+ marginArrow: 10,
293
+ verticalOffsetFromElement: 20
294
+ };
295
+
296
+ // extends defaults with options provided
297
+ if (options) {
298
+ $.extend(delfaults, options);
299
+ }
300
+
301
+ $(window).click(function() { Popcorn.hideAllContainers(elements); });
302
+
303
+ function _setUpElement(){
304
+ var $element = $(this), popcorn = new Popcorn($element, defaults);
305
+
306
+ popcorn.decorateContainerWithHtml();
307
+ popcorn.inferPositionType();
308
+ popcorn.decorateContainerWithArrow();
309
+ popcorn.setContainerPosition();
310
+
311
+ $element.click(function(e) {
312
+ e.stopPropagation();
313
+ e.preventDefault();
314
+ Popcorn.hideAllContainersExcept(elements, this);
315
+ Popcorn.containerOf($element).show();
316
+ });
317
+
318
+ $(window).resize(function() {
319
+ popcorn.setContainerPosition();
320
+ });
321
+ }
322
+
323
+ return this.each(_setUpElement);
324
+
325
+ };
326
+ })(jQuery);
@@ -0,0 +1,76 @@
1
+ /*
2
+ * Widget for 2 3 states display
3
+ */
4
+ ._23states input[type="radio"]{
5
+ -webkit-appearance:none;
6
+ display:none;
7
+ }
8
+
9
+ ._23states input[type="radio"]+label{
10
+ background-color:#dae2e8;
11
+ float: left;
12
+ display: block;
13
+ padding:0;
14
+ width : 25px;
15
+ height: 23px;
16
+ text-align: center;
17
+ font-weight: bold;
18
+ border: 1px solid #c3ccd1;
19
+ }
20
+
21
+ ._23states input[type="radio"]+label span{
22
+ display: block;
23
+ line-height:22px;
24
+ }
25
+ ._23states input[type="radio"] {
26
+ color: #666;
27
+ cursor: pointer;
28
+ text-transform: capitalize;
29
+ text-decoration: none;
30
+ }
31
+ ._23states input[type="radio"]+label.true {
32
+ border-right: none;
33
+ -moz-border-radius: 3px 0 0 3px;
34
+ -webkit-border-radius: 3px 0 0 3px;
35
+ border-radius: 3px 0 0 3px;
36
+ }
37
+ ._23states input[type="radio"]+label.false {
38
+ border-left: none;
39
+ -moz-border-radius: 0 3px 3px 0;
40
+ -webkit-border-radius: 0 3px 3px 0;
41
+ border-radius: 0 3px 3px 0;
42
+ }
43
+ ._23states input[type="radio"]+label.nil {
44
+ border-left: none;
45
+ border-right: none;
46
+ }
47
+ ._23states input[type="radio"]:checked+label.true {
48
+ color: #333;
49
+ border: 1px solid #9eba61;
50
+ -moz-border-radius: 3px 0 0 3px;
51
+ -webkit-border-radius: 3px 0 0 3px;
52
+ border-radius: 3px 0 0 3px;
53
+ background-image: linear-gradient(-90deg, rgb(162, 204, 89), rgb(201, 225, 132));
54
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, from(rgb(162, 204, 89)), to(rgb(201, 225, 132)));
55
+ background-image: -moz-linear-gradient(-90deg, rgb(162, 204, 89), rgb(201, 225, 132));
56
+ text-shadow: 0 1px 0 white;
57
+ }
58
+ ._23states input[type="radio"]:checked+label.false{
59
+ color: #333;
60
+ border: 1px solid #ce6632;
61
+ -moz-border-radius: 0 3px 3px 0;
62
+ -webkit-border-radius: 0 3px 3px 0;
63
+ border-radius: 0 3px 3px 0;
64
+ background-image: linear-gradient(-90deg, #d67747, #da855a);
65
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, from(#d67747), to(#da855a));
66
+ background-image: -moz-linear-gradient(-90deg, #d67747, #da855a);
67
+ text-shadow: 0 1px 0 white;
68
+ }
69
+ ._23states input[type="radio"]:checked+label.nil {
70
+ color: #333;
71
+ border: 1px solid #c3ccd1;
72
+ background-image: linear-gradient(-90deg, #e8e8e8, white);
73
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, from(#e8e8e8), to(white));
74
+ background-image: -moz-linear-gradient(-90deg, #e8e8e8, white);
75
+ text-shadow: 0 1px 0 white;
76
+ }
@@ -0,0 +1,276 @@
1
+ a {
2
+ color: #0066ff;
3
+ text-decoration: none;
4
+ font-style: italic;
5
+ }
6
+ a:hover {
7
+ color: #f56a00;
8
+ }
9
+ .popcorn, .fatpopcorn {
10
+ background: none repeat scroll 0 0 #FFFFFF;
11
+ border: medium none;
12
+ border-radius: 4px 4px 4px 4px;
13
+ box-shadow: 0 0 8px rgba(0, 0, 0, 0.35), 0 0 1px rgba(0, 0, 0, 0.5);
14
+ color: #444444;
15
+ font-size: 11px;
16
+ width: 160px;
17
+ min-height:20px;
18
+ overflow: visible;
19
+ position: fixed;
20
+ z-index: 9000;
21
+ margin-top: 4px;
22
+ }
23
+ .popcorn .popcorn-body {
24
+ padding: 5px;
25
+ }
26
+ .popcorn .popcorn-tail {
27
+ background: url("data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAKCAYAAABWiWWfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJlJREFUeNpi/P//PwM+wMjIqAKkQPgOUO0dfGqZCBikm5iYGPTmzZsZQUFBPkC+Nl6bQS7DhoEAZFDZjx8/PgL5/79+/foWaGABUFwbpx5iDIIBkIG+vr55uAzEalBMTEwJukHEGEiSQYQMJNkgLAZqoRgGBDqkGAQDX758eY1sINygb9++vf9PBkA2kAFoEBO5BqEZyAQQYAAiweCss5BeRQAAAABJRU5ErkJggg==") no-repeat scroll 0 100% transparent;
28
+ position: absolute;
29
+ width: 19px;
30
+ height: 10px;
31
+ top: -10px;
32
+ }
33
+
34
+ /* ----------------*/
35
+ /* -- fatpopcorn --*/
36
+ /* ----------------*/
37
+ /* grip */
38
+ .fatpopcorn_grip {
39
+ padding-right: 20px;
40
+ position: relative;
41
+ z-index: 100px;
42
+ }
43
+ .fatpopcorn_grip:hover {
44
+ background: transparent url("data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAcpJREFUeNqUU02rgVEQft73ykJJkixkI99+gYWFJCt+gGQnNvyGu7KwJMrCRpbWJFlIWStfiY0sKF/ZSp1rprhX93V1nzrNnM48z5yZM0cSQkAJ5/NZTKdT9j0eD3Q6naQUp3pFzmazOJ1OvNfr9SgUCkJJRFYSqNVqTPb5fLzIr9frijf9JbBarUSn04Esy0gkEojH4+y3221sNhuhWEKv1+N6F4sFlsslH4TDYZjNZvYDgQC63S5SqRRsNptwOp3cF7/fL30YDAZB1yPi8XhkgsPhQDqdhkaj4b3dbsdoNOJSKIYSDQYD7Pf7TykSiQiVSoVkMsmBtwz4C5RoPp+jWq3ier1CDoVC7IzHY1itVrwDxVC5xCGuHIvFoNVq0e/3UalU3gpQDMUSh7jyrQdSLpfjw1arhUaj8ZI8HA7pJWA0GkEc4oImkVaz2RTUj3K5LP6B7znY7XZsSf0/eAhst1u2JpOJ7eFw4HppkU+g2qPRKPL5PG2lp7+gVqvZXi4XlEolHhzqNIGmMBgMwuVyPcWyyv033sZXFIvFp+vdJu2R+ScymQw9ofQkcBeZTCZwu908qhaLhYPW6zWP+mw2g9frfZAJXwIMABU5CfhlmG8GAAAAAElFTkSuQmCC") no-repeat scroll right;
45
+ }
46
+
47
+ /* generic classes */
48
+ .fatpopcorn {
49
+ width: 360px;
50
+ min-height: 345px;
51
+ border: 1px solid #566476;
52
+ border-radius: 6px 6px 6px 6px;
53
+ position: absolute;
54
+ }
55
+ .fatpopcorn h1 {
56
+ margin: 12px 0 4px 0;
57
+ padding-left: 15px;
58
+ font-size: 12px;
59
+ color: #303030;
60
+ }
61
+ .fatpopcorn .attachment h1 {
62
+ background: transparent url("data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABh0RVh0Q3JlYXRpb24gVGltZQAxMS0wMS0yMDEytcl2IgAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAADESURBVCiRfdAhcgJBEAXQtywCVHIEZGQcOLhByA1WEscRkMjIyI1DIpEcYeMikUjiggJBDzW1lc2vmprpqf/7/+5CN5aY4QE/OGDV6yDXuGCPIu66S1CjwWt0nWEUZ1q2yO844glbbOJ/gm8Mcocq8o6yCMnxhBU+i4w8beXN483dltCUGfkLA6yDvIx6jkUIpRnOGOMtcxxjGHPsUu4+HvESW/kv3h2HECU8B6lqE/NIDX7jvY764y9B6rgN+73bkJ24AvtdK0qIEWRDAAAAAElFTkSuQmCC") no-repeat scroll 0 2px;
63
+ }
64
+ .fatpopcorn .note h1 {
65
+ background: transparent url("data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABh0RVh0Q3JlYXRpb24gVGltZQAxMS0wMS0yMDEytcl2IgAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAABtSURBVCiR5dGxDQJBDAXRAdEHlIA0LoDSKIVOOPIt4krYDj7RngQcOnImcvAsWfIuCVUV4MFnJ6ADl9ZaByAJalYw6lXt6qyek7Bfg2914AhMAIcNfBsQuG+eNBrm15Ne+suF5Q/q9A1V1TI/ATA3KJXtB0VMAAAAAElFTkSuQmCC") no-repeat scroll 0 2px;
66
+ }
67
+ .fatpopcorn .save h1 {
68
+ background: transparent url("data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAATRJREFUeNp8krFKxEAQhjfZJOZAOFNYqo11wCAW9gc+gZU+h9WJtQ8giC9i50PYXSXYWIgoKAm5bOL3r3vxbBz4M39m5p/Z2SSqqurJGLMHHPg0P2aHYdiMokj8Az6Ff+EvorIsB4KPYAp2g8BQcE3BDHoAv4Ofg9wWRXFF8LLv+/eu647wxjn3pmIwIXZC/pD4FvHjhIAKNgimFIwDiJk4jj3EsVflE71AdNjC/Jr4LblZKJbl2slPQLBtrZ0TvAnJGOyDe/Cizjq/EslyuZSfgEWWZYtwM7IHPbRT0zQS2FFAkdNo8bZtzUqkzjTxIuAXXO3glFSnMHG0NE1Nnue+6bgDaqdCfwtJ8keg7nVdS+h0Y0koPCOXrZ3frH1A72l8Kh6h0q+xw0ts/jGa9rjnbwEGAIjSw/IrQ5npAAAAAElFTkSuQmCC") no-repeat scroll 0 2px;
69
+ }
70
+ .fatpopcorn p {
71
+ color: #525252;
72
+ text-decoration: none;
73
+ font-style: italic;
74
+ font-size: 10px;
75
+ margin: 0 0 4px 0;
76
+ }
77
+
78
+ /* tail classes */
79
+ .fatpopcorn .popcorn-tail {
80
+ background: url("data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAALCAYAAABlNU3NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXNJREFUeNpi/P//PwNNASkWGHvESAKxOSnmM4IsYGRkJKjQNTI7+eu377O0NVQ/P3ryrPDN2/eLzu5Y8peQPiZiXBGWWdWhrqLUPbW7kSkhMpifi5NzioKcdB/FPgAGB4+oiNAcORmpoMykaFZRYSGw+M9fvxh6Js/5/eTZ8yXPXrzKBPrkJ8kWAA3nkpeV3gMMEsv0hEgM+U+fvzAsWrme4c7dB0fuP3oSBLTkNdEWAA3XkpGSXGVuoq8dHujNwM7GhjMIVm/YxrD74NE7L1+9sQZa8oqgBUDDDRXlZbcG+bhL2lmZEgzjv3//MWzZuY/hyInTj2/dfeAPtOQ8Tgs8Y/Mj2FhZZ8dHBvGYGemTlNxPnLnAsHrjtg/AoMvcvnjiChQLTDxj2QT4+TKBKaU+OtRPEBj2ZOWpuw8eMfRPm/f9+48fOTuXTp4Ht8A7rnCRsJBgZF56HIukuBhFGffJsxcMS1Zt+P30+cuZwPxSBhBgAAqSqvJHz8DzAAAAAElFTkSuQmCC") no-repeat scroll 0 100% transparent;
81
+ position: absolute;
82
+ left: 0;
83
+ width: 24px;
84
+ height: 11px;
85
+ top: -11px;
86
+ }
87
+ /* header classes */
88
+ .fatpopcorn .header {
89
+ width: 100%;
90
+ height: 34px;
91
+ background-color: #E4EDF5;
92
+ border-bottom: 1px #566476 solid;
93
+ border-radius: 6px 6px 0px 0px;
94
+ }
95
+ .fatpopcorn .header ul {
96
+ list-style: none;
97
+ padding:0;
98
+ margin:0;
99
+ text-align: center;
100
+ }
101
+ .fatpopcorn .header ul li {
102
+ display: inline;
103
+ }
104
+ .fatpopcorn .header li {
105
+ width: 119px;
106
+ height: 34px;
107
+ float: left;
108
+ border-left: 1px solid #dbe2e7;
109
+ }
110
+ .fatpopcorn .header li.active {
111
+ -moz-box-shadow: inset 0 0 20px #717f8f;
112
+ -webkit-box-shadow: inset 0 0 20px #717f8f;
113
+ box-shadow: inset 0 0 20px #717f8f;
114
+ background-color: #b3c4d9;
115
+ border-left: none;
116
+ background-position: left bottom;
117
+ cursor: pointer;
118
+ width: 120px;
119
+ }
120
+ .fatpopcorn .header li:hover {
121
+ background-position: left bottom;
122
+ cursor: pointer;
123
+ }
124
+ .fatpopcorn .header li > div {
125
+ width: 16px;
126
+ height: 16px;
127
+ color: transparent;
128
+ margin: 8px auto;
129
+ }
130
+ .fatpopcorn .header li.active > div {
131
+ background-position: left bottom;
132
+ cursor: pointer;
133
+ }
134
+ .fatpopcorn .stream-tab > div {
135
+ background: url("data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAgCAYAAAAbifjMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALhJREFUeNpiLOuc85+BAsACpQuB+AKJeg2AuB9mwIWu8pQDpOgGuhxMMzFQCFjQTH0ApOQJ6PkAdK0gVgOAEgqkuoDqXigAUgKENAFd2oDVACD4D8XkuQBo8sQBDwNiovEj0KUCgy8aDWBpm8TMBDegn1wXMP4HgsFRHjAyMpJUHsAcTnEsMKGZ+uA/YfAeZ0oEemOAywOg84gqD4AupVF5ADSZ/uUBOdH4YXBGowEZmdKAKtkZIMAA98+JJhv1OP0AAAAASUVORK5CYII=") no-repeat scroll transparent;
136
+ }
137
+ .fatpopcorn .edit-tab > div {
138
+ background: url("data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAgCAYAAAAbifjMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUJJREFUeNqUk8FtwzAMRalMkBHcDbJBRqgzQWWgA/iUXNVje3LuBewRMkI6gbNBPUIzgUKh34AqSCpJ4DuWqP9MMZI5vn9uiWhiPbO+WPbj9LqQMDasC8whvoOZoTsNYI/3ic0dm0M1M/9aKeCWmF+QGyWQADhkzCSFmPDAnufKuo4/MpUqIE6GbXQVQLESEw+waNRUYtIVWojJrdBANrkskrme3FlvLPeniULIHefFocq2CshABh73eA+QvtiDQk9cZL7h3DwZUgTK7qP7c1YBIlADUEve+y3r4n/jympYJBXBtMaIxE4DSM0TxlYKmDNmL4VQtOfULIJQtOda2P8AhEVqSDqhhuTKUkFKzRFDan9RDvLDcqxFAkghwTxgPgBaCSCGuGTuKgWshgWy0blpSHPzUHZ8+QYtYFWDfiwPAQYAQE+qb2tD6HUAAAAASUVORK5CYII=") no-repeat scroll transparent;
139
+ }
140
+ .fatpopcorn .history-tab > div {
141
+ background: url("data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAgCAYAAAAbifjMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ1JREFUeNpiLOuc85+BAsACpQuB+AKJeg2AuB9mwIWu8pQDpOgGuhxMM2GR+A/EDljEHbB5l4mBQjDwBrDgEE/AEg4KpBgQT6kLHNGjFeqi/cMwFig2gBGaPCnOTP1ku+A/EAyO8oCRkZGk8gDmcCYsEiDggEXcAZt3h3N5gCUcaFMe4PKCIyMaAIkN0+xMeXkATZ5kZyaKszNAgAEA3vlG66fKjJQAAAAASUVORK5CYII=") no-repeat scroll transparent;
142
+ }
143
+
144
+ /* stream classes */
145
+ .fatpopcorn .stream {
146
+ padding: 10px 0px 10px 10px;
147
+ }
148
+ .fatpopcorn .stream .content {
149
+ max-height: 400px;
150
+ overflow: auto;
151
+ padding: 0 10px 0 0;
152
+ }
153
+ .fatpopcorn .stream .content > * {
154
+ clear: both;
155
+ }
156
+ .fatpopcorn .stream .line {
157
+ display: table-cell;
158
+ width: 100%;
159
+ border-bottom: 1px solid #566476;
160
+ }
161
+ .fatpopcorn .stream .time {
162
+ font-size: 13px;
163
+ display: table-cell;
164
+ font-style: italic;
165
+ color: #303030;
166
+ padding-left: 3px;
167
+ vertical-align: bottom;
168
+ white-space: nowrap;
169
+ }
170
+
171
+ /* history classes*/
172
+ .fatpopcorn .history {
173
+ padding-bottom: 10px;
174
+ display: none;
175
+ }
176
+ .fatpopcorn .history .content {
177
+ max-height: 400px;
178
+ overflow: auto;
179
+ border-radius: 0 0 6px 6px;
180
+ }
181
+ .fatpopcorn .history div:nth-child(even) {
182
+ background-color: #fff
183
+ }
184
+ .fatpopcorn .history div:nth-child(odd) {
185
+ background-color: #f3f3f3
186
+ }
187
+ .fatpopcorn .history .content > div {
188
+ padding: 10px 10px 10px 10px;
189
+ }
190
+ .fatpopcorn .history .content > div > h1 {
191
+ margin: 0;
192
+ }
193
+
194
+ /* edit classes*/
195
+ .fatpopcorn .edit {
196
+ display: none;
197
+ }
198
+ .fatpopcorn .edit h1 {
199
+ font-size: 13px;
200
+ font-style: italic;
201
+ color: #303030;
202
+ white-space: nowrap;
203
+ margin 0;
204
+ font-weight: normal;
205
+ }
206
+ .fatpopcorn .edit .watchlist {
207
+ margin: 10px 10px 16px 10px;
208
+ }
209
+
210
+ .fatpopcorn .edit .note {
211
+ margin: 10px 10px 26px 10px;
212
+ }
213
+ .fatpopcorn .edit .attachment {
214
+ margin: 10px 10px 26px 10px;
215
+ }
216
+ .fatpopcorn .edit .watchlist h1 {
217
+ display: inline;
218
+ }
219
+ .fatpopcorn .edit .watchlist .on-off {
220
+ display: inline;
221
+ float: right;
222
+ }
223
+ .fatpopcorn .edit .info {
224
+ background-color: #f3f3f3;
225
+ display: table;
226
+ border-radius: 0px 0px 6px 6px;
227
+ padding: 10px;
228
+ height: 63px;
229
+ width: 340px;
230
+ }
231
+ .fatpopcorn .edit .info h1 {
232
+ background: url("data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAmCAYAAACoPemuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAoxJREFUeNrMmL1SAjEQx7kbS3kAjwe40oaSRis7Km2gwkYqreyw4QW0OhupoNHqrKywofNegAcAHwB63OD/nFzcJBc+jtuZTGbysflls0k28VarVaWM4gkwz/OcOk0mk3PK6pRC5JwklKYibzQaYxf9a6a8YARTpayNdOxogCWloUgEudgZGEF1NwRiAQku2gqMgALKHrFkuxSxxHcEOHcGIygBM7BYKUESA8xQVqMUwPfqFut1CG6aG8wClfpLLM+Y+qwhqCxRLN40uAELx4JB2ZtG0YhSJDswJvFE6QRF35Ru5cGwcYSftjRwl/IkdWCvjE+Jzj1122PAD2YSov2FugNxzPSZ9lNqeyWD+czuCzXm5s6ipsayouxcLYSODnTKEmLsP/GZc0qVHuegkKrBuQOuELp6TFUbDFkwjYOOLKf2l6FO2w86R4yV2zowdQmNByF2YMxUxQYrpxIxS5oFg1Oq1sp1fVCbByxNjGPkGmW2fgu0z1gNLJUjFHAHYWy5puQ+Yqu/y3XyeWYQMcaNUib0jlMwdScmuutCkhdL/WkOq81pElNl/FD2sTpz1VRy+Ei8g3vzk7FY9hxTlsY222d5+bYQdiwd2KzAYHXmAnZw0YHVCmSouYAFBYIFJrCE2xkFyRl3IvhSqJsBQ1y2V8EYIRN2ay2WhjT7lqYmXP8Fw22/NIUhe7AWF2Yt02hGdv4hE4Z092itLhc4cLtyyFitld72G1rE9JJvaR45WTBNGCKkjweHqlxc4vemSx5tuBdYn2mfCbN85f6LmB0qzD1gLFe3PIT//WtAx0DzGImMnyquzzeHZd3u+ebw4LVGuDt98Jb6i6DUnyql/oYq/cfdwb46yyg/AgwAFCWENHW/4L0AAAAASUVORK5CYII=") no-repeat;
233
+ color: transparent;
234
+ display: table-cell;
235
+ width: 38px;
236
+ height: 38px;
237
+ }
238
+ .fatpopcorn .edit .info p {
239
+ color: #626262;
240
+ display: table-cell;
241
+ padding-left: 10px;
242
+ /* overflow: hidden; TODO Controllare cosa succede quando il testo va in overflow
243
+ text-overflow: ellipsis;*/
244
+ }
245
+ .fatpopcorn .edit textarea {
246
+ width: 98%;
247
+ margin-left: 2px;
248
+ resize: none;
249
+ border-width: 1px;
250
+ border-color: #7e9ab4;
251
+ border-style: solid;
252
+ }
253
+ .fatpopcorn .edit hr {
254
+ border-width: 0;
255
+ color: #566476;
256
+ height: 1px;
257
+ width: 340px;
258
+ background-color: #566476;
259
+ margin: 0 10px 0 10px;
260
+ clear: both;
261
+ }
262
+ .fatpopcorn .edit a {
263
+ font-size: 12px;
264
+ text-align: right;
265
+ float: right;
266
+ }
267
+ .fatpopcorn .loader {
268
+ display: none;
269
+ background: white url("data:image/gif;charset=utf-8;base64,R0lGODlhEAALAPQAAP///3F/j+rs7uTn6fL09XSCkXF/j4qWo7nAx6avuNjc4IOQnZqkr73Ey6ixutre4oaSn3OBkJymsfDy8+jr7fj5+ZCbp+vt7/f4+Nba3snP1OHk5/X29wAAAAAAAAAAACH+GkNyZWF0ZWQgd2l0aCBhamF4bG9hZC5pbmZvACH5BAALAAAAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAEAALAAAFLSAgjmRpnqSgCuLKAq5AEIM4zDVw03ve27ifDgfkEYe04kDIDC5zrtYKRa2WQgAh+QQACwABACwAAAAAEAALAAAFJGBhGAVgnqhpHIeRvsDawqns0qeN5+y967tYLyicBYE7EYkYAgAh+QQACwACACwAAAAAEAALAAAFNiAgjothLOOIJAkiGgxjpGKiKMkbz7SN6zIawJcDwIK9W/HISxGBzdHTuBNOmcJVCyoUlk7CEAAh+QQACwADACwAAAAAEAALAAAFNSAgjqQIRRFUAo3jNGIkSdHqPI8Tz3V55zuaDacDyIQ+YrBH+hWPzJFzOQQaeavWi7oqnVIhACH5BAALAAQALAAAAAAQAAsAAAUyICCOZGme1rJY5kRRk7hI0mJSVUXJtF3iOl7tltsBZsNfUegjAY3I5sgFY55KqdX1GgIAIfkEAAsABQAsAAAAABAACwAABTcgII5kaZ4kcV2EqLJipmnZhWGXaOOitm2aXQ4g7P2Ct2ER4AMul00kj5g0Al8tADY2y6C+4FIIACH5BAALAAYALAAAAAAQAAsAAAUvICCOZGme5ERRk6iy7qpyHCVStA3gNa/7txxwlwv2isSacYUc+l4tADQGQ1mvpBAAIfkEAAsABwAsAAAAABAACwAABS8gII5kaZ7kRFGTqLLuqnIcJVK0DeA1r/u3HHCXC/aKxJpxhRz6Xi0ANAZDWa+kEAA7AAAAAAAAAAAA") no-repeat 50% 50%;
270
+ opacity: 0.7;
271
+ position: absolute;
272
+ top: 0;
273
+ width: 100%;
274
+ height: 100%;
275
+ z-index: 10000;
276
+ }
data/config/routes.rb ADDED
@@ -0,0 +1,2 @@
1
+ Rails.application.routes.draw do
2
+ end
@@ -0,0 +1,4 @@
1
+ module CornJs
2
+ class Engine < ::Rails::Engine
3
+ end
4
+ end
@@ -0,0 +1,3 @@
1
+ module CornJs
2
+ VERSION = "0.0.1"
3
+ end
data/lib/corn_js.rb ADDED
@@ -0,0 +1,4 @@
1
+ require "corn_js/engine"
2
+
3
+ module CornJs
4
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :corn_js do
3
+ # # Task goes here
4
+ # end
metadata ADDED
@@ -0,0 +1,85 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: corn_js
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Gian Carlo Pace
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-02-07 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rails
16
+ requirement: &2165801040 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 3.2.1
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *2165801040
25
+ - !ruby/object:Gem::Dependency
26
+ name: jquery-rails
27
+ requirement: &2165800420 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *2165800420
36
+ description: It's possible to use the generic popcorn and the app specific fat popcorn
37
+ plugin
38
+ email:
39
+ - giancarlo.pace@gmail.com
40
+ executables: []
41
+ extensions: []
42
+ extra_rdoc_files: []
43
+ files:
44
+ - app/assets/javascripts/corn.js
45
+ - app/assets/javascripts/corn_js/corn.js
46
+ - app/assets/stylesheets/corn_js/23states.css
47
+ - app/assets/stylesheets/corn_js/corn.css
48
+ - config/routes.rb
49
+ - lib/corn_js/engine.rb
50
+ - lib/corn_js/version.rb
51
+ - lib/corn_js.rb
52
+ - lib/tasks/corn_js_tasks.rake
53
+ - Rakefile
54
+ - README.md
55
+ homepage: http://www.fractalgarden.com
56
+ licenses: []
57
+ post_install_message:
58
+ rdoc_options: []
59
+ require_paths:
60
+ - lib
61
+ required_ruby_version: !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ segments:
68
+ - 0
69
+ hash: 2277742273154172901
70
+ required_rubygems_version: !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ segments:
77
+ - 0
78
+ hash: 2277742273154172901
79
+ requirements: []
80
+ rubyforge_project:
81
+ rubygems_version: 1.8.10
82
+ signing_key:
83
+ specification_version: 3
84
+ summary: A javascript popup menu plugin
85
+ test_files: []