adminterface 0.0.0 → 0.2.3

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 (271) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.md +1 -1
  3. data/README.md +69 -0
  4. data/Rakefile +43 -0
  5. data/app/assets/config/adminterface_manifest.js +1 -0
  6. data/app/assets/stylesheets/adminterface/_base.scss +20 -0
  7. data/app/assets/stylesheets/adminterface/_print.scss +56 -0
  8. data/app/assets/stylesheets/adminterface/components/_active_admin_comment.scss +19 -0
  9. data/app/assets/stylesheets/adminterface/components/_all.scss +24 -0
  10. data/app/assets/stylesheets/adminterface/components/_aside.scss +28 -0
  11. data/app/assets/stylesheets/adminterface/components/_attributes_table.scss +19 -0
  12. data/app/assets/stylesheets/adminterface/components/_comments.scss +7 -0
  13. data/app/assets/stylesheets/adminterface/components/_divider.scss +28 -0
  14. data/app/assets/stylesheets/adminterface/components/_filters.scss +27 -0
  15. data/app/assets/stylesheets/adminterface/components/_flash.scss +4 -0
  16. data/app/assets/stylesheets/adminterface/components/_footer.scss +4 -0
  17. data/app/assets/stylesheets/adminterface/components/_form.scss +219 -0
  18. data/app/assets/stylesheets/adminterface/components/_header.scss +30 -0
  19. data/app/assets/stylesheets/adminterface/components/_index.scss +1 -0
  20. data/app/assets/stylesheets/adminterface/components/_index_as_grid.scss +5 -0
  21. data/app/assets/stylesheets/adminterface/components/_index_as_table.scss +1 -0
  22. data/app/assets/stylesheets/adminterface/components/_index_footer.scss +19 -0
  23. data/app/assets/stylesheets/adminterface/components/_modal_dialog.scss +4 -0
  24. data/app/assets/stylesheets/adminterface/components/_pagination.scss +3 -0
  25. data/app/assets/stylesheets/adminterface/components/_panel.scss +21 -0
  26. data/app/assets/stylesheets/adminterface/components/_sidebar.scss +13 -0
  27. data/app/assets/stylesheets/adminterface/components/_site_title.scss +17 -0
  28. data/app/assets/stylesheets/adminterface/components/_table_for.scss +37 -0
  29. data/app/assets/stylesheets/adminterface/components/_table_tools.scss +19 -0
  30. data/app/assets/stylesheets/adminterface/components/_thumbnail.scss +29 -0
  31. data/app/assets/stylesheets/adminterface/components/_title_bar.scss +36 -0
  32. data/app/assets/stylesheets/adminterface/components/inputs/_all.scss +2 -0
  33. data/app/assets/stylesheets/adminterface/components/inputs/_password.scss +28 -0
  34. data/app/assets/stylesheets/adminterface/components/inputs/_text.scss +30 -0
  35. data/app/assets/stylesheets/adminterface/helpers/_aa_icon.scss +1 -0
  36. data/app/assets/stylesheets/adminterface/helpers/_all.scss +2 -0
  37. data/app/assets/stylesheets/adminterface/helpers/_pointer.scss +1 -0
  38. data/app/assets/stylesheets/adminterface/layouts/_all.scss +4 -0
  39. data/app/assets/stylesheets/adminterface/layouts/_base.scss +5 -0
  40. data/app/assets/stylesheets/adminterface/layouts/_logged_in.scss +30 -0
  41. data/app/assets/stylesheets/adminterface/layouts/_logged_out.scss +14 -0
  42. data/app/assets/stylesheets/adminterface/layouts/types/_all.scss +4 -0
  43. data/app/assets/stylesheets/adminterface/layouts/types/_mixins.scss +195 -0
  44. data/app/assets/stylesheets/adminterface/layouts/types/_navigation_aside.scss +33 -0
  45. data/app/assets/stylesheets/adminterface/layouts/types/_navigation_sidebar.scss +15 -0
  46. data/app/assets/stylesheets/adminterface/layouts/types/_navigation_top.scss +33 -0
  47. data/app/assets/stylesheets/adminterface/mixins/_all.scss +3 -0
  48. data/app/assets/stylesheets/adminterface/mixins/_layouts.scss +38 -0
  49. data/app/assets/stylesheets/adminterface/mixins/_utilities.scss +39 -0
  50. data/app/assets/stylesheets/adminterface/mixins/_variables.scss +100 -0
  51. data/app/assets/stylesheets/adminterface/placeholders/_aa_icon.scss +10 -0
  52. data/app/assets/stylesheets/adminterface/placeholders/_all.scss +3 -0
  53. data/app/assets/stylesheets/adminterface/placeholders/_background.scss +5 -0
  54. data/app/assets/stylesheets/adminterface/placeholders/_typography.scss +11 -0
  55. data/app/assets/stylesheets/adminterface/vendors/_all.scss +4 -0
  56. data/app/assets/stylesheets/adminterface/vendors/bootstrap/_all.scss +6 -0
  57. data/app/assets/stylesheets/adminterface/vendors/bootstrap/_variables.scss +51 -0
  58. data/app/assets/stylesheets/adminterface/vendors/bootstrap/components/_buttons.scss +5 -0
  59. data/app/assets/stylesheets/adminterface/vendors/bootstrap/components/_dropdowns.scss +28 -0
  60. data/app/assets/stylesheets/adminterface/vendors/bootstrap/components/_navs.scss +25 -0
  61. data/app/assets/stylesheets/adminterface/vendors/bootstrap/components/form/_labels.scss +5 -0
  62. data/app/assets/stylesheets/adminterface/vendors/bootstrap/content/_tables.scss +2 -0
  63. data/app/assets/stylesheets/adminterface/vendors/bootstrap/content/_typography.scss +2 -0
  64. data/app/assets/stylesheets/adminterface/vendors/flatpickr/_all.scss +2 -0
  65. data/app/assets/stylesheets/adminterface/vendors/flatpickr/_variables.scss +7 -0
  66. data/app/assets/stylesheets/adminterface/vendors/flatpickr/main.scss +50 -0
  67. data/app/assets/stylesheets/adminterface/vendors/tom_select/_all.scss +1 -0
  68. data/app/assets/stylesheets/adminterface/vendors/tom_select/_main.scss +6 -0
  69. data/app/assets/stylesheets/adminterface/vendors/trix/_actiontext.scss +36 -0
  70. data/app/assets/stylesheets/adminterface/vendors/trix/_all.scss +3 -0
  71. data/app/assets/stylesheets/adminterface/vendors/trix/_trix_editor.scss +86 -0
  72. data/app/assets/stylesheets/adminterface/vendors/trix/_variables.scss +31 -0
  73. data/app/javascript/adminterface/base.js +14 -0
  74. data/app/javascript/adminterface/config.js +129 -0
  75. data/app/javascript/adminterface/initializers/batch_actions.js +9 -0
  76. data/app/javascript/adminterface/initializers/bootstrap.js +29 -0
  77. data/app/javascript/adminterface/initializers/confirm_dialog.js +23 -0
  78. data/app/javascript/adminterface/initializers/detached_dropdown.js +16 -0
  79. data/app/javascript/adminterface/initializers/drawer_menu_item_toggler.js +15 -0
  80. data/app/javascript/adminterface/initializers/filters.js +23 -0
  81. data/app/javascript/adminterface/initializers/has_many.js +7 -0
  82. data/app/javascript/adminterface/initializers/header_toggler.js +10 -0
  83. data/app/javascript/adminterface/initializers/index.js +2 -0
  84. data/app/javascript/adminterface/initializers/per_page.js +12 -0
  85. data/app/javascript/adminterface/initializers/plugins/flatpickr.js +24 -0
  86. data/app/javascript/adminterface/initializers/plugins/input_counter.js +21 -0
  87. data/app/javascript/adminterface/initializers/plugins/password_visibility.js +23 -0
  88. data/app/javascript/adminterface/initializers/plugins/tom_select.js +24 -0
  89. data/app/javascript/adminterface/lib/__tests__/checkbox_toggler.html +5 -0
  90. data/app/javascript/adminterface/lib/__tests__/checkbox_toggler.spec.js +110 -0
  91. data/app/javascript/adminterface/lib/__tests__/detached_dropdown.spec.js +69 -0
  92. data/app/javascript/adminterface/lib/__tests__/filters.spec.js +150 -0
  93. data/app/javascript/adminterface/lib/__tests__/has_many.html +14 -0
  94. data/app/javascript/adminterface/lib/__tests__/has_many.spec.js +224 -0
  95. data/app/javascript/adminterface/lib/__tests__/utils.spec.js +280 -0
  96. data/app/javascript/adminterface/lib/batch_actions.js +106 -0
  97. data/app/javascript/adminterface/lib/checkbox_toggler.js +55 -0
  98. data/app/javascript/adminterface/lib/confirm_dialog.js +113 -0
  99. data/app/javascript/adminterface/lib/detached_dropdown.js +34 -0
  100. data/app/javascript/adminterface/lib/filters.js +34 -0
  101. data/app/javascript/adminterface/lib/has_many.js +125 -0
  102. data/app/javascript/adminterface/lib/header_toggler.js +54 -0
  103. data/app/javascript/adminterface/lib/input.js +108 -0
  104. data/app/javascript/adminterface/lib/inputs/base/groupish.js +55 -0
  105. data/app/javascript/adminterface/lib/inputs/base/pluginish.js +63 -0
  106. data/app/javascript/adminterface/lib/inputs/base_input.js +87 -0
  107. data/app/javascript/adminterface/lib/inputs/boolean_input.js +30 -0
  108. data/app/javascript/adminterface/lib/inputs/check_boxes_input.js +14 -0
  109. data/app/javascript/adminterface/lib/inputs/choices_input.js +96 -0
  110. data/app/javascript/adminterface/lib/inputs/color_input.js +14 -0
  111. data/app/javascript/adminterface/lib/inputs/country_input.js +90 -0
  112. data/app/javascript/adminterface/lib/inputs/datalist_input.js +41 -0
  113. data/app/javascript/adminterface/lib/inputs/date_picker_input.js +11 -0
  114. data/app/javascript/adminterface/lib/inputs/datetime_picker_input.js +11 -0
  115. data/app/javascript/adminterface/lib/inputs/hidden_input.js +21 -0
  116. data/app/javascript/adminterface/lib/inputs/password_input.js +13 -0
  117. data/app/javascript/adminterface/lib/inputs/radio_input.js +13 -0
  118. data/app/javascript/adminterface/lib/inputs/select_input.js +68 -0
  119. data/app/javascript/adminterface/lib/inputs/string_input.js +13 -0
  120. data/app/javascript/adminterface/lib/inputs/switch_input.js +9 -0
  121. data/app/javascript/adminterface/lib/inputs/text_input.js +12 -0
  122. data/app/javascript/adminterface/lib/inputs/time_picker_input.js +13 -0
  123. data/app/javascript/adminterface/lib/inputs/time_zone_input.js +66 -0
  124. data/app/javascript/adminterface/lib/per_page.js +18 -0
  125. data/app/javascript/adminterface/lib/plugins/input_counter.js +94 -0
  126. data/app/javascript/adminterface/lib/plugins/password_visibility.js +70 -0
  127. data/app/javascript/adminterface/lib/table_checkbox_toggler.js +47 -0
  128. data/app/javascript/adminterface/lib/utils.js +148 -0
  129. data/app/views/active_admin/devise/confirmations/new.html.erb +19 -0
  130. data/app/views/active_admin/devise/passwords/edit.html.erb +21 -0
  131. data/app/views/active_admin/devise/passwords/new.html.erb +19 -0
  132. data/app/views/active_admin/devise/registrations/new.html.erb +24 -0
  133. data/app/views/active_admin/devise/sessions/new.html.erb +23 -0
  134. data/app/views/active_admin/devise/shared/_links.html.erb +25 -0
  135. data/app/views/active_admin/devise/shared/_omniauth.html.erb +10 -0
  136. data/app/views/active_admin/devise/unlocks/new.html.erb +19 -0
  137. data/app/views/kaminari/active_admin/_first_page.html.erb +11 -0
  138. data/app/views/kaminari/active_admin/_gap.html.erb +12 -0
  139. data/app/views/kaminari/active_admin/_last_page.html.erb +11 -0
  140. data/app/views/kaminari/active_admin/_next_page.html.erb +11 -0
  141. data/app/views/kaminari/active_admin/_page.html.erb +12 -0
  142. data/app/views/kaminari/active_admin/_paginator.html.erb +27 -0
  143. data/app/views/kaminari/active_admin/_prev_page.html.erb +11 -0
  144. data/app/views/layouts/active_admin_logged_out.html.erb +56 -0
  145. data/config/locales/active_admin.en.yml +25 -0
  146. data/lib/adminterface/callable.rb +7 -0
  147. data/lib/adminterface/configs.rb +76 -0
  148. data/lib/adminterface/data/base.rb +11 -0
  149. data/lib/adminterface/data/countries.rb +44 -0
  150. data/lib/adminterface/data/time_zones.rb +31 -0
  151. data/lib/adminterface/data.rb +6 -0
  152. data/lib/adminterface/encryption/encryptor.rb +26 -0
  153. data/lib/adminterface/engine.rb +22 -0
  154. data/lib/adminterface/extensions/base_controller.rb +59 -0
  155. data/lib/adminterface/extensions/batch_actions/resource_extension.rb +64 -0
  156. data/lib/adminterface/extensions/batch_actions/views/batch_action_selector.rb +48 -0
  157. data/lib/adminterface/extensions/batch_actions/views/selection_cells.rb +39 -0
  158. data/lib/adminterface/extensions/dsl.rb +13 -0
  159. data/lib/adminterface/extensions/dynamic_settings_node.rb +26 -0
  160. data/lib/adminterface/extensions/filters/forms.rb +76 -0
  161. data/lib/adminterface/extensions/form_builder.rb +165 -0
  162. data/lib/adminterface/extensions/inputs/base/active_admin_config.rb +21 -0
  163. data/lib/adminterface/extensions/inputs/base/choices.rb +33 -0
  164. data/lib/adminterface/extensions/inputs/base/groupish.rb +50 -0
  165. data/lib/adminterface/extensions/inputs/base/html.rb +15 -0
  166. data/lib/adminterface/extensions/inputs/base/labelling.rb +15 -0
  167. data/lib/adminterface/extensions/inputs/base/pluginish.rb +56 -0
  168. data/lib/adminterface/extensions/inputs/base/stringish.rb +19 -0
  169. data/lib/adminterface/extensions/inputs/base/wrapping.rb +25 -0
  170. data/lib/adminterface/extensions/inputs/base.rb +19 -0
  171. data/lib/adminterface/extensions/inputs/boolean_input.rb +42 -0
  172. data/lib/adminterface/extensions/inputs/check_boxes_input.rb +34 -0
  173. data/lib/adminterface/extensions/inputs/color_input.rb +29 -0
  174. data/lib/adminterface/extensions/inputs/country_input.rb +33 -0
  175. data/lib/adminterface/extensions/inputs/datalist_input.rb +26 -0
  176. data/lib/adminterface/extensions/inputs/date_picker_input.rb +30 -0
  177. data/lib/adminterface/extensions/inputs/date_select_input.rb +7 -0
  178. data/lib/adminterface/extensions/inputs/datetime_picker_input.rb +19 -0
  179. data/lib/adminterface/extensions/inputs/datetime_select_input.rb +7 -0
  180. data/lib/adminterface/extensions/inputs/email_input.rb +23 -0
  181. data/lib/adminterface/extensions/inputs/file_input.rb +19 -0
  182. data/lib/adminterface/extensions/inputs/filters/base/search_method_select.rb +37 -0
  183. data/lib/adminterface/extensions/inputs/filters/base.rb +3 -0
  184. data/lib/adminterface/extensions/inputs/filters/boolean_input.rb +4 -0
  185. data/lib/adminterface/extensions/inputs/filters/check_boxes_input.rb +12 -0
  186. data/lib/adminterface/extensions/inputs/filters/date_picker_input.rb +4 -0
  187. data/lib/adminterface/extensions/inputs/filters/date_range_input.rb +50 -0
  188. data/lib/adminterface/extensions/inputs/filters/select_input.rb +4 -0
  189. data/lib/adminterface/extensions/inputs/number_input.rb +23 -0
  190. data/lib/adminterface/extensions/inputs/password_input.rb +23 -0
  191. data/lib/adminterface/extensions/inputs/phone_input.rb +23 -0
  192. data/lib/adminterface/extensions/inputs/radio_input.rb +41 -0
  193. data/lib/adminterface/extensions/inputs/range_input.rb +22 -0
  194. data/lib/adminterface/extensions/inputs/rich_text_area_input.rb +21 -0
  195. data/lib/adminterface/extensions/inputs/search_input.rb +23 -0
  196. data/lib/adminterface/extensions/inputs/select_input.rb +33 -0
  197. data/lib/adminterface/extensions/inputs/string_input.rb +19 -0
  198. data/lib/adminterface/extensions/inputs/switch_input.rb +11 -0
  199. data/lib/adminterface/extensions/inputs/text_input.rb +27 -0
  200. data/lib/adminterface/extensions/inputs/time_picker_input.rb +19 -0
  201. data/lib/adminterface/extensions/inputs/time_select_input.rb +7 -0
  202. data/lib/adminterface/extensions/inputs/time_zone_input.rb +33 -0
  203. data/lib/adminterface/extensions/inputs/url_input.rb +23 -0
  204. data/lib/adminterface/extensions/menu_item.rb +16 -0
  205. data/lib/adminterface/extensions/namespace_settings.rb +30 -0
  206. data/lib/adminterface/extensions/orm/active_record/comments/views/active_admin_comments.rb +122 -0
  207. data/lib/adminterface/extensions/resource/action_items.rb +117 -0
  208. data/lib/adminterface/extensions/sidebar_section.rb +35 -0
  209. data/lib/adminterface/extensions/view_helpers/alert_helper.rb +38 -0
  210. data/lib/adminterface/extensions/view_helpers/component_helper.rb +23 -0
  211. data/lib/adminterface/extensions/views/action_items.rb +39 -0
  212. data/lib/adminterface/extensions/views/columns.rb +59 -0
  213. data/lib/adminterface/extensions/views/components/active_admin_form.rb +47 -0
  214. data/lib/adminterface/extensions/views/components/attributes_table.rb +28 -0
  215. data/lib/adminterface/extensions/views/components/blank_slate.rb +19 -0
  216. data/lib/adminterface/extensions/views/components/dropdown_menu.rb +58 -0
  217. data/lib/adminterface/extensions/views/components/icon.rb +26 -0
  218. data/lib/adminterface/extensions/views/components/index_list.rb +43 -0
  219. data/lib/adminterface/extensions/views/components/menu.rb +18 -0
  220. data/lib/adminterface/extensions/views/components/menu_item.rb +69 -0
  221. data/lib/adminterface/extensions/views/components/paginated_collection.rb +52 -0
  222. data/lib/adminterface/extensions/views/components/panel.rb +71 -0
  223. data/lib/adminterface/extensions/views/components/scopes.rb +53 -0
  224. data/lib/adminterface/extensions/views/components/sidebar_section.rb +39 -0
  225. data/lib/adminterface/extensions/views/components/site_title.rb +36 -0
  226. data/lib/adminterface/extensions/views/components/status_tag.rb +26 -0
  227. data/lib/adminterface/extensions/views/components/table_for.rb +23 -0
  228. data/lib/adminterface/extensions/views/components/tabs.rb +101 -0
  229. data/lib/adminterface/extensions/views/footer.rb +27 -0
  230. data/lib/adminterface/extensions/views/header.rb +60 -0
  231. data/lib/adminterface/extensions/views/index_as_grid.rb +53 -0
  232. data/lib/adminterface/extensions/views/index_as_table.rb +77 -0
  233. data/lib/adminterface/extensions/views/pages/base.rb +165 -0
  234. data/lib/adminterface/extensions/views/pages/form.rb +27 -0
  235. data/lib/adminterface/extensions/views/pages/index.rb +136 -0
  236. data/lib/adminterface/extensions/views/pages/page.rb +18 -0
  237. data/lib/adminterface/extensions/views/title_bar.rb +74 -0
  238. data/lib/adminterface/fixtures/components.yml +73 -0
  239. data/lib/adminterface/fixtures/css_classes.yml +107 -0
  240. data/lib/adminterface/initializers/batch_actions.rb +15 -0
  241. data/lib/adminterface/initializers/comments.rb +13 -0
  242. data/lib/adminterface/initializers/configurations.rb +38 -0
  243. data/lib/adminterface/initializers/formtastic.rb +58 -0
  244. data/lib/adminterface/initializers/resource.rb +20 -0
  245. data/lib/adminterface/initializers/view_helpers.rb +14 -0
  246. data/lib/adminterface/initializers/views.rb +39 -0
  247. data/lib/adminterface/license.rb +18 -0
  248. data/lib/adminterface/licensing/base.rb +99 -0
  249. data/lib/adminterface/licensing/commercial.rb +7 -0
  250. data/lib/adminterface/licensing/notice.rb +54 -0
  251. data/lib/adminterface/licensing/personal.rb +13 -0
  252. data/lib/adminterface/public.pem +9 -0
  253. data/lib/adminterface/version.rb +3 -0
  254. data/lib/adminterface.rb +55 -0
  255. data/lib/generators/adminterface/comments/comments_generator.rb +33 -0
  256. data/lib/generators/adminterface/comments/templates/README +13 -0
  257. data/lib/generators/adminterface/comments/templates/active_admin_comment_action_text.rb +18 -0
  258. data/lib/generators/adminterface/comments/templates/migrations/drop_body_for_active_admin_comments.rb.erb +28 -0
  259. data/lib/generators/adminterface/configs/configs_generator.rb +19 -0
  260. data/lib/generators/adminterface/configs/templates/README +33 -0
  261. data/lib/generators/adminterface/install/install_generator.rb +39 -0
  262. data/lib/generators/adminterface/install/templates/dashboard.rb +32 -0
  263. data/lib/generators/adminterface/views/views_generator.rb +15 -0
  264. data/lib/generators/adminterface/webpacker/templates/README +27 -0
  265. data/lib/generators/adminterface/webpacker/templates/active_admin.js +12 -0
  266. data/lib/generators/adminterface/webpacker/templates/active_admin.scss +8 -0
  267. data/lib/generators/adminterface/webpacker/templates/print.scss +3 -0
  268. data/lib/generators/adminterface/webpacker/webpacker_generator.rb +69 -0
  269. data/lib/tasks/adminterface_tasks.rake +4 -0
  270. metadata +291 -10
  271. data/lib/name.rb +0 -1
@@ -0,0 +1,58 @@
1
+ module Adminterface
2
+ module Initializers
3
+ module Formtastic
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ initializer "base" do |_app|
8
+ require_relative("../extensions/form_builder")
9
+ require_relative("../extensions/inputs/base")
10
+ require_relative("../extensions/inputs/base/choices")
11
+ require_relative("../extensions/inputs/base/groupish")
12
+ require_relative("../extensions/inputs/base/stringish")
13
+ require_relative("../extensions/inputs/base/pluginish")
14
+ end
15
+
16
+ initializer "inputs" do |_app|
17
+ require_relative("../extensions/inputs/boolean_input")
18
+ require_relative("../extensions/inputs/check_boxes_input")
19
+ require_relative("../extensions/inputs/color_input")
20
+ require_relative("../extensions/inputs/country_input")
21
+ require_relative("../extensions/inputs/datalist_input")
22
+ require_relative("../extensions/inputs/date_picker_input")
23
+ require_relative("../extensions/inputs/date_select_input")
24
+ require_relative("../extensions/inputs/datetime_picker_input")
25
+ require_relative("../extensions/inputs/datetime_select_input")
26
+ require_relative("../extensions/inputs/email_input")
27
+ require_relative("../extensions/inputs/file_input")
28
+ require_relative("../extensions/inputs/number_input")
29
+ require_relative("../extensions/inputs/password_input")
30
+ require_relative("../extensions/inputs/phone_input")
31
+ require_relative("../extensions/inputs/radio_input")
32
+ require_relative("../extensions/inputs/range_input")
33
+ require_relative("../extensions/inputs/rich_text_area_input")
34
+ require_relative("../extensions/inputs/search_input")
35
+ require_relative("../extensions/inputs/select_input")
36
+ require_relative("../extensions/inputs/string_input")
37
+ require_relative("../extensions/inputs/switch_input")
38
+ require_relative("../extensions/inputs/text_input")
39
+ require_relative("../extensions/inputs/time_picker_input")
40
+ require_relative("../extensions/inputs/time_select_input")
41
+ require_relative("../extensions/inputs/time_zone_input")
42
+ require_relative("../extensions/inputs/url_input")
43
+ end
44
+
45
+ initializer "filters" do |_app|
46
+ require_relative("../extensions/filters/forms")
47
+ require_relative("../extensions/inputs/filters/base")
48
+ require_relative("../extensions/inputs/filters/base/search_method_select")
49
+ require_relative("../extensions/inputs/filters/boolean_input")
50
+ require_relative("../extensions/inputs/filters/check_boxes_input")
51
+ require_relative("../extensions/inputs/filters/date_picker_input")
52
+ require_relative("../extensions/inputs/filters/date_range_input")
53
+ require_relative("../extensions/inputs/filters/select_input")
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,20 @@
1
+ module Adminterface
2
+ module Initializers
3
+ module Resource
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ config.before_configuration do |_app|
8
+ require_relative("../extensions/dsl")
9
+ require_relative("../extensions/menu_item")
10
+ require_relative("../extensions/resource/action_items")
11
+ require_relative("../extensions/sidebar_section")
12
+ end
13
+
14
+ initializer "active_admin.controllers" do
15
+ require_relative("../extensions/base_controller")
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,14 @@
1
+ module Adminterface
2
+ module Initializers
3
+ module ViewHelpers
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ initializer "view_helpers.overrides" do |_app|
8
+ require_relative("../extensions/view_helpers/alert_helper")
9
+ require_relative("../extensions/view_helpers/component_helper")
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,39 @@
1
+ module Adminterface
2
+ module Initializers
3
+ module Views
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ config.before_configuration do |_app|
8
+ require_relative("../extensions/views/action_items")
9
+ require_relative("../extensions/views/columns")
10
+ require_relative("../extensions/views/components/active_admin_form")
11
+ require_relative("../extensions/views/components/attributes_table")
12
+ require_relative("../extensions/views/components/blank_slate")
13
+ require_relative("../extensions/views/components/dropdown_menu")
14
+ require_relative("../extensions/views/components/icon")
15
+ require_relative("../extensions/views/components/index_list")
16
+ require_relative("../extensions/views/components/menu_item")
17
+ require_relative("../extensions/views/components/menu")
18
+ require_relative("../extensions/views/components/paginated_collection")
19
+ require_relative("../extensions/views/components/panel")
20
+ require_relative("../extensions/views/components/scopes")
21
+ require_relative("../extensions/views/components/sidebar_section")
22
+ require_relative("../extensions/views/components/site_title")
23
+ require_relative("../extensions/views/components/status_tag")
24
+ require_relative("../extensions/views/components/table_for")
25
+ require_relative("../extensions/views/components/tabs")
26
+ require_relative("../extensions/views/footer")
27
+ require_relative("../extensions/views/header")
28
+ require_relative("../extensions/views/index_as_grid")
29
+ require_relative("../extensions/views/index_as_table")
30
+ require_relative("../extensions/views/pages/base")
31
+ require_relative("../extensions/views/pages/form")
32
+ require_relative("../extensions/views/pages/index")
33
+ require_relative("../extensions/views/pages/page")
34
+ require_relative("../extensions/views/title_bar")
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,18 @@
1
+ module Adminterface
2
+ class License
3
+ class_attribute :license, default: {}
4
+
5
+ class << self
6
+ def verify!
7
+ return if Rails.env.test?
8
+
9
+ self.license =
10
+ if ::Adminterface.license_key.present?
11
+ ::Adminterface::Licensing::Commercial
12
+ else
13
+ ::Adminterface::Licensing::Personal
14
+ end.call
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,99 @@
1
+ module Adminterface
2
+ module Licensing
3
+ class Base
4
+ extend Adminterface::Callable
5
+
6
+ ENDPOINT = "https://app.adminterface.io/api/v1/licenses/verify".freeze
7
+ CACHE_KEY = "adminterface.licensing.response".freeze
8
+ TIMEOUT = 5
9
+
10
+ attr_reader :license_key
11
+ delegate :cache_store, :rails6_and_up?, to: :Adminterface
12
+
13
+ def initialize(license_key = Adminterface.license_key)
14
+ @license_key = license_key
15
+ end
16
+
17
+ def call
18
+ response = send_and_cache_request.with_indifferent_access
19
+ Adminterface::Licensing::Notice
20
+ .call(response, license_key, **{external: request?, endpoint: ENDPOINT})
21
+ response
22
+ end
23
+
24
+ def payload
25
+ {
26
+ license_key: encrypted_license_key,
27
+ license: license,
28
+ adminterface_version: Adminterface::VERSION,
29
+ rails_version: Rails::VERSION::STRING,
30
+ ruby_version: RUBY_VERSION,
31
+ environment: Rails.env,
32
+ app_name: app_name,
33
+ verified: false
34
+ }
35
+ end
36
+
37
+ private
38
+
39
+ def encrypted_license_key
40
+ @encrypted_license_key ||=
41
+ license_key && Adminterface::Encryption::Encryptor.call(license_key)
42
+ end
43
+
44
+ def send_and_cache_request
45
+ return cached_response if has_cached_response?
46
+ return local_response unless request?
47
+
48
+ response = HTTParty.post(
49
+ ENDPOINT,
50
+ body: payload.to_json,
51
+ headers: {'Content-type': "application/json"},
52
+ timeout: TIMEOUT
53
+ )
54
+
55
+ case response.code
56
+ when 200 then cache_response response.code, response.parsed_response
57
+ else return_error response.code, response.body
58
+ end
59
+ rescue => e
60
+ return_error e.class, e.message
61
+ end
62
+
63
+ def local_response
64
+ payload.merge(verified: true)
65
+ end
66
+
67
+ def request?
68
+ true
69
+ end
70
+
71
+ def return_error(status, exception_message = "")
72
+ payload.merge(status: status, message: exception_message).stringify_keys!
73
+ end
74
+
75
+ def cache_response(status, response, time: 1.hour.to_i)
76
+ response = payload.merge!(status: status, expiry: time, **response).stringify_keys!
77
+ cache_store.write(CACHE_KEY, response, expires_in: time)
78
+ response
79
+ end
80
+
81
+ def license
82
+ self.class.name.split("::").last.underscore
83
+ end
84
+
85
+ def app_name
86
+ klass = Rails.application.class
87
+ rails6_and_up? ? klass.module_parent.name : klass.parent.name
88
+ end
89
+
90
+ def has_cached_response?
91
+ cache_store.exist? CACHE_KEY
92
+ end
93
+
94
+ def cached_response
95
+ cache_store.read CACHE_KEY
96
+ end
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,7 @@
1
+ require_relative "./base"
2
+
3
+ module Adminterface
4
+ module Licensing
5
+ class Commercial < Base; end
6
+ end
7
+ end
@@ -0,0 +1,54 @@
1
+ module Adminterface
2
+ module Licensing
3
+ class Notice
4
+ extend Adminterface::Callable
5
+ attr_reader :response, :license_key, :external, :endpoint
6
+
7
+ def initialize(response, license_key, external: true, endpoint: nil)
8
+ @response = response
9
+ @license_key = license_key
10
+ @external = external
11
+ @endpoint = endpoint
12
+ end
13
+
14
+ def call
15
+ return unless Rails.env.development?
16
+
17
+ log("========================================")
18
+ log(messages)
19
+ log("========================================")
20
+ end
21
+
22
+ private
23
+
24
+ def log(*msgs)
25
+ msgs.each { |x| puts(x) }
26
+ end
27
+
28
+ def external?
29
+ !!external
30
+ end
31
+
32
+ def title
33
+ "Adminterface #{response[:adminterface_version]} (\"#{response[:license]}\")"
34
+ end
35
+
36
+ def messages
37
+ return title unless external?
38
+
39
+ [title, "=> Verifying license on #{endpoint}", verified].flatten
40
+ end
41
+
42
+ def verified
43
+ if !!response[:verified]
44
+ Rainbow("=> [#{response[:status]}] #{response[:message]}").green
45
+ else
46
+ [
47
+ Rainbow("=> [#{response[:status]}] #{response[:message]}").red,
48
+ Rainbow("=> license_key: #{license_key}").red
49
+ ]
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,13 @@
1
+ require_relative "./base"
2
+
3
+ module Adminterface
4
+ module Licensing
5
+ class Personal < Base
6
+ private
7
+
8
+ def request?
9
+ false
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,9 @@
1
+ -----BEGIN PUBLIC KEY-----
2
+ MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuH2AdyyQycs7DhFQo1f/
3
+ 9ssIqc5ek7OYZHlfwSYSFuWaTfq46HK66QZ1ebkUva/U33QzNyaxcMxYpTpRY2dF
4
+ IPLtS1QNktC4U0T3Nz0sY3tZp/IwnWcE9b8MpS2FDFtMRiHu+/dtthWoG6kP6w5y
5
+ P8pWDLwQuYPbPnqlLbp6yWaJB1G1qHoLmgKD1VPUxjk0gB0tGPPvaiciESObbGC3
6
+ IgzeUKtz/+dhR4UBOZc1pmrftwacUfvNHrSuot0jaYCNrb98Oq8kkBpp79MgRghK
7
+ SkPdTRidSlIokdxlEOrcRhoJsVka5w9fYLShJdv1yhmGh3VZdKkvSqM7MhwE+zML
8
+ 0QIDAQAB
9
+ -----END PUBLIC KEY-----
@@ -0,0 +1,3 @@
1
+ module Adminterface
2
+ VERSION = "0.2.3"
3
+ end
@@ -0,0 +1,55 @@
1
+ require "activeadmin"
2
+ require "rainbow"
3
+ require "httparty"
4
+
5
+ # Adminterface main file
6
+ module Adminterface
7
+ autoload :VERSION, "adminterface/version"
8
+ autoload :Configs, "adminterface/configs"
9
+ autoload :Data, "adminterface/data"
10
+ autoload :License, "adminterface/license"
11
+ autoload :Callable, "adminterface/callable"
12
+
13
+ # Load Initializers
14
+ module Initializers
15
+ autoload :BatchActions, "adminterface/initializers/batch_actions"
16
+ autoload :Comments, "adminterface/initializers/comments"
17
+ autoload :Configurations, "adminterface/initializers/configurations"
18
+ autoload :Formtastic, "adminterface/initializers/formtastic"
19
+ autoload :Resource, "adminterface/initializers/resource"
20
+ autoload :ViewHelpers, "adminterface/initializers/view_helpers"
21
+ autoload :Views, "adminterface/initializers/views"
22
+ end
23
+
24
+ module Licensing
25
+ autoload :Notice, "adminterface/licensing/notice"
26
+ autoload :Commercial, "adminterface/licensing/commercial"
27
+ autoload :Personal, "adminterface/licensing/personal"
28
+ end
29
+
30
+ module Encryption
31
+ autoload :Encryptor, "adminterface/encryption/encryptor"
32
+ end
33
+
34
+ # License key
35
+ mattr_accessor :license_key
36
+ @@license_key = nil
37
+
38
+ def self.setup
39
+ yield self
40
+ end
41
+
42
+ def self.rails6_and_up?
43
+ Rails::VERSION::MAJOR >= 6
44
+ end
45
+
46
+ def self.cache_store
47
+ if Rails.cache.instance_of?(ActiveSupport::Cache::NullStore)
48
+ ActiveSupport::Cache::MemoryStore.new
49
+ else
50
+ Rails.cache
51
+ end
52
+ end
53
+ end
54
+
55
+ require "adminterface/engine"
@@ -0,0 +1,33 @@
1
+ module Adminterface
2
+ module Generators
3
+ class CommentsGenerator < Rails::Generators::Base
4
+ include Rails::Generators::Migration
5
+
6
+ desc "Generate action_text migrations and initializers for ActiveAdmin::Comment"
7
+ source_root File.expand_path("templates", __dir__)
8
+
9
+ def self.next_migration_number(dirname)
10
+ next_migration_number = current_migration_number(dirname) + 1
11
+ ActiveRecord::Migration.next_migration_number(next_migration_number)
12
+ end
13
+
14
+ def install_action_text
15
+ rails_command "action_text:install"
16
+ end
17
+
18
+ def create_initializer
19
+ template "active_admin_comment_action_text.rb",
20
+ "config/initializers/active_admin_comment_action_text.rb"
21
+ end
22
+
23
+ def create_migrations
24
+ migration_template "migrations/drop_body_for_active_admin_comments.rb.erb",
25
+ "db/migrate/drop_body_for_active_admin_comments.rb"
26
+ end
27
+
28
+ def show_readme
29
+ readme "README" if behavior == :invoke
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,13 @@
1
+ ===============================================================================
2
+ Command: `rails generate adminterface:comments`
3
+ This command does the following:
4
+
5
+ 1. Create a migration `drop_body_for_active_admin_comments.rb`
6
+ - Your existing data is saved inside the `body_backup` column by default
7
+ - Un-comment the lines inside this file to migrate existing data from the `ActiveAdmin::Comment` table to `ActionText::RichText`
8
+
9
+ 2. Create an initializer `initializers/active_admin_comment_action_text.rb`
10
+ - This tells the `ActiveAdmin::Comment` model to use ActionText instead of the `body` database column
11
+
12
+ 3. For guides, please visit https://github.com/CMDBrew/adminterface
13
+ ===============================================================================
@@ -0,0 +1,18 @@
1
+ module Adminterface
2
+ module ActionTextComment
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ # Fix author validation issue— https://github.com/activeadmin/activeadmin/issues/5258
7
+ _validate_callbacks.each do |callback|
8
+ callback.raw_filter.attributes.delete :author
9
+ end
10
+
11
+ has_rich_text :body
12
+ end
13
+ end
14
+ end
15
+
16
+ Rails.configuration.to_prepare do
17
+ ActiveAdmin::Comment.send :include, Adminterface::ActionTextComment
18
+ end
@@ -0,0 +1,28 @@
1
+ class DropBodyForActiveAdminComments < ActiveRecord::Migration[<%= ActiveRecord::Migration.current_version.to_s %>]
2
+ def up
3
+ rename_column :active_admin_comments, :body, :body_backup
4
+
5
+ ## Add migration to migrate existing data if necessary
6
+ # ActiveAdmin::Comment.reset_column_information
7
+ # ActiveAdmin::Comment.find_each do |comment|
8
+ # comment.body = comment.body_backup
9
+ # comment.save
10
+ # end
11
+
12
+ # remove_column :active_admin_comments, :body_backup, :text
13
+ end
14
+
15
+ def down
16
+ # add_column :active_admin_comments, :body_backup, :text
17
+
18
+ ## Add migration to migrate existing data if necessary
19
+ # ActiveAdmin::Comment.reset_column_information
20
+ # ActiveAdmin::Comment.find_each do |comment|
21
+ # comment.body_backup = comment.body.to_plain_text
22
+ # comment.save
23
+ # end
24
+
25
+ rename_column :active_admin_comments, :body_backup, :body
26
+ end
27
+ end
28
+
@@ -0,0 +1,19 @@
1
+ module Adminterface
2
+ module Generators
3
+ class ConfigsGenerator < Rails::Generators::Base
4
+ desc "Copies config files into a directory for customization"
5
+ source_root File.expand_path("templates", __dir__)
6
+
7
+ argument :namespace, type: :string, default: "Admin"
8
+
9
+ def copy
10
+ directory Adminterface::Engine.root.join("lib/adminterface/fixtures"),
11
+ "config/adminterface/#{namespace.underscore}/"
12
+ end
13
+
14
+ def show_readme
15
+ readme "README" if behavior == :invoke
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,33 @@
1
+ ===============================================================================
2
+ Depending on how you want to structure your application, you can use configs files to update:
3
+ 1. Global Settings
4
+ ```
5
+ # config/initializers/active_admin.rb
6
+ ActiveAdmin.setup do
7
+ config.css_classes = YAML.load_file(Rails.root.join("config/adminterface/css_classes.yml").to_s)
8
+ config.components = YAML.load_file(Rails.root.join("config/adminterface/components.yml").to_s)
9
+ end
10
+ ```
11
+
12
+ 2. Namespace Settings
13
+ ```
14
+ # config/initializers/active_admin.rb
15
+ ActiveAdmin.setup do
16
+ config.namespace :site_1 do |site|
17
+ config.css_classes = YAML.load_file(Rails.root.join("config/adminterface/site_1/css_classes.yml").to_s)
18
+ config.components = YAML.load_file(Rails.root.join("config/adminterface/site_1/components.yml").to_s)
19
+ end
20
+ end
21
+ ```
22
+
23
+ 3. Resource Settings
24
+ ```
25
+ # app/admin/users.rb
26
+ ActiveAdmin.register User do
27
+ config.css_classes = YAML.load_file(Rails.root.join("config/adminterface/admin/users/css_classes.yml").to_s)
28
+ config.components = YAML.load_file(Rails.root.join("config/adminterface/admin/users/components.yml").to_s)
29
+ end
30
+ ```
31
+
32
+ 4. For guides, please visit https://github.com/CMDBrew/adminterface
33
+ ===============================================================================
@@ -0,0 +1,39 @@
1
+ module Adminterface
2
+ module Generators
3
+ class InstallGenerator < Rails::Generators::Base
4
+ desc "Installs Adminterface and generates necessary files and migrations"
5
+ source_root File.expand_path("templates", __dir__)
6
+
7
+ class_option :skip_comments,
8
+ type: :boolean, default: false,
9
+ desc: "Skip installation of ActionText for comments"
10
+ class_option :skip_examples,
11
+ type: :boolean, default: false,
12
+ desc: "Skip adding sample admin files"
13
+ class_option :use_webpacker,
14
+ type: :boolean, default: true,
15
+ desc: "Install assets with webpacker"
16
+ class_option :version,
17
+ aliases: "-v", type: :string, default: Adminterface::VERSION,
18
+ desc: "Install with a specific version"
19
+
20
+ def install_assets
21
+ return unless options[:use_webpacker]
22
+
23
+ generate "adminterface:webpacker -v #{options[:version]}"
24
+ end
25
+
26
+ def install_comments
27
+ return if options[:skip_comments]
28
+
29
+ generate "adminterface:comments"
30
+ end
31
+
32
+ def add_examples
33
+ return if options[:skip_examples]
34
+
35
+ template "dashboard.rb", "app/admin/dashboard.rb"
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,32 @@
1
+ ActiveAdmin.register_page "Dashboard" do
2
+ menu priority: 1
3
+
4
+ content title: proc { I18n.t("active_admin.dashboard") } do
5
+ div class: "alert alert-info" do
6
+ h4 I18n.t("active_admin.dashboard_welcome.welcome"), class: "alert-heading"
7
+ para I18n.t("active_admin.dashboard_welcome.call_to_action").html_safe
8
+ hr
9
+ para I18n.t("active_admin.dashboard_welcome.footnote").html_safe, class: "mb-0"
10
+ end
11
+
12
+ # Here is an example of a simple dashboard with columns and panels.
13
+ #
14
+ # columns do
15
+ # column do
16
+ # panel "Recent Posts" do
17
+ # ul do
18
+ # Post.recent(5).map do |post|
19
+ # li link_to(post.title, admin_post_path(post))
20
+ # end
21
+ # end
22
+ # end
23
+ # end
24
+
25
+ # column do
26
+ # panel "Info" do
27
+ # para "Welcome to ActiveAdmin."
28
+ # end
29
+ # end
30
+ # end
31
+ end
32
+ end
@@ -0,0 +1,15 @@
1
+ module Adminterface
2
+ module Generators
3
+ class ViewsGenerator < Rails::Generators::Base
4
+ desc "Copies view templates for customization"
5
+ source_root Adminterface::Engine.root.join("app/views")
6
+
7
+ def copy
8
+ directory "active_admin", "app/views/active_admin"
9
+ directory "kaminari/active_admin", "app/views/kaminari/active_admin"
10
+ directory "layouts/active_admin_logged_out.html.erb",
11
+ "app/views/layouts/active_admin_logged_out.html.erb"
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,27 @@
1
+ ===============================================================================
2
+ Command: `rails generate adminterface:webpacker`
3
+ Depending on your application's configuration, you might need to perform some manual steps:
4
+
5
+ 1. Change your ActiveAdmin config to use webpacker
6
+ ```
7
+ # config/initializers/active_admin.rb
8
+ # ...
9
+ #
10
+ # == Webpacker
11
+ #
12
+ # By default, Active Admin uses Sprocket's asset pipeline.
13
+ # You can switch to using Webpacker here.
14
+ #
15
+ config.use_webpacker = true
16
+ ```
17
+
18
+ 2. Migrate your custom javascripts and stylesheets to webpacker
19
+ - app/assets/javascripts/active_admin.js -> app/javascript/packs/active_admin.js
20
+ - app/assets/stylesheets/active_admin.scss -> app/javascript/stylesheets/active_admin.scss
21
+
22
+ 3. Remove unnecessary sprockets files
23
+ - app/assets/javascripts/active_admin.js
24
+ - app/assets/stylesheets/active_admin.scss
25
+
26
+ 4. For guides, please visit https://github.com/CMDBrew/adminterface
27
+ ===============================================================================