keppler 2.0.2 → 2.0.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 (236) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +8 -0
  3. data/CODE_OF_CONDUCT.md +74 -0
  4. data/Gemfile.lock +26 -0
  5. data/LICENSE.txt +21 -0
  6. data/README.md +93 -22
  7. data/Rakefile +6 -0
  8. data/bin/keppler +6 -2
  9. data/bin/setup +2 -1
  10. data/exe/keppler +6 -0
  11. data/installer/core/.gitignore +87 -0
  12. data/installer/core/.ruby-version +1 -0
  13. data/installer/core/Gemfile +6 -4
  14. data/installer/core/README.md +86 -50
  15. data/installer/core/app/assets/images/.keep +0 -0
  16. data/installer/core/app/assets/images/admin/astronauta_keppler.svg +123 -0
  17. data/installer/core/app/assets/images/admin/avatar_keppler.svg +100 -0
  18. data/installer/core/app/assets/images/admin/image_default.png +0 -0
  19. data/installer/core/app/assets/images/app/fondo.svg +19 -0
  20. data/installer/core/app/assets/javascripts/admin/file_upload.coffee +11 -0
  21. data/installer/core/app/assets/javascripts/admin/main.coffee +23 -12
  22. data/installer/core/app/assets/javascripts/admin/preview_template.js +2 -2
  23. data/installer/core/app/assets/javascripts/admin/sidebar.js +8 -7
  24. data/installer/core/app/assets/javascripts/admin/swal.js +37 -0
  25. data/installer/core/app/assets/javascripts/admin/switch.js +6 -0
  26. data/installer/core/app/assets/javascripts/admin/tooltips.coffee +3 -0
  27. data/installer/core/app/assets/javascripts/errors/application.js.coffee +1 -0
  28. data/installer/core/app/assets/javascripts/errors/errors.js +113 -0
  29. data/installer/core/app/assets/javascripts/keppler_ga_dashboard/view-selector2.js +1 -1
  30. data/installer/core/app/assets/javascripts/vue_admin/index.js +34 -9
  31. data/installer/core/app/assets/stylesheets/admin/application.scss +4 -14
  32. data/installer/core/app/assets/stylesheets/admin/components/navigation/_navbar.scss +4 -5
  33. data/installer/core/app/assets/stylesheets/admin/components/navigation/_sidebar.scss +26 -17
  34. data/installer/core/app/assets/stylesheets/admin/pages/_appearance.scss +5 -0
  35. data/installer/core/app/assets/stylesheets/admin/pages/_customize.scss +21 -0
  36. data/installer/core/app/assets/stylesheets/admin/pages/_datepicker.scss +1088 -0
  37. data/installer/core/app/assets/stylesheets/admin/pages/_files.scss +26 -9
  38. data/installer/core/app/assets/stylesheets/admin/pages/_form.scss +19 -6
  39. data/installer/core/app/assets/stylesheets/admin/pages/_index.scss +4 -8
  40. data/installer/core/app/assets/stylesheets/admin/pages/_listing.scss +5 -0
  41. data/installer/core/app/assets/stylesheets/admin/pages/_navbar.scss +9 -2
  42. data/installer/core/app/assets/stylesheets/admin/pages/_roles.scss +6 -0
  43. data/installer/core/app/assets/stylesheets/admin/pages/_search.scss +24 -28
  44. data/installer/core/app/assets/stylesheets/admin/pages/_sidebar.scss +1 -1
  45. data/installer/core/app/assets/stylesheets/admin/pages/_switchs.scss +135 -39
  46. data/installer/core/app/assets/stylesheets/admin/pages/_timepicker.scss +16 -0
  47. data/installer/core/app/assets/stylesheets/admin/pages/_user.scss +6 -0
  48. data/installer/core/app/assets/stylesheets/admin/utils/_base.scss +6 -1
  49. data/installer/core/app/assets/stylesheets/admin/utils/_theme.scss +24 -11
  50. data/installer/core/app/assets/stylesheets/admin/utils/_variables.scss +1 -1
  51. data/installer/core/app/assets/stylesheets/app/pages/_front.sass +70 -56
  52. data/installer/core/app/assets/stylesheets/errors/errors.scss +161 -120
  53. data/installer/core/app/assets/stylesheets/vendor/admin-lte/_skin-blue.scss +1 -1
  54. data/installer/core/app/controllers/admin/admin_controller.rb +1 -1
  55. data/installer/core/app/controllers/admin/customizes_controller.rb +6 -8
  56. data/installer/core/app/controllers/admin/meta_tags_controller.rb +14 -18
  57. data/installer/core/app/controllers/admin/roles_controller.rb +176 -0
  58. data/installer/core/app/controllers/admin/scripts_controller.rb +14 -33
  59. data/installer/core/app/controllers/admin/settings_controller.rb +26 -27
  60. data/installer/core/app/controllers/admin/users_controller.rb +35 -29
  61. data/installer/core/app/controllers/app/app_controller.rb +27 -4
  62. data/installer/core/app/controllers/application_controller.rb +39 -1
  63. data/installer/core/app/controllers/concerns/.keep +0 -0
  64. data/installer/core/app/helpers/admin_helper.rb +5 -0
  65. data/installer/core/app/helpers/application_helper.rb +9 -0
  66. data/installer/core/app/helpers/roles_helper.rb +2 -0
  67. data/installer/core/app/inputs/file_material_input.rb +4 -2
  68. data/installer/core/app/inputs/keppler_boolean_input.rb +74 -0
  69. data/installer/core/app/inputs/keppler_file_input.rb +70 -0
  70. data/installer/core/app/mailers/.keep +0 -0
  71. data/installer/core/app/mailers/application_mailer.rb +13 -13
  72. data/installer/core/app/models/.keep +0 -0
  73. data/installer/core/app/models/appearance.rb +2 -0
  74. data/installer/core/app/models/application_record.rb +3 -0
  75. data/installer/core/app/models/concerns/.keep +0 -0
  76. data/installer/core/app/models/concerns/downloadable.rb +13 -0
  77. data/installer/core/app/models/concerns/sortable.rb +9 -0
  78. data/installer/core/app/models/concerns/uploadable.rb +10 -0
  79. data/installer/core/app/models/customize.rb +8 -6
  80. data/installer/core/app/models/front.rb +3 -0
  81. data/installer/core/app/models/google_analytics_setting.rb +2 -0
  82. data/installer/core/app/models/meta_tag.rb +27 -14
  83. data/installer/core/app/models/permission.rb +3 -0
  84. data/installer/core/app/models/role.rb +62 -5
  85. data/installer/core/app/models/script.rb +6 -15
  86. data/installer/core/app/models/setting.rb +2 -0
  87. data/installer/core/app/models/smtp_setting.rb +2 -0
  88. data/installer/core/app/models/social_account.rb +2 -0
  89. data/installer/core/app/models/user.rb +17 -1
  90. data/installer/core/app/policies/application_policy.rb +4 -4
  91. data/installer/core/app/policies/controller_policy.rb +15 -11
  92. data/installer/core/app/policies/role_policy.rb +25 -0
  93. data/installer/core/app/policies/user_policy.rb +1 -1
  94. data/installer/core/app/uploaders/attachment_uploader.rb +18 -1
  95. data/installer/core/app/views/admin/customizes/_description.html.haml +4 -4
  96. data/installer/core/app/views/admin/customizes/_form.html.haml +4 -4
  97. data/installer/core/app/views/admin/customizes/_listing.html.haml +1 -1
  98. data/installer/core/app/views/admin/customizes/_switch_default_template.html.haml +8 -13
  99. data/installer/core/app/views/admin/customizes/_switch_template.html.haml +8 -11
  100. data/installer/core/app/views/admin/customizes/index.html.haml +9 -9
  101. data/installer/core/app/views/admin/layouts/_head.html.haml +3 -3
  102. data/installer/core/app/views/admin/layouts/_keppler_boolean_script.haml +12 -0
  103. data/installer/core/app/views/admin/layouts/_navigation.html.haml +17 -16
  104. data/installer/core/app/views/admin/layouts/_sidebar.html.haml +27 -36
  105. data/installer/core/app/views/admin/layouts/application.html.haml +1 -0
  106. data/installer/core/app/views/admin/layouts/index/remote_messages.js.haml +6 -6
  107. data/installer/core/app/views/admin/meta_tags/_index_show.html.haml +2 -2
  108. data/installer/core/app/views/admin/meta_tags/_listing.html.haml +6 -6
  109. data/installer/core/app/views/admin/meta_tags/index.html.haml +15 -29
  110. data/installer/core/app/views/admin/meta_tags/show.html.haml +7 -8
  111. data/installer/core/app/views/admin/roles/_description.html.haml +13 -0
  112. data/installer/core/app/views/admin/roles/_form.html.haml +27 -0
  113. data/installer/core/app/views/admin/roles/_index_show.html.haml +24 -0
  114. data/installer/core/app/views/admin/roles/_listing.html.haml +46 -0
  115. data/installer/core/app/views/admin/roles/_switch.html.haml +20 -0
  116. data/installer/core/app/views/admin/roles/add_permissions.html.haml +60 -0
  117. data/installer/core/app/views/admin/roles/create_permissions.html.haml +0 -0
  118. data/installer/core/app/views/admin/roles/create_permissions.js.erb +1 -0
  119. data/installer/core/app/views/admin/roles/edit.html.haml +1 -0
  120. data/installer/core/app/views/admin/roles/index.html.haml +80 -0
  121. data/installer/core/app/views/admin/roles/new.html.haml +1 -0
  122. data/installer/core/app/views/admin/roles/reload.js.haml +5 -0
  123. data/installer/core/app/views/admin/roles/show.html.haml +32 -0
  124. data/installer/core/app/views/admin/roles/show.js.haml +4 -0
  125. data/installer/core/app/views/admin/roles/show_description.js.erb +2 -0
  126. data/installer/core/app/views/admin/scripts/_index_show.html.haml +2 -2
  127. data/installer/core/app/views/admin/scripts/_listing.html.haml +13 -13
  128. data/installer/core/app/views/admin/scripts/index.html.haml +12 -26
  129. data/installer/core/app/views/admin/scripts/show.html.haml +4 -4
  130. data/installer/core/app/views/admin/settings/components/_preview.html.haml +1 -1
  131. data/installer/core/app/views/admin/settings/fields/_appearance.html.haml +25 -17
  132. data/installer/core/app/views/admin/settings/fields/_basic_information.html.haml +13 -7
  133. data/installer/core/app/views/admin/settings/fields/_email_setting.html.haml +16 -16
  134. data/installer/core/app/views/admin/settings/fields/_google_analytics_setting.html.haml +1 -1
  135. data/installer/core/app/views/admin/settings/fields/_social_accounts.html.haml +39 -39
  136. data/installer/core/app/views/admin/users/_form.html.haml +18 -25
  137. data/installer/core/app/views/admin/users/_index_show.html.haml +2 -2
  138. data/installer/core/app/views/admin/users/_listing.html.haml +6 -6
  139. data/installer/core/app/views/admin/users/delete_avatar.js.haml +3 -0
  140. data/installer/core/app/views/admin/users/filter_by_role.js.erb +9 -0
  141. data/installer/core/app/views/admin/users/index.html.haml +22 -22
  142. data/installer/core/app/views/admin/users/show.html.haml +10 -12
  143. data/installer/core/app/views/app/front/index.html.haml +137 -87
  144. data/installer/core/app/views/app/layouts/_footer.html.haml +2 -2
  145. data/installer/core/app/views/app/layouts/_head.html.haml +4 -12
  146. data/installer/core/app/views/app/layouts/_meta_tags.html.haml +38 -6
  147. data/installer/core/app/views/app/layouts/application.html.haml +8 -8
  148. data/installer/core/app/views/devise/sessions/new.html.haml +32 -28
  149. data/installer/core/app/views/errors/internal_server_error.html.haml +50 -7
  150. data/installer/core/app/views/errors/not_authorized.html.haml +75 -6
  151. data/installer/core/app/views/errors/not_found.html.haml +101 -7
  152. data/installer/core/app/views/errors/unprocessable.html.haml +50 -7
  153. data/installer/core/bin/update +31 -0
  154. data/installer/core/bin/yarn +11 -0
  155. data/installer/core/config/application.rb +1 -1
  156. data/installer/core/config/environments/production.rb +1 -1
  157. data/installer/core/config/initializers/carrierwave.rb +12 -0
  158. data/installer/core/config/initializers/mime_types.rb +2 -2
  159. data/installer/core/config/initializers/simple_form_bootstrap.rb +20 -1
  160. data/installer/core/config/initializers/simple_form_components.rb +61 -0
  161. data/installer/core/config/locales/en.yml +29 -6
  162. data/installer/core/config/locales/es.yml +32 -5
  163. data/installer/core/config/locales/simple_form.en.yml +1 -0
  164. data/installer/core/config/locales/simple_form.es.yml +3 -2
  165. data/installer/core/config/menu.yml +34 -8
  166. data/installer/core/config/permissions.yml +21 -0
  167. data/installer/core/config/routes.rb +56 -14
  168. data/installer/core/db/migrate/20140812210925_rolify_create_roles.rb +2 -0
  169. data/installer/core/db/migrate/20160128131802_create_scripts.rb +1 -0
  170. data/installer/core/db/migrate/20180503174351_create_permissions.rb +11 -0
  171. data/installer/core/db/seeds.rb +12 -6
  172. data/installer/core/lib/generators/keppler_front/templates/views/template.html.haml +222 -177
  173. data/installer/core/lib/generators/keppler_relation/keppler_relation_generator.rb +1 -1
  174. data/installer/core/lib/generators/keppler_scaffold/keppler_scaffold_generator.rb +57 -40
  175. data/installer/core/lib/generators/keppler_scaffold/templates/controllers/controller.rb +29 -30
  176. data/installer/core/lib/generators/keppler_scaffold/templates/models/model.rb +14 -20
  177. data/installer/core/lib/generators/keppler_scaffold/templates/views/_form.html.haml +24 -35
  178. data/installer/core/lib/generators/keppler_scaffold/templates/views/_index_show.html.haml +12 -11
  179. data/installer/core/lib/generators/keppler_scaffold/templates/views/_listing.html.haml +7 -7
  180. data/installer/core/lib/generators/keppler_scaffold/templates/views/index.html.haml +17 -33
  181. data/installer/core/lib/generators/keppler_scaffold/templates/views/show.html.haml +23 -24
  182. data/installer/core/plugins/keppler_ga_dashboard/app/assets/images/keppler_ga_dashboard/.keep +0 -0
  183. data/installer/core/plugins/keppler_ga_dashboard/config/permissions.yml +4 -0
  184. data/installer/core/plugins/keppler_ga_dashboard/keppler_ga_dashboard.gemspec +1 -1
  185. data/installer/core/test/controllers/.keep +0 -0
  186. data/installer/core/test/controllers/roles_controller_test.rb +48 -0
  187. data/installer/core/test/fixtures/.keep +0 -0
  188. data/installer/core/test/fixtures/permissions.yml +9 -0
  189. data/installer/core/test/helpers/.keep +0 -0
  190. data/installer/core/test/integration/.keep +0 -0
  191. data/installer/core/test/mailers/.keep +0 -0
  192. data/installer/core/test/models/.keep +0 -0
  193. data/installer/core/test/models/permission_test.rb +7 -0
  194. data/installer/core/test/system/roles_test.rb +43 -0
  195. data/installer/core/vendor/assets/javascripts/.keep +0 -0
  196. data/installer/core/vendor/assets/stylesheets/.keep +0 -0
  197. data/installer/plugins/concerns/commons.rb +47 -0
  198. data/installer/plugins/concerns/destroy_multiple.rb +33 -0
  199. data/installer/plugins/concerns/history.rb +24 -0
  200. data/installer/plugins/config/locales/en.yml +104 -0
  201. data/installer/plugins/config/locales/es.yml +139 -0
  202. data/installer/plugins/config/menu.yml +12 -0
  203. data/installer/plugins/config/permissions.yml +1 -0
  204. data/installer/plugins/generators/keppler_scaffold/keppler_scaffold_generator.rb +203 -0
  205. data/installer/plugins/generators/keppler_scaffold/templates/controllers/controller.rb +171 -0
  206. data/installer/plugins/generators/keppler_scaffold/templates/models/model.rb +41 -0
  207. data/installer/plugins/generators/keppler_scaffold/templates/policies/policy.rb +11 -0
  208. data/installer/plugins/generators/keppler_scaffold/templates/views/_description.html.haml +13 -0
  209. data/installer/plugins/generators/keppler_scaffold/templates/views/_form.html.haml +49 -0
  210. data/installer/plugins/generators/keppler_scaffold/templates/views/_index_show.html.haml +26 -0
  211. data/installer/plugins/generators/keppler_scaffold/templates/views/_listing.html.haml +65 -0
  212. data/installer/plugins/generators/keppler_scaffold/templates/views/edit.html.haml +1 -0
  213. data/installer/plugins/generators/keppler_scaffold/templates/views/index.html.haml +97 -0
  214. data/installer/plugins/generators/keppler_scaffold/templates/views/new.html.haml +1 -0
  215. data/installer/plugins/generators/keppler_scaffold/templates/views/reload.js.haml +5 -0
  216. data/installer/plugins/generators/keppler_scaffold/templates/views/show.html.haml +66 -0
  217. data/installer/plugins/generators/keppler_scaffold/templates/views/show.js.haml +4 -0
  218. data/installer/plugins/install.rb +156 -0
  219. data/installer/plugins/layouts/_navigation.html.haml +47 -0
  220. data/installer/plugins/layouts/application.html.haml +24 -0
  221. data/keppler.gemspec +35 -0
  222. data/lib/keppler.rb +0 -1
  223. data/lib/keppler/add.rb +13 -0
  224. data/lib/keppler/cli.rb +134 -5
  225. data/lib/keppler/delete.rb +13 -0
  226. data/lib/keppler/version.rb +1 -1
  227. metadata +117 -23
  228. data/installer/core/app/assets/images/admin/space.png +0 -0
  229. data/installer/core/app/assets/stylesheets/admin/pages/_header.scss +0 -34
  230. data/installer/core/app/assets/stylesheets/admin/pages/_pageslide.scss +0 -125
  231. data/installer/core/db/schema.rb +0 -172
  232. data/installer/lib/conf.rb +0 -31
  233. data/installer/lib/scaffold.rb +0 -10
  234. data/installer/run.sh +0 -17
  235. data/installer/scripts/bin.sh +0 -61
  236. data/lib/keppler/cli/generate.rb +0 -19
@@ -0,0 +1,5 @@
1
+ $('#objects-container').html("#{j render 'listing', objects: @objects}");
2
+ $('#objects-container').css('opacity', '0');
3
+ $('#spinner2').css('display', 'block');
4
+ var request = $.ajax({url: "/admin/<%= plural_table_name %>", method: "get", dataType: "html"});
5
+ request.done(function(msg){$('#spinner2').css('display', 'none');$('#objects-container').css('opacity', '1');});
@@ -0,0 +1,66 @@
1
+ .container
2
+ .row
3
+ .col-lg-2
4
+ = link_to admin_<%= namespaced_path.split('_').drop(1).join('_') %>_<%= plural_table_name %>_path, class: "", "data-position" => "bottom", "data-tooltip" => t("keppler.actions.back") do
5
+ .arrow-back.btn.btn-default
6
+ %i.fa.fa-angle-left
7
+ = t('keppler.actions.back')
8
+
9
+ .show-section
10
+ .row
11
+ <%- if attributes.select{|attribute| @attachments.include?(attribute.name)}.size <= 0 -%>
12
+ .col-lg-12
13
+ .box.slice-box
14
+ .box-header.with-border
15
+ %h3.box-title= t("keppler.modules.#{controller_path.underscore}")
16
+ .box-tools.pull-right
17
+ - if can?(<%= namespaced_path.split('_').map(&:capitalize).join('') %>::<%= singular_table_name.camelcase %>).update?
18
+ = link_to edit_admin_<%= namespaced_path.split('_').drop(1).join('_') %>_<%= singular_table_name %>_path(@<%= singular_table_name %>), class: "btn btn-box-tool", title: "#{t('keppler.actions.edit') }" do
19
+ %i.icon-pencil
20
+ - if can?(<%= namespaced_path.split('_').map(&:capitalize).join('') %>::<%= singular_table_name.camelcase %>).destroy?
21
+ = link_to admin_<%= namespaced_path.split('_').drop(1).join('_') %>_<%= singular_table_name %>_path(@<%= singular_table_name %>), class: "btn btn-box-tool", title: "#{t('keppler.actions.delete')}", method: :delete, data: { confirm: t("keppler.messages.data_confirm") } do
22
+ %i.icon-trash
23
+ .box-body.box-body-no-padding
24
+ %table.table.table-striped
25
+ %tbody
26
+ - @<%= singular_table_name %>.as_json(only: <%= attributes.map{|attr| attr.name} %>).each do |attribute, value|
27
+ - unless attribute.eql?('position') || attribute.eql?('deleted_at')
28
+ %tr.list-row
29
+ %th.display-label= t("activerecord.attributes.#{attribute}")
30
+ %td.display-value.fs-body-1.tc-black-2
31
+ - if @attachments.include?(attribute)
32
+ = image_tag value.url unless value.url.blank?
33
+ - else
34
+ = value.blank? ? '-----------' : value
35
+ <%- else -%>
36
+ <%- @attr = attributes.map{|attr| attr.name}.select{|attr| @attachments.include?(attr)} %>
37
+ .col-lg-5
38
+ - @<%= singular_table_name %>.as_json(only: <%= @attr %>).each do |attribute, value|
39
+ .box.slice-box
40
+ .box-header.with-border
41
+ %h3.box-title= attribute.capitalize
42
+ .box-tools.pull-right
43
+ %a.btn.btn-box-tool{"data-widget" => "collapse", type: "button"}
44
+ %i.fa.fa-minus
45
+ .box-body.box-body-no-padding
46
+ - unless value.url.blank?
47
+ = image_tag value.url, class: 'img-show'
48
+ .col-lg-7
49
+ .box.slice-box
50
+ .box-header.with-border
51
+ %h3.box-title= t("keppler.modules.#{controller_path.underscore}")
52
+ .box-tools.pull-right
53
+ = link_to edit_admin_<%= namespaced_path.split('_').drop(1).join('_') %>_<%= singular_table_name %>_path(@<%= singular_table_name %>), class: "btn btn-box-tool", title: "#{t('keppler.actions.edit') }" do
54
+ %i.icon-pencil
55
+ = link_to admin_<%= namespaced_path.split('_').drop(1).join('_') %>_<%= singular_table_name %>_path(@<%= singular_table_name %>), class: "btn btn-box-tool", title: "#{t('keppler.actions.delete')}", method: :delete, data: { confirm: t("keppler.messages.data_confirm") } do
56
+ %i.icon-trash
57
+ %a.btn.btn-box-tool{"data-widget" => "collapse", type: "button"}
58
+ %i.fa.fa-minus
59
+ .box-body.box-body-no-padding
60
+ %table.table.table-striped
61
+ %tbody
62
+ - @<%= singular_table_name %>.as_json(only: <%= attributes.map{|attr| attr.name}.select{|attr| !@attachments.include?(attr)} %>).each do |attribute, value|
63
+ %tr.list-row
64
+ %th.display-label= t("activerecord.attributes.#{attribute}")
65
+ %td.display-value.fs-body-1.tc-black-2.text-overflow= value.blank? ? '-----------' : value
66
+ <%- end -%>
@@ -0,0 +1,4 @@
1
+ $("#index-show").html("#{j render('index_show')}")
2
+ $("#index-show").css('right', 0)
3
+ $('.listing table').find(".active").removeClass("active")
4
+ $("#row-#{@<%= singular_table_name %>.id}").addClass("active")
@@ -0,0 +1,156 @@
1
+ require "keppler/version"
2
+
3
+ gemspec = File.readlines("#{ARGV[0]}/#{ARGV[0]}.gemspec")
4
+
5
+ gemspec[11] = " s.homepage = 'http://keppler.io'\n"
6
+ gemspec[12] = " s.summary = '#{ARGV[0]}'\n"
7
+ gemspec[13] = " s.description = '#{ARGV[0]}'\n"
8
+
9
+ gemspec.insert(17, " s.test_files = Dir['test/**/*']\n")
10
+
11
+ # gemspec.delete_at(19)
12
+ # gemspec.delete_at(20)
13
+
14
+ gemspec[19] = " s.add_dependency 'rails', '5.2.0'\n"
15
+ gemspec[20] = " s.add_dependency 'simple_form'\n"
16
+ gemspec.insert(21, " s.add_dependency 'haml_rails'\n")
17
+ gemspec.insert(22, " s.add_dependency 'pundit'\n")
18
+ gemspec.insert(23, " s.add_development_dependency 'pg'\n")
19
+ gemspec.delete_at(24)
20
+ gemspec = gemspec.join("")
21
+
22
+ File.write("#{ARGV[0]}/#{ARGV[0]}.gemspec", gemspec)
23
+
24
+
25
+ engine = File.readlines("#{ARGV[0]}/lib/#{ARGV[0]}/engine.rb")
26
+
27
+ engine.insert(3, " paths['config/locales']\n")
28
+ engine.insert(4, " config.generators do |g|\n")
29
+ engine.insert(5, " g.template_engine :haml\n")
30
+ engine.insert(6, " end\n")
31
+ engine.insert(7, "\n")
32
+ engine.insert(8, " config.to_prepare do\n")
33
+ engine.insert(9, " ApplicationController.helper(ApplicationHelper)\n")
34
+ engine.insert(10, " end\n")
35
+
36
+ engine = engine.join("")
37
+
38
+ File.write("#{ARGV[0]}/lib/#{ARGV[0]}/engine.rb", engine)
39
+
40
+
41
+ route = File.readlines("#{ARGV[0]}/config/routes.rb")
42
+
43
+ route.insert(1, " namespace :admin do\n")
44
+ route.insert(2, " scope :#{ARGV[0].split('_').drop(1).join('')}, as: :#{ARGV[0].split('_').drop(1).join('')} do\n")
45
+ route.insert(3, " end\n")
46
+ route.insert(4, " end\n")
47
+
48
+ route = route.join("")
49
+
50
+ File.write("#{ARGV[0]}/config/routes.rb", route)
51
+
52
+ system("scp -r $GEM_HOME/gems/keppler-#{Keppler::VERSION}/installer/plugins/config/permissions.yml #{ARGV[0]}/config/permissions.yml")
53
+
54
+ system("scp -r $GEM_HOME/gems/keppler-#{Keppler::VERSION}/installer/plugins/config/menu.yml #{ARGV[0]}/config/menu.yml")
55
+
56
+ menu = File.readlines("#{ARGV[0]}/config/menu.yml")
57
+
58
+ menu[1] = " #{ARGV[0]}:\n"
59
+ menu[2] = " name: #{ARGV[0].split('_').map(&:capitalize).join(' ')}\n"
60
+
61
+ menu = menu.join("")
62
+
63
+ File.write("#{ARGV[0]}/config/menu.yml", menu)
64
+
65
+ system("scp -r $GEM_HOME/gems/keppler-#{Keppler::VERSION}/installer/plugins/config/locales #{ARGV[0]}/config/locales")
66
+
67
+ project = ARGV[0].to_s
68
+
69
+ locales = File.readlines("#{ARGV[0]}/config/locales/en.yml")
70
+
71
+ locales[3] = " #{project.gsub('_', '-')}: #{ARGV[0].split('_').map(&:capitalize).join(' ')}\n"
72
+ locales[4] = " #{project.gsub('_', '-')}-submenu:\n"
73
+
74
+ locales = locales.join("")
75
+
76
+ File.write("#{ARGV[0]}/config/locales/en.yml", locales)
77
+
78
+ locales = File.readlines("#{ARGV[0]}/config/locales/es.yml")
79
+
80
+ locales[3] = " #{project.gsub('_', '-')}: #{ARGV[0].split('_').map(&:capitalize).join(' ')}\n"
81
+ locales[4] = " #{project.gsub('_', '-')}-submenu:\n"
82
+
83
+ locales = locales.join("")
84
+
85
+ File.write("#{ARGV[0]}/config/locales/es.yml", locales)
86
+
87
+
88
+ system("scp -r $GEM_HOME/gems/keppler-#{Keppler::VERSION}/installer/plugins/concerns #{ARGV[0]}/app/controllers/#{ARGV[0]}")
89
+
90
+ commons = File.readlines("#{ARGV[0]}/app/controllers/#{ARGV[0]}/concerns/commons.rb")
91
+
92
+ commons[0] = "module #{ARGV[0].split('_').map(&:capitalize).join('')}\n"
93
+
94
+ commons = commons.join("")
95
+
96
+ File.write("#{ARGV[0]}/app/controllers/#{ARGV[0]}/concerns/commons.rb", commons)
97
+
98
+
99
+ destroy = File.readlines("#{ARGV[0]}/app/controllers/#{ARGV[0]}/concerns/destroy_multiple.rb")
100
+
101
+ destroy[0] = "module #{ARGV[0].split('_').map(&:capitalize).join('')}\n"
102
+
103
+ destroy = destroy.join("")
104
+
105
+ File.write("#{ARGV[0]}/app/controllers/#{ARGV[0]}/concerns/destroy_multiple.rb", destroy)
106
+
107
+
108
+ history = File.readlines("#{ARGV[0]}/app/controllers/#{ARGV[0]}/concerns/history.rb")
109
+
110
+ history[0] = "module #{ARGV[0].split('_').map(&:capitalize).join('')}\n"
111
+
112
+ history = history.join("")
113
+
114
+ File.write("#{ARGV[0]}/app/controllers/#{ARGV[0]}/concerns/history.rb", history)
115
+
116
+ application = File.readlines("#{ARGV[0]}/app/controllers/#{ARGV[0]}/application_controller.rb")
117
+
118
+ application[1] = " class ApplicationController < ::ApplicationController\n"
119
+
120
+ application = application.join("")
121
+
122
+ File.write("#{ARGV[0]}/app/controllers/#{ARGV[0]}/application_controller.rb", application)
123
+
124
+ dummy_test = File.readlines("#{ARGV[0]}/test/dummy/config/database.yml")
125
+
126
+ dummy_test[7] = " adapter: postgresql\n"
127
+ dummy_test = dummy_test.join("")
128
+
129
+ File.write("#{ARGV[0]}/test/dummy/config/database.yml", dummy_test)
130
+
131
+ generator_routes = File.readlines("#{ARGV[0]}/lib/generators/keppler_scaffold/keppler_scaffold_generator.rb")
132
+
133
+ generator_routes[37] = " after: 'scope :#{ARGV[0].split('_').drop(1).join('')}, as: :#{ARGV[0].split('_').drop(1).join('')} do'\n"
134
+ generator_routes = generator_routes.join("")
135
+
136
+ File.write("#{ARGV[0]}/lib/generators/keppler_scaffold/keppler_scaffold_generator.rb", generator_routes)
137
+
138
+
139
+
140
+ layouts = File.readlines("#{ARGV[0]}/app/views/#{ARGV[0]}/admin/layouts/application.html.haml")
141
+
142
+ layouts[8] =" = render '#{ARGV[0]}/admin/layouts/navigation'\n"
143
+
144
+ layouts = layouts.join("")
145
+
146
+ File.write("#{ARGV[0]}/app/views/#{ARGV[0]}/admin/layouts/application.html.haml", layouts)
147
+
148
+
149
+
150
+ layouts = File.readlines("#{ARGV[0]}/app/views/#{ARGV[0]}/admin/layouts/_navigation.html.haml")
151
+
152
+ layouts[13] =" = search_form_for [:admin, :#{ARGV[0].split('_').drop(1).join('')}, @q], html: { method: :get } do |f|\n"
153
+
154
+ layouts = layouts.join("")
155
+
156
+ File.write("#{ARGV[0]}/app/views/#{ARGV[0]}/admin/layouts/_navigation.html.haml", layouts)
@@ -0,0 +1,47 @@
1
+ %header.main-header
2
+ %nav.navbar.navbar-static-top
3
+ %a.logo.keppler-color.hidden-xs{ href: '/admin/dashboard' }
4
+ %span.logo-mini
5
+ %span K
6
+ %span.logo-lg
7
+ %span K
8
+ %a.sidebar-toggle{ 'data-toggle' => 'offcanvas', href: '#', role: 'button' }
9
+ %i.icon-menu
10
+ %span.sr-only Toggle navigation
11
+ - if listing? && @q
12
+ #search
13
+ .input-group
14
+ = search_form_for [:admin, :model, @q], html: { method: :get } do |f|
15
+ = f.search_field search_model, placeholder: "#{t('keppler.actions.search')}...", class: 'form-control search-bar'
16
+ %span.input-group-btn
17
+ %button.btn.search-button.toggle-search{ type: 'submit' }
18
+ %i.icon-magnifier.search-icon{ style: 'line-height: 1.4;' }
19
+ .hide-search
20
+ %i.fa.fa-arrow-left
21
+
22
+ .navbar-custom-menu
23
+ %ul.nav.navbar-nav
24
+ -# - if defined?(KepplerContactUs) && KepplerContactUs.is_a?(Class)
25
+ %li.dropdown.messages-menu
26
+ %a.dropdown-toggle{"data-toggle" => "dropdown", href: "#"}
27
+ %i.icon-envelope
28
+ %li.dropdown.user.user-menu
29
+ %a.dropdown-toggle{ 'data-toggle' => 'dropdown', href: '#' }
30
+ = image_tag (current_user.avatar.url || 'admin/avatar_keppler.svg'), class: 'small-profile-img keppler-background'
31
+ %span.hidden-xs= current_user.name
32
+ %ul.dropdown-menu
33
+ %li.user-header{ style: @appearance.image_background? ? "background-image: url(#{@appearance.image_background})" : nil }
34
+ = image_tag (current_user.avatar.url || 'admin/avatar_keppler.svg'), class: 'img-circle nav-profile-img', alt: current_user.name
35
+ %p
36
+ = current_user.name
37
+ %small
38
+ = "#{t('keppler.navigation.last_session')} #{current_user.updated_at.strftime('%d %b %Y')}"
39
+ %li.user-footer
40
+ .pull-left
41
+ = link_to 'Profile', "/admin/users/#{current_user.id}", class: 'btn btn-default btn-flat'
42
+ .pull-right
43
+ = link_to t('devise.sign_out'), destroy_session_path(current_user), class: 'btn btn-default btn-flat'
44
+ - if listing?
45
+ %li.hidden-xs
46
+ %a{ href: '#', 'data-toggle' => 'control-sidebar' }
47
+ %i.icon-clock
@@ -0,0 +1,24 @@
1
+ !!!
2
+ %html
3
+ = render 'admin/layouts/head'
4
+ %body.sidebar-mini.skin-blue{style: "height: auto; min-height: 100%;" }
5
+ #log
6
+
7
+ - if loggedin?
8
+ .wrapper{style:"height: auto; min-height: 100%;"}
9
+ = render 'module/admin/layouts/navigation'
10
+ = render 'admin/layouts/sidebar'
11
+ = render 'admin/layouts/messages'
12
+ .content-wrapper{ style: "min-height: 901px;" }
13
+ = yield
14
+
15
+ #spinner
16
+ = preloader
17
+
18
+ = render 'admin/layouts/footer'
19
+ - else
20
+ %main.devise{ style: @appearance.image_background? ? "background-image: url(#{@appearance.image_background})" : nil }
21
+ = yield
22
+ - if action_name.eql?('index')
23
+ %script{src: "/assets/vue_admin/index.js"}
24
+ = keppler_boolean_script
data/keppler.gemspec ADDED
@@ -0,0 +1,35 @@
1
+
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "keppler/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "keppler"
8
+ spec.version = Keppler::VERSION
9
+ spec.authors = ["Luis Perez"]
10
+ spec.email = 'luis.prz7@gmail.com'
11
+ spec.summary = "Keppler Administrator"
12
+ spec.description = "Keppler Administrator"
13
+ spec.homepage = 'https://rubygems.org/gems/keppler'
14
+ spec.license = "MIT"
15
+
16
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
17
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
18
+ if spec.respond_to?(:metadata)
19
+ spec.metadata["allowed_push_host"] = "https://rubygems.org/gems/keppler"
20
+ else
21
+ raise "RubyGems 2.0 or newer is required to protect against " \
22
+ "public gem pushes."
23
+ end
24
+
25
+ spec.files = `git ls-files`.split("\n")
26
+ spec.bindir = "exe"
27
+ spec.executables = ['keppler']
28
+ spec.require_paths = ["lib"]
29
+
30
+ spec.add_development_dependency "bundler", "~> 1.16"
31
+ spec.add_development_dependency "rake", "~> 10.0"
32
+ spec.add_dependency 'thor'
33
+ spec.add_dependency 'httparty'
34
+
35
+ end
data/lib/keppler.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
  require "keppler/version"
3
- require "keppler/cli"
4
3
 
5
4
  module Keppler
6
5
  # Your code goes here...
@@ -0,0 +1,13 @@
1
+ require 'thor'
2
+
3
+ module Keppler
4
+ class Add < Thor
5
+
6
+ desc 'module', 'Add a new keppler module'
7
+ def module(*params)
8
+ module_name = params[0]
9
+ fields = params[1..params.length].join(" ")
10
+ system("rails g keppler_scaffold #{module_name} #{fields} position:integer deleted_at:datetime:index -y")
11
+ end
12
+ end
13
+ end
data/lib/keppler/cli.rb CHANGED
@@ -1,12 +1,141 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'thor'
3
- require 'keppler/cli/generate'
3
+ require "keppler/version"
4
+ require_relative 'add'
5
+ require_relative 'delete'
4
6
 
5
7
  module Keppler
6
- class Generate < Thor
7
- # [...]
8
+ class Cli < Thor
8
9
 
9
- desc "g new [project name]", "Create a new keppler project"
10
- subcommand "generate", Keppler::CLI::Generate
10
+ desc 'new NAME', 'Create a new keppler app'
11
+
12
+ def new(project_name)
13
+ system("scp -r $GEM_HOME/gems/keppler-#{Keppler::VERSION}/installer/core #{project_name}")
14
+ puts '> Created project'
15
+ system("cd #{project_name} && bundle install")
16
+ puts '> Installed dependences'
17
+ system("scp -r $GEM_HOME/gems/keppler-#{Keppler::VERSION}/installer/db_conf/conf.yml #{project_name}/config/secrets.yml")
18
+
19
+ puts "----------------------------------------------------------"
20
+ puts "Database name"
21
+ puts "----------------------------------------------------------"
22
+ db_name = STDIN.gets.chomp
23
+ puts "----------------------------------------------------------"
24
+ puts "Database username"
25
+ puts "----------------------------------------------------------"
26
+ db_username = STDIN.gets.chomp
27
+ puts "----------------------------------------------------------"
28
+ puts "Database password"
29
+ puts "----------------------------------------------------------"
30
+ db_password = STDIN.gets.chomp
31
+
32
+
33
+ db_conf = File.readlines("#{project_name}/config/secrets.yml")
34
+ new_file = []
35
+ db_conf.each do |line|
36
+ if line.eql?(" :name: database\n")
37
+ line = " :name: #{db_name}\n"
38
+ elsif line.eql?(" :username: username\n")
39
+ line = " :username: #{db_username}\n"
40
+ elsif line.eql?(" :password: password\n")
41
+ line = " :password: #{db_password}\n"
42
+ end
43
+ new_file.push(line)
44
+ end
45
+ new_file = new_file.join("")
46
+ File.write("#{project_name}/config/secrets.yml", new_file)
47
+ puts '> Configured database'
48
+
49
+ system("cd #{project_name} && rake db:create db:migrate db:seed")
50
+ puts '> Created database'
51
+ puts "#{project_name} has been created"
52
+ end
53
+
54
+ desc 'plugin NAME', 'Create a new keppler plugin'
55
+
56
+ def plugin(plugin_name)
57
+ system("rails plugin new keppler_#{plugin_name} --mountable")
58
+ puts "> Created scaffold"
59
+ system("cd keppler_#{plugin_name} && scp -r $GEM_HOME/gems/keppler-#{Keppler::VERSION}/installer/plugins/generators lib/generators")
60
+ puts "> Installed generators"
61
+ system("mkdir keppler_#{plugin_name}/app/views/keppler_#{plugin_name}")
62
+ system("mkdir keppler_#{plugin_name}/app/views/keppler_#{plugin_name}/admin")
63
+ system("scp -r $GEM_HOME/gems/keppler-#{Keppler::VERSION}/installer/plugins/layouts keppler_#{plugin_name}/app/views/keppler_#{plugin_name}/admin/layouts")
64
+ system("ruby $GEM_HOME/gems/keppler-#{Keppler::VERSION}/installer/plugins/install.rb keppler_#{plugin_name}")
65
+ system("mkdir keppler_#{plugin_name}/app/policies")
66
+ puts "> Installed policies"
67
+ puts "#{plugin_name} has been created"
68
+ end
69
+
70
+ desc 'server', 'Initialize puma server'
71
+
72
+ def server
73
+ system("rails s")
74
+ end
75
+
76
+ desc 'dep', 'Install dependencies'
77
+
78
+ def dep
79
+ system("bundle install")
80
+ end
81
+
82
+ desc 'db_conf', 'Create secrets file'
83
+
84
+ def db_conf
85
+ system("scp -r $GEM_HOME/gems/keppler-#{Keppler::VERSION}/installer/db_conf/conf.yml config/secrets.yml")
86
+
87
+ puts "----------------------------------------------------------"
88
+ puts "Database name"
89
+ puts "----------------------------------------------------------"
90
+ db_name = STDIN.gets.chomp
91
+ puts "----------------------------------------------------------"
92
+ puts "Database username"
93
+ puts "----------------------------------------------------------"
94
+ db_username = STDIN.gets.chomp
95
+ puts "----------------------------------------------------------"
96
+ puts "Database password"
97
+ puts "----------------------------------------------------------"
98
+ db_password = STDIN.gets.chomp
99
+
100
+
101
+ db_conf = File.readlines("config/secrets.yml")
102
+ new_file = []
103
+ db_conf.each do |line|
104
+ if line.eql?(" :name: database\n")
105
+ line = " :name: #{db_name}\n"
106
+ elsif line.eql?(" :username: username\n")
107
+ line = " :username: #{db_username}\n"
108
+ elsif line.eql?(" :password: password\n")
109
+ line = " :password: #{db_password}\n"
110
+ end
111
+ new_file.push(line)
112
+ end
113
+ new_file = new_file.join("")
114
+ File.write("config/secrets.yml", new_file)
115
+ puts '> Configured database'
116
+
117
+ system("crake db:create db:migrate db:seed")
118
+ end
119
+
120
+ desc 'reset', 'Reset to database'
121
+ def reset
122
+ system("rake db:drop db:create db:migrate db:seed")
123
+ end
124
+
125
+ desc 'migrate', 'Migrate database'
126
+ def migrate
127
+ system("rake db:migrate")
128
+ end
129
+
130
+ desc 'console', 'Use ruby console'
131
+ def console
132
+ system("rails c")
133
+ end
134
+
135
+ desc "add module NAME attr:type attr:type", "Create a new keppler module"
136
+ subcommand "add", Add
137
+
138
+ desc "delete module NAME attr:type attr:type", "Delete a keppler module"
139
+ subcommand "delete", Delete
11
140
  end
12
141
  end