better_frame 0.0.3 → 0.0.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 375d15229a8bb12e02f262aecb7d06d8e7093a89
4
- data.tar.gz: b66ef4938ea18b027a99dd86f20b051099d2cd77
3
+ metadata.gz: 1f2ef378e5c3a2d3b44c9e868b090cc2dcc6d12f
4
+ data.tar.gz: 3b8fa3a5e6549202e1cefe9bbdf23037c5d7ed0c
5
5
  SHA512:
6
- metadata.gz: 242a4ea7282aefbfc598daea03e2fbdeb46f18010415a83908e262d7a4967b0e61c500b461cab65a5f576ff7a2f27ecd120fb2b809a28822ea5c35e0b17caaae
7
- data.tar.gz: 01f98d016b740c36d61e214f9182d67d319b81f01981ea2938cc00ed12509b46960c790df6c44bdb4c9991d2e439644adff827aaeb276c3c7eb8277e30d15ebf
6
+ metadata.gz: 742821877565d8dce3fbd47af65cb00375ed82bc8a3a49a1f6cd47db8122b3b35cd5cffa9c72c5f2714deb2fba6aa0c8534bf2420fea86dc92983392cfd3173a
7
+ data.tar.gz: 6382051065b8dcbc7ee9039a29ba0a3820e290457a1222845ddb0e68b777a7f328a110651f69da6ae6f6e4b8e7a323cd25a0e4f51ad32523ed60b96ac85aa15e
@@ -0,0 +1,550 @@
1
+ (function($, undefined) {
2
+
3
+ /**
4
+ * Unobtrusive scripting adapter for jQuery
5
+ * https://github.com/rails/jquery-ujs
6
+ *
7
+ * Requires jQuery 1.8.0 or later.
8
+ *
9
+ * Released under the MIT license
10
+ *
11
+ */
12
+
13
+ // Cut down on the number of issues from people inadvertently including jquery_ujs twice
14
+ // by detecting and raising an error when it happens.
15
+ 'use strict';
16
+
17
+ if ( $.rails !== undefined ) {
18
+ $.error('jquery-ujs has already been loaded!');
19
+ }
20
+
21
+ // Shorthand to make it a little easier to call public rails functions from within rails.js
22
+ var rails;
23
+ var $document = $(document);
24
+
25
+ $.rails = rails = {
26
+ // Link elements bound by jquery-ujs
27
+ linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',
28
+
29
+ // Button elements bound by jquery-ujs
30
+ buttonClickSelector: 'button[data-remote]:not([form]):not(form button), button[data-confirm]:not([form]):not(form button)',
31
+
32
+ // Select elements bound by jquery-ujs
33
+ inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',
34
+
35
+ // Form elements bound by jquery-ujs
36
+ formSubmitSelector: 'form',
37
+
38
+ // Form input elements bound by jquery-ujs
39
+ formInputClickSelector: 'form input[type=submit], form input[type=image], form button[type=submit], form button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',
40
+
41
+ // Form input elements disabled during form submission
42
+ disableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',
43
+
44
+ // Form input elements re-enabled after form submission
45
+ enableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',
46
+
47
+ // Form required input elements
48
+ requiredInputSelector: 'input[name][required]:not([disabled]), textarea[name][required]:not([disabled])',
49
+
50
+ // Form file input elements
51
+ fileInputSelector: 'input[name][type=file]:not([disabled])',
52
+
53
+ // Link onClick disable selector with possible reenable after remote submission
54
+ linkDisableSelector: 'a[data-disable-with], a[data-disable]',
55
+
56
+ // Button onClick disable selector with possible reenable after remote submission
57
+ buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]',
58
+
59
+ // Up-to-date Cross-Site Request Forgery token
60
+ csrfToken: function() {
61
+ return $('meta[name=csrf-token]').attr('content');
62
+ },
63
+
64
+ // URL param that must contain the CSRF token
65
+ csrfParam: function() {
66
+ return $('meta[name=csrf-param]').attr('content');
67
+ },
68
+
69
+ // Make sure that every Ajax request sends the CSRF token
70
+ CSRFProtection: function(xhr) {
71
+ var token = rails.csrfToken();
72
+ if (token) xhr.setRequestHeader('X-CSRF-Token', token);
73
+ },
74
+
75
+ // Make sure that all forms have actual up-to-date tokens (cached forms contain old ones)
76
+ refreshCSRFTokens: function(){
77
+ $('form input[name="' + rails.csrfParam() + '"]').val(rails.csrfToken());
78
+ },
79
+
80
+ // Triggers an event on an element and returns false if the event result is false
81
+ fire: function(obj, name, data) {
82
+ var event = $.Event(name);
83
+ obj.trigger(event, data);
84
+ return event.result !== false;
85
+ },
86
+
87
+ // Default confirm dialog, may be overridden with custom confirm dialog in $.rails.confirm
88
+ confirm: function(message) {
89
+ return confirm(message);
90
+ },
91
+
92
+ // Default ajax function, may be overridden with custom function in $.rails.ajax
93
+ ajax: function(options) {
94
+ return $.ajax(options);
95
+ },
96
+
97
+ // Default way to get an element's href. May be overridden at $.rails.href.
98
+ href: function(element) {
99
+ return element[0].href;
100
+ },
101
+
102
+ // Checks "data-remote" if true to handle the request through a XHR request.
103
+ isRemote: function(element) {
104
+ return element.data('remote') !== undefined && element.data('remote') !== false;
105
+ },
106
+
107
+ // Submits "remote" forms and links with ajax
108
+ handleRemote: function(element) {
109
+ var method, url, data, withCredentials, dataType, options;
110
+
111
+ if (rails.fire(element, 'ajax:before')) {
112
+ withCredentials = element.data('with-credentials') || null;
113
+ dataType = element.data('type') || ($.ajaxSettings && $.ajaxSettings.dataType);
114
+
115
+ if (element.is('form')) {
116
+ method = element.data('ujs:submit-button-formmethod') || element.attr('method');
117
+ url = element.data('ujs:submit-button-formaction') || element.attr('action');
118
+ data = $(element[0]).serializeArray();
119
+ // memoized value from clicked submit button
120
+ var button = element.data('ujs:submit-button');
121
+ if (button) {
122
+ data.push(button);
123
+ element.data('ujs:submit-button', null);
124
+ }
125
+ element.data('ujs:submit-button-formmethod', null);
126
+ element.data('ujs:submit-button-formaction', null);
127
+ } else if (element.is(rails.inputChangeSelector)) {
128
+ method = element.data('method');
129
+ url = element.data('url');
130
+ data = element.serialize();
131
+ if (element.data('params')) data = data + '&' + element.data('params');
132
+ } else if (element.is(rails.buttonClickSelector)) {
133
+ method = element.data('method') || 'get';
134
+ url = element.data('url');
135
+ data = element.serialize();
136
+ if (element.data('params')) data = data + '&' + element.data('params');
137
+ } else {
138
+ method = element.data('method');
139
+ url = rails.href(element);
140
+ data = element.data('params') || null;
141
+ }
142
+
143
+ options = {
144
+ type: method || 'GET', data: data, dataType: dataType,
145
+ // stopping the "ajax:beforeSend" event will cancel the ajax request
146
+ beforeSend: function(xhr, settings) {
147
+ if (settings.dataType === undefined) {
148
+ xhr.setRequestHeader('accept', '*/*;q=0.5, ' + settings.accepts.script);
149
+ }
150
+ if (rails.fire(element, 'ajax:beforeSend', [xhr, settings])) {
151
+ element.trigger('ajax:send', xhr);
152
+ } else {
153
+ return false;
154
+ }
155
+ },
156
+ success: function(data, status, xhr) {
157
+ element.trigger('ajax:success', [data, status, xhr]);
158
+ },
159
+ complete: function(xhr, status) {
160
+ element.trigger('ajax:complete', [xhr, status]);
161
+ },
162
+ error: function(xhr, status, error) {
163
+ element.trigger('ajax:error', [xhr, status, error]);
164
+ },
165
+ crossDomain: rails.isCrossDomain(url)
166
+ };
167
+
168
+ // There is no withCredentials for IE6-8 when
169
+ // "Enable native XMLHTTP support" is disabled
170
+ if (withCredentials) {
171
+ options.xhrFields = {
172
+ withCredentials: withCredentials
173
+ };
174
+ }
175
+
176
+ // If the remote is called with get leave the query string to ?query=...
177
+ // Else: Send the form as form data, to be able to send files with ajax
178
+ if (method.toLowerCase() !== "get") {
179
+ options.processData = false;
180
+ options.contentType = false;
181
+ options.data = new FormData(element[0]);
182
+ }
183
+
184
+ // Only pass url to `ajax` options if not blank
185
+ if (url) { options.url = url; }
186
+
187
+ return rails.ajax(options);
188
+ } else {
189
+ return false;
190
+ }
191
+ },
192
+
193
+ // Determines if the request is a cross domain request.
194
+ isCrossDomain: function(url) {
195
+ var originAnchor = document.createElement('a');
196
+ originAnchor.href = location.href;
197
+ var urlAnchor = document.createElement('a');
198
+
199
+ try {
200
+ urlAnchor.href = url;
201
+ // This is a workaround to a IE bug.
202
+ urlAnchor.href = urlAnchor.href;
203
+
204
+ // If URL protocol is false or is a string containing a single colon
205
+ // *and* host are false, assume it is not a cross-domain request
206
+ // (should only be the case for IE7 and IE compatibility mode).
207
+ // Otherwise, evaluate protocol and host of the URL against the origin
208
+ // protocol and host.
209
+ return !(((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host) ||
210
+ (originAnchor.protocol + '//' + originAnchor.host ===
211
+ urlAnchor.protocol + '//' + urlAnchor.host));
212
+ } catch (e) {
213
+ // If there is an error parsing the URL, assume it is crossDomain.
214
+ return true;
215
+ }
216
+ },
217
+
218
+ // Handles "data-method" on links such as:
219
+ // <a href="/users/5" data-method="delete" rel="nofollow" data-confirm="Are you sure?">Delete</a>
220
+ handleMethod: function(link) {
221
+ var href = rails.href(link),
222
+ method = link.data('method'),
223
+ target = link.attr('target'),
224
+ csrfToken = rails.csrfToken(),
225
+ csrfParam = rails.csrfParam(),
226
+ form = $('<form method="post" action="' + href + '"></form>'),
227
+ metadataInput = '<input name="_method" value="' + method + '" type="hidden" />';
228
+
229
+ if (csrfParam !== undefined && csrfToken !== undefined && !rails.isCrossDomain(href)) {
230
+ metadataInput += '<input name="' + csrfParam + '" value="' + csrfToken + '" type="hidden" />';
231
+ }
232
+
233
+ if (target) { form.attr('target', target); }
234
+
235
+ form.hide().append(metadataInput).appendTo('body');
236
+ form.submit();
237
+ },
238
+
239
+ // Helper function that returns form elements that match the specified CSS selector
240
+ // If form is actually a "form" element this will return associated elements outside the from that have
241
+ // the html form attribute set
242
+ formElements: function(form, selector) {
243
+ return form.is('form') ? $(form[0].elements).filter(selector) : form.find(selector);
244
+ },
245
+
246
+ /* Disables form elements:
247
+ - Caches element value in 'ujs:enable-with' data store
248
+ - Replaces element text with value of 'data-disable-with' attribute
249
+ - Sets disabled property to true
250
+ */
251
+ disableFormElements: function(form) {
252
+ rails.formElements(form, rails.disableSelector).each(function() {
253
+ rails.disableFormElement($(this));
254
+ });
255
+ },
256
+
257
+ disableFormElement: function(element) {
258
+ var method, replacement;
259
+
260
+ method = element.is('button') ? 'html' : 'val';
261
+ replacement = element.data('disable-with');
262
+
263
+ if (replacement !== undefined) {
264
+ element.data('ujs:enable-with', element[method]());
265
+ element[method](replacement);
266
+ }
267
+
268
+ element.prop('disabled', true);
269
+ element.data('ujs:disabled', true);
270
+ },
271
+
272
+ /* Re-enables disabled form elements:
273
+ - Replaces element text with cached value from 'ujs:enable-with' data store (created in `disableFormElements`)
274
+ - Sets disabled property to false
275
+ */
276
+ enableFormElements: function(form) {
277
+ rails.formElements(form, rails.enableSelector).each(function() {
278
+ rails.enableFormElement($(this));
279
+ });
280
+ },
281
+
282
+ enableFormElement: function(element) {
283
+ var method = element.is('button') ? 'html' : 'val';
284
+ if (element.data('ujs:enable-with') !== undefined) {
285
+ element[method](element.data('ujs:enable-with'));
286
+ element.removeData('ujs:enable-with'); // clean up cache
287
+ }
288
+ element.prop('disabled', false);
289
+ element.removeData('ujs:disabled');
290
+ },
291
+
292
+ /* For 'data-confirm' attribute:
293
+ - Fires `confirm` event
294
+ - Shows the confirmation dialog
295
+ - Fires the `confirm:complete` event
296
+
297
+ Returns `true` if no function stops the chain and user chose yes; `false` otherwise.
298
+ Attaching a handler to the element's `confirm` event that returns a `falsy` value cancels the confirmation dialog.
299
+ Attaching a handler to the element's `confirm:complete` event that returns a `falsy` value makes this function
300
+ return false. The `confirm:complete` event is fired whether or not the user answered true or false to the dialog.
301
+ */
302
+ allowAction: function(element) {
303
+ var message = element.data('confirm'),
304
+ answer = false, callback;
305
+ if (!message) { return true; }
306
+
307
+ if (rails.fire(element, 'confirm')) {
308
+ try {
309
+ answer = rails.confirm(message);
310
+ } catch (e) {
311
+ (console.error || console.log).call(console, e.stack || e);
312
+ }
313
+ callback = rails.fire(element, 'confirm:complete', [answer]);
314
+ }
315
+ return answer && callback;
316
+ },
317
+
318
+ // Helper function which checks for blank inputs in a form that match the specified CSS selector
319
+ blankInputs: function(form, specifiedSelector, nonBlank) {
320
+ var foundInputs = $(),
321
+ input,
322
+ valueToCheck,
323
+ radiosForNameWithNoneSelected,
324
+ radioName,
325
+ selector = specifiedSelector || 'input,textarea',
326
+ requiredInputs = form.find(selector),
327
+ checkedRadioButtonNames = {};
328
+
329
+ requiredInputs.each(function() {
330
+ input = $(this);
331
+ if (input.is('input[type=radio]')) {
332
+
333
+ // Don't count unchecked required radio as blank if other radio with same name is checked,
334
+ // regardless of whether same-name radio input has required attribute or not. The spec
335
+ // states https://www.w3.org/TR/html5/forms.html#the-required-attribute
336
+ radioName = input.attr('name');
337
+
338
+ // Skip if we've already seen the radio with this name.
339
+ if (!checkedRadioButtonNames[radioName]) {
340
+
341
+ // If none checked
342
+ if (form.find('input[type=radio]:checked[name="' + radioName + '"]').length === 0) {
343
+ radiosForNameWithNoneSelected = form.find(
344
+ 'input[type=radio][name="' + radioName + '"]');
345
+ foundInputs = foundInputs.add(radiosForNameWithNoneSelected);
346
+ }
347
+
348
+ // We only need to check each name once.
349
+ checkedRadioButtonNames[radioName] = radioName;
350
+ }
351
+ } else {
352
+ valueToCheck = input.is('input[type=checkbox],input[type=radio]') ? input.is(':checked') : !!input.val();
353
+ if (valueToCheck === nonBlank) {
354
+ foundInputs = foundInputs.add(input);
355
+ }
356
+ }
357
+ });
358
+ return foundInputs.length ? foundInputs : false;
359
+ },
360
+
361
+ // Helper function which checks for non-blank inputs in a form that match the specified CSS selector
362
+ nonBlankInputs: function(form, specifiedSelector) {
363
+ return rails.blankInputs(form, specifiedSelector, true); // true specifies nonBlank
364
+ },
365
+
366
+ // Helper function, needed to provide consistent behavior in IE
367
+ stopEverything: function(e) {
368
+ $(e.target).trigger('ujs:everythingStopped');
369
+ e.stopImmediatePropagation();
370
+ return false;
371
+ },
372
+
373
+ // Replace element's html with the 'data-disable-with' after storing original html
374
+ // and prevent clicking on it
375
+ disableElement: function(element) {
376
+ var replacement = element.data('disable-with');
377
+
378
+ if (replacement !== undefined) {
379
+ element.data('ujs:enable-with', element.html()); // store enabled state
380
+ element.html(replacement);
381
+ }
382
+
383
+ element.bind('click.railsDisable', function(e) { // prevent further clicking
384
+ return rails.stopEverything(e);
385
+ });
386
+ element.data('ujs:disabled', true);
387
+ },
388
+
389
+ // Restore element to its original state which was disabled by 'disableElement' above
390
+ enableElement: function(element) {
391
+ if (element.data('ujs:enable-with') !== undefined) {
392
+ element.html(element.data('ujs:enable-with')); // set to old enabled state
393
+ element.removeData('ujs:enable-with'); // clean up cache
394
+ }
395
+ element.unbind('click.railsDisable'); // enable element
396
+ element.removeData('ujs:disabled');
397
+ }
398
+ };
399
+
400
+ if (rails.fire($document, 'rails:attachBindings')) {
401
+
402
+ $.ajaxPrefilter(function(options, originalOptions, xhr){ if ( !options.crossDomain ) { rails.CSRFProtection(xhr); }});
403
+
404
+ // This event works the same as the load event, except that it fires every
405
+ // time the page is loaded.
406
+ //
407
+ // See https://github.com/rails/jquery-ujs/issues/357
408
+ // See https://developer.mozilla.org/en-US/docs/Using_Firefox_1.5_caching
409
+ $(window).on('pageshow.rails', function () {
410
+ $($.rails.enableSelector).each(function () {
411
+ var element = $(this);
412
+
413
+ if (element.data('ujs:disabled')) {
414
+ $.rails.enableFormElement(element);
415
+ }
416
+ });
417
+
418
+ $($.rails.linkDisableSelector).each(function () {
419
+ var element = $(this);
420
+
421
+ if (element.data('ujs:disabled')) {
422
+ $.rails.enableElement(element);
423
+ }
424
+ });
425
+ });
426
+
427
+ $document.delegate(rails.linkDisableSelector, 'ajax:complete', function() {
428
+ rails.enableElement($(this));
429
+ });
430
+
431
+ $document.delegate(rails.buttonDisableSelector, 'ajax:complete', function() {
432
+ rails.enableFormElement($(this));
433
+ });
434
+
435
+ $document.delegate(rails.linkClickSelector, 'click.rails', function(e) {
436
+ var link = $(this), method = link.data('method'), data = link.data('params'), metaClick = e.metaKey || e.ctrlKey;
437
+ if (!rails.allowAction(link)) return rails.stopEverything(e);
438
+
439
+ if (!metaClick && link.is(rails.linkDisableSelector)) rails.disableElement(link);
440
+
441
+ if (rails.isRemote(link)) {
442
+ if (metaClick && (!method || method === 'GET') && !data) { return true; }
443
+
444
+ var handleRemote = rails.handleRemote(link);
445
+ // Response from rails.handleRemote() will either be false or a deferred object promise.
446
+ if (handleRemote === false) {
447
+ rails.enableElement(link);
448
+ } else {
449
+ handleRemote.fail( function() { rails.enableElement(link); } );
450
+ }
451
+ return false;
452
+
453
+ } else if (method) {
454
+ rails.handleMethod(link);
455
+ return false;
456
+ }
457
+ });
458
+
459
+ $document.delegate(rails.buttonClickSelector, 'click.rails', function(e) {
460
+ var button = $(this);
461
+
462
+ if (!rails.allowAction(button) || !rails.isRemote(button)) return rails.stopEverything(e);
463
+
464
+ if (button.is(rails.buttonDisableSelector)) rails.disableFormElement(button);
465
+
466
+ var handleRemote = rails.handleRemote(button);
467
+ // Response from rails.handleRemote() will either be false or a deferred object promise.
468
+ if (handleRemote === false) {
469
+ rails.enableFormElement(button);
470
+ } else {
471
+ handleRemote.fail( function() { rails.enableFormElement(button); } );
472
+ }
473
+ return false;
474
+ });
475
+
476
+ $document.delegate(rails.inputChangeSelector, 'change.rails', function(e) {
477
+ var link = $(this);
478
+ if (!rails.allowAction(link) || !rails.isRemote(link)) return rails.stopEverything(e);
479
+
480
+ rails.handleRemote(link);
481
+ return false;
482
+ });
483
+
484
+ $document.delegate(rails.formSubmitSelector, 'submit.rails', function(e) {
485
+ var form = $(this),
486
+ remote = rails.isRemote(form),
487
+ blankRequiredInputs,
488
+ nonBlankFileInputs;
489
+
490
+ if (!rails.allowAction(form)) return rails.stopEverything(e);
491
+
492
+ // Skip other logic when required values are missing or file upload is present
493
+ if (form.attr('novalidate') === undefined) {
494
+ if (form.data('ujs:formnovalidate-button') === undefined) {
495
+ blankRequiredInputs = rails.blankInputs(form, rails.requiredInputSelector, false);
496
+ if (blankRequiredInputs && rails.fire(form, 'ajax:aborted:required', [blankRequiredInputs])) {
497
+ return rails.stopEverything(e);
498
+ }
499
+ } else {
500
+ // Clear the formnovalidate in case the next button click is not on a formnovalidate button
501
+ // Not strictly necessary to do here, since it is also reset on each button click, but just to be certain
502
+ form.data('ujs:formnovalidate-button', undefined);
503
+ }
504
+ }
505
+
506
+ if (remote) {
507
+ rails.handleRemote(form);
508
+ return false;
509
+
510
+ } else {
511
+ // Slight timeout so that the submit button gets properly serialized
512
+ setTimeout(function(){ rails.disableFormElements(form); }, 13);
513
+ }
514
+ });
515
+
516
+ $document.delegate(rails.formInputClickSelector, 'click.rails', function(event) {
517
+ var button = $(this);
518
+
519
+ if (!rails.allowAction(button)) return rails.stopEverything(event);
520
+
521
+ // Register the pressed submit button
522
+ var name = button.attr('name'),
523
+ data = name ? {name:name, value:button.val()} : null;
524
+
525
+ var form = button.closest('form');
526
+ if (form.length === 0) {
527
+ form = $('#' + button.attr('form'));
528
+ }
529
+ form.data('ujs:submit-button', data);
530
+
531
+ // Save attributes from button
532
+ form.data('ujs:formnovalidate-button', button.attr('formnovalidate'));
533
+ form.data('ujs:submit-button-formaction', button.attr('formaction'));
534
+ form.data('ujs:submit-button-formmethod', button.attr('formmethod'));
535
+ });
536
+
537
+ $document.delegate(rails.formSubmitSelector, 'ajax:send.rails', function(event) {
538
+ if (this === event.target) rails.disableFormElements($(this));
539
+ });
540
+
541
+ $document.delegate(rails.formSubmitSelector, 'ajax:complete.rails', function(event) {
542
+ if (this === event.target) rails.enableFormElements($(this));
543
+ });
544
+
545
+ $(function(){
546
+ rails.refreshCSRFTokens();
547
+ });
548
+ }
549
+
550
+ })( jQuery );
@@ -1,3 +1,3 @@
1
1
  module BetterFrame
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -632,3 +632,21 @@ Started GET "/better_frame" for ::1 at 2016-07-14 08:49:01 +0200
632
632
  Processing by BetterFrame::ApiController#include as HTML
633
633
  Rendered /Users/YvesSi/Projects/better_frame/app/views/better_frame/api/include.js.erb (247.2ms)
634
634
  Completed 200 OK in 268ms (Views: 267.7ms | ActiveRecord: 0.0ms)
635
+
636
+
637
+ Started GET "/better_frame" for ::1 at 2016-07-14 08:53:36 +0200
638
+ Processing by BetterFrame::ApiController#include as HTML
639
+ Rendered /Users/YvesSi/Projects/better_frame/app/views/better_frame/api/include.js.erb (236.8ms)
640
+ Completed 200 OK in 255ms (Views: 254.5ms | ActiveRecord: 0.0ms)
641
+
642
+
643
+ Started GET "/better_frame" for ::1 at 2016-07-14 08:55:55 +0200
644
+ Processing by BetterFrame::ApiController#include as HTML
645
+ Rendered /Users/YvesSi/Projects/better_frame/app/views/better_frame/api/include.js.erb (247.5ms)
646
+ Completed 200 OK in 265ms (Views: 264.7ms | ActiveRecord: 0.0ms)
647
+
648
+
649
+ Started GET "/better_frame" for ::1 at 2016-07-14 08:55:57 +0200
650
+ Processing by BetterFrame::ApiController#include as HTML
651
+ Rendered /Users/YvesSi/Projects/better_frame/app/views/better_frame/api/include.js.erb (3.0ms)
652
+ Completed 200 OK in 13ms (Views: 12.4ms | ActiveRecord: 0.0ms)
@@ -0,0 +1 @@
1
+ I"�/Users/YvesSi/Projects/better_frame/app/assets/javascripts/better_frame/jquery-ujs.js?type=application/javascript&pipeline=self&id=04627c6ccf47aee01169c77e6bd5d9cb7860653874e183361b656670a580a961:ET
@@ -0,0 +1 @@
1
+ I"�/Users/YvesSi/Projects/better_frame/app/assets/javascripts/better_frame/application.js?type=application/javascript&id=0df47e6cd5834a8b36dc8dd93d7571d8de6de714e7b728b26ed5ccaa18465aa7:ET
@@ -0,0 +1,3 @@
1
+ [o:Set:
2
+ @hash{
3
+ I"environment-version:ETTI"environment-paths;TTI"rails-env;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"hfile-digest:///Users/YvesSi/Projects/better_frame/app/assets/javascripts/better_frame/jquery-ujs.js;TT
@@ -0,0 +1 @@
1
+ "%���e=܊co�8S��������Gl)��{Q�
@@ -0,0 +1 @@
1
+ "%Ϙw�1�S���L�� %�-d���z^��
@@ -0,0 +1 @@
1
+ "%��B�����șo�$'�A�d��L���xR�U
@@ -0,0 +1 @@
1
+ I"�/Users/YvesSi/Projects/better_frame/app/assets/javascripts/better_frame/application.js?type=application/javascript&pipeline=self&id=0f85e970de50df154954a47c4cfe03d3a5447452d620cdff4e692bd15887057b:ET
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: better_frame
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yves Siegrist
@@ -85,6 +85,7 @@ files:
85
85
  - Rakefile
86
86
  - app/assets/javascripts/better_frame/application.js
87
87
  - app/assets/javascripts/better_frame/better_frame.js
88
+ - app/assets/javascripts/better_frame/jquery-ujs.js
88
89
  - app/assets/stylesheets/better_frame/application.css
89
90
  - app/controllers/better_frame/api_controller.rb
90
91
  - app/controllers/better_frame/application_controller.rb
@@ -143,6 +144,7 @@ files:
143
144
  - test/dummy/tmp/cache/assets/sprockets/v3.0/0V/0V5T39Y9WlnlRMp_iU6HeD42IOaPSaJPZnDtoVTmQKM.cache
144
145
  - test/dummy/tmp/cache/assets/sprockets/v3.0/19/19E50kucsbqbkUCIJwZTYXMg_ura6f90JdxKoxtoDVk.cache
145
146
  - test/dummy/tmp/cache/assets/sprockets/v3.0/2l/2lXYzvW9QQ1yuse4mwl7YRZBxyMTWSWwYBI2HyWKm4c.cache
147
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/3R/3RDp7BCv0E9RGTDQ4L9KkGPrBdmB4wptTzvHDwMMXaE.cache
146
148
  - test/dummy/tmp/cache/assets/sprockets/v3.0/3V/3VxVdKH0WTrlufIfawmXcVQ5gUXCkxUsFmxnhyiRHe4.cache
147
149
  - test/dummy/tmp/cache/assets/sprockets/v3.0/3p/3p498fGWaomalX2pg-NtSTCGW5cvVy12WWclD4vDPzA.cache
148
150
  - test/dummy/tmp/cache/assets/sprockets/v3.0/4N/4NwH0RDw9DgaNyUsqVWWtsiWlrI-sdELQFc6TXGnxd8.cache
@@ -156,21 +158,28 @@ files:
156
158
  - test/dummy/tmp/cache/assets/sprockets/v3.0/A7/A7mMkoEbbynYtn0Ekl5HtoYn9HRP5IYzd98aGb_8S24.cache
157
159
  - test/dummy/tmp/cache/assets/sprockets/v3.0/BS/BSGxxXE3zhOpIF1l6CWhIapdKBUcx80GAMYk08JT9tQ.cache
158
160
  - test/dummy/tmp/cache/assets/sprockets/v3.0/BZ/BZxsmR9Tu9PgEU5-ODBTT-_Sd8_WYG0CxmlWOCBPyPc.cache
161
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/CW/CW-R5VQpe3PfDRwQuTrc-McnCTzifefcNqtgquUR2ss.cache
159
162
  - test/dummy/tmp/cache/assets/sprockets/v3.0/D3/D3E_u8aP1-8k1Ea--HLYBVSsGfQtgWlcJbBQmYnhJho.cache
160
163
  - test/dummy/tmp/cache/assets/sprockets/v3.0/E1/E180QQjV9ByJ8ni5JD1npeff2gdXJH59MNa2X0kkoDY.cache
164
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/E5/E5dZqjR167u9e2S_THR-PsISxyu-3FHYJ4FRmlCXU-E.cache
161
165
  - test/dummy/tmp/cache/assets/sprockets/v3.0/Eh/EhT-6lV5T_LOXsmS74yMS00Rq3mtYJy3eBgsanRKC2o.cache
162
166
  - test/dummy/tmp/cache/assets/sprockets/v3.0/FW/FWTZ8XU81luG-WSwRbhl1UPlDGVmWw5vHi1kxTzy1vs.cache
163
167
  - test/dummy/tmp/cache/assets/sprockets/v3.0/Hb/Hb20VxnNv44tzEHvjoGU79fhBGJER3v2IAkRGeSDx9c.cache
164
168
  - test/dummy/tmp/cache/assets/sprockets/v3.0/IQ/IQFf94JMoMRSsuX1ABxYhZKGgJKU_s08F2s8dw9OiXM.cache
169
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/IR/IRPnMc-sbnLWFg9-S9ycdca50GZ6p0pMrqk-J8DBeTs.cache
165
170
  - test/dummy/tmp/cache/assets/sprockets/v3.0/Iw/IwM9HxYJwvtPLAbM5jgrkK32oYlIlogVgJZmvp6R7PM.cache
171
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/Jr/Jr9qMgI-1aVGTkZypi6PJAXfFFX2y7X79N_dUWK-WHQ.cache
166
172
  - test/dummy/tmp/cache/assets/sprockets/v3.0/N8/N8bTCyNNE19QpLIim2VjWoDQ_-harb5Fgz5ujL4v67E.cache
173
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/OE/OEB6mFFE3OzHeuJAhc3pydzD7BOp4yhd50LpfrfY1SU.cache
167
174
  - test/dummy/tmp/cache/assets/sprockets/v3.0/OI/OI6uxGcnsKavdWTtwDAasU3wPx8QXhzBgV0X2n1KjMQ.cache
168
175
  - test/dummy/tmp/cache/assets/sprockets/v3.0/P8/P8_H1P2qWDQvVNxfsACwndyhXM1d4oIUlnqWgFJYAHU.cache
169
176
  - test/dummy/tmp/cache/assets/sprockets/v3.0/PH/PH9VNK-TKOwtUcbiWBInXujUiGW2DuQIyr31LcB7hZ0.cache
170
177
  - test/dummy/tmp/cache/assets/sprockets/v3.0/Q6/Q6WYcAgF_tevBIT_iZkQSk9dRB1mz-bqMo_3dyB0oh4.cache
178
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/QI/QIKu6xxQB9TlhBCkiDiz-4PMxCa8iNL4-iVhH2e0ElA.cache
171
179
  - test/dummy/tmp/cache/assets/sprockets/v3.0/Sk/SkvWm-PhO9HiTFWvW0hLslGJ82RVUwItyY5Cv1k8inw.cache
172
180
  - test/dummy/tmp/cache/assets/sprockets/v3.0/T0/T0QQD1aiD_6MalQ-61TOl6A4gAXeo7_iIxqSt-D33es.cache
173
181
  - test/dummy/tmp/cache/assets/sprockets/v3.0/UD/UDs1ANCz_5JLG5rfCkTP0gVJqyN456JCzl7Es1ZimAw.cache
182
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/UT/UT-iknUAg1W3Ps7vyCR0_nZ7E3soh0jSKCA-0eNK8UU.cache
174
183
  - test/dummy/tmp/cache/assets/sprockets/v3.0/Uf/UfOjS_XOCFu5WK8fKji8aAz6GiuWaPry6Fd3cxT2s-g.cache
175
184
  - test/dummy/tmp/cache/assets/sprockets/v3.0/V9/V9sJyFczu6jh034q9gtqFhscD6Qyn4n3ObfjVfgsLYM.cache
176
185
  - test/dummy/tmp/cache/assets/sprockets/v3.0/VP/VPo97yJZ6cldC6CSdbHdAQI7w90zCLQYdX3wzCKuxbM.cache
@@ -191,6 +200,8 @@ files:
191
200
  - test/dummy/tmp/cache/assets/sprockets/v3.0/ib/ibh9nq3b_CdQcq2qKNGwud92XuwmNGFa0PQGNPAR4ks.cache
192
201
  - test/dummy/tmp/cache/assets/sprockets/v3.0/kc/kc8Vtq8k57jiZ_8gNrE709_la6tEI-0O_ggpb6dzZyI.cache
193
202
  - test/dummy/tmp/cache/assets/sprockets/v3.0/lh/lhf0U9BdQek3HV8xDosD8VDEIW4pnFnG3ZJyy0aQ85o.cache
203
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/mX/mX9aqskxq6Mo40XGN8FO5xQkaoRRMOoAUNgF1-kGYVk.cache
204
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/oJ/oJHzbsK_FIORQVaY4JUJolc-Rf5xJQH5ke7_o4jPp5c.cache
194
205
  - test/dummy/tmp/cache/assets/sprockets/v3.0/pE/pEhaat2KBd5SrT7szC_8R1_6hK17FTpvoRFkmCRSD3M.cache
195
206
  - test/dummy/tmp/cache/assets/sprockets/v3.0/pk/pkVgBJHJBczKFxUhJi4dLDLmDsGrEVkQ8P2cjgZh3L0.cache
196
207
  - test/dummy/tmp/cache/assets/sprockets/v3.0/qU/qUJu3-6hnwhWY43BIO_7CU7V6w3zpI5qehYdt7Czs6Q.cache
@@ -275,6 +286,7 @@ test_files:
275
286
  - test/dummy/tmp/cache/assets/sprockets/v3.0/19/19E50kucsbqbkUCIJwZTYXMg_ura6f90JdxKoxtoDVk.cache
276
287
  - test/dummy/tmp/cache/assets/sprockets/v3.0/2l/2lXYzvW9QQ1yuse4mwl7YRZBxyMTWSWwYBI2HyWKm4c.cache
277
288
  - test/dummy/tmp/cache/assets/sprockets/v3.0/3p/3p498fGWaomalX2pg-NtSTCGW5cvVy12WWclD4vDPzA.cache
289
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/3R/3RDp7BCv0E9RGTDQ4L9KkGPrBdmB4wptTzvHDwMMXaE.cache
278
290
  - test/dummy/tmp/cache/assets/sprockets/v3.0/3V/3VxVdKH0WTrlufIfawmXcVQ5gUXCkxUsFmxnhyiRHe4.cache
279
291
  - test/dummy/tmp/cache/assets/sprockets/v3.0/4N/4NwH0RDw9DgaNyUsqVWWtsiWlrI-sdELQFc6TXGnxd8.cache
280
292
  - test/dummy/tmp/cache/assets/sprockets/v3.0/5L/5Lly_CA8DZvPhQV2jDQx-Y6P_y3Ygra9t5jfSlGhHDA.cache
@@ -290,9 +302,11 @@ test_files:
290
302
  - test/dummy/tmp/cache/assets/sprockets/v3.0/b8/b8wPbH-jz0E_8NYCcvEA86_ZYbi1eGgKJyp1Rx3nR4I.cache
291
303
  - test/dummy/tmp/cache/assets/sprockets/v3.0/BS/BSGxxXE3zhOpIF1l6CWhIapdKBUcx80GAMYk08JT9tQ.cache
292
304
  - test/dummy/tmp/cache/assets/sprockets/v3.0/BZ/BZxsmR9Tu9PgEU5-ODBTT-_Sd8_WYG0CxmlWOCBPyPc.cache
305
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/CW/CW-R5VQpe3PfDRwQuTrc-McnCTzifefcNqtgquUR2ss.cache
293
306
  - test/dummy/tmp/cache/assets/sprockets/v3.0/d-/d-si9U_lgjWm7lqt82Lgk2ypfn6yXnIcgzpQrv_3FYo.cache
294
307
  - test/dummy/tmp/cache/assets/sprockets/v3.0/D3/D3E_u8aP1-8k1Ea--HLYBVSsGfQtgWlcJbBQmYnhJho.cache
295
308
  - test/dummy/tmp/cache/assets/sprockets/v3.0/E1/E180QQjV9ByJ8ni5JD1npeff2gdXJH59MNa2X0kkoDY.cache
309
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/E5/E5dZqjR167u9e2S_THR-PsISxyu-3FHYJ4FRmlCXU-E.cache
296
310
  - test/dummy/tmp/cache/assets/sprockets/v3.0/Eh/EhT-6lV5T_LOXsmS74yMS00Rq3mtYJy3eBgsanRKC2o.cache
297
311
  - test/dummy/tmp/cache/assets/sprockets/v3.0/eV/eVMv5tkg7zmyV83Vlqb0kdMrFY7dGjezbxyer8NnAY8.cache
298
312
  - test/dummy/tmp/cache/assets/sprockets/v3.0/eW/eWbmvytv-Y07apUFeY4gaAAc-3lFYQm_BvlXsyfdVPg.cache
@@ -303,17 +317,23 @@ test_files:
303
317
  - test/dummy/tmp/cache/assets/sprockets/v3.0/ib/ibh9nq3b_CdQcq2qKNGwud92XuwmNGFa0PQGNPAR4ks.cache
304
318
  - test/dummy/tmp/cache/assets/sprockets/v3.0/iG/iGlUGOWl7fvWZJi5GG2Pu4jqsN0NfI2720QCQ1WN4dg.cache
305
319
  - test/dummy/tmp/cache/assets/sprockets/v3.0/IQ/IQFf94JMoMRSsuX1ABxYhZKGgJKU_s08F2s8dw9OiXM.cache
320
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/IR/IRPnMc-sbnLWFg9-S9ycdca50GZ6p0pMrqk-J8DBeTs.cache
306
321
  - test/dummy/tmp/cache/assets/sprockets/v3.0/iU/iUF2SYov8Uctd7JlIdQEl_-P1-QFMOezxWvKScsJDj8.cache
307
322
  - test/dummy/tmp/cache/assets/sprockets/v3.0/Iw/IwM9HxYJwvtPLAbM5jgrkK32oYlIlogVgJZmvp6R7PM.cache
323
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/Jr/Jr9qMgI-1aVGTkZypi6PJAXfFFX2y7X79N_dUWK-WHQ.cache
308
324
  - test/dummy/tmp/cache/assets/sprockets/v3.0/kc/kc8Vtq8k57jiZ_8gNrE709_la6tEI-0O_ggpb6dzZyI.cache
309
325
  - test/dummy/tmp/cache/assets/sprockets/v3.0/lh/lhf0U9BdQek3HV8xDosD8VDEIW4pnFnG3ZJyy0aQ85o.cache
326
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/mX/mX9aqskxq6Mo40XGN8FO5xQkaoRRMOoAUNgF1-kGYVk.cache
310
327
  - test/dummy/tmp/cache/assets/sprockets/v3.0/N8/N8bTCyNNE19QpLIim2VjWoDQ_-harb5Fgz5ujL4v67E.cache
328
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/OE/OEB6mFFE3OzHeuJAhc3pydzD7BOp4yhd50LpfrfY1SU.cache
311
329
  - test/dummy/tmp/cache/assets/sprockets/v3.0/OI/OI6uxGcnsKavdWTtwDAasU3wPx8QXhzBgV0X2n1KjMQ.cache
330
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/oJ/oJHzbsK_FIORQVaY4JUJolc-Rf5xJQH5ke7_o4jPp5c.cache
312
331
  - test/dummy/tmp/cache/assets/sprockets/v3.0/P8/P8_H1P2qWDQvVNxfsACwndyhXM1d4oIUlnqWgFJYAHU.cache
313
332
  - test/dummy/tmp/cache/assets/sprockets/v3.0/pE/pEhaat2KBd5SrT7szC_8R1_6hK17FTpvoRFkmCRSD3M.cache
314
333
  - test/dummy/tmp/cache/assets/sprockets/v3.0/PH/PH9VNK-TKOwtUcbiWBInXujUiGW2DuQIyr31LcB7hZ0.cache
315
334
  - test/dummy/tmp/cache/assets/sprockets/v3.0/pk/pkVgBJHJBczKFxUhJi4dLDLmDsGrEVkQ8P2cjgZh3L0.cache
316
335
  - test/dummy/tmp/cache/assets/sprockets/v3.0/Q6/Q6WYcAgF_tevBIT_iZkQSk9dRB1mz-bqMo_3dyB0oh4.cache
336
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/QI/QIKu6xxQB9TlhBCkiDiz-4PMxCa8iNL4-iVhH2e0ElA.cache
317
337
  - test/dummy/tmp/cache/assets/sprockets/v3.0/qU/qUJu3-6hnwhWY43BIO_7CU7V6w3zpI5qehYdt7Czs6Q.cache
318
338
  - test/dummy/tmp/cache/assets/sprockets/v3.0/sc/sc_cvz9ujmCBwQwtw93KNqcaEZaX_-ZqkpQoBCUu1ME.cache
319
339
  - test/dummy/tmp/cache/assets/sprockets/v3.0/Sk/SkvWm-PhO9HiTFWvW0hLslGJ82RVUwItyY5Cv1k8inw.cache
@@ -323,6 +343,7 @@ test_files:
323
343
  - test/dummy/tmp/cache/assets/sprockets/v3.0/tz/tzkajjporZ8qATygMdV8UCEDMOUiSMshAvwF3tWROxI.cache
324
344
  - test/dummy/tmp/cache/assets/sprockets/v3.0/UD/UDs1ANCz_5JLG5rfCkTP0gVJqyN456JCzl7Es1ZimAw.cache
325
345
  - test/dummy/tmp/cache/assets/sprockets/v3.0/Uf/UfOjS_XOCFu5WK8fKji8aAz6GiuWaPry6Fd3cxT2s-g.cache
346
+ - test/dummy/tmp/cache/assets/sprockets/v3.0/UT/UT-iknUAg1W3Ps7vyCR0_nZ7E3soh0jSKCA-0eNK8UU.cache
326
347
  - test/dummy/tmp/cache/assets/sprockets/v3.0/V9/V9sJyFczu6jh034q9gtqFhscD6Qyn4n3ObfjVfgsLYM.cache
327
348
  - test/dummy/tmp/cache/assets/sprockets/v3.0/vE/vEBmsp3Y06XVU40PqBhxWsMx2x2tOG6gqMq2-cYKeR8.cache
328
349
  - test/dummy/tmp/cache/assets/sprockets/v3.0/VP/VPo97yJZ6cldC6CSdbHdAQI7w90zCLQYdX3wzCKuxbM.cache