activeadmin-mongoid-localize 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -22,8 +22,14 @@ Really simple:
22
22
 
23
23
  f.inputs do
24
24
  f.localized_input :title
25
+
26
+ # and ckeditor too!
27
+ f.localized_input :content, as: :ckeditor
25
28
  end
26
29
 
30
+ CKEditor is tested & working with my fork: https://github.com/glebtv/ckeditor
31
+ ActiveAdmin-mongoid is tested & working with my fork: https://github.com/rs-pro/activeadmin-mongoid
32
+
27
33
  ## Contributing
28
34
 
29
35
  1. Fork it
@@ -36,4 +42,4 @@ Really simple:
36
42
 
37
43
  This gem uses free flags icons from famfamfam -- http://www.famfamfam.com/lab/icons/flags/
38
44
 
39
- MIT License
45
+ MIT License
@@ -16,4 +16,7 @@ Gem::Specification.new do |gem|
16
16
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
18
  gem.require_paths = ["lib"]
19
+
20
+ gem.add_runtime_dependency(%q<mongoid>, [">= 3.0.0"])
21
+ gem.add_runtime_dependency(%q<formtastic>)
19
22
  end
@@ -1,59 +1,13 @@
1
1
  require "activeadmin-mongoid-localize/version"
2
2
 
3
+ require 'activeadmin-mongoid-localize/formtastic'
4
+
3
5
  module ActiveAdmin
4
6
  module Mongoid
5
- class Hashit
6
- def initialize(hash)
7
- ::I18n.available_locales.each do |k|
8
- ## create the getter that returns the instance variable
9
- self.class.send(:define_method, k, proc{self.instance_variable_get("@#{k}")})
10
-
11
- ## create the setter that sets the instance variable
12
- self.class.send(:define_method, "#{k}=", proc{|v| self.instance_variable_set("@#{k}", v)})
13
-
14
- ## create and initialize an instance variable for this key/value pair
15
- self.instance_variable_set("@#{k}", '')
16
- end
17
-
18
- hash.each do |k,v|
19
- ## create and initialize an instance variable for this key/value pair
20
- self.instance_variable_set("@#{k}", v)
21
- end
22
- end
23
- end
24
-
25
-
26
7
  module Localize
27
- # Your code goes here...
28
- class Engine < Rails::Engine
29
- end
30
- end
31
- end
32
- end
33
-
34
- module Formtastic
35
- class FormBuilder
36
- def localized_input(name, args = {})
8
+ autoload :Field, 'activeadmin-mongoid-localize/field'
37
9
 
38
- t = self.object.send("#{name}_translations")
39
- tv = ActiveAdmin::Mongoid::Hashit.new(t)
40
-
41
- self.semantic_fields_for "#{name}_translations", tv do |lf|
42
- ::I18n.available_locales.each do |locale|
43
- args[:value] = (t.nil? || t[locale.to_s].nil?) ? '' : t[locale.to_s]
44
- # locale.to_s
45
-
46
- label = CGI.escapeHTML(self.object.class.human_attribute_name(name)) + " #{template.image_tag "aml/flags/#{locale.to_s}.png", alt: locale.to_s, title: locale.to_s}"
47
- if args[:as] == :ckeditor
48
- form_buffers.last << "<h3 style='margin: 10px 0px 0px 10px;'>#{label}</h3>".html_safe
49
- args[:label] = false
50
- else
51
- args[:label] = label.html_safe
52
- end
53
-
54
- form_buffers.last << lf.input(locale, args)
55
- form_buffers.last
56
- end
10
+ class Engine < Rails::Engine
57
11
  end
58
12
  end
59
13
  end
@@ -0,0 +1,83 @@
1
+ module ActiveAdmin
2
+ module Mongoid
3
+ module Localize
4
+
5
+ class Field
6
+ extend ActiveModel::Naming
7
+
8
+ @@validators = {}
9
+ @@model = nil
10
+
11
+ def initialize(obj, name)
12
+ @obj = obj
13
+ @@model = obj.class
14
+ @field = name
15
+ @@validators[@field] = @obj.class.validators_on(name.to_sym)
16
+ @required = @@validators[@field].map(&:class).map(&:name).include? 'Mongoid::Validations::PresenceValidator'
17
+ @errors = ActiveModel::Errors.new(self)
18
+ hash = @obj.send("#{name}_translations")
19
+
20
+ ::I18n.available_locales.each do |k|
21
+ ## create the getter that returns the instance variable
22
+ self.class.send(:define_method, k, proc{self.instance_variable_get("@#{k}")})
23
+
24
+ ## create the setter that sets the instance variable
25
+ self.class.send(:define_method, "#{k}=", proc{|v| self.instance_variable_set("@#{k}", v)})
26
+
27
+ ## create and initialize an instance variable for this key/value pair
28
+ self.instance_variable_set("@#{k}", '')
29
+ end
30
+
31
+ hash.each do |k,v|
32
+ ## create and initialize an instance variable for this key/value pair
33
+ self.instance_variable_set("@#{k}", v)
34
+ end
35
+
36
+ def @obj.before_validation
37
+ validate!
38
+ end
39
+ end
40
+
41
+ def required?
42
+ @required
43
+ end
44
+
45
+ def errors
46
+ validate! if @obj.errors.any?
47
+ @errors
48
+ end
49
+
50
+ def validate!
51
+ ::I18n.available_locales.each do |k|
52
+ if @required && send(k).blank?
53
+ @errors.add(k, I18n.t('errors.messages.blank'))
54
+ end
55
+ end
56
+ end
57
+
58
+ def column_for_attribute(name)
59
+ # we only have one column for all locales
60
+ @obj.fields[@field]
61
+ end
62
+
63
+ def method_missing(*args)
64
+ @obj.send(*args)
65
+ end
66
+
67
+ def respond_to?(method_name, include_private = false)
68
+ @obj.respond_to?(method_name, include_private)
69
+ end
70
+
71
+ def self.validators_on(attributized_method_name)
72
+ @@validators[attributized_method_name].nil? ? [] : @@validators[attributized_method_name]
73
+ end
74
+
75
+ def self.human_attribute_name(*args)
76
+ @@model.send(:human_attribute_name, *args)
77
+ end
78
+ end
79
+
80
+
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,27 @@
1
+ module Formtastic
2
+ class FormBuilder
3
+ def localized_input(name, args = {})
4
+
5
+ t = self.object.send("#{name}_translations")
6
+ field = ActiveAdmin::Mongoid::Localize::Field.new(self.object, name)
7
+
8
+ self.semantic_fields_for "#{name}_translations", field do |lf|
9
+ ::I18n.available_locales.each do |locale|
10
+ args[:value] = (t.nil? || t[locale.to_s].nil?) ? '' : t[locale.to_s]
11
+
12
+ label = CGI.escapeHTML(self.object.class.human_attribute_name(name)) + " #{template.image_tag "aml/flags/#{locale.to_s}.png", alt: locale.to_s, title: locale.to_s}"
13
+ if args[:as] == :ckeditor
14
+ form_buffers.last << "<h3 style='margin: 10px 0px 0px 10px;'>#{label}</h3>#{'<abbr>*</abbr>' if field.required?}".html_safe
15
+ args[:label] = false
16
+ else
17
+ args[:label] = label.html_safe
18
+ end
19
+ args[:required] = field.required?
20
+
21
+ form_buffers.last << lf.input(locale, args)
22
+ form_buffers.last
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -1,7 +1,7 @@
1
1
  module ActiveAdmin
2
2
  module Mongoid
3
3
  module Localize
4
- VERSION = "0.0.2"
4
+ VERSION = "0.1.0"
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activeadmin-mongoid-localize
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,40 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-07 00:00:00.000000000 Z
13
- dependencies: []
12
+ date: 2013-02-08 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: mongoid
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 3.0.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 3.0.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: formtastic
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
14
46
  description: Easily edit mongoid localized fields in ActiveAdmin (all locales on one
15
47
  page)
16
48
  email:
@@ -274,6 +306,8 @@ files:
274
306
  - app/assets/images/aml/flags/zm.png
275
307
  - app/assets/images/aml/flags/zw.png
276
308
  - lib/activeadmin-mongoid-localize.rb
309
+ - lib/activeadmin-mongoid-localize/field.rb
310
+ - lib/activeadmin-mongoid-localize/formtastic.rb
277
311
  - lib/activeadmin-mongoid-localize/version.rb
278
312
  homepage: https://github.com/rs-pro/activeadmin-mongoid-localize
279
313
  licenses: []
@@ -295,9 +329,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
295
329
  version: '0'
296
330
  requirements: []
297
331
  rubyforge_project:
298
- rubygems_version: 1.8.22
332
+ rubygems_version: 1.8.24
299
333
  signing_key:
300
334
  specification_version: 3
301
335
  summary: Mongoid localized fields for active admin
302
336
  test_files: []
303
- has_rdoc: