hobo_jquery 2.0.1 → 2.1.0.pre1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 078911c8bbf874fe2ef310aa1e516db681ed1502
4
+ data.tar.gz: 139d4d09dfd9787ab32fd457bdfaf7a972f2b544
5
+ SHA512:
6
+ metadata.gz: 9e33bd470a6a84ace3b70e7248aa2d525d4f555d19da626ef3bfb2a1742dae8dca0d4ee0b1d94b783905bd4b5e41427a4b46edd10ba2abe79179009019ea9036
7
+ data.tar.gz: 95c7eec2ba0f44d66bcb805aa0cae371614aad3fe70908d5bdffdac5395aed33a7bd733197665723258f32bdfac00e272bb45f756619eea2553e9f5efc47650e
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.0.1
1
+ 2.1.0.pre1
@@ -20,7 +20,7 @@
20
20
 
21
21
  if(form.attr('enctype') == 'multipart/form-data') {
22
22
  if(form.ajaxSubmit) {
23
- options = $.extend(options, {preamble: "<textarea>", postamble: '</textarea>', fix_quotes: true, content_type: 'text/html'});
23
+ options = $.extend(options, {preamble: "<textarea>", postamble: '</textarea>', content_type: 'text/html'});
24
24
  var roptions = form.hjq('buildRequestData', options);
25
25
 
26
26
  if(!roptions) return false;
@@ -24,7 +24,7 @@ if(!RegExp.escape) {
24
24
  var me = $(this).parent().parent();
25
25
  var top = me.parent();
26
26
  var template = top.children("li.input-many-template");
27
- var clone = template.clone(true).removeClass("input-many-template");
27
+ var clone = template.clone().removeClass("input-many-template");
28
28
  var attrs = top.data('rapid')['input-many'];
29
29
 
30
30
  // length-2 because ignore the template li and the empty li
@@ -38,28 +38,15 @@ if(!RegExp.escape) {
38
38
  clone.find(".remove-item:not([disabled])").not(clone.find(".input-many .remove-item")).click(methods.removeOne);
39
39
  clone.find(".add-item:not([disabled])").not(clone.find(".input-many .add-item")).click(methods.addOne);
40
40
 
41
- // update id & name
42
- clone.find("*").each(function() {
43
- name_updater.call(this);
44
- });
45
- name_updater.call(clone.get(0));
46
-
47
41
  // do the add with anim
48
42
  clone.css("display", "none").insertAfter(me).hjq('show', attrs['show']);
49
43
 
44
+ top.hjq_input_many('updateNames');
45
+ top.hjq_input_many('updateVisibility');
46
+
50
47
  // initialize subelements
51
48
  me.next().hjq();
52
49
 
53
- // visibility
54
- if(me.hasClass("empty")) {
55
- me.addClass("hidden");
56
- me.find("input.empty-input").attr("disabled", true);
57
- } else {
58
- // now that we've added an element after us, we should only have a '-' button
59
- me.children("div.buttons").children("button.remove-item").removeClass("hidden");
60
- me.children("div.buttons").children("button.add-item").addClass("hidden");
61
- }
62
-
63
50
  me.hjq('createFunction', attrs.add_hook).call(me.get(0));
64
51
  clone.trigger('rapid:add');
65
52
  clone.trigger('rapid:change');
@@ -84,45 +71,61 @@ if(!RegExp.escape) {
84
71
  return false;
85
72
  }
86
73
 
87
- // rename everybody from me onwards
88
- var i=methods.getIndex.call(me.get(0))
89
- var n=me.next();
90
- for(; n.length>0; i+=1, n=n.next()) {
74
+ // remove with animation
75
+ me.hjq('hideAndRemove', attrs['hide']);
76
+
77
+ top.hjq_input_many('updateNames');
78
+ top.hjq_input_many('updateVisibility');
79
+
80
+ top.trigger('rapid:change');
81
+
82
+ return false; //prevent bubbling
83
+ },
84
+
85
+ updateNames: function() {
86
+ var top = $(this);
87
+ var attrs = top.data('rapid')['input-many'];
88
+
89
+ var n = top.children("li:not(.input-many-template):not(.empty):first");
90
+ for(var i = 0; n.length > 0; i++, n = n.next()) {
91
91
  var name_updater = methods.getNameUpdater.call(top, i, attrs['prefix']);
92
92
  n.find("*").each(function() {
93
93
  name_updater.call(this);
94
94
  });
95
95
  name_updater.call(n.get(0));
96
96
  }
97
+ },
97
98
 
98
- // adjust +/- buttons on the button element as appropriate
99
- var last=top.children("li:last");
100
- if(last.get(0)==me.get(0)) {
101
- last = last.prev();
99
+ // show/hide +/- buttons and empty
100
+ updateVisibility: function() {
101
+ var top = $(this);
102
+ var attrs = top.data('rapid')['input-many'];
103
+
104
+ var buttonsDivs = top.children("li:not(.input-many-template):not(.empty)").children("div.buttons");
105
+ for (var i = 0; i < buttonsDivs.length; i++) {
106
+ if (buttonsDivs.length - 1 < (attrs['minimum'] || 0))
107
+ $(buttonsDivs[i]).children("button.remove-item").addClass("hidden");
108
+ else
109
+ $(buttonsDivs[i]).children("button.remove-item").removeClass("hidden");
110
+ if (i < buttonsDivs.length - 1)
111
+ $(buttonsDivs[i]).children("button.add-item").addClass("hidden");
112
+ else
113
+ $(buttonsDivs[i]).children("button.add-item").removeClass("hidden");
102
114
  }
103
115
 
104
- if(last.hasClass("empty")) {
105
- last.removeClass("hidden");
106
- last.find("input.empty-input").removeAttr("disabled");
116
+ var empty = top.children("li.empty");
117
+ if (buttonsDivs.length == 0) {
118
+ empty.removeClass("hidden");
119
+ empty.find("input.empty-input").removeAttr("disabled");
107
120
  } else {
108
- // if we've reached the minimum, we don't want to add the '-' button
109
- if(top.children().length-3 <= (attrs['minimum']||0)) {
110
- last.children("div.buttons").children("button.remove-item").addClass("hidden");
111
- } else {
112
- last.children("div.buttons").children("button.remove-item").removeClass("hidden");
113
- }
114
- last.children("div.buttons").children("button.add-item").removeClass("hidden");
121
+ empty.addClass("hidden");
122
+ empty.find("input.empty-input").attr("disabled", true);
115
123
  }
116
124
 
117
- // remove with animation
118
- me.hjq('hideAndRemove', attrs['hide']);
119
-
120
- top.trigger('rapid:change');
121
-
122
- return false; //prevent bubbling
125
+ return top;
123
126
  },
124
127
 
125
- // given this==the input-many, returns a lambda that updates the name & id for an element
128
+ // given this==the input-many, returns a lambda that updates the name, for & id for an element
126
129
  getNameUpdater: function(new_index, name_prefix) {
127
130
  var id_prefix = name_prefix.replace(/\[/g, "_").replace(/\]/g, "");
128
131
  var name_re = RegExp("^" + RegExp.escape(name_prefix)+ "\[\-?[0-9]+\]");
@@ -136,6 +139,10 @@ if(!RegExp.escape) {
136
139
  if(this.name) {
137
140
  this.name = this.name.replace(name_re, name_sub);
138
141
  }
142
+ if ($(this).attr('for')) {
143
+ var new_for = $(this).attr('for').replace(id_re, id_sub);
144
+ $(this).attr('for', new_for);
145
+ }
139
146
  if (id_prefix==this.id.slice(0, id_prefix.length)) {
140
147
  this.id = this.id.replace(id_re, id_sub);
141
148
  } else {
@@ -236,7 +236,6 @@
236
236
  }
237
237
  }
238
238
 
239
- result.context = this;
240
239
  result.type = o.type || 'GET';
241
240
  result.data = {};
242
241
  /* These are now the defaults, so we don't need to send
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hobo_jquery
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
5
- prerelease:
4
+ version: 2.1.0.pre1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Bryan Larsen
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-06-23 00:00:00.000000000 Z
11
+ date: 2013-12-18 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: jquery-rails
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,19 +27,17 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: hobo_rapid
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - '='
36
32
  - !ruby/object:Gem::Version
37
- version: 2.0.1
33
+ version: 2.1.0.pre1
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - '='
44
39
  - !ruby/object:Gem::Version
45
- version: 2.0.1
40
+ version: 2.1.0.pre1
46
41
  description: JQuery support for Hobo
47
42
  email: bryan@larsen.st
48
43
  executables: []
@@ -79,6 +74,7 @@ files:
79
74
  - vendor/assets/stylesheets/hobo_jquery.css
80
75
  homepage: http://hobocentral.net
81
76
  licenses: []
77
+ metadata: {}
82
78
  post_install_message:
83
79
  rdoc_options:
84
80
  - --charset=UTF-8
@@ -87,22 +83,19 @@ require_paths:
87
83
  - vendor
88
84
  - taglibs
89
85
  required_ruby_version: !ruby/object:Gem::Requirement
90
- none: false
91
86
  requirements:
92
87
  - - '>='
93
88
  - !ruby/object:Gem::Version
94
89
  version: '0'
95
90
  required_rubygems_version: !ruby/object:Gem::Requirement
96
- none: false
97
91
  requirements:
98
92
  - - '>='
99
93
  - !ruby/object:Gem::Version
100
94
  version: 1.3.6
101
95
  requirements: []
102
96
  rubyforge_project:
103
- rubygems_version: 1.8.25
97
+ rubygems_version: 2.1.11
104
98
  signing_key:
105
- specification_version: 3
99
+ specification_version: 4
106
100
  summary: JQuery support for Hobo
107
101
  test_files: []
108
- has_rdoc: