activeadmin-localize 0.1.0

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.
Files changed (279) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +84 -0
  8. data/Rakefile +1 -0
  9. data/activeadmin-localize.gemspec +23 -0
  10. data/app/assets/images/activeadmin-localize/ad.svg +151 -0
  11. data/app/assets/images/activeadmin-localize/ae.svg +6 -0
  12. data/app/assets/images/activeadmin-localize/af.svg +83 -0
  13. data/app/assets/images/activeadmin-localize/ag.svg +15 -0
  14. data/app/assets/images/activeadmin-localize/ai.svg +767 -0
  15. data/app/assets/images/activeadmin-localize/al.svg +5 -0
  16. data/app/assets/images/activeadmin-localize/am.svg +5 -0
  17. data/app/assets/images/activeadmin-localize/ao.svg +13 -0
  18. data/app/assets/images/activeadmin-localize/aq.svg +6 -0
  19. data/app/assets/images/activeadmin-localize/ar.svg +32 -0
  20. data/app/assets/images/activeadmin-localize/as.svg +33 -0
  21. data/app/assets/images/activeadmin-localize/at.svg +6 -0
  22. data/app/assets/images/activeadmin-localize/au.svg +9 -0
  23. data/app/assets/images/activeadmin-localize/aw.svg +186 -0
  24. data/app/assets/images/activeadmin-localize/ax.svg +18 -0
  25. data/app/assets/images/activeadmin-localize/az.svg +8 -0
  26. data/app/assets/images/activeadmin-localize/ba.svg +12 -0
  27. data/app/assets/images/activeadmin-localize/bb.svg +6 -0
  28. data/app/assets/images/activeadmin-localize/bd.svg +4 -0
  29. data/app/assets/images/activeadmin-localize/be.svg +7 -0
  30. data/app/assets/images/activeadmin-localize/bf.svg +7 -0
  31. data/app/assets/images/activeadmin-localize/bg.svg +7 -0
  32. data/app/assets/images/activeadmin-localize/bh.svg +11 -0
  33. data/app/assets/images/activeadmin-localize/bi.svg +15 -0
  34. data/app/assets/images/activeadmin-localize/bj.svg +14 -0
  35. data/app/assets/images/activeadmin-localize/bl.svg +7 -0
  36. data/app/assets/images/activeadmin-localize/bm.svg +99 -0
  37. data/app/assets/images/activeadmin-localize/bn.svg +36 -0
  38. data/app/assets/images/activeadmin-localize/bo.svg +686 -0
  39. data/app/assets/images/activeadmin-localize/bq.svg +5 -0
  40. data/app/assets/images/activeadmin-localize/br.svg +45 -0
  41. data/app/assets/images/activeadmin-localize/bs.svg +13 -0
  42. data/app/assets/images/activeadmin-localize/bt.svg +91 -0
  43. data/app/assets/images/activeadmin-localize/bv.svg +13 -0
  44. data/app/assets/images/activeadmin-localize/bw.svg +7 -0
  45. data/app/assets/images/activeadmin-localize/by.svg +61 -0
  46. data/app/assets/images/activeadmin-localize/bz.svg +166 -0
  47. data/app/assets/images/activeadmin-localize/ca.svg +6 -0
  48. data/app/assets/images/activeadmin-localize/cc.svg +19 -0
  49. data/app/assets/images/activeadmin-localize/cd.svg +5 -0
  50. data/app/assets/images/activeadmin-localize/cf.svg +15 -0
  51. data/app/assets/images/activeadmin-localize/cg.svg +12 -0
  52. data/app/assets/images/activeadmin-localize/ch.svg +9 -0
  53. data/app/assets/images/activeadmin-localize/ci.svg +7 -0
  54. data/app/assets/images/activeadmin-localize/ck.svg +9 -0
  55. data/app/assets/images/activeadmin-localize/cl.svg +13 -0
  56. data/app/assets/images/activeadmin-localize/cm.svg +15 -0
  57. data/app/assets/images/activeadmin-localize/cn.svg +11 -0
  58. data/app/assets/images/activeadmin-localize/co.svg +7 -0
  59. data/app/assets/images/activeadmin-localize/cr.svg +7 -0
  60. data/app/assets/images/activeadmin-localize/cu.svg +13 -0
  61. data/app/assets/images/activeadmin-localize/cv.svg +13 -0
  62. data/app/assets/images/activeadmin-localize/cw.svg +14 -0
  63. data/app/assets/images/activeadmin-localize/cx.svg +15 -0
  64. data/app/assets/images/activeadmin-localize/cy.svg +6 -0
  65. data/app/assets/images/activeadmin-localize/cz.svg +12 -0
  66. data/app/assets/images/activeadmin-localize/de.svg +5 -0
  67. data/app/assets/images/activeadmin-localize/dj.svg +13 -0
  68. data/app/assets/images/activeadmin-localize/dk.svg +5 -0
  69. data/app/assets/images/activeadmin-localize/dm.svg +152 -0
  70. data/app/assets/images/activeadmin-localize/do.svg +6745 -0
  71. data/app/assets/images/activeadmin-localize/dz.svg +5 -0
  72. data/app/assets/images/activeadmin-localize/ec.svg +143 -0
  73. data/app/assets/images/activeadmin-localize/ee.svg +7 -0
  74. data/app/assets/images/activeadmin-localize/eg.svg +38 -0
  75. data/app/assets/images/activeadmin-localize/eh.svg +15 -0
  76. data/app/assets/images/activeadmin-localize/en.svg +15 -0
  77. data/app/assets/images/activeadmin-localize/er.svg +8 -0
  78. data/app/assets/images/activeadmin-localize/es-ct.svg +4 -0
  79. data/app/assets/images/activeadmin-localize/es.svg +581 -0
  80. data/app/assets/images/activeadmin-localize/et.svg +14 -0
  81. data/app/assets/images/activeadmin-localize/eu.svg +28 -0
  82. data/app/assets/images/activeadmin-localize/fi.svg +5 -0
  83. data/app/assets/images/activeadmin-localize/fj.svg +126 -0
  84. data/app/assets/images/activeadmin-localize/fk.svg +90 -0
  85. data/app/assets/images/activeadmin-localize/fm.svg +11 -0
  86. data/app/assets/images/activeadmin-localize/fo.svg +12 -0
  87. data/app/assets/images/activeadmin-localize/fr.svg +7 -0
  88. data/app/assets/images/activeadmin-localize/ga.svg +7 -0
  89. data/app/assets/images/activeadmin-localize/gb-eng.svg +5 -0
  90. data/app/assets/images/activeadmin-localize/gb-nir.svg +158 -0
  91. data/app/assets/images/activeadmin-localize/gb-sct.svg +4 -0
  92. data/app/assets/images/activeadmin-localize/gb-wls.svg +9 -0
  93. data/app/assets/images/activeadmin-localize/gb.svg +15 -0
  94. data/app/assets/images/activeadmin-localize/gd.svg +27 -0
  95. data/app/assets/images/activeadmin-localize/ge.svg +6 -0
  96. data/app/assets/images/activeadmin-localize/gf.svg +5 -0
  97. data/app/assets/images/activeadmin-localize/gg.svg +9 -0
  98. data/app/assets/images/activeadmin-localize/gh.svg +6 -0
  99. data/app/assets/images/activeadmin-localize/gi.svg +33 -0
  100. data/app/assets/images/activeadmin-localize/gl.svg +4 -0
  101. data/app/assets/images/activeadmin-localize/gm.svg +14 -0
  102. data/app/assets/images/activeadmin-localize/gn.svg +7 -0
  103. data/app/assets/images/activeadmin-localize/gp.svg +7 -0
  104. data/app/assets/images/activeadmin-localize/gq.svg +31 -0
  105. data/app/assets/images/activeadmin-localize/gr.svg +22 -0
  106. data/app/assets/images/activeadmin-localize/gs.svg +205 -0
  107. data/app/assets/images/activeadmin-localize/gt.svg +204 -0
  108. data/app/assets/images/activeadmin-localize/gu.svg +39 -0
  109. data/app/assets/images/activeadmin-localize/gw.svg +13 -0
  110. data/app/assets/images/activeadmin-localize/gy.svg +9 -0
  111. data/app/assets/images/activeadmin-localize/hk.svg +34 -0
  112. data/app/assets/images/activeadmin-localize/hm.svg +9 -0
  113. data/app/assets/images/activeadmin-localize/hn.svg +18 -0
  114. data/app/assets/images/activeadmin-localize/hr.svg +61 -0
  115. data/app/assets/images/activeadmin-localize/ht.svg +128 -0
  116. data/app/assets/images/activeadmin-localize/hu.svg +7 -0
  117. data/app/assets/images/activeadmin-localize/id.svg +6 -0
  118. data/app/assets/images/activeadmin-localize/ie.svg +7 -0
  119. data/app/assets/images/activeadmin-localize/il.svg +14 -0
  120. data/app/assets/images/activeadmin-localize/im.svg +36 -0
  121. data/app/assets/images/activeadmin-localize/in.svg +25 -0
  122. data/app/assets/images/activeadmin-localize/io.svg +152 -0
  123. data/app/assets/images/activeadmin-localize/iq.svg +10 -0
  124. data/app/assets/images/activeadmin-localize/ir.svg +223 -0
  125. data/app/assets/images/activeadmin-localize/is.svg +12 -0
  126. data/app/assets/images/activeadmin-localize/it.svg +7 -0
  127. data/app/assets/images/activeadmin-localize/je.svg +32 -0
  128. data/app/assets/images/activeadmin-localize/jm.svg +8 -0
  129. data/app/assets/images/activeadmin-localize/jo.svg +16 -0
  130. data/app/assets/images/activeadmin-localize/jp.svg +11 -0
  131. data/app/assets/images/activeadmin-localize/ke.svg +23 -0
  132. data/app/assets/images/activeadmin-localize/kg.svg +15 -0
  133. data/app/assets/images/activeadmin-localize/kh.svg +74 -0
  134. data/app/assets/images/activeadmin-localize/ki.svg +36 -0
  135. data/app/assets/images/activeadmin-localize/km.svg +16 -0
  136. data/app/assets/images/activeadmin-localize/kn.svg +14 -0
  137. data/app/assets/images/activeadmin-localize/kp.svg +15 -0
  138. data/app/assets/images/activeadmin-localize/kr.svg +24 -0
  139. data/app/assets/images/activeadmin-localize/kw.svg +13 -0
  140. data/app/assets/images/activeadmin-localize/ky.svg +65 -0
  141. data/app/assets/images/activeadmin-localize/kz.svg +23 -0
  142. data/app/assets/images/activeadmin-localize/la.svg +12 -0
  143. data/app/assets/images/activeadmin-localize/lb.svg +15 -0
  144. data/app/assets/images/activeadmin-localize/lc.svg +8 -0
  145. data/app/assets/images/activeadmin-localize/li.svg +43 -0
  146. data/app/assets/images/activeadmin-localize/lk.svg +22 -0
  147. data/app/assets/images/activeadmin-localize/lr.svg +14 -0
  148. data/app/assets/images/activeadmin-localize/ls.svg +8 -0
  149. data/app/assets/images/activeadmin-localize/lt.svg +7 -0
  150. data/app/assets/images/activeadmin-localize/lu.svg +5 -0
  151. data/app/assets/images/activeadmin-localize/lv.svg +6 -0
  152. data/app/assets/images/activeadmin-localize/ly.svg +13 -0
  153. data/app/assets/images/activeadmin-localize/ma.svg +4 -0
  154. data/app/assets/images/activeadmin-localize/mc.svg +6 -0
  155. data/app/assets/images/activeadmin-localize/md.svg +72 -0
  156. data/app/assets/images/activeadmin-localize/me.svg +118 -0
  157. data/app/assets/images/activeadmin-localize/mf.svg +7 -0
  158. data/app/assets/images/activeadmin-localize/mg.svg +7 -0
  159. data/app/assets/images/activeadmin-localize/mh.svg +7 -0
  160. data/app/assets/images/activeadmin-localize/mk.svg +5 -0
  161. data/app/assets/images/activeadmin-localize/ml.svg +7 -0
  162. data/app/assets/images/activeadmin-localize/mm.svg +16 -0
  163. data/app/assets/images/activeadmin-localize/mn.svg +13 -0
  164. data/app/assets/images/activeadmin-localize/mo.svg +9 -0
  165. data/app/assets/images/activeadmin-localize/mp.svg +88 -0
  166. data/app/assets/images/activeadmin-localize/mq.svg +7 -0
  167. data/app/assets/images/activeadmin-localize/mr.svg +13 -0
  168. data/app/assets/images/activeadmin-localize/ms.svg +39 -0
  169. data/app/assets/images/activeadmin-localize/mt.svg +49 -0
  170. data/app/assets/images/activeadmin-localize/mu.svg +8 -0
  171. data/app/assets/images/activeadmin-localize/mv.svg +6 -0
  172. data/app/assets/images/activeadmin-localize/mw.svg +12 -0
  173. data/app/assets/images/activeadmin-localize/mx.svg +385 -0
  174. data/app/assets/images/activeadmin-localize/my.svg +15 -0
  175. data/app/assets/images/activeadmin-localize/mz.svg +21 -0
  176. data/app/assets/images/activeadmin-localize/na.svg +18 -0
  177. data/app/assets/images/activeadmin-localize/nc.svg +7 -0
  178. data/app/assets/images/activeadmin-localize/ne.svg +6 -0
  179. data/app/assets/images/activeadmin-localize/nf.svg +9 -0
  180. data/app/assets/images/activeadmin-localize/ng.svg +6 -0
  181. data/app/assets/images/activeadmin-localize/ni.svg +133 -0
  182. data/app/assets/images/activeadmin-localize/nl.svg +7 -0
  183. data/app/assets/images/activeadmin-localize/no.svg +7 -0
  184. data/app/assets/images/activeadmin-localize/np.svg +14 -0
  185. data/app/assets/images/activeadmin-localize/nr.svg +12 -0
  186. data/app/assets/images/activeadmin-localize/nu.svg +26 -0
  187. data/app/assets/images/activeadmin-localize/nz.svg +41 -0
  188. data/app/assets/images/activeadmin-localize/om.svg +128 -0
  189. data/app/assets/images/activeadmin-localize/pa.svg +14 -0
  190. data/app/assets/images/activeadmin-localize/pe.svg +320 -0
  191. data/app/assets/images/activeadmin-localize/pf.svg +33 -0
  192. data/app/assets/images/activeadmin-localize/pg.svg +9 -0
  193. data/app/assets/images/activeadmin-localize/ph.svg +28 -0
  194. data/app/assets/images/activeadmin-localize/pk.svg +15 -0
  195. data/app/assets/images/activeadmin-localize/pl.svg +6 -0
  196. data/app/assets/images/activeadmin-localize/pm.svg +7 -0
  197. data/app/assets/images/activeadmin-localize/pn.svg +62 -0
  198. data/app/assets/images/activeadmin-localize/pr.svg +13 -0
  199. data/app/assets/images/activeadmin-localize/ps.svg +15 -0
  200. data/app/assets/images/activeadmin-localize/pt.svg +57 -0
  201. data/app/assets/images/activeadmin-localize/pw.svg +11 -0
  202. data/app/assets/images/activeadmin-localize/py.svg +157 -0
  203. data/app/assets/images/activeadmin-localize/qa.svg +4 -0
  204. data/app/assets/images/activeadmin-localize/re.svg +7 -0
  205. data/app/assets/images/activeadmin-localize/ro.svg +7 -0
  206. data/app/assets/images/activeadmin-localize/rs.svg +292 -0
  207. data/app/assets/images/activeadmin-localize/ru.svg +7 -0
  208. data/app/assets/images/activeadmin-localize/rw.svg +13 -0
  209. data/app/assets/images/activeadmin-localize/sa.svg +26 -0
  210. data/app/assets/images/activeadmin-localize/sb.svg +13 -0
  211. data/app/assets/images/activeadmin-localize/sc.svg +14 -0
  212. data/app/assets/images/activeadmin-localize/sd.svg +13 -0
  213. data/app/assets/images/activeadmin-localize/se.svg +16 -0
  214. data/app/assets/images/activeadmin-localize/sg.svg +13 -0
  215. data/app/assets/images/activeadmin-localize/sh.svg +76 -0
  216. data/app/assets/images/activeadmin-localize/si.svg +18 -0
  217. data/app/assets/images/activeadmin-localize/sj.svg +7 -0
  218. data/app/assets/images/activeadmin-localize/sk.svg +9 -0
  219. data/app/assets/images/activeadmin-localize/sl.svg +7 -0
  220. data/app/assets/images/activeadmin-localize/sm.svg +92 -0
  221. data/app/assets/images/activeadmin-localize/sn.svg +8 -0
  222. data/app/assets/images/activeadmin-localize/so.svg +11 -0
  223. data/app/assets/images/activeadmin-localize/sr.svg +6 -0
  224. data/app/assets/images/activeadmin-localize/ss.svg +8 -0
  225. data/app/assets/images/activeadmin-localize/st.svg +16 -0
  226. data/app/assets/images/activeadmin-localize/sv.svg +621 -0
  227. data/app/assets/images/activeadmin-localize/sx.svg +56 -0
  228. data/app/assets/images/activeadmin-localize/sy.svg +6 -0
  229. data/app/assets/images/activeadmin-localize/sz.svg +49 -0
  230. data/app/assets/images/activeadmin-localize/tc.svg +73 -0
  231. data/app/assets/images/activeadmin-localize/td.svg +7 -0
  232. data/app/assets/images/activeadmin-localize/tf.svg +15 -0
  233. data/app/assets/images/activeadmin-localize/tg.svg +14 -0
  234. data/app/assets/images/activeadmin-localize/th.svg +7 -0
  235. data/app/assets/images/activeadmin-localize/tj.svg +22 -0
  236. data/app/assets/images/activeadmin-localize/tk.svg +5 -0
  237. data/app/assets/images/activeadmin-localize/tl.svg +13 -0
  238. data/app/assets/images/activeadmin-localize/tm.svg +221 -0
  239. data/app/assets/images/activeadmin-localize/tn.svg +13 -0
  240. data/app/assets/images/activeadmin-localize/to.svg +10 -0
  241. data/app/assets/images/activeadmin-localize/tr.svg +8 -0
  242. data/app/assets/images/activeadmin-localize/tt.svg +5 -0
  243. data/app/assets/images/activeadmin-localize/tv.svg +29 -0
  244. data/app/assets/images/activeadmin-localize/tw.svg +14 -0
  245. data/app/assets/images/activeadmin-localize/tz.svg +13 -0
  246. data/app/assets/images/activeadmin-localize/ua.svg +6 -0
  247. data/app/assets/images/activeadmin-localize/ug.svg +30 -0
  248. data/app/assets/images/activeadmin-localize/um.svg +45 -0
  249. data/app/assets/images/activeadmin-localize/un.svg +16 -0
  250. data/app/assets/images/activeadmin-localize/us.svg +18 -0
  251. data/app/assets/images/activeadmin-localize/uy.svg +28 -0
  252. data/app/assets/images/activeadmin-localize/uz.svg +30 -0
  253. data/app/assets/images/activeadmin-localize/va.svg +483 -0
  254. data/app/assets/images/activeadmin-localize/vc.svg +8 -0
  255. data/app/assets/images/activeadmin-localize/ve.svg +26 -0
  256. data/app/assets/images/activeadmin-localize/vg.svg +143 -0
  257. data/app/assets/images/activeadmin-localize/vi.svg +32 -0
  258. data/app/assets/images/activeadmin-localize/vn.svg +11 -0
  259. data/app/assets/images/activeadmin-localize/vu.svg +18 -0
  260. data/app/assets/images/activeadmin-localize/wf.svg +7 -0
  261. data/app/assets/images/activeadmin-localize/ws.svg +9 -0
  262. data/app/assets/images/activeadmin-localize/ye.svg +7 -0
  263. data/app/assets/images/activeadmin-localize/yt.svg +7 -0
  264. data/app/assets/images/activeadmin-localize/za.svg +17 -0
  265. data/app/assets/images/activeadmin-localize/zm.svg +27 -0
  266. data/app/assets/images/activeadmin-localize/zw.svg +21 -0
  267. data/app/inputs/json_input.rb +2 -0
  268. data/app/inputs/jsonb_input.rb +2 -0
  269. data/config/locales/en.rails_admin_state_machine.yml +10 -0
  270. data/config/locales/ru.rails_admin_state_machine.yml +11 -0
  271. data/lib/activeadmin-localize.rb +24 -0
  272. data/lib/activeadmin-localize/active_admin.rb +7 -0
  273. data/lib/activeadmin-localize/attributes_table.rb +53 -0
  274. data/lib/activeadmin-localize/columns.rb +21 -0
  275. data/lib/activeadmin-localize/engine.rb +12 -0
  276. data/lib/activeadmin-localize/field.rb +92 -0
  277. data/lib/activeadmin-localize/formtastic.rb +38 -0
  278. data/lib/activeadmin-localize/version.rb +5 -0
  279. metadata +334 -0
@@ -0,0 +1,21 @@
1
+ module ActiveAdmin
2
+ module Views
3
+ class IndexAsTable < ActiveAdmin::Component
4
+ class IndexTableFor < ::ActiveAdmin::Views::TableFor
5
+
6
+ # Display a column for each locale
7
+ def localize_column(attr)
8
+ ActiveAdmin::Localize.locales.each do |locale|
9
+ I18n.with_locale(locale) do
10
+ column_name = resource_class.human_attribute_name(attr) + " (#{locale})"
11
+ column(column_name, sortable: "#{attr}.#{locale}") do |resource|
12
+ resource.send(attr)
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,12 @@
1
+ module ActiveAdmin
2
+ module Localize
3
+ class Engine < ::Rails::Engine
4
+ #initializer 'ActiveAdmin::Localize precompile hook', group: :all do |app|
5
+ config.after_initialize do
6
+ config.assets.precompile += I18n.available_locales.map do |l|
7
+ "activeadmin-localize/#{l}.svg"
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,92 @@
1
+ module ActiveAdmin
2
+ module Localize
3
+
4
+ class Field
5
+ extend ActiveModel::Naming
6
+
7
+ @@validators = {}
8
+ @@model = nil
9
+
10
+ def clean_locale(locale)
11
+ locale.to_s.gsub('-','_')
12
+ end
13
+
14
+ def initialize(obj, name)
15
+ @obj = obj
16
+ @@model = obj.class
17
+ @field = name
18
+ @@validators[@field] = @obj.class.validators_on(name.to_sym)
19
+ validators = @@validators[@field].map(&:class).map(&:name)
20
+ @required = validators.include?('ActiveRecord::Validations::PresenceValidator') || validators.include?('Mongoid::Validations::PresenceValidator')
21
+
22
+ @errors = ActiveModel::Errors.new(self)
23
+ hash = @obj.send("#{name}_translations")
24
+ hash = {} if hash.nil?
25
+
26
+ ::ActiveAdmin::Localize.locales.each do |k|
27
+ inst_var_name = clean_locale(k)
28
+ ## create the getter that returns the instance variable
29
+ self.class.send(:define_method, k, proc{self.instance_variable_get("@#{inst_var_name}")})
30
+
31
+ ## create the setter that sets the instance variable
32
+ self.class.send(:define_method, "#{k}=", proc{|v| self.instance_variable_set("@#{inst_var_name}", v)})
33
+
34
+ ## create and initialize an instance variable for this key/value pair
35
+ self.instance_variable_set("@#{inst_var_name}", '')
36
+ end
37
+
38
+ hash.each do |k,v|
39
+ ## create and initialize an instance variable for this key/value pair
40
+ inst_var_name = k.to_s.gsub('-','_')
41
+ self.instance_variable_set("@#{inst_var_name}", v)
42
+ end
43
+
44
+ def @obj.before_validation
45
+ validate!
46
+ end
47
+ end
48
+
49
+ def required?
50
+ @required
51
+ end
52
+
53
+ def errors
54
+ validate! if @obj.errors.any?
55
+ @errors
56
+ end
57
+
58
+ def validate!
59
+ ::ActiveAdmin::Localize.locales.each do |k|
60
+ if @required && send(k).blank?
61
+ @errors.add(k, I18n.t('errors.messages.blank'))
62
+ end
63
+ end
64
+ end
65
+
66
+ #def column_for_attribute(name)
67
+ # we only have one column for all locales
68
+ #if @obj.respond_to?(:fields)
69
+ #@obj.fields[@field]
70
+ #else
71
+ #@obj.class.columns_hash[@field] || @field.to_s
72
+ #end
73
+ #end
74
+
75
+ def method_missing(*args)
76
+ @obj.send(*args)
77
+ end
78
+
79
+ def respond_to?(method_name, include_private = false)
80
+ @obj.respond_to?(method_name, include_private)
81
+ end
82
+
83
+ def self.validators_on(attributized_method_name)
84
+ @@validators[attributized_method_name].nil? ? [] : @@validators[attributized_method_name]
85
+ end
86
+
87
+ def self.human_attribute_name(*args)
88
+ @@model.send(:human_attribute_name, *args)
89
+ end
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,38 @@
1
+ module Formtastic
2
+ class FormBuilder
3
+ def localized_input(name, args = {})
4
+ t = self.object.send("#{name}_translations")
5
+ field = ActiveAdmin::Localize::Field.new(self.object, name)
6
+
7
+ ret = ''
8
+ self.semantic_fields_for "#{name}_translations", field do |lf|
9
+ ::ActiveAdmin::Localize.locales.each do |locale|
10
+ if args[:input_html].blank?
11
+ args[:input_html]=({ :value => (t.nil? || t[locale.to_s].nil?) ? '' : t[locale.to_s] })
12
+ else
13
+ args[:input_html].merge!({ :value => (t.nil? || t[locale.to_s].nil?) ? '' : t[locale.to_s] })
14
+ end
15
+ flag_code = locale.to_s.include?("-") ? locale.to_s.split("-")[1].downcase : locale.to_s
16
+
17
+ label = ''
18
+ label += CGI.escapeHTML(self.object.class.human_attribute_name(name))
19
+ label += " "
20
+ label += template.image_tag("activeadmin-localize/#{flag_code}.svg", alt: locale.to_s, title: locale.to_s, width: 20, height: 15)
21
+
22
+ if args[:as] == :ckeditor
23
+ prep = "<h3 style='margin: 10px 0px 0px 10px;'>#{label}</h3>#{'<abbr>*</abbr>' if field.required?}".html_safe
24
+ args[:label] = false
25
+ else
26
+ prep = ''.html_safe
27
+ args[:label] = label.html_safe
28
+ end
29
+ args[:required] = field.required?
30
+
31
+ ret << prep + lf.input(locale, args)
32
+ end
33
+ end
34
+
35
+ ret.html_safe
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,5 @@
1
+ module ActiveAdmin
2
+ module Localize
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,334 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: activeadmin-localize
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Gleb Tv
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-10-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activeadmin
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: Easily edit localized fields in ActiveAdmin (all locales on one page)
28
+ email:
29
+ - glebtv@gmail.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - ".gitignore"
35
+ - ".ruby-gemset"
36
+ - ".ruby-version"
37
+ - Gemfile
38
+ - LICENSE.txt
39
+ - README.md
40
+ - Rakefile
41
+ - activeadmin-localize.gemspec
42
+ - app/assets/images/activeadmin-localize/ad.svg
43
+ - app/assets/images/activeadmin-localize/ae.svg
44
+ - app/assets/images/activeadmin-localize/af.svg
45
+ - app/assets/images/activeadmin-localize/ag.svg
46
+ - app/assets/images/activeadmin-localize/ai.svg
47
+ - app/assets/images/activeadmin-localize/al.svg
48
+ - app/assets/images/activeadmin-localize/am.svg
49
+ - app/assets/images/activeadmin-localize/ao.svg
50
+ - app/assets/images/activeadmin-localize/aq.svg
51
+ - app/assets/images/activeadmin-localize/ar.svg
52
+ - app/assets/images/activeadmin-localize/as.svg
53
+ - app/assets/images/activeadmin-localize/at.svg
54
+ - app/assets/images/activeadmin-localize/au.svg
55
+ - app/assets/images/activeadmin-localize/aw.svg
56
+ - app/assets/images/activeadmin-localize/ax.svg
57
+ - app/assets/images/activeadmin-localize/az.svg
58
+ - app/assets/images/activeadmin-localize/ba.svg
59
+ - app/assets/images/activeadmin-localize/bb.svg
60
+ - app/assets/images/activeadmin-localize/bd.svg
61
+ - app/assets/images/activeadmin-localize/be.svg
62
+ - app/assets/images/activeadmin-localize/bf.svg
63
+ - app/assets/images/activeadmin-localize/bg.svg
64
+ - app/assets/images/activeadmin-localize/bh.svg
65
+ - app/assets/images/activeadmin-localize/bi.svg
66
+ - app/assets/images/activeadmin-localize/bj.svg
67
+ - app/assets/images/activeadmin-localize/bl.svg
68
+ - app/assets/images/activeadmin-localize/bm.svg
69
+ - app/assets/images/activeadmin-localize/bn.svg
70
+ - app/assets/images/activeadmin-localize/bo.svg
71
+ - app/assets/images/activeadmin-localize/bq.svg
72
+ - app/assets/images/activeadmin-localize/br.svg
73
+ - app/assets/images/activeadmin-localize/bs.svg
74
+ - app/assets/images/activeadmin-localize/bt.svg
75
+ - app/assets/images/activeadmin-localize/bv.svg
76
+ - app/assets/images/activeadmin-localize/bw.svg
77
+ - app/assets/images/activeadmin-localize/by.svg
78
+ - app/assets/images/activeadmin-localize/bz.svg
79
+ - app/assets/images/activeadmin-localize/ca.svg
80
+ - app/assets/images/activeadmin-localize/cc.svg
81
+ - app/assets/images/activeadmin-localize/cd.svg
82
+ - app/assets/images/activeadmin-localize/cf.svg
83
+ - app/assets/images/activeadmin-localize/cg.svg
84
+ - app/assets/images/activeadmin-localize/ch.svg
85
+ - app/assets/images/activeadmin-localize/ci.svg
86
+ - app/assets/images/activeadmin-localize/ck.svg
87
+ - app/assets/images/activeadmin-localize/cl.svg
88
+ - app/assets/images/activeadmin-localize/cm.svg
89
+ - app/assets/images/activeadmin-localize/cn.svg
90
+ - app/assets/images/activeadmin-localize/co.svg
91
+ - app/assets/images/activeadmin-localize/cr.svg
92
+ - app/assets/images/activeadmin-localize/cu.svg
93
+ - app/assets/images/activeadmin-localize/cv.svg
94
+ - app/assets/images/activeadmin-localize/cw.svg
95
+ - app/assets/images/activeadmin-localize/cx.svg
96
+ - app/assets/images/activeadmin-localize/cy.svg
97
+ - app/assets/images/activeadmin-localize/cz.svg
98
+ - app/assets/images/activeadmin-localize/de.svg
99
+ - app/assets/images/activeadmin-localize/dj.svg
100
+ - app/assets/images/activeadmin-localize/dk.svg
101
+ - app/assets/images/activeadmin-localize/dm.svg
102
+ - app/assets/images/activeadmin-localize/do.svg
103
+ - app/assets/images/activeadmin-localize/dz.svg
104
+ - app/assets/images/activeadmin-localize/ec.svg
105
+ - app/assets/images/activeadmin-localize/ee.svg
106
+ - app/assets/images/activeadmin-localize/eg.svg
107
+ - app/assets/images/activeadmin-localize/eh.svg
108
+ - app/assets/images/activeadmin-localize/en.svg
109
+ - app/assets/images/activeadmin-localize/er.svg
110
+ - app/assets/images/activeadmin-localize/es-ct.svg
111
+ - app/assets/images/activeadmin-localize/es.svg
112
+ - app/assets/images/activeadmin-localize/et.svg
113
+ - app/assets/images/activeadmin-localize/eu.svg
114
+ - app/assets/images/activeadmin-localize/fi.svg
115
+ - app/assets/images/activeadmin-localize/fj.svg
116
+ - app/assets/images/activeadmin-localize/fk.svg
117
+ - app/assets/images/activeadmin-localize/fm.svg
118
+ - app/assets/images/activeadmin-localize/fo.svg
119
+ - app/assets/images/activeadmin-localize/fr.svg
120
+ - app/assets/images/activeadmin-localize/ga.svg
121
+ - app/assets/images/activeadmin-localize/gb-eng.svg
122
+ - app/assets/images/activeadmin-localize/gb-nir.svg
123
+ - app/assets/images/activeadmin-localize/gb-sct.svg
124
+ - app/assets/images/activeadmin-localize/gb-wls.svg
125
+ - app/assets/images/activeadmin-localize/gb.svg
126
+ - app/assets/images/activeadmin-localize/gd.svg
127
+ - app/assets/images/activeadmin-localize/ge.svg
128
+ - app/assets/images/activeadmin-localize/gf.svg
129
+ - app/assets/images/activeadmin-localize/gg.svg
130
+ - app/assets/images/activeadmin-localize/gh.svg
131
+ - app/assets/images/activeadmin-localize/gi.svg
132
+ - app/assets/images/activeadmin-localize/gl.svg
133
+ - app/assets/images/activeadmin-localize/gm.svg
134
+ - app/assets/images/activeadmin-localize/gn.svg
135
+ - app/assets/images/activeadmin-localize/gp.svg
136
+ - app/assets/images/activeadmin-localize/gq.svg
137
+ - app/assets/images/activeadmin-localize/gr.svg
138
+ - app/assets/images/activeadmin-localize/gs.svg
139
+ - app/assets/images/activeadmin-localize/gt.svg
140
+ - app/assets/images/activeadmin-localize/gu.svg
141
+ - app/assets/images/activeadmin-localize/gw.svg
142
+ - app/assets/images/activeadmin-localize/gy.svg
143
+ - app/assets/images/activeadmin-localize/hk.svg
144
+ - app/assets/images/activeadmin-localize/hm.svg
145
+ - app/assets/images/activeadmin-localize/hn.svg
146
+ - app/assets/images/activeadmin-localize/hr.svg
147
+ - app/assets/images/activeadmin-localize/ht.svg
148
+ - app/assets/images/activeadmin-localize/hu.svg
149
+ - app/assets/images/activeadmin-localize/id.svg
150
+ - app/assets/images/activeadmin-localize/ie.svg
151
+ - app/assets/images/activeadmin-localize/il.svg
152
+ - app/assets/images/activeadmin-localize/im.svg
153
+ - app/assets/images/activeadmin-localize/in.svg
154
+ - app/assets/images/activeadmin-localize/io.svg
155
+ - app/assets/images/activeadmin-localize/iq.svg
156
+ - app/assets/images/activeadmin-localize/ir.svg
157
+ - app/assets/images/activeadmin-localize/is.svg
158
+ - app/assets/images/activeadmin-localize/it.svg
159
+ - app/assets/images/activeadmin-localize/je.svg
160
+ - app/assets/images/activeadmin-localize/jm.svg
161
+ - app/assets/images/activeadmin-localize/jo.svg
162
+ - app/assets/images/activeadmin-localize/jp.svg
163
+ - app/assets/images/activeadmin-localize/ke.svg
164
+ - app/assets/images/activeadmin-localize/kg.svg
165
+ - app/assets/images/activeadmin-localize/kh.svg
166
+ - app/assets/images/activeadmin-localize/ki.svg
167
+ - app/assets/images/activeadmin-localize/km.svg
168
+ - app/assets/images/activeadmin-localize/kn.svg
169
+ - app/assets/images/activeadmin-localize/kp.svg
170
+ - app/assets/images/activeadmin-localize/kr.svg
171
+ - app/assets/images/activeadmin-localize/kw.svg
172
+ - app/assets/images/activeadmin-localize/ky.svg
173
+ - app/assets/images/activeadmin-localize/kz.svg
174
+ - app/assets/images/activeadmin-localize/la.svg
175
+ - app/assets/images/activeadmin-localize/lb.svg
176
+ - app/assets/images/activeadmin-localize/lc.svg
177
+ - app/assets/images/activeadmin-localize/li.svg
178
+ - app/assets/images/activeadmin-localize/lk.svg
179
+ - app/assets/images/activeadmin-localize/lr.svg
180
+ - app/assets/images/activeadmin-localize/ls.svg
181
+ - app/assets/images/activeadmin-localize/lt.svg
182
+ - app/assets/images/activeadmin-localize/lu.svg
183
+ - app/assets/images/activeadmin-localize/lv.svg
184
+ - app/assets/images/activeadmin-localize/ly.svg
185
+ - app/assets/images/activeadmin-localize/ma.svg
186
+ - app/assets/images/activeadmin-localize/mc.svg
187
+ - app/assets/images/activeadmin-localize/md.svg
188
+ - app/assets/images/activeadmin-localize/me.svg
189
+ - app/assets/images/activeadmin-localize/mf.svg
190
+ - app/assets/images/activeadmin-localize/mg.svg
191
+ - app/assets/images/activeadmin-localize/mh.svg
192
+ - app/assets/images/activeadmin-localize/mk.svg
193
+ - app/assets/images/activeadmin-localize/ml.svg
194
+ - app/assets/images/activeadmin-localize/mm.svg
195
+ - app/assets/images/activeadmin-localize/mn.svg
196
+ - app/assets/images/activeadmin-localize/mo.svg
197
+ - app/assets/images/activeadmin-localize/mp.svg
198
+ - app/assets/images/activeadmin-localize/mq.svg
199
+ - app/assets/images/activeadmin-localize/mr.svg
200
+ - app/assets/images/activeadmin-localize/ms.svg
201
+ - app/assets/images/activeadmin-localize/mt.svg
202
+ - app/assets/images/activeadmin-localize/mu.svg
203
+ - app/assets/images/activeadmin-localize/mv.svg
204
+ - app/assets/images/activeadmin-localize/mw.svg
205
+ - app/assets/images/activeadmin-localize/mx.svg
206
+ - app/assets/images/activeadmin-localize/my.svg
207
+ - app/assets/images/activeadmin-localize/mz.svg
208
+ - app/assets/images/activeadmin-localize/na.svg
209
+ - app/assets/images/activeadmin-localize/nc.svg
210
+ - app/assets/images/activeadmin-localize/ne.svg
211
+ - app/assets/images/activeadmin-localize/nf.svg
212
+ - app/assets/images/activeadmin-localize/ng.svg
213
+ - app/assets/images/activeadmin-localize/ni.svg
214
+ - app/assets/images/activeadmin-localize/nl.svg
215
+ - app/assets/images/activeadmin-localize/no.svg
216
+ - app/assets/images/activeadmin-localize/np.svg
217
+ - app/assets/images/activeadmin-localize/nr.svg
218
+ - app/assets/images/activeadmin-localize/nu.svg
219
+ - app/assets/images/activeadmin-localize/nz.svg
220
+ - app/assets/images/activeadmin-localize/om.svg
221
+ - app/assets/images/activeadmin-localize/pa.svg
222
+ - app/assets/images/activeadmin-localize/pe.svg
223
+ - app/assets/images/activeadmin-localize/pf.svg
224
+ - app/assets/images/activeadmin-localize/pg.svg
225
+ - app/assets/images/activeadmin-localize/ph.svg
226
+ - app/assets/images/activeadmin-localize/pk.svg
227
+ - app/assets/images/activeadmin-localize/pl.svg
228
+ - app/assets/images/activeadmin-localize/pm.svg
229
+ - app/assets/images/activeadmin-localize/pn.svg
230
+ - app/assets/images/activeadmin-localize/pr.svg
231
+ - app/assets/images/activeadmin-localize/ps.svg
232
+ - app/assets/images/activeadmin-localize/pt.svg
233
+ - app/assets/images/activeadmin-localize/pw.svg
234
+ - app/assets/images/activeadmin-localize/py.svg
235
+ - app/assets/images/activeadmin-localize/qa.svg
236
+ - app/assets/images/activeadmin-localize/re.svg
237
+ - app/assets/images/activeadmin-localize/ro.svg
238
+ - app/assets/images/activeadmin-localize/rs.svg
239
+ - app/assets/images/activeadmin-localize/ru.svg
240
+ - app/assets/images/activeadmin-localize/rw.svg
241
+ - app/assets/images/activeadmin-localize/sa.svg
242
+ - app/assets/images/activeadmin-localize/sb.svg
243
+ - app/assets/images/activeadmin-localize/sc.svg
244
+ - app/assets/images/activeadmin-localize/sd.svg
245
+ - app/assets/images/activeadmin-localize/se.svg
246
+ - app/assets/images/activeadmin-localize/sg.svg
247
+ - app/assets/images/activeadmin-localize/sh.svg
248
+ - app/assets/images/activeadmin-localize/si.svg
249
+ - app/assets/images/activeadmin-localize/sj.svg
250
+ - app/assets/images/activeadmin-localize/sk.svg
251
+ - app/assets/images/activeadmin-localize/sl.svg
252
+ - app/assets/images/activeadmin-localize/sm.svg
253
+ - app/assets/images/activeadmin-localize/sn.svg
254
+ - app/assets/images/activeadmin-localize/so.svg
255
+ - app/assets/images/activeadmin-localize/sr.svg
256
+ - app/assets/images/activeadmin-localize/ss.svg
257
+ - app/assets/images/activeadmin-localize/st.svg
258
+ - app/assets/images/activeadmin-localize/sv.svg
259
+ - app/assets/images/activeadmin-localize/sx.svg
260
+ - app/assets/images/activeadmin-localize/sy.svg
261
+ - app/assets/images/activeadmin-localize/sz.svg
262
+ - app/assets/images/activeadmin-localize/tc.svg
263
+ - app/assets/images/activeadmin-localize/td.svg
264
+ - app/assets/images/activeadmin-localize/tf.svg
265
+ - app/assets/images/activeadmin-localize/tg.svg
266
+ - app/assets/images/activeadmin-localize/th.svg
267
+ - app/assets/images/activeadmin-localize/tj.svg
268
+ - app/assets/images/activeadmin-localize/tk.svg
269
+ - app/assets/images/activeadmin-localize/tl.svg
270
+ - app/assets/images/activeadmin-localize/tm.svg
271
+ - app/assets/images/activeadmin-localize/tn.svg
272
+ - app/assets/images/activeadmin-localize/to.svg
273
+ - app/assets/images/activeadmin-localize/tr.svg
274
+ - app/assets/images/activeadmin-localize/tt.svg
275
+ - app/assets/images/activeadmin-localize/tv.svg
276
+ - app/assets/images/activeadmin-localize/tw.svg
277
+ - app/assets/images/activeadmin-localize/tz.svg
278
+ - app/assets/images/activeadmin-localize/ua.svg
279
+ - app/assets/images/activeadmin-localize/ug.svg
280
+ - app/assets/images/activeadmin-localize/um.svg
281
+ - app/assets/images/activeadmin-localize/un.svg
282
+ - app/assets/images/activeadmin-localize/us.svg
283
+ - app/assets/images/activeadmin-localize/uy.svg
284
+ - app/assets/images/activeadmin-localize/uz.svg
285
+ - app/assets/images/activeadmin-localize/va.svg
286
+ - app/assets/images/activeadmin-localize/vc.svg
287
+ - app/assets/images/activeadmin-localize/ve.svg
288
+ - app/assets/images/activeadmin-localize/vg.svg
289
+ - app/assets/images/activeadmin-localize/vi.svg
290
+ - app/assets/images/activeadmin-localize/vn.svg
291
+ - app/assets/images/activeadmin-localize/vu.svg
292
+ - app/assets/images/activeadmin-localize/wf.svg
293
+ - app/assets/images/activeadmin-localize/ws.svg
294
+ - app/assets/images/activeadmin-localize/ye.svg
295
+ - app/assets/images/activeadmin-localize/yt.svg
296
+ - app/assets/images/activeadmin-localize/za.svg
297
+ - app/assets/images/activeadmin-localize/zm.svg
298
+ - app/assets/images/activeadmin-localize/zw.svg
299
+ - app/inputs/json_input.rb
300
+ - app/inputs/jsonb_input.rb
301
+ - config/locales/en.rails_admin_state_machine.yml
302
+ - config/locales/ru.rails_admin_state_machine.yml
303
+ - lib/activeadmin-localize.rb
304
+ - lib/activeadmin-localize/active_admin.rb
305
+ - lib/activeadmin-localize/attributes_table.rb
306
+ - lib/activeadmin-localize/columns.rb
307
+ - lib/activeadmin-localize/engine.rb
308
+ - lib/activeadmin-localize/field.rb
309
+ - lib/activeadmin-localize/formtastic.rb
310
+ - lib/activeadmin-localize/version.rb
311
+ homepage: https://github.com/glebtv/activeadmin-localize
312
+ licenses: []
313
+ metadata: {}
314
+ post_install_message:
315
+ rdoc_options: []
316
+ require_paths:
317
+ - lib
318
+ required_ruby_version: !ruby/object:Gem::Requirement
319
+ requirements:
320
+ - - ">="
321
+ - !ruby/object:Gem::Version
322
+ version: '0'
323
+ required_rubygems_version: !ruby/object:Gem::Requirement
324
+ requirements:
325
+ - - ">="
326
+ - !ruby/object:Gem::Version
327
+ version: '0'
328
+ requirements: []
329
+ rubyforge_project:
330
+ rubygems_version: 2.6.13
331
+ signing_key:
332
+ specification_version: 4
333
+ summary: Localized fields for active admin
334
+ test_files: []