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.
- checksums.yaml +4 -4
- data/.gitignore +12 -0
- data/.rspec +3 -0
- data/.travis.yml +6 -0
- data/Gemfile +7 -1
- data/Gemfile.lock +121 -0
- data/LICENSE.txt +21 -0
- data/README.md +8 -19
- data/app/assets/images/logo.png +0 -0
- data/{lib/generators/cm_admin/templates/assets/stylesheets → app/assets/stylesheets/cm_admin}/base/auth.scss +4 -6
- data/app/assets/stylesheets/cm_admin/base/common.scss +237 -0
- data/app/assets/stylesheets/cm_admin/base/filters.scss +200 -0
- data/{lib/generators/cm_admin/templates/assets/stylesheets → app/assets/stylesheets/cm_admin}/base/form.scss +83 -11
- data/app/assets/stylesheets/cm_admin/base/main-nav.scss +47 -0
- data/app/assets/stylesheets/cm_admin/base/navbar.scss +65 -0
- data/app/assets/stylesheets/cm_admin/base/quicksearch.scss +76 -0
- data/app/assets/stylesheets/cm_admin/base/scaffold.scss +96 -0
- data/app/assets/stylesheets/cm_admin/base/show.scss +76 -0
- data/app/assets/stylesheets/cm_admin/base/sidebar.scss +225 -0
- data/app/assets/stylesheets/cm_admin/base/table.scss +320 -0
- data/app/assets/stylesheets/cm_admin/base/tabs.scss +26 -0
- data/app/assets/stylesheets/cm_admin/cm_admin.css.scss +26 -0
- data/app/assets/stylesheets/cm_admin/components/_alerts.scss +101 -0
- data/app/assets/stylesheets/cm_admin/components/_buttons.scss +135 -0
- data/app/assets/stylesheets/cm_admin/components/_dropdown-popup.scss +153 -0
- data/app/assets/stylesheets/cm_admin/components/_input.scss +274 -0
- data/app/assets/stylesheets/cm_admin/components/_modal.scss +34 -0
- data/app/assets/stylesheets/cm_admin/components/_range.scss +31 -0
- data/app/assets/stylesheets/cm_admin/components/_status-tag.scss +68 -0
- data/app/assets/stylesheets/cm_admin/components/index.scss +7 -0
- data/app/assets/stylesheets/cm_admin/dependency/bootstrap.min.css +7 -0
- data/app/assets/stylesheets/cm_admin/helpers/_mixins.scss +20 -0
- data/app/assets/stylesheets/cm_admin/helpers/_variable.scss +87 -0
- data/app/assets/stylesheets/cm_admin/helpers/index.scss +2 -0
- data/app/controllers/cm_admin/application_controller.rb +11 -0
- data/app/controllers/cm_admin/exports_controller.rb +16 -0
- data/app/controllers/cm_admin/static_controller.rb +12 -0
- data/app/helpers/cm_admin/application_helper.rb +11 -0
- data/app/helpers/cm_admin/custom_helper.rb +4 -0
- data/app/javascript/packs/cm_admin/application.js +22 -0
- data/app/javascript/packs/cm_admin/filters.js +347 -0
- data/app/javascript/packs/cm_admin/quick_search.js +67 -0
- data/app/javascript/packs/cm_admin/scaffolds.js +43 -0
- data/app/javascript/stylesheets/cm_admin/application.scss +3 -0
- data/app/views/cm_admin/main/_associated_table.html.slim +60 -0
- data/app/views/cm_admin/main/_cm_pagy_nav.html.slim +23 -0
- data/app/views/cm_admin/main/_filters.html.slim +1 -0
- data/app/views/cm_admin/main/_nested_fields.html.slim +7 -0
- data/app/views/cm_admin/main/_nested_table_form.html.slim +6 -0
- data/app/views/cm_admin/main/_table.html.slim +60 -0
- data/app/views/cm_admin/main/_tabs.html.slim +5 -0
- data/app/views/cm_admin/main/_top_navbar.html.slim +25 -0
- data/app/views/cm_admin/main/associated_index.html.slim +6 -0
- data/app/views/cm_admin/main/associated_show.html.slim +6 -0
- data/app/views/cm_admin/main/dashboard.html.slim +1 -0
- data/app/views/cm_admin/main/edit.html.slim +19 -0
- data/app/views/cm_admin/main/index.html.slim +12 -0
- data/app/views/cm_admin/main/new.html.slim +22 -0
- data/app/views/cm_admin/main/show.html.slim +12 -0
- data/app/views/cm_admin/static/error_401.html.slim +4 -0
- data/app/views/layouts/_left_sidebar_nav.html.slim +34 -0
- data/app/views/layouts/_quick_links.html.slim +25 -0
- data/app/views/layouts/cm_admin.html.slim +41 -0
- data/app/views/layouts/static.html.slim +18 -0
- data/bin/webpack +18 -0
- data/bin/webpack-dev-server +18 -0
- data/cm_admin.gemspec +21 -31
- data/config/.DS_Store +0 -0
- data/config/initializers/active_record_extension.rb +9 -0
- data/config/routes.rb +19 -0
- data/config/webpack/development.js +5 -0
- data/config/webpack/environment.js +13 -0
- data/config/webpack/production.js +5 -0
- data/config/webpack/test.js +5 -0
- data/config/webpacker.yml +92 -0
- data/lib/cm_admin/constants.rb +33 -0
- data/lib/cm_admin/engine.rb +38 -0
- data/lib/cm_admin/model.rb +152 -0
- data/lib/cm_admin/models/action.rb +36 -0
- data/lib/cm_admin/models/actions/blocks.rb +25 -0
- data/lib/cm_admin/models/blocks.rb +19 -0
- data/lib/cm_admin/models/cm_show_section.rb +20 -0
- data/lib/cm_admin/models/column.rb +61 -0
- data/lib/cm_admin/models/controller_method.rb +75 -0
- data/lib/cm_admin/models/dsl_method.rb +122 -0
- data/lib/cm_admin/models/export.rb +54 -0
- data/lib/cm_admin/models/field.rb +15 -0
- data/lib/cm_admin/models/filter.rb +95 -0
- data/lib/cm_admin/models/form_field.rb +21 -0
- data/lib/cm_admin/models/tab.rb +13 -0
- data/lib/cm_admin/utils.rb +67 -0
- data/lib/cm_admin/version.rb +1 -1
- data/lib/cm_admin/view_helpers/column_field_helper.rb +29 -0
- data/lib/cm_admin/view_helpers/field_display_helper.rb +65 -0
- data/lib/cm_admin/view_helpers/filter_helper.rb +190 -0
- data/lib/cm_admin/view_helpers/form_field_helper.rb +33 -0
- data/lib/cm_admin/view_helpers/form_helper.rb +65 -0
- data/lib/cm_admin/view_helpers/manage_column_popup_helper.rb +75 -0
- data/lib/cm_admin/view_helpers/navigation_helper.rb +34 -0
- data/lib/cm_admin/view_helpers/page_info_helper.rb +57 -0
- data/lib/cm_admin/view_helpers.rb +74 -0
- data/lib/cm_admin.rb +33 -2
- data/lib/generators/cm_admin/install_generator.rb +3 -13
- data/lib/tasks/webpack_install.rake +63 -0
- data/package.json +23 -0
- data/postcss.config.js +12 -0
- data/tmp/cache/webpacker/last-compilation-digest-development +1 -0
- data/yarn.lock +6933 -0
- metadata +155 -46
- data/lib/generators/cm_admin/USAGE +0 -8
- data/lib/generators/cm_admin/templates/assets/images/cm.png +0 -0
- data/lib/generators/cm_admin/templates/assets/stylesheets/application.css.scss +0 -33
- data/lib/generators/cm_admin/templates/assets/stylesheets/base/_variable.scss +0 -14
- data/lib/generators/cm_admin/templates/assets/stylesheets/base/input-styles.scss +0 -72
- data/lib/generators/cm_admin/templates/assets/stylesheets/base/main-nav.scss +0 -79
- data/lib/generators/cm_admin/templates/assets/stylesheets/base/scaffold.scss +0 -95
- data/lib/generators/cm_admin/templates/assets/stylesheets/base/show.scss +0 -88
- data/lib/generators/cm_admin/templates/assets/stylesheets/base/sidebar.scss +0 -69
- data/lib/generators/cm_admin/templates/assets/stylesheets/base/table.scss +0 -246
- data/lib/generators/cm_admin/templates/layouts/_navbar.html.slim +0 -8
- data/lib/generators/cm_admin/templates/layouts/_side_navbar.html.slim +0 -12
- data/lib/generators/cm_admin/templates/layouts/application.html.slim +0 -20
- data/lib/generators/cm_admin/templates/layouts/initializer.rb +0 -2
- data/lib/generators/cm_admin/templates/views/_form.erb +0 -67
- data/lib/generators/cm_admin/templates/views/_table.erb +0 -22
- data/lib/generators/cm_admin/templates/views/edit.erb +0 -10
- data/lib/generators/cm_admin/templates/views/index.erb +0 -11
- data/lib/generators/cm_admin/templates/views/new.erb +0 -10
- data/lib/generators/cm_admin/templates/views/reset_password.erb +0 -12
- data/lib/generators/cm_admin/templates/views/show.erb +0 -18
- data/lib/generators/cm_admin/templates/views/sign_in.erb +0 -18
- 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
|
|
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
|
-
|
|
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
|
-
|
|
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 @@
|
|
|
1
|
+
cf780b7d855af05066bcc442a307ca3eecf28623
|