cm-admin 0.2.0 → 0.4.2

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 (132) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +12 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +6 -0
  5. data/Gemfile +7 -1
  6. data/Gemfile.lock +121 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +8 -19
  9. data/app/assets/images/logo.png +0 -0
  10. data/{lib/generators/cm_admin/templates/assets/stylesheets → app/assets/stylesheets/cm_admin}/base/auth.scss +4 -6
  11. data/app/assets/stylesheets/cm_admin/base/common.scss +237 -0
  12. data/app/assets/stylesheets/cm_admin/base/filters.scss +200 -0
  13. data/{lib/generators/cm_admin/templates/assets/stylesheets → app/assets/stylesheets/cm_admin}/base/form.scss +83 -11
  14. data/app/assets/stylesheets/cm_admin/base/main-nav.scss +47 -0
  15. data/app/assets/stylesheets/cm_admin/base/navbar.scss +65 -0
  16. data/app/assets/stylesheets/cm_admin/base/quicksearch.scss +76 -0
  17. data/app/assets/stylesheets/cm_admin/base/scaffold.scss +96 -0
  18. data/app/assets/stylesheets/cm_admin/base/show.scss +76 -0
  19. data/app/assets/stylesheets/cm_admin/base/sidebar.scss +225 -0
  20. data/app/assets/stylesheets/cm_admin/base/table.scss +320 -0
  21. data/app/assets/stylesheets/cm_admin/base/tabs.scss +26 -0
  22. data/app/assets/stylesheets/cm_admin/cm_admin.css.scss +26 -0
  23. data/app/assets/stylesheets/cm_admin/components/_alerts.scss +101 -0
  24. data/app/assets/stylesheets/cm_admin/components/_buttons.scss +135 -0
  25. data/app/assets/stylesheets/cm_admin/components/_dropdown-popup.scss +153 -0
  26. data/app/assets/stylesheets/cm_admin/components/_input.scss +274 -0
  27. data/app/assets/stylesheets/cm_admin/components/_modal.scss +34 -0
  28. data/app/assets/stylesheets/cm_admin/components/_range.scss +31 -0
  29. data/app/assets/stylesheets/cm_admin/components/_status-tag.scss +68 -0
  30. data/app/assets/stylesheets/cm_admin/components/index.scss +7 -0
  31. data/app/assets/stylesheets/cm_admin/dependency/bootstrap.min.css +7 -0
  32. data/app/assets/stylesheets/cm_admin/helpers/_mixins.scss +20 -0
  33. data/app/assets/stylesheets/cm_admin/helpers/_variable.scss +87 -0
  34. data/app/assets/stylesheets/cm_admin/helpers/index.scss +2 -0
  35. data/app/controllers/cm_admin/application_controller.rb +11 -0
  36. data/app/controllers/cm_admin/exports_controller.rb +16 -0
  37. data/app/controllers/cm_admin/static_controller.rb +12 -0
  38. data/app/helpers/cm_admin/application_helper.rb +11 -0
  39. data/app/helpers/cm_admin/custom_helper.rb +4 -0
  40. data/app/javascript/packs/cm_admin/application.js +22 -0
  41. data/app/javascript/packs/cm_admin/filters.js +347 -0
  42. data/app/javascript/packs/cm_admin/quick_search.js +67 -0
  43. data/app/javascript/packs/cm_admin/scaffolds.js +43 -0
  44. data/app/javascript/stylesheets/cm_admin/application.scss +3 -0
  45. data/app/views/cm_admin/main/_associated_table.html.slim +60 -0
  46. data/app/views/cm_admin/main/_cm_pagy_nav.html.slim +23 -0
  47. data/app/views/cm_admin/main/_filters.html.slim +1 -0
  48. data/app/views/cm_admin/main/_nested_fields.html.slim +7 -0
  49. data/app/views/cm_admin/main/_nested_table_form.html.slim +6 -0
  50. data/app/views/cm_admin/main/_table.html.slim +60 -0
  51. data/app/views/cm_admin/main/_tabs.html.slim +5 -0
  52. data/app/views/cm_admin/main/_top_navbar.html.slim +25 -0
  53. data/app/views/cm_admin/main/associated_index.html.slim +6 -0
  54. data/app/views/cm_admin/main/associated_show.html.slim +6 -0
  55. data/app/views/cm_admin/main/dashboard.html.slim +1 -0
  56. data/app/views/cm_admin/main/edit.html.slim +19 -0
  57. data/app/views/cm_admin/main/index.html.slim +12 -0
  58. data/app/views/cm_admin/main/new.html.slim +22 -0
  59. data/app/views/cm_admin/main/show.html.slim +12 -0
  60. data/app/views/cm_admin/static/error_401.html.slim +4 -0
  61. data/app/views/layouts/_left_sidebar_nav.html.slim +34 -0
  62. data/app/views/layouts/_quick_links.html.slim +25 -0
  63. data/app/views/layouts/cm_admin.html.slim +41 -0
  64. data/app/views/layouts/static.html.slim +18 -0
  65. data/bin/webpack +18 -0
  66. data/bin/webpack-dev-server +18 -0
  67. data/cm_admin.gemspec +21 -31
  68. data/config/.DS_Store +0 -0
  69. data/config/initializers/active_record_extension.rb +9 -0
  70. data/config/routes.rb +19 -0
  71. data/config/webpack/development.js +5 -0
  72. data/config/webpack/environment.js +13 -0
  73. data/config/webpack/production.js +5 -0
  74. data/config/webpack/test.js +5 -0
  75. data/config/webpacker.yml +92 -0
  76. data/lib/cm_admin/constants.rb +33 -0
  77. data/lib/cm_admin/engine.rb +38 -0
  78. data/lib/cm_admin/model.rb +152 -0
  79. data/lib/cm_admin/models/action.rb +36 -0
  80. data/lib/cm_admin/models/actions/blocks.rb +25 -0
  81. data/lib/cm_admin/models/blocks.rb +19 -0
  82. data/lib/cm_admin/models/cm_show_section.rb +20 -0
  83. data/lib/cm_admin/models/column.rb +61 -0
  84. data/lib/cm_admin/models/controller_method.rb +75 -0
  85. data/lib/cm_admin/models/dsl_method.rb +122 -0
  86. data/lib/cm_admin/models/export.rb +54 -0
  87. data/lib/cm_admin/models/field.rb +15 -0
  88. data/lib/cm_admin/models/filter.rb +95 -0
  89. data/lib/cm_admin/models/form_field.rb +21 -0
  90. data/lib/cm_admin/models/tab.rb +13 -0
  91. data/lib/cm_admin/utils.rb +67 -0
  92. data/lib/cm_admin/version.rb +1 -1
  93. data/lib/cm_admin/view_helpers/column_field_helper.rb +29 -0
  94. data/lib/cm_admin/view_helpers/field_display_helper.rb +65 -0
  95. data/lib/cm_admin/view_helpers/filter_helper.rb +190 -0
  96. data/lib/cm_admin/view_helpers/form_field_helper.rb +33 -0
  97. data/lib/cm_admin/view_helpers/form_helper.rb +65 -0
  98. data/lib/cm_admin/view_helpers/manage_column_popup_helper.rb +75 -0
  99. data/lib/cm_admin/view_helpers/navigation_helper.rb +34 -0
  100. data/lib/cm_admin/view_helpers/page_info_helper.rb +57 -0
  101. data/lib/cm_admin/view_helpers.rb +74 -0
  102. data/lib/cm_admin.rb +33 -2
  103. data/lib/generators/cm_admin/install_generator.rb +3 -13
  104. data/lib/tasks/webpack_install.rake +63 -0
  105. data/package.json +23 -0
  106. data/postcss.config.js +12 -0
  107. data/tmp/cache/webpacker/last-compilation-digest-development +1 -0
  108. data/yarn.lock +6933 -0
  109. metadata +155 -46
  110. data/lib/generators/cm_admin/USAGE +0 -8
  111. data/lib/generators/cm_admin/templates/assets/images/cm.png +0 -0
  112. data/lib/generators/cm_admin/templates/assets/stylesheets/application.css.scss +0 -33
  113. data/lib/generators/cm_admin/templates/assets/stylesheets/base/_variable.scss +0 -14
  114. data/lib/generators/cm_admin/templates/assets/stylesheets/base/input-styles.scss +0 -72
  115. data/lib/generators/cm_admin/templates/assets/stylesheets/base/main-nav.scss +0 -79
  116. data/lib/generators/cm_admin/templates/assets/stylesheets/base/scaffold.scss +0 -95
  117. data/lib/generators/cm_admin/templates/assets/stylesheets/base/show.scss +0 -88
  118. data/lib/generators/cm_admin/templates/assets/stylesheets/base/sidebar.scss +0 -69
  119. data/lib/generators/cm_admin/templates/assets/stylesheets/base/table.scss +0 -246
  120. data/lib/generators/cm_admin/templates/layouts/_navbar.html.slim +0 -8
  121. data/lib/generators/cm_admin/templates/layouts/_side_navbar.html.slim +0 -12
  122. data/lib/generators/cm_admin/templates/layouts/application.html.slim +0 -20
  123. data/lib/generators/cm_admin/templates/layouts/initializer.rb +0 -2
  124. data/lib/generators/cm_admin/templates/views/_form.erb +0 -67
  125. data/lib/generators/cm_admin/templates/views/_table.erb +0 -22
  126. data/lib/generators/cm_admin/templates/views/edit.erb +0 -10
  127. data/lib/generators/cm_admin/templates/views/index.erb +0 -11
  128. data/lib/generators/cm_admin/templates/views/new.erb +0 -10
  129. data/lib/generators/cm_admin/templates/views/reset_password.erb +0 -12
  130. data/lib/generators/cm_admin/templates/views/show.erb +0 -18
  131. data/lib/generators/cm_admin/templates/views/sign_in.erb +0 -18
  132. data/lib/generators/cm_admin/view_generator.rb +0 -78
@@ -0,0 +1,74 @@
1
+ module CmAdmin
2
+ module ViewHelpers
3
+ Dir[File.expand_path("view_helpers", __dir__) + "/*.rb"].each { |f| require f }
4
+
5
+ include PageInfoHelper
6
+ include NavigationHelper
7
+ include FormHelper
8
+ include ColumnFieldHelper
9
+ include FieldDisplayHelper
10
+ include FilterHelper
11
+ include ManageColumnPopupHelper
12
+ include ActionView::Helpers::FormTagHelper
13
+ include ActionView::Helpers::TagHelper
14
+
15
+ def exportable(klass, html_class: [])
16
+ tag.a "Export as excel", class: html_class.append("filter-btn modal-btn mr-2"), data: {toggle: "modal", target: "#exportmodal"} do
17
+ concat tag.i class: 'fa fa-download'
18
+ concat tag.span " Export"
19
+ end
20
+ end
21
+
22
+ def column_pop_up(klass, required_filters = nil)
23
+ tag.div class: "modal fade form-modal", id: "exportmodal", role: "dialog", aria: {labelledby: "exportModal"} do
24
+ tag.div class: "modal-dialog modal-lg", role: "document" do
25
+ tag.div class: "modal-content" do
26
+ concat pop_ups(klass, required_filters)
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ def pop_ups(klass, required_filters)
33
+ tag.div do
34
+ concat pop_up_header
35
+ concat pop_up_body(klass, required_filters)
36
+ end
37
+ end
38
+
39
+ def pop_up_header
40
+ tag.div class: "modal-header" do
41
+ tag.button type: "button", class: "close", data: {dismiss: "modal"}, aria: {label: "Close"} do
42
+ tag.span "X", aria: {hidden: "true"}
43
+ end
44
+ tag.h4 "Select columns to export", class: "modal-title", id: "exportModal"
45
+ end
46
+ end
47
+
48
+ def pop_up_body(klass, required_filters)
49
+ tag.div class: "modal-body" do
50
+ form_tag '/cm_admin/export_to_file.js', id: 'export-to-file-form', style: "width: 100%;", class:"cm-admin-csv-export-form" do
51
+ concat hidden_field_tag 'class_name', klass.name.to_s, id: 'export-to-file-klass'
52
+ concat checkbox_row(klass)
53
+ concat tag.hr
54
+ concat submit_tag 'Export', class: 'btn btn-primary btn-bordered export-to-file-btn'
55
+ end
56
+ end
57
+ end
58
+
59
+ def checkbox_row(klass)
60
+ tag.div class: "row" do
61
+ CmAdmin::Models::Export.exportable_columns(klass).each do |column_path|
62
+ concat create_checkbox(column_path)
63
+ end
64
+ end
65
+ end
66
+
67
+ def create_checkbox(column_path)
68
+ tag.div class: "col-md-4" do
69
+ concat check_box_tag "columns[]", column_path, id: column_path.to_s.gsub('/', '-')
70
+ concat " " + column_path.to_s.gsub('/', '_').humanize
71
+ end
72
+ end
73
+ end
74
+ end
data/lib/cm_admin.rb CHANGED
@@ -1,6 +1,37 @@
1
- require "cm_admin/version"
1
+ require 'slim'
2
+ require 'cm_admin/version'
3
+ require 'cm_admin/engine'
4
+ require 'cm_admin/model'
5
+ require 'cm_admin/view_helpers'
6
+ require 'cm_admin/utils'
2
7
 
3
8
  module CmAdmin
4
9
  class Error < StandardError; end
5
- # Your code goes here...
10
+
11
+ mattr_accessor :layout
12
+ mattr_accessor :included_models, :cm_admin_models
13
+ @@included_models ||= []
14
+ @@cm_admin_models ||= []
15
+
16
+ class << self
17
+ def webpacker
18
+ @webpacker ||= ::Webpacker::Instance.new(
19
+ root_path: CmAdmin::Engine.root,
20
+ config_path: CmAdmin::Engine.root.join('config', 'webpacker.yml')
21
+ )
22
+ end
23
+
24
+ def setup
25
+ yield self
26
+ end
27
+
28
+ def config(entity, &block)
29
+ if entity.is_a?(Class)
30
+ unless CmAdmin::Model.find_by({name: entity.name})
31
+ @@cm_admin_models << CmAdmin::Model.new(entity, &block)
32
+ end
33
+ end
34
+ end
35
+ end
36
+
6
37
  end
@@ -1,16 +1,4 @@
1
- module CmAdmin
2
- class InstallGenerator < Rails::Generators::Base
3
- source_root File.expand_path('templates', __dir__)
4
-
5
- desc <<-DESC.strip_heredoc
6
- Generates layout for the entire admin panel
7
-
8
- For example:
9
- rails g cm_admin:install
10
-
11
- It copies the respectively layout files and the necessary asset files.
12
-
13
- DESC
1
+ require 'rails/generators'
14
2
 
15
3
  def add_required_gems
16
4
  gem 'slim'
@@ -18,6 +6,8 @@ module CmAdmin
18
6
  system("yarn add bootstrap")
19
7
  system("yarn add @fortawesome/fontawesome-free")
20
8
  system("yarn add select2")
9
+ system("yarn add daterangepicker")
10
+ system("yarn add jgrowl")
21
11
  end
22
12
 
23
13
  def copy_layout_file
@@ -0,0 +1,63 @@
1
+ # desc "Explaining what the task does"
2
+ # task :cm_admin do
3
+ # # Task goes here
4
+ # end
5
+
6
+ def ensure_log_goes_to_stdout
7
+ old_logger = Webpacker.logger
8
+ Webpacker.logger = ActiveSupport::Logger.new(STDOUT)
9
+ yield
10
+ ensure
11
+ Webpacker.logger = old_logger
12
+ end
13
+
14
+ namespace :cm_admin do
15
+ namespace :webpacker do
16
+ desc "Install deps with yarn"
17
+ task :yarn_install do
18
+ Dir.chdir(File.join(__dir__, "../..")) do
19
+ system "yarn install --no-progress --production"
20
+ end
21
+ end
22
+
23
+ desc "Compile JavaScript packs using webpack for production with digests"
24
+ task compile: [:yarn_install, :environment] do
25
+ Webpacker.with_node_env("production") do
26
+ ensure_log_goes_to_stdout do
27
+ if CmAdmin.webpacker.commands.compile
28
+ # Successful compilation!
29
+ else
30
+ # Failed compilation
31
+ exit!
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+
39
+ def yarn_install_available?
40
+ rails_major = Rails::VERSION::MAJOR
41
+ rails_minor = Rails::VERSION::MINOR
42
+
43
+ rails_major > 5 || (rails_major == 5 && rails_minor >= 1)
44
+ end
45
+
46
+ def enhance_assets_precompile
47
+ # yarn:install was added in Rails 5.1
48
+ deps = yarn_install_available? ? [] : ["cm_admin:webpacker:yarn_install"]
49
+ Rake::Task["assets:precompile"].enhance(deps) do
50
+ Rake::Task["cm_admin:webpacker:compile"].invoke
51
+ end
52
+ end
53
+
54
+ # Compile packs after we've compiled all other assets during precompilation
55
+ skip_webpacker_precompile = %w(no false n f).include?(ENV["WEBPACKER_PRECOMPILE"])
56
+
57
+ unless skip_webpacker_precompile
58
+ if Rake::Task.task_defined?("assets:precompile")
59
+ enhance_assets_precompile
60
+ else
61
+ Rake::Task.define_task("assets:precompile" =>"cm_admin:webpacker:compile")
62
+ end
63
+ end
data/package.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "cm-admin",
3
+ "private": true,
4
+ "dependencies": {
5
+ "@fortawesome/fontawesome-free": "^5.15.3",
6
+ "@nathanvda/cocoon": "^1.2.14",
7
+ "@popperjs/core": "^2.9.2",
8
+ "@rails/activestorage": "^6.0.0",
9
+ "@rails/ujs": "^6.0.0",
10
+ "@rails/webpacker": "5.3.0",
11
+ "bootstrap": "^5.0.1",
12
+ "daterangepicker": "^3.1.0",
13
+ "flatpickr": "^4.6.9",
14
+ "jquery": "^3.6.0",
15
+ "moment": "^2.29.1",
16
+ "popper.js": "^1.16.1",
17
+ "turbolinks": "^5.2.0"
18
+ },
19
+ "version": "0.1.0",
20
+ "devDependencies": {
21
+ "webpack-dev-server": "^3.11.2"
22
+ }
23
+ }
data/postcss.config.js ADDED
@@ -0,0 +1,12 @@
1
+ module.exports = {
2
+ plugins: [
3
+ require('postcss-import'),
4
+ require('postcss-flexbugs-fixes'),
5
+ require('postcss-preset-env')({
6
+ autoprefixer: {
7
+ flexbox: 'no-2009'
8
+ },
9
+ stage: 3
10
+ })
11
+ ]
12
+ }
@@ -0,0 +1 @@
1
+ cf780b7d855af05066bcc442a307ca3eecf28623