x-editable-rails 1.5.3 → 1.5.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: 749654c2631947399d2e759d6eae397a31da4f47
4
- data.tar.gz: 0c4ac3d4b3b2bb21aff16b65e1655d9fe5d3b0f1
3
+ metadata.gz: 147a7545378c08302b0aa3078eefb5b34f8cfb36
4
+ data.tar.gz: f93643c63b673cb323982194ca905a0eec38a90c
5
5
  SHA512:
6
- metadata.gz: 9d53f30f5c112a0cac95819fc15c135869d02d9f608ee1ae01438c1bca210ca324ec861b18c45bd1e9c5d4c87b752864180e40d6c849a5266a46fe4723477b6e
7
- data.tar.gz: ed081d33f6683905d7743fdcb92196f8b00bb2ce44fc9fc7f0fdd30552cfde3276d7dd42e58f2184ec77df4b43f2282d9e9161d9e658999f0629757a05a2bef5
6
+ metadata.gz: 09d634d226d06a25c1ba9a13977da472744b42674969f0172fc2a14e38b20182551c15737fc996b32c92c65d0a5e3f7ddcfd04da311e31ec0243590f15bb3c9e
7
+ data.tar.gz: 0b3a64951964c9f5451ac7f5deb3954a4852657151f541eca258f9cde0b1a924295bd767d3da2e771ffd717248f4531bd0d3c6a17ccf58c85775df0376fa4a9e
data/README.md CHANGED
@@ -120,7 +120,7 @@ classes = { "Active" => "label-success", "Disabled" => "label-default" }
120
120
  editable @model, :enabled, source: source, classes: classes, class: "label"
121
121
  ```
122
122
 
123
- * **nested** - Name of a nested attributes (such as [gobalize](https://github.com/globalize/globalize)'s `translations`)
123
+ * **nested** - Name of a nested attributes (such as [globalize](https://github.com/globalize/globalize)'s `translations`)
124
124
  * **nid** - ID of the nested attribute
125
125
 
126
126
  ```ruby
@@ -1,7 +1,7 @@
1
1
  module X
2
2
  module Editable
3
3
  module Rails
4
- VERSION = "1.5.3"
4
+ VERSION = "1.5.4"
5
5
  end
6
6
  end
7
- end
7
+ end
@@ -1,3 +1,5 @@
1
+ require 'base64'
2
+
1
3
  module X
2
4
  module Editable
3
5
  module Rails
@@ -16,63 +18,69 @@ module X
16
18
  # - enumerable shorthand ['Yes', 'No', 'Maybe'] becomes { 'Yes' => 'Yes', 'No' => 'No', 'Maybe' => 'Maybe' }
17
19
  # classes: a Hash of classes to add based on the value (same format and shorthands as source)
18
20
  # value: override the object's value
19
- #
21
+ #
20
22
  def editable(object, method, options = {})
21
23
  options = Configuration.method_options_for(object, method).deep_merge(options).with_indifferent_access
22
24
  # merge data attributes for backwards-compatibility
23
25
  options.merge! options.delete(:data){ Hash.new }
24
-
26
+
25
27
  url = options.delete(:url){ polymorphic_path(object) }
26
28
  object = object.last if object.kind_of?(Array)
27
29
  value = options.delete(:value){ object.send(method) }
28
30
  source = options[:source] ? format_source(options.delete(:source), value) : default_source_for(value)
29
31
  classes = format_source(options.delete(:classes), value)
30
32
  error = options.delete(:e)
31
-
33
+ html_options = options.delete(:html){ Hash.new }
34
+
32
35
  if xeditable?(object)
33
- model = object.class.name.split('::').last.underscore
36
+ model = object.model_name.to_s.underscore
34
37
  nid = options.delete(:nid)
35
38
  nested = options.delete(:nested)
36
39
  title = options.delete(:title) do
37
40
  klass = nested ? object.class.const_get(nested.to_s.singularize.capitalize) : object.class
38
41
  klass.human_attribute_name(method)
39
42
  end
40
-
43
+
41
44
  output_value = output_value_for(value)
42
45
  css_list = options.delete(:class).to_s.split(/\s+/).unshift('editable')
43
46
  css_list << classes[output_value] if classes
44
-
47
+ type = options.delete(:type){ default_type_for(value) }
45
48
  css = css_list.compact.uniq.join(' ')
46
49
  tag = options.delete(:tag){ 'span' }
47
50
  placeholder = options.delete(:placeholder){ title }
48
-
51
+
49
52
  # any remaining options become data attributes
50
53
  data = {
51
- type: options.delete(:type){ default_type_for(value) },
52
- model: model,
53
- name: method,
54
- value: output_value,
55
- placeholder: placeholder,
56
- classes: classes,
57
- source: source,
58
- url: url,
59
- nested: nested,
54
+ type: type,
55
+ model: model,
56
+ name: method,
57
+ value: ( type == 'wysihtml5' ? Base64.encode64(output_value) : output_value ),
58
+ placeholder: placeholder,
59
+ classes: classes,
60
+ source: source,
61
+ url: url,
62
+ nested: nested,
60
63
  nid: nid
61
64
  }.merge(options)
62
-
65
+
63
66
  data.reject!{|_, value| value.nil?}
64
-
65
- content_tag tag, class: css, title: title, data: data do
66
- safe_join(source_values_for(value.try(:html_safe), source), tag(:br)) unless %w(select checklist).include? data[:type]
67
+
68
+ html_options.update({
69
+ class: css,
70
+ title: title,
71
+ data: data
72
+ })
73
+
74
+ content_tag tag, html_options do
75
+ safe_join(source_values_for(value, source), tag(:br)) unless %w(select checklist).include? data[:type]
67
76
  end
68
77
  else
69
- value = value.try(:html_safe) unless value.kind_of?(TrueClass) or value.kind_of?(FalseClass)
70
78
  error || safe_join(source_values_for(value, source), tag(:br))
71
79
  end
72
80
  end
73
-
81
+
74
82
  private
75
-
83
+
76
84
  def output_value_for(value)
77
85
  value = case value
78
86
  when TrueClass
@@ -86,22 +94,22 @@ module X
86
94
  else
87
95
  value.to_s
88
96
  end
89
-
97
+
90
98
  value
91
99
  end
92
-
100
+
93
101
  def source_values_for(value, source = nil)
94
102
  source ||= default_source_for value
95
-
103
+
96
104
  values = Array.wrap(value)
97
-
105
+
98
106
  if source && ( source.first.is_a?(String) || source.kind_of?(Hash) )
99
107
  values.map{|item| source[output_value_for item]}
100
108
  else
101
109
  values
102
110
  end
103
111
  end
104
-
112
+
105
113
  def default_type_for(value)
106
114
  case value
107
115
  when TrueClass, FalseClass
@@ -112,14 +120,14 @@ module X
112
120
  'text'
113
121
  end
114
122
  end
115
-
123
+
116
124
  def default_source_for(value)
117
125
  case value
118
126
  when TrueClass, FalseClass
119
127
  { '1' => 'Yes', '0' => 'No' }
120
128
  end
121
129
  end
122
-
130
+
123
131
  # helper method that take some shorthand source definitions and reformats them
124
132
  def format_source(source, value)
125
133
  formatted_source = case value
@@ -134,10 +142,10 @@ module X
134
142
  source
135
143
  end
136
144
  end
137
-
145
+
138
146
  formatted_source || source
139
147
  end
140
-
148
+
141
149
  end
142
150
  end
143
151
  end
@@ -72,9 +72,12 @@ $(function(){
72
72
 
73
73
  return deferred.promise();
74
74
  },
75
+
76
+ valueIsEncoded: true,
75
77
 
76
78
  value2html: function(value, element) {
77
79
  $(element).html(value);
80
+ this.valueIsEncoded = false;
78
81
  },
79
82
 
80
83
  html2value: function(html) {
@@ -82,8 +85,13 @@ $(function(){
82
85
  },
83
86
 
84
87
  value2input: function(value) {
88
+ value = (this.valueIsEncoded ? this.base65decode(value) : value);
85
89
  this.$input.data("wysihtml5").editor.setValue(value, true);
86
- },
90
+ },
91
+
92
+ base65decode: function(value) {
93
+ return decodeURIComponent( escape( atob( value.replace(/\s/g, ''))));
94
+ },
87
95
 
88
96
  activate: function() {
89
97
  this.$input.data("wysihtml5").editor.focus();
@@ -1,4 +1,4 @@
1
- jQuery ($) ->
1
+ unless EditableForm
2
2
  EditableForm = $.fn.editableform.Constructor
3
3
  EditableForm.prototype.saveWithUrlHook = (value) ->
4
4
  originalUrl = @options.url
@@ -6,46 +6,46 @@ jQuery ($) ->
6
6
  nestedName = @options.nested
7
7
  nestedId = @options.nid
8
8
  nestedLocale = @options.locale
9
-
9
+
10
10
  @options.url = (params) =>
11
11
  if typeof originalUrl == 'function'
12
12
  originalUrl.call(@options.scope, params)
13
13
  else if originalUrl? && @options.send != 'never'
14
14
  myName = params.name
15
15
  myValue = params.value
16
-
16
+
17
17
  # if there are no values in a list, add a blank value so Rails knows all values were removed
18
18
  if Object.prototype.toString.call(params.value) == '[object Array]' && params.value.length == 0
19
19
  params.value.push("")
20
-
20
+
21
21
  obj = {}
22
-
22
+
23
23
  if nestedName
24
24
  nested = {}
25
25
  nested[myName] = myValue
26
26
  nested['id'] = nestedId
27
-
27
+
28
28
  if nestedLocale
29
29
  nested['locale'] = nestedLocale
30
-
30
+
31
31
  obj[nestedName + '_attributes'] = nested
32
32
  else
33
33
  obj[myName] = myValue
34
-
34
+
35
35
  params[model] = obj
36
-
36
+
37
37
  delete params.name
38
38
  delete params.value
39
39
  delete params.pk
40
-
40
+
41
41
  $.ajax($.extend({
42
42
  url: originalUrl
43
43
  data: params
44
44
  type: 'PUT'
45
45
  dataType: 'json'
46
46
  }, @options.ajaxOptions))
47
-
47
+
48
48
  @saveWithoutUrlHook(value)
49
-
49
+
50
50
  EditableForm.prototype.saveWithoutUrlHook = EditableForm.prototype.save
51
51
  EditableForm.prototype.save = EditableForm.prototype.saveWithUrlHook
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: x-editable-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.3
4
+ version: 1.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jiri Kolarik
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-11 00:00:00.000000000 Z
11
+ date: 2015-09-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -86,7 +86,7 @@ files:
86
86
  - vendor/assets/stylesheets/editable/bootstrap-editable.scss
87
87
  - vendor/assets/stylesheets/editable/bootstrap2-editable.scss
88
88
  - vendor/assets/stylesheets/editable/inputs-ext/address.css
89
- - vendor/assets/stylesheets/editable/inputs-ext/bootstrap-typehead.css
89
+ - vendor/assets/stylesheets/editable/inputs-ext/bootstrap-typeahead.css
90
90
  - vendor/assets/stylesheets/editable/inputs-ext/bootstrap-wysihtml5.css
91
91
  - vendor/assets/stylesheets/editable/inputs-ext/wysiwyg-color.css
92
92
  - vendor/assets/stylesheets/editable/jquery-editable.scss
@@ -112,7 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
112
  version: '0'
113
113
  requirements: []
114
114
  rubyforge_project:
115
- rubygems_version: 2.2.2
115
+ rubygems_version: 2.4.8
116
116
  signing_key:
117
117
  specification_version: 4
118
118
  summary: X-editable for Rails