ballonizer 0.6.0 → 0.7.1

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: 81a2f00a9f342ae4610b16bb9ff9c76f23303d42
4
- data.tar.gz: f52c953ad0e04fe39a02bb8be9c13fb0cbf22171
3
+ metadata.gz: b3aa463bc872474ad1a3c7026aed2dc957f52814
4
+ data.tar.gz: a698fdd12b78996403a37dc938bd72f9ecfde3c9
5
5
  SHA512:
6
- metadata.gz: d17a3d75edde1678fdba891400cd52e4d583c9cd2d6155d68632a4c800c5b09029b6ccc95f95704d4c6ebc1ef4a4dec175d372e74456a5264d111cdb4f43ccab
7
- data.tar.gz: dd8e30865b5de73b832d6649385742ed6baa203e1c5525aaf3427f8e8604def73ecc62d8fac8d2bd69239fecd1fdb9174bc65368c17c48ab3b7d4107a17c4253
6
+ metadata.gz: 3c242c148ec73d9d41e0ce702e7af3f288e85027920d00b9395361a5325a5ce8560bbddce6213b0ed4000ebf3fafe90023cd9660f316be7fe1e4a60d44b8c222
7
+ data.tar.gz: c2a5b76cabc58123e2778df531f4747e927607fbddd5ee30cfa02b8fe78c1c2bb92984ca63643482c2234e06b438bc0f8615bb07bd9290b72a18139e0058371f
data/Rakefile CHANGED
@@ -13,7 +13,7 @@ end
13
13
  RSpec::Core::RakeTask.new :spec
14
14
 
15
15
  Jshintrb::JshintTask.new :jshint do |t|
16
- t.pattern = '{lib/ballonizer/*.js,spec/javascripts/*.js}'
16
+ t.pattern = '{lib/assets/javascripts/*.js,spec/javascripts/*.js}'
17
17
  t.options = {
18
18
  bitwise: true,
19
19
  camelcase: true,
@@ -1,6 +1,12 @@
1
1
  // Module pattern
2
2
  (function (global) {
3
3
  "use strict";
4
+ // We define these two variables as null to cause an error when the
5
+ // global version of these variables is accessed. This is used to enforce
6
+ // the use of the jQueryObject parameter of the ballonizer constructor.
7
+ var jQuery = null;
8
+ var $ = null;
9
+
4
10
  var Ballonizer = (function () {
5
11
 
6
12
  var htmlEscape = function (str) {
@@ -37,6 +43,10 @@
37
43
  * match the container wrapped around each image to be ballonized.
38
44
  * @param context A node or JQuery object. The Ballonizer will
39
45
  * affect and see only inside of this node.
46
+ * @param jQueryObject The '$' or 'jQuery' variables defined by jQuery
47
+ * library. The object will use this object instead the global one.
48
+ * The main utility of this is allow the use of a different jQuery
49
+ * version that the used in the rest of the page scripts.
40
50
  * @param config A hash with the config to be used in some
41
51
  * situations:
42
52
  * ballonInitialText: ballon text when the ballon is created (do
@@ -44,11 +54,15 @@
44
54
  * to "double click to edit ballon text";
45
55
  * submitButtonValue: text of the button who submits the changes
46
56
  * in the ballons. Defaults to "Submit ballon changes";
57
+ * jQueryObject: a jQuery object to use instead of the global one,
58
+ * the main utility of this configuration is use multiple jQuery
59
+ * versions in the page.
47
60
  * @return Ballonizer object
48
61
  */
49
62
  Ballonizer = function (actionFormURL,
50
63
  ballonizerContainerSelector,
51
64
  context,
65
+ jQueryObject,
52
66
  config) {
53
67
 
54
68
  // Implicit constructor pattern
@@ -56,16 +70,28 @@
56
70
  return new Ballonizer(actionFormURL,
57
71
  ballonizerContainerSelector,
58
72
  context,
73
+ jQueryObject,
59
74
  config);
60
75
  }
61
76
 
77
+ var defaultConfig = {
78
+ ballonInitialText: "double click to edit ballon text",
79
+ submitButtonValue: "Submit ballon changes"
80
+ };
81
+
82
+ if (jQueryObject) {
83
+ this.jQuery = jQueryObject;
84
+ } else {
85
+ throw new Ballonizer.Error(
86
+ "the parameter jQueryObject is null or undefined"
87
+ );
88
+ }
89
+ var $ = this.jQuery;
90
+
62
91
  if (null == config) {
63
- this.config = {
64
- ballonInitialText: "double click to edit ballon text",
65
- submitButtonValue: "Submit ballon changes"
66
- };
92
+ this.config = defaultConfig;
67
93
  } else {
68
- this.config = config;
94
+ this.config = $.extend({}, defaultConfig, config);
69
95
  }
70
96
 
71
97
  this.actionFormURL = actionFormURL;
@@ -76,7 +102,9 @@
76
102
  var imageContainers = $(ballonizerContainerSelector, this.context);
77
103
  imageContainers.each($.proxy(function (ix, element) {
78
104
  var container = $(element);
79
- var ballonizedContainer = new BallonizedImageContainer(this, container);
105
+ var ballonizedContainer = new BallonizedImageContainer(
106
+ this, container, jQueryObject
107
+ );
80
108
  var imgSrc = $("img", container).prop("src");
81
109
 
82
110
  this.ballonizedImages[imgSrc] = ballonizedContainer;
@@ -116,6 +144,8 @@
116
144
  };
117
145
 
118
146
  Ballonizer.prototype.generateBallonizerFormNode = function () {
147
+ var $ = this.jQuery;
148
+ var jQuery = this.jQuery;
119
149
  var form = $("<form class='ballonizer_page_form' method='post' >" +
120
150
  "<div><input name='ballonizer_data' type='hidden'>" +
121
151
  "</input><input name='ballonizer_submit'" +
@@ -125,10 +155,32 @@
125
155
 
126
156
  form.attr("action", this.actionFormURL);
127
157
 
158
+ // We find the greater z-index of a body direct child and
159
+ // increment this value by one (this way the form will not
160
+ // be hiiden behind another element)
161
+ var zIndexes = [];
162
+ $("body > *").each(function (ix, el) {
163
+ var zIndexCSS = $(el).css('z-index');
164
+ // the inherit is made numeric by the jQuery, we are
165
+ // filtering here only the "auto" string value
166
+ if (jQuery.isNumeric(zIndexCSS)) {
167
+ zIndexes.push(parseInt(zIndexCSS, 10));
168
+ }
169
+ });
170
+ var zIndex = null;
171
+ if (zIndexes.length > 0) {
172
+ zIndex = Math.max.apply(null, zIndexes) + 1;
173
+ } else {
174
+ zIndex = 1;
175
+ }
176
+ $("input[name='ballonizer_submit']", form).css("z-index", zIndex);
177
+
128
178
  return form;
129
179
  };
130
180
 
131
181
  Ballonizer.prototype.notifyBallonChange = function () {
182
+ var $ = this.jQuery;
183
+ var jQuery = this.jQuery;
132
184
  var submitButton = $("input[type='submit']", this.formNode);
133
185
  var dataInput = $("input[type='hidden']", this.formNode);
134
186
 
@@ -142,6 +194,7 @@
142
194
  };
143
195
 
144
196
  Ballonizer.prototype.serialize = function () {
197
+ var jQuery = this.jQuery;
145
198
  var serialization = {};
146
199
 
147
200
  jQuery.each(this.ballonizedImages, function (ix, el) {
@@ -154,14 +207,19 @@
154
207
 
155
208
  BallonizedImageContainer = (function () {
156
209
  var BallonizedImageContainer = function (ballonizerInstance,
157
- containerNode) {
210
+ containerNode,
211
+ jQueryObject) {
158
212
 
159
213
  // Implicit constructor pattern
160
214
  if (!(this instanceof BallonizedImageContainer)) {
161
215
  return new BallonizedImageContainer(ballonizerInstance,
162
- containerNode);
216
+ containerNode,
217
+ jQueryObject);
163
218
  }
164
219
 
220
+ this.jQuery = jQueryObject;
221
+ var $ = this.jQuery;
222
+
165
223
  // See notifyBallonChange for this flag explanation
166
224
  this.userAlreadyInteracted = false;
167
225
 
@@ -187,7 +245,9 @@
187
245
  var ballons = $(".ballonizer_ballon", this.containerNode);
188
246
 
189
247
  ballons.each($.proxy(function (ix, element) {
190
- this.ballons.push(new InterfaceBallon(this, $(element)));
248
+ this.ballons.push(new InterfaceBallon(
249
+ this, $(element), this.jQuery
250
+ ));
191
251
  }, this));
192
252
 
193
253
  var img = $("img", this.containerNode);
@@ -217,6 +277,7 @@
217
277
  // preserve the semantics of the ballon change be always from a user
218
278
  // interaction.
219
279
  BallonizedImageContainer.prototype.notifyBallonChange = function () {
280
+ var jQuery = this.jQuery;
220
281
  // This flag is necessary to work around the load of the image.
221
282
  // The ready callback don't wait for images to load and the
222
283
  // load callback has several caveats with using images (see
@@ -242,7 +303,7 @@
242
303
  };
243
304
 
244
305
  BallonizedImageContainer.prototype.removeBallonFromList = function (ballon) {
245
- var ix = jQuery.inArray(ballon, this.ballons);
306
+ var ix = this.jQuery.inArray(ballon, this.ballons);
246
307
  this.ballons.splice(ix, 1);
247
308
 
248
309
  this.notifyBallonChange();
@@ -274,7 +335,8 @@
274
335
  var ballonWidth = 129, ballonHeight = 41;
275
336
  var ballon = new InterfaceBallon(this, ballonX, ballonY,
276
337
  ballonWidth, ballonHeight,
277
- this.ballonizerInstance.getBallonInitialText());
338
+ this.ballonizerInstance.getBallonInitialText(),
339
+ this.jQuery);
278
340
 
279
341
  this.ballons.push(ballon);
280
342
 
@@ -282,6 +344,8 @@
282
344
  };
283
345
 
284
346
  BallonizedImageContainer.prototype.serialize = function () {
347
+ var $ = this.jQuery;
348
+ var jQuery = this.jQuery;
285
349
  /* jshint camelcase: false */
286
350
  var serialization = {
287
351
  // The img_src is out of style (not in camel case) because
@@ -302,28 +366,30 @@
302
366
  })();
303
367
 
304
368
  InterfaceBallon = (function () {
305
- var InterfaceBallon = function (imgContainer, xOrNode, y, width,
306
- height, initialText) {
369
+ var InterfaceBallon = function (imgContainer, xOrNode, yOrJQueryObject,
370
+ width, height, initialText, jQueryObject) {
307
371
 
308
372
  // Implicit constructor pattern
309
373
  if (!(this instanceof InterfaceBallon)) {
310
- return new InterfaceBallon(imgContainer, xOrNode, y, width,
311
- height, initialText);
374
+ return new InterfaceBallon(imgContainer, xOrNode, yOrJQueryObject, width,
375
+ height, initialText, jQueryObject);
312
376
  }
313
377
 
314
378
  this.imgContainer = imgContainer;
315
379
  this.state = "initial";
316
380
 
317
- if (2 === arguments.length) {
381
+ if (3 === arguments.length) {
318
382
  this.node = xOrNode;
383
+ this.jQuery = yOrJQueryObject;
319
384
  this.updatePositionAndSize();
320
385
  this.fontSize = parseInt(this.node.css('font-size'), 10);
321
386
  this.text = this.node.text();
322
387
  } else {
323
388
  this.left = xOrNode;
324
- this.top = y;
389
+ this.top = yOrJQueryObject;
325
390
  this.width = width;
326
391
  this.height = height;
392
+ this.jQuery = jQueryObject;
327
393
  var containerNode = this.imgContainer.getContainerNode();
328
394
 
329
395
  // The ifs purpose are avoid the ballon of being created
@@ -352,6 +418,8 @@
352
418
  this.changeFontSizeToBestFitBallon();
353
419
  }
354
420
 
421
+ var $ = this.jQuery;
422
+
355
423
  this.node.draggable({
356
424
  containment: "parent",
357
425
  opacity: 0.5,
@@ -403,6 +471,7 @@
403
471
  };
404
472
 
405
473
  InterfaceBallon.prototype.generateBallonNode = function () {
474
+ var $ = this.jQuery;
406
475
  var nodeStyle = ["left: ", this.left, "px; ", "top: ",
407
476
  this.top, "px; ", "width: ", this.width, "px; ",
408
477
  "height: ", this.height, "px;"].join("");
@@ -426,17 +495,17 @@
426
495
  };
427
496
  };
428
497
  InterfaceBallon.prototype.changeFontSizeToBestFitBallon = function () {
429
- var old_height = this.node.css('height');
430
- var desired_calc_height = this.node.height();
498
+ var oldHeight = this.node.css('height');
499
+ var desiredCalcHeight = this.node.height();
431
500
  this.node.css('height', 'auto');
432
- var actual_font_size = 1;
433
- this.node.css('font-size', actual_font_size);
434
- while (this.node.height() < desired_calc_height) {
435
- this.node.css('font-size', ++actual_font_size + 'px');
501
+ var actualFontSize = 1;
502
+ this.node.css('font-size', actualFontSize);
503
+ while (this.node.height() < desiredCalcHeight) {
504
+ this.node.css('font-size', ++actualFontSize + 'px');
436
505
  }
437
- this.node.css('font-size', --actual_font_size + 'px');
438
- this.node.css('height', old_height);
439
- this.fontSize = actual_font_size;
506
+ this.node.css('font-size', --actualFontSize + 'px');
507
+ this.node.css('height', oldHeight);
508
+ this.fontSize = actualFontSize;
440
509
  };
441
510
  InterfaceBallon.prototype.updatePositionAndSize = function () {
442
511
  var newX = this.node.position().left;
@@ -512,6 +581,8 @@
512
581
  };
513
582
 
514
583
  InterfaceBallon.prototype.dblclick = function () {
584
+ var $ = this.jQuery;
585
+ var jQuery = this.jQuery;
515
586
  this.state = this.state.replace("initial", "edit");
516
587
 
517
588
  var context = this.imgContainer.getBallonizerInstance().getContext();
@@ -528,7 +599,7 @@
528
599
  // the inherit is made numeric by the jQuery, we are
529
600
  // filtering here only the "auto" string value
530
601
  if (jQuery.isNumeric(zIndexCSS)) {
531
- zIndexes.push(parseInt(zIndexCSS));
602
+ zIndexes.push(parseInt(zIndexCSS, 10));
532
603
  }
533
604
  });
534
605
  var zIndex = null;
@@ -575,8 +646,12 @@
575
646
  top: this.top / containerHeight,
576
647
  width: this.width / containerWidth,
577
648
  height: this.height / containerHeight,
578
- font_size: this.fontSize,
579
- text: this.text
649
+ text: this.text,
650
+ /* jshint camelcase: false */
651
+ // The fontSize is out of style (not in camel case) because
652
+ // it will be submitted to the ruby, and i'm giving
653
+ // preference to the ruby convention when in conflict
654
+ font_size: this.fontSize
580
655
  };
581
656
  };
582
657
 
@@ -17,6 +17,7 @@
17
17
  display: block;
18
18
  word-wrap: break-word;
19
19
  overflow: hidden;
20
+ border-radius: 50% 50%;
20
21
  }
21
22
 
22
23
  .ballonizer_ballon_hidden_for_edition
@@ -79,5 +80,7 @@
79
80
  position: fixed;
80
81
  top: 0;
81
82
  right: 0;
83
+ width: auto;
84
+ height: auto;
82
85
  }
83
86
 
@@ -55,6 +55,16 @@ require 'sprockets'
55
55
  # ballonized_image_ballons.
56
56
  #
57
57
  # Changelog:
58
+ # v0.6.1
59
+ # * Add the jquery_no_conflict option. If this option is true the
60
+ # js_load_snippet will restore any previous loaded version of
61
+ # jQuery after the ballonizer javascript client code already
62
+ # referenced the latest loaded version (use this option if the page
63
+ # already use a jQuery version that's different from the used by
64
+ # the gem, and you use the add_required_js_libs_for_edition and
65
+ # add_js_for_edition options).
66
+ # v0.6.0
67
+ # * Change the jQuery version provided by the gem to the 1.10.2
58
68
  # v0.5.1:
59
69
  # * js_load_snippet can take a settings arg too. Fixed ballonize_page to
60
70
  # use the :form_handler_url from the settings argument.
@@ -193,7 +203,11 @@ class Ballonizer
193
203
  # If true and the database argument don't have any of the tables used by
194
204
  # the class call create_tables over the database argument. If false or the
195
205
  # database has at leat one of the tables does nothing.
196
- create_tables_if_none: false
206
+ create_tables_if_none: false,
207
+ # Use the jQuery.noConflict to restore any previous loaded version of the
208
+ # jQuery in a ballonized page. Only works with add_js_for_edition, and
209
+ # probably only makes sense with add_required_js_libs_for_edition.
210
+ jquery_no_conflict: false
197
211
  }.freeze.each { | _, v| v.freeze }
198
212
 
199
213
  USED_TABLES = [ :images, :ballons, :ballonized_image_ballons,
@@ -497,13 +511,19 @@ class Ballonizer
497
511
  # @return [String] The added snippet. Already with the <script/> tag around it.
498
512
  def js_load_snippet(settings = {})
499
513
  settings = @settings.merge(settings)
514
+ # We create a reference to the jQuery because the global variable can be
515
+ # cleaned by the jQuery.noConflict(true), if the jquery_no_conflict
516
+ # setting is defined
500
517
  <<-EOF
501
518
  <script type="text/javascript">
502
- $(document).ready(function() {
519
+ var jQueryReference = jQuery;
520
+ jQueryReference(document).ready(function() {
503
521
  Ballonizer('#{settings[:form_handler_url]}',
504
522
  '.ballonizer_image_container',
505
- $('body'));
523
+ jQueryReference('body'),
524
+ jQueryReference);
506
525
  })
526
+ #{ 'jQuery.noConflict(true); ' if settings[:jquery_no_conflict] }
507
527
  </script>
508
528
  EOF
509
529
  end
@@ -65,24 +65,24 @@ describe("Ballonizer", function () {
65
65
  describe("but none in the context", function () {
66
66
  it("doesn't create a form", function () {
67
67
  loadFixtures("ballonized-xkcd-without-ballons.html");
68
- Ballonizer(actionFormURL, imageToBallonizeCSSSelector, $("#bottom"));
68
+ Ballonizer(actionFormURL, imageToBallonizeCSSSelector, $("#bottom"), $);
69
69
  expect($("form.ballonizer_page_form")).not.toExist();
70
70
  });
71
71
  it(".getForm return null", function () {
72
- instance = Ballonizer(actionFormURL, imageToBallonizeCSSSelector, $("#bottom"));
72
+ instance = Ballonizer(actionFormURL, imageToBallonizeCSSSelector, $("#bottom"), $);
73
73
  expect(instance.getForm()).toEqual(null);
74
74
  });
75
75
  });
76
76
  describe("and they are in the context", function () {
77
77
  it("create a hidden form as the last child of the context", function () {
78
78
  loadFixtures("ballonized-xkcd-without-ballons.html");
79
- Ballonizer(actionFormURL, imageToBallonizeCSSSelector, $("#jasmine-fixtures"));
79
+ Ballonizer(actionFormURL, imageToBallonizeCSSSelector, $("#jasmine-fixtures"), $);
80
80
  expect($("#jasmine-fixtures")).toHaveBallonizerForm(actionFormURL);
81
81
  expect($("form.ballonizer_page_form")).toBeHidden();
82
82
  });
83
83
  it("changes in .getForm result affect the node in the DOM", function () {
84
84
  loadFixtures("ballonized-xkcd-without-ballons.html");
85
- instance = Ballonizer(actionFormURL, imageToBallonizeCSSSelector, $("#jasmine-fixtures"));
85
+ instance = Ballonizer(actionFormURL, imageToBallonizeCSSSelector, $("#jasmine-fixtures"), $);
86
86
  instance.getForm().attr("method", "get");
87
87
  expect($("form.ballonizer_page_form")).toHaveAttr("method", "get");
88
88
  });
@@ -90,7 +90,7 @@ describe("Ballonizer", function () {
90
90
  describe("when the ballonized image is double clicked", function () {
91
91
  it("a new ballon will be created", function () {
92
92
  loadFixtures("ballonized-xkcd-without-ballons.html");
93
- instance = Ballonizer(actionFormURL, imageToBallonizeCSSSelector, $("#jasmine-fixtures"));
93
+ instance = Ballonizer(actionFormURL, imageToBallonizeCSSSelector, $("#jasmine-fixtures"), $);
94
94
 
95
95
  var ballonizedImg = $(".ballonizer_image_container img");
96
96
  ballonizedImg.trigger("dblclick");
@@ -98,7 +98,7 @@ describe("Ballonizer", function () {
98
98
  });
99
99
  it("the default action of clicking the image (if any) will not trigger", function () {
100
100
  loadFixtures("ballonized-xkcd-with-anchor-in-image.html");
101
- instance = Ballonizer(actionFormURL, imageToBallonizeCSSSelector, $("#jasmine-fixtures"));
101
+ instance = Ballonizer(actionFormURL, imageToBallonizeCSSSelector, $("#jasmine-fixtures"), $);
102
102
  var spyAnchor = spyOnEvent("#comic a", "click");
103
103
  var ballonizedImg = $(".ballonizer_image_container img");
104
104
  // In a real browser the dblclick event will be generated with one or
@@ -112,7 +112,7 @@ describe("Ballonizer", function () {
112
112
  describe(".getBallonizedImageContainers", function () {
113
113
  describe("when there's no image to ballonize", function () {
114
114
  it("return an object without any keys", function () {
115
- instance = Ballonizer(actionFormURL, imageToBallonizeCSSSelector, $("#jasmine-fixtures"));
115
+ instance = Ballonizer(actionFormURL, imageToBallonizeCSSSelector, $("#jasmine-fixtures"), $);
116
116
  var ballonizedImageContainers = instance.getBallonizedImageContainers();
117
117
  expect(ballonizedImageContainers).toBeAnEmptyObject();
118
118
  });
@@ -120,7 +120,7 @@ describe("Ballonizer", function () {
120
120
  describe("when there's a image to ballonize", function () {
121
121
  it("return an object with the img src as key and the object as value", function () {
122
122
  loadFixtures("ballonized-xkcd-without-ballons.html");
123
- instance = Ballonizer(actionFormURL, imageToBallonizeCSSSelector, $("#jasmine-fixtures"));
123
+ instance = Ballonizer(actionFormURL, imageToBallonizeCSSSelector, $("#jasmine-fixtures"), $);
124
124
  var ballonizedImageContainers = instance.getBallonizedImageContainers();
125
125
  expect(ballonizedImageContainers.hasOwnProperty("http://imgs.xkcd.com/comics/cells.png")).toBeTruthy();
126
126
  });
@@ -129,7 +129,7 @@ describe("Ballonizer", function () {
129
129
  describe("BallonizedImageContainer", function () {
130
130
  it("adds a hidden form for the ballon edition in the body", function () {
131
131
  loadFixtures("ballonized-xkcd-without-ballons.html");
132
- instance = Ballonizer(actionFormURL, imageToBallonizeCSSSelector, $("#jasmine-fixtures"));
132
+ instance = Ballonizer(actionFormURL, imageToBallonizeCSSSelector, $("#jasmine-fixtures"), $);
133
133
  expect($("body")).toContain("form.ballonizer_image_form");
134
134
  // What the value of action is not important, but the action attribute
135
135
  // is required (http://www.w3.org/TR/html401/interact/forms.html#h-17.3)
@@ -139,7 +139,7 @@ describe("Ballonizer", function () {
139
139
  describe("when there's a image with ballons", function () {
140
140
  it("getBallons return they", function () {
141
141
  loadFixtures("ballonized-xkcd-with-ballons.html");
142
- instance = Ballonizer(actionFormURL, imageToBallonizeCSSSelector, $("#jasmine-fixtures"));
142
+ instance = Ballonizer(actionFormURL, imageToBallonizeCSSSelector, $("#jasmine-fixtures"), $);
143
143
  var ballonizedImageContainers = instance.getBallonizedImageContainers();
144
144
  var ballons = ballonizedImageContainers["http://imgs.xkcd.com/comics/cells.png"].getBallons();
145
145
 
@@ -168,7 +168,7 @@ describe("Ballonizer", function () {
168
168
  var containerWidth, containerHeight;
169
169
  var getBallons = function () {
170
170
  loadFixtures("ballonized-xkcd-with-ballons.html");
171
- instance = Ballonizer(actionFormURL, imageToBallonizeCSSSelector, $("#jasmine-fixtures"));
171
+ instance = Ballonizer(actionFormURL, imageToBallonizeCSSSelector, $("#jasmine-fixtures"), $);
172
172
  var imageContainer = instance.getBallonizedImageContainers()["http://imgs.xkcd.com/comics/cells.png"],
173
173
  ballons = imageContainer.getBallons(),
174
174
  containerNode = imageContainer.getContainerNode();
@@ -288,7 +288,7 @@ describe("Ballonizer", function () {
288
288
  it("prevent the default action of changing the page", function () {
289
289
  // first create a ballon
290
290
  loadFixtures("ballonized-xkcd-with-anchor-in-image.html");
291
- instance = Ballonizer(actionFormURL, imageToBallonizeCSSSelector, $("#jasmine-fixtures"));
291
+ instance = Ballonizer(actionFormURL, imageToBallonizeCSSSelector, $("#jasmine-fixtures"), $);
292
292
  var ballonizedImg = $(".ballonizer_image_container img");
293
293
  realWorldEvent("dblclick", ballonizedImg);
294
294
  var ballon = $(".ballonizer_ballon");
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ballonizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henrique Becker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-23 00:00:00.000000000 Z
11
+ date: 2013-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri