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,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Creates a much prettier version of the file input field
4
+ class KepplerFileInput < SimpleForm::Inputs::Base
5
+ def input(_wrapper_options)
6
+ template.content_tag(:div, class: 'upload_image') do
7
+ # input_label +
8
+ template.content_tag(
9
+ :div,
10
+ class: "#{'files-absolute' unless attr_blank?} files form-group trigger"
11
+ ) do
12
+ # icon_file +
13
+ photo_uploader
14
+ end +
15
+ image_to_upload
16
+ end
17
+ end
18
+
19
+ def input_label
20
+ initializers
21
+ template.content_tag(
22
+ :label,
23
+ reflection_or_attribute_name.to_s.humanize,
24
+ class: 'file optional',
25
+ for: @input_id
26
+ )
27
+ end
28
+
29
+ def icon_file
30
+ template.content_tag(:div, class: 'icon-file') do
31
+ template.content_tag(:i, '', class: 'glyphicon glyphicon-picture')
32
+ end
33
+ end
34
+
35
+ def image_to_upload
36
+ template.content_tag(:center, class: 'image-show') do
37
+ template.tag(
38
+ :img,
39
+ class: "#{'hidden' if attr_blank?} image_to_upload",
40
+ src: (object.try(attribute_name) || '')
41
+ )
42
+ end
43
+ end
44
+
45
+ def photo_uploader
46
+ initializers
47
+ @builder.file_field(
48
+ attribute_name,
49
+ class: 'photo_upload',
50
+ type: 'file',
51
+ id: @input_id,
52
+ name: @input_name
53
+ )
54
+ end
55
+
56
+ private
57
+
58
+ def attr_blank?
59
+ object.try(attribute_name).blank?
60
+ end
61
+
62
+ protected
63
+
64
+ def initializers
65
+ @model = lookup_model_names.join('_')
66
+ @attribute = reflection_or_attribute_name
67
+ @input_id = "#{@model}_#{@attribute}"
68
+ @input_name = "#{@model}[#{@attribute}]"
69
+ end
70
+ end
File without changes
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # ApplicationMailer
2
- class ApplicationMailer < ActionMailer
4
+ class ApplicationMailer < ActionMailer::Base
3
5
  default from: 'testing@keppler.com'
4
6
  layout 'mailers/mailer'
5
7
 
6
- after_filter :set_smtp
8
+ after_action :set_smtp
7
9
 
8
10
  def testing
9
11
  mail to: 'example@keppler.com', subject: 'Keppler email'
@@ -13,16 +15,14 @@ class ApplicationMailer < ActionMailer
13
15
 
14
16
  def set_smtp
15
17
  setting = Setting.first.smtp_setting
16
- unless setting.address == 'test'
17
- mail.delivery_method.settings.merge!(
18
- address: setting.address,
19
- port: setting.port,
20
- domain: setting.domain_name,
21
- user_name: setting.email,
22
- password: setting.password
23
- )
24
-
25
- ApplicationMailer.default_url_options.merge!(host: setting.domain_name)
26
- end
18
+ return if setting.address == 'test'
19
+ mail.delivery_method.settings.merge!(
20
+ address: setting.address,
21
+ port: setting.port,
22
+ domain: setting.domain_name,
23
+ user_name: setting.email,
24
+ password: setting.password
25
+ )
26
+ ApplicationMailer.default_url_options.merge!(host: setting.domain_name)
27
27
  end
28
28
  end
File without changes
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Appearance Model
2
4
  class Appearance < ApplicationRecord
3
5
  belongs_to :setting
@@ -1,3 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ # ApplicationRecord Model
1
4
  class ApplicationRecord < ActiveRecord::Base
2
5
  self.abstract_class = true
3
6
  end
File without changes
@@ -0,0 +1,13 @@
1
+ # Keppler
2
+ module Downloadable
3
+ extend ActiveSupport::Concern
4
+
5
+ require 'csv'
6
+
7
+ def self.to_csv(options = {})
8
+ CSV.generate(options) do |csv|
9
+ csv << column_names
10
+ all.each { |object| csv << object.attributes.values }
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,9 @@
1
+ # Keppler
2
+ module Sortable
3
+ extend ActiveSupport::Concern
4
+ included do
5
+ def self.sorter(params)
6
+ params.each_with_index { |id, idx| find(id).update(position: idx.to_i + 1) }
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,10 @@
1
+ # Keppler
2
+ module Uploadable
3
+ extend ActiveSupport::Concern
4
+
5
+ require 'csv'
6
+
7
+ def self.upload(file)
8
+ CSV.foreach(file.path, headers: true) { |row| create! row.to_hash }
9
+ end
10
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Customize Model
2
4
  class Customize < ApplicationRecord
3
5
  include ActivityHistory
@@ -11,10 +13,10 @@ class Customize < ApplicationRecord
11
13
  end
12
14
 
13
15
  def name
14
- if self.file?
15
- "#{self.file.to_s.split("/").last.split(".").first.capitalize} Template"
16
+ if file?
17
+ "#{file.to_s.split('/').last.split('.').first.capitalize} Template"
16
18
  else
17
- "Keppler Default"
19
+ 'Keppler Default'
18
20
  end
19
21
  end
20
22
 
@@ -39,9 +41,9 @@ class Customize < ApplicationRecord
39
41
  private
40
42
 
41
43
  def clear_template
42
- file_name = Dir[File.join("#{Rails.root}/public/templates", '**', '*')].first
43
- template_name = file_name.split("/").last if file_name
44
- names = build_array_html_files_names(template_name, "html")
44
+ file_name = Dir[File.join("#{Rails.root}/public/templates", '**', '*')].first
45
+ template_name = file_name.split('/').last if file_name
46
+ names = build_array_html_files_names(template_name, 'html')
45
47
  system "rails d keppler_front front #{names.join(' ')}"
46
48
  system "rm -rf #{Rails.root}/app/views/app/front/"
47
49
  clear_assets("#{Rails.root}/public/templates")
@@ -1,2 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Front Model
1
4
  class Front < ApplicationRecord
2
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # GoogleAnalyticsSetting Model
2
4
  class GoogleAnalyticsSetting < ApplicationRecord
3
5
  belongs_to :setting
@@ -1,7 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # MetaTag Model
2
4
  class MetaTag < ApplicationRecord
3
5
  include ActivityHistory
4
6
  include CloneRecord
7
+ include Uploadable
8
+ include Downloadable
9
+ include Sortable
5
10
  acts_as_list
6
11
  before_save :split_url
7
12
  validates_uniqueness_of :url
@@ -13,29 +18,37 @@ class MetaTag < ApplicationRecord
13
18
  find_by_url(url)
14
19
  end
15
20
 
16
- def self.search_field
17
- :title_or_description_or_url_cont_any
21
+ def self.title(post_param, product_param, setting)
22
+ post = post_param&.title
23
+ product = product_param&.title || product_param&.name
24
+ post || product || setting.name
18
25
  end
19
26
 
20
- def self.import(file)
21
- CSV.foreach(file.path, headers: true) do |row|
22
- begin
23
- self.create! row.to_hash
24
- rescue => err
25
- end
27
+ def self.description(post_param, product_param, setting)
28
+ unless post_param&.body.blank?
29
+ body = post_param.body
30
+ post = sanitize(body, tags: []).truncate(300)
26
31
  end
32
+ product = product_param&.description || product_param&.body
33
+ post || product || setting.description
27
34
  end
28
35
 
29
- def self.sorter(params)
30
- params.each_with_index do |id, idx|
31
- self.find(id).update(position: idx.to_i+1)
32
- end
36
+ def self.image(request, post_param, product_param, setting_param)
37
+ post = post_param&.image
38
+ product = product_param&.image || product_param&.photo
39
+ setting = setting_param&.logo unless setting_param&.logo.blank?
40
+ image = '/assets/admin/slice.png'
41
+ url = request.protocol + request.host_with_port
42
+ url + (post || product || setting || image).to_s
43
+ end
44
+
45
+ def self.search_field
46
+ :title_or_description_or_url_cont_any
33
47
  end
34
48
 
35
49
  private
36
50
 
37
51
  def split_url
38
- self.url = self.url.split('//').last.split('/').join('/').split('www.').last
52
+ self.url = url.split('//').last.split('/').join('/').split('www.').last
39
53
  end
40
-
41
54
  end
@@ -0,0 +1,3 @@
1
+ class Permission < ApplicationRecord
2
+ belongs_to :role
3
+ end
@@ -1,11 +1,68 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Role model
1
4
  class Role < ApplicationRecord
2
- has_and_belongs_to_many :users, :join_table => :users_roles
5
+ has_and_belongs_to_many :users, join_table: :users_roles
3
6
  belongs_to :resource,
4
- :polymorphic => true,
5
- :optional => true
7
+ polymorphic: true,
8
+ optional: true
6
9
  validates :resource_type,
7
- :inclusion => { :in => Rolify.resource_types },
8
- :allow_nil => true
10
+ inclusion: { in: Rolify.resource_types },
11
+ allow_nil: true
9
12
  scopify
10
13
  validates_uniqueness_of :name
14
+ has_many :permissions
15
+ def self.search_field
16
+ :name_cont
17
+ end
18
+
19
+ def have_permissions?
20
+ !permissions.empty?
21
+ end
22
+
23
+ def all_permissions
24
+ permissions.first&.modules
25
+ end
26
+
27
+ def have_permission_to(module_name)
28
+ !all_permissions[module_name].nil?
29
+ end
30
+
31
+ def have_action?(module_name, action)
32
+ if all_permissions && !all_permissions[module_name].nil?
33
+ all_permissions[module_name]['actions'].include?(action)
34
+ end
35
+ end
36
+
37
+ def add_action(module_name, action)
38
+ permissions.first.update(modules: create_hash('add', module_name, action))
39
+ end
40
+
41
+ def remove_action(module_name, action)
42
+ permissions.first.update(modules: create_hash('remove', module_name, action))
43
+ end
44
+
45
+ def toggle_action(module_name, action)
46
+ if have_action?(module_name, action)
47
+ remove_action(module_name, action)
48
+ else
49
+ add_action(module_name, action)
50
+ end
51
+ end
52
+
53
+ def add_module(module_name, action)
54
+ old_hash = all_permissions
55
+ new_hash = Hash[module_name, Hash['actions', Array(action)]]
56
+ permissions.first.update(modules: old_hash.merge(new_hash))
57
+ end
58
+
59
+ def create_hash(act, module_name, action)
60
+ old_hash = all_permissions
61
+ arr = old_hash.dig(module_name, 'actions')
62
+
63
+ act.eql?('add') ? arr.push(action) : arr.delete_if { |a| a.eql?(action) }
64
+
65
+ new_hash = Hash[module_name, Hash['actions', arr]]
66
+ old_hash.merge(new_hash)
67
+ end
11
68
  end
@@ -1,7 +1,13 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Script Model
2
4
  class Script < ApplicationRecord
3
5
  include ActivityHistory
4
6
  include CloneRecord
7
+ include Uploadable
8
+ include Downloadable
9
+ include Sortable
10
+ acts_as_list
5
11
 
6
12
  validates_presence_of :name, :script, :url
7
13
 
@@ -12,19 +18,4 @@ class Script < ApplicationRecord
12
18
  def self.search_field
13
19
  :name_or_script_cont
14
20
  end
15
-
16
- def self.import(file)
17
- CSV.foreach(file.path, headers: true) do |row|
18
- begin
19
- Script.create! row.to_hash
20
- rescue => err
21
- end
22
- end
23
- end
24
-
25
- def self.sorter(params)
26
- params.each_with_index do |id, idx|
27
- self.find(id).update(position: idx.to_i+1)
28
- end
29
- end
30
21
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Setting Model
2
4
  class Setting < ApplicationRecord
3
5
  include ActivityHistory
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # SmtpSetting Model
2
4
  class SmtpSetting < ApplicationRecord
3
5
  belongs_to :setting
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # SocialAccount Model
2
4
  class SocialAccount < ApplicationRecord
3
5
  belongs_to :setting
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # User Model
2
4
  class User < ApplicationRecord
3
5
  include ActivityHistory
4
- mount_uploader :avatar, TemplateUploader
6
+ # mount_uploader :avatar, TemplateUploader
5
7
  before_save :create_permalink, if: :new_record?
6
8
  rolify
7
9
  validates_presence_of :name, :role_ids, :email
@@ -17,6 +19,10 @@ class User < ApplicationRecord
17
19
  roles.first.name
18
20
  end
19
21
 
22
+ def self.filter_by_role(obj, role_id)
23
+ obj.select { |u| u.rol.eql?(role_id) }
24
+ end
25
+
20
26
  # Get the page number that the object belongs to
21
27
  def page(order = :id)
22
28
  ((self.class.order(order => :desc)
@@ -36,6 +42,16 @@ class User < ApplicationRecord
36
42
  rol.eql?('admin')
37
43
  end
38
44
 
45
+ def can?(model_name, method)
46
+ return if permissions.nil? || permissions[model_name].nil?
47
+ permissions[model_name]['actions'].include?(method) || false
48
+ end
49
+
50
+ def permissions
51
+ return if roles.first.permissions.blank?
52
+ roles.first.permissions.first.modules
53
+ end
54
+
39
55
  private
40
56
 
41
57
  def create_permalink