adminterface 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE.md +19 -109
- data/README.md +33 -27
- data/Rakefile +1 -1
- data/app/assets/stylesheets/adminterface/components/_form.scss +1 -0
- data/app/assets/stylesheets/adminterface/mixins/_utilities.scss +4 -0
- data/app/assets/stylesheets/adminterface/vendors/bootstrap/_all.scss +1 -0
- data/app/assets/stylesheets/adminterface/vendors/bootstrap/components/_breadcrumb.scss +1 -0
- data/app/assets/stylesheets/adminterface/vendors/flatpickr/{main.scss → _main.scss} +6 -0
- data/app/javascript/adminterface/initializers/header_toggler.js +1 -1
- data/app/javascript/adminterface/initializers/plugins/flatpickr.js +1 -1
- data/app/javascript/adminterface/initializers/plugins/input_counter.js +1 -1
- data/app/javascript/adminterface/initializers/plugins/password_visibility.js +1 -1
- data/app/javascript/adminterface/initializers/plugins/tom_select.js +1 -1
- data/app/javascript/adminterface/lib/__tests__/checkbox_toggler.html +5 -0
- data/app/javascript/adminterface/lib/__tests__/checkbox_toggler.spec.js +110 -0
- data/app/javascript/adminterface/lib/__tests__/detached_dropdown.spec.js +69 -70
- data/app/javascript/adminterface/lib/__tests__/filters.spec.js +0 -1
- data/app/javascript/adminterface/lib/__tests__/has_many.html +14 -0
- data/app/javascript/adminterface/lib/__tests__/has_many.spec.js +224 -0
- data/app/javascript/adminterface/lib/__tests__/header_toggler.html +2 -0
- data/app/javascript/adminterface/lib/__tests__/header_toggler.spec.js +212 -0
- data/app/javascript/adminterface/lib/__tests__/per_page.spec.js +75 -0
- data/app/javascript/adminterface/lib/__tests__/utils.spec.js +0 -1
- data/app/javascript/adminterface/lib/has_many.js +41 -38
- data/app/javascript/adminterface/lib/header_toggler.js +10 -8
- data/app/views/layouts/active_admin_logged_out.html.erb +1 -1
- data/lib/adminterface/configs.rb +5 -1
- data/lib/adminterface/engine.rb +0 -7
- data/lib/adminterface/extensions/base_controller.rb +16 -12
- data/lib/adminterface/extensions/namespace_settings.rb +3 -0
- data/lib/adminterface/extensions/view_helpers/alert_helper.rb +3 -1
- data/lib/adminterface/extensions/views/components/dropdown_menu.rb +4 -1
- data/lib/adminterface/extensions/views/components/menu_item.rb +8 -3
- data/lib/adminterface/extensions/views/components/tabs.rb +38 -13
- data/lib/adminterface/extensions/views/header.rb +2 -1
- data/lib/adminterface/extensions/views/pages/base.rb +4 -1
- data/lib/adminterface/initializers/configurations.rb +1 -1
- data/lib/adminterface/version.rb +1 -1
- data/lib/adminterface.rb +0 -31
- data/lib/generators/adminterface/comments/comments_generator.rb +4 -0
- data/lib/generators/adminterface/configs/configs_generator.rb +2 -2
- data/lib/generators/adminterface/install/install_generator.rb +21 -23
- data/lib/generators/adminterface/views/views_generator.rb +2 -2
- data/lib/generators/adminterface/webpacker/webpacker_generator.rb +20 -6
- metadata +16 -14
- data/lib/adminterface/encryption/encryptor.rb +0 -26
- data/lib/adminterface/license.rb +0 -18
- data/lib/adminterface/licensing/base.rb +0 -99
- data/lib/adminterface/licensing/commercial.rb +0 -7
- data/lib/adminterface/licensing/notice.rb +0 -54
- data/lib/adminterface/licensing/personal.rb +0 -13
- data/lib/adminterface/public.pem +0 -9
@@ -9,11 +9,19 @@ module Adminterface
|
|
9
9
|
|
10
10
|
def set_resource_scope
|
11
11
|
session[:resource_scope] = {
|
12
|
-
controller:
|
13
|
-
action: action_name
|
12
|
+
controller: controller_path,
|
13
|
+
action: action_name_pairing(action_name)
|
14
14
|
}
|
15
15
|
end
|
16
16
|
|
17
|
+
def action_name_pairing(name)
|
18
|
+
case name
|
19
|
+
when "create" then "new"
|
20
|
+
when "update" then "edit"
|
21
|
+
else name
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
17
25
|
def reset_tab
|
18
26
|
params.delete(:tab)
|
19
27
|
params.delete(:anchor_id)
|
@@ -26,30 +34,26 @@ module Adminterface
|
|
26
34
|
def same_controller?
|
27
35
|
return true if resource_scope[:controller].blank?
|
28
36
|
|
29
|
-
resource_scope[:controller] ==
|
37
|
+
resource_scope[:controller] == controller_path
|
30
38
|
end
|
31
39
|
|
32
40
|
def same_action?
|
33
|
-
|
34
|
-
|
35
|
-
case resource_scope[:action]
|
36
|
-
when "edit", "update" then %w[edit update].include? action_name
|
37
|
-
else action_name == resource_scope[:action]
|
38
|
-
end
|
41
|
+
resource_scope[:action].presence &&
|
42
|
+
action_name_pairing(action_name).eql?(resource_scope[:action])
|
39
43
|
end
|
40
44
|
|
41
45
|
def resource_scope
|
42
|
-
session.fetch(:resource_scope, {})
|
46
|
+
session.fetch(:resource_scope, {}).with_indifferent_access
|
43
47
|
end
|
44
48
|
end
|
45
49
|
end
|
46
50
|
end
|
47
51
|
|
48
52
|
# Overwrite activeadmin/lib/active_admin/base_controller.rb
|
49
|
-
|
53
|
+
ActiveAdmin.after_load do
|
50
54
|
ActiveAdmin::BaseController.class_eval do
|
51
55
|
prepend Adminterface::Extensions::BaseController
|
52
56
|
before_action :reset_tab, if: :should_reset_tab?
|
53
|
-
|
57
|
+
before_action :set_resource_scope
|
54
58
|
end
|
55
59
|
end
|
@@ -4,7 +4,9 @@ module Adminterface
|
|
4
4
|
module AlertHelper
|
5
5
|
def flashes_html
|
6
6
|
flash.each do |type, msg|
|
7
|
-
concat(content_tag(:div, msg,
|
7
|
+
concat(content_tag(:div, msg,
|
8
|
+
class: "flash flash_#{type} alert #{flash_css_classes[type.to_sym]}".squish,
|
9
|
+
role: "alert"))
|
8
10
|
end
|
9
11
|
nil
|
10
12
|
end
|
@@ -47,7 +47,10 @@ ActiveAdmin::Views::DropdownMenu.class_eval do
|
|
47
47
|
button_options[:class] = "#{button_options[:class]} dropdown-toggle".squish
|
48
48
|
options[:class] = "#{options[:class]} dropdown".squish
|
49
49
|
|
50
|
-
@button = build_button(
|
50
|
+
@button = build_button(
|
51
|
+
name,
|
52
|
+
button_options.merge("data-bs-toggle": "dropdown", role: "button", "aria-expanded": "false")
|
53
|
+
)
|
51
54
|
@menu = build_menu(menu_options)
|
52
55
|
|
53
56
|
super(options)
|
@@ -15,8 +15,13 @@ module Adminterface
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
def
|
19
|
-
|
18
|
+
def current_item_options(item)
|
19
|
+
return {} unless item.current?(assigns[:current_tab])
|
20
|
+
|
21
|
+
{
|
22
|
+
class: "#{item.html_options[:class]} active".squish,
|
23
|
+
"aria-current": "page"
|
24
|
+
}
|
20
25
|
end
|
21
26
|
end
|
22
27
|
end
|
@@ -51,7 +56,7 @@ ActiveAdmin::Views::MenuItem.class_eval do
|
|
51
56
|
end
|
52
57
|
|
53
58
|
if url
|
54
|
-
item_options = item.html_options.merge(
|
59
|
+
item_options = item.html_options.merge(current_item_options(item)).delete_if { |_k, v| v.blank? }
|
55
60
|
text_node link_to(menu_label, url, **item_options)
|
56
61
|
else
|
57
62
|
span menu_label, item.html_options.merge(class: "navbar-text")
|
@@ -6,20 +6,16 @@ module Adminterface
|
|
6
6
|
def build_menu_item(title, options, &_block)
|
7
7
|
fragment = options.fetch(:id, fragmentize(title))
|
8
8
|
html_options = options.fetch(:html_options, {})
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
link_to title, url_for(tab: fragment, anchor: id, anchor_id: id), class: toggler_class(fragment)
|
13
|
-
else
|
14
|
-
link_to title, "##{fragment}", class: toggler_class(fragment), data: {"bs-toggle": "tab", "bs-target": "##{fragment}"}
|
15
|
-
end
|
9
|
+
|
10
|
+
li html_options.merge(class: "nav-item", role: "presentation") do
|
11
|
+
@http ? link_to_http(title, fragment) : link_to_js(title, fragment)
|
16
12
|
end
|
17
13
|
end
|
18
14
|
|
19
15
|
def build_content_item(title, options, &block)
|
20
16
|
fragment = options.fetch(:id, fragmentize(title))
|
21
|
-
options = options.reverse_merge(id:
|
22
|
-
div(options.merge(
|
17
|
+
options = options.reverse_merge(id: fragment, "aria-labelledby": "#{fragment}-tab")
|
18
|
+
div(options.merge(tab_pane_options(fragment)), &block)
|
23
19
|
end
|
24
20
|
|
25
21
|
def default_css_class
|
@@ -39,12 +35,41 @@ module Adminterface
|
|
39
35
|
|
40
36
|
private
|
41
37
|
|
42
|
-
def
|
43
|
-
|
38
|
+
def link_to_js(title, fragment)
|
39
|
+
options = toggler_options(fragment).merge(data: {"bs-toggle": "tab", "bs-target": "##{fragment}"})
|
40
|
+
link_to(title, "##{fragment}", **options)
|
41
|
+
end
|
42
|
+
|
43
|
+
def link_to_http(title, fragment)
|
44
|
+
params[:tab] ||= @default_tab || fragment
|
45
|
+
|
46
|
+
link_to(title,
|
47
|
+
url_for(controller: resource_scope[:controller],
|
48
|
+
action: resource_scope[:action], tab: fragment, anchor: id, anchor_id: id),
|
49
|
+
**toggler_options(fragment))
|
50
|
+
end
|
51
|
+
|
52
|
+
def resource_scope
|
53
|
+
session.fetch(:resource_scope, {}).with_indifferent_access
|
54
|
+
end
|
55
|
+
|
56
|
+
def toggler_options(fragment)
|
57
|
+
defaults = {id: "#{fragment}-tab", "aria-controls": fragment}
|
58
|
+
options =
|
59
|
+
if current_tab?(fragment)
|
60
|
+
{class: "nav-link active", "aria-selected": "true"}
|
61
|
+
else
|
62
|
+
{class: "nav-link", "aria-selected": "false"}
|
63
|
+
end
|
64
|
+
|
65
|
+
defaults.merge(options)
|
44
66
|
end
|
45
67
|
|
46
|
-
def
|
47
|
-
|
68
|
+
def tab_pane_options(fragment)
|
69
|
+
{
|
70
|
+
class: "tab-pane #{current_tab?(fragment) ? "active" : nil}".squish,
|
71
|
+
role: "tabpanel"
|
72
|
+
}
|
48
73
|
end
|
49
74
|
|
50
75
|
def current_tab?(fragment)
|
@@ -26,7 +26,8 @@ module Adminterface
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def navbar_toggler
|
29
|
-
button(class: "navbar-toggler", 'data-bs-target': "##{ID}",
|
29
|
+
button(class: "navbar-toggler", 'data-bs-target': "##{ID}",
|
30
|
+
'data-bs-toggle': "collapse", "aria-expanded": "false") do
|
30
31
|
span class: "navbar-toggler-icon"
|
31
32
|
end
|
32
33
|
end
|
@@ -5,6 +5,8 @@ module Adminterface
|
|
5
5
|
module Base
|
6
6
|
def build(*args)
|
7
7
|
super
|
8
|
+
set_attribute :dir,
|
9
|
+
render_or_call_method_or_proc_on(self, active_admin_config.lang_dir(self))
|
8
10
|
build_breakpoint_helpers
|
9
11
|
build_meta_tags_for_js
|
10
12
|
end
|
@@ -102,7 +104,8 @@ module Adminterface
|
|
102
104
|
div class: "flashes" do
|
103
105
|
flash_messages.each do |type, messages|
|
104
106
|
[*messages].each do |message|
|
105
|
-
div class: "flash flash_#{type} alert #{flash_css_classes[type.to_sym]} #{flash_dismissible_class}".squish
|
107
|
+
div class: "flash flash_#{type} alert #{flash_css_classes[type.to_sym]} #{flash_dismissible_class}".squish,
|
108
|
+
role: "alert" do
|
106
109
|
text_node(message)
|
107
110
|
button(class: "btn-close", "data-bs-dismiss": "alert", "aria-label": "Close") if flash_dismissible?
|
108
111
|
end
|
@@ -25,7 +25,7 @@ module Adminterface
|
|
25
25
|
|
26
26
|
meta_tags = {
|
27
27
|
version: Adminterface::VERSION,
|
28
|
-
viewport: "width=device-width, height=device-height, initial-scale=1.0
|
28
|
+
viewport: "width=device-width, height=device-height, initial-scale=1.0"
|
29
29
|
}
|
30
30
|
|
31
31
|
config.meta_tags_for_logged_out_pages = meta_tags
|
data/lib/adminterface/version.rb
CHANGED
data/lib/adminterface.rb
CHANGED
@@ -7,7 +7,6 @@ module Adminterface
|
|
7
7
|
autoload :VERSION, "adminterface/version"
|
8
8
|
autoload :Configs, "adminterface/configs"
|
9
9
|
autoload :Data, "adminterface/data"
|
10
|
-
autoload :License, "adminterface/license"
|
11
10
|
autoload :Callable, "adminterface/callable"
|
12
11
|
|
13
12
|
# Load Initializers
|
@@ -20,36 +19,6 @@ module Adminterface
|
|
20
19
|
autoload :ViewHelpers, "adminterface/initializers/view_helpers"
|
21
20
|
autoload :Views, "adminterface/initializers/views"
|
22
21
|
end
|
23
|
-
|
24
|
-
module Licensing
|
25
|
-
autoload :Notice, "adminterface/licensing/notice"
|
26
|
-
autoload :Commercial, "adminterface/licensing/commercial"
|
27
|
-
autoload :Personal, "adminterface/licensing/personal"
|
28
|
-
end
|
29
|
-
|
30
|
-
module Encryption
|
31
|
-
autoload :Encryptor, "adminterface/encryption/encryptor"
|
32
|
-
end
|
33
|
-
|
34
|
-
# License key
|
35
|
-
mattr_accessor :license_key
|
36
|
-
@@license_key = nil
|
37
|
-
|
38
|
-
def self.setup
|
39
|
-
yield self
|
40
|
-
end
|
41
|
-
|
42
|
-
def self.rails6_and_up?
|
43
|
-
Rails::VERSION::MAJOR >= 6
|
44
|
-
end
|
45
|
-
|
46
|
-
def self.cache_store
|
47
|
-
if Rails.cache.instance_of?(ActiveSupport::Cache::NullStore)
|
48
|
-
ActiveSupport::Cache::MemoryStore.new
|
49
|
-
else
|
50
|
-
Rails.cache
|
51
|
-
end
|
52
|
-
end
|
53
22
|
end
|
54
23
|
|
55
24
|
require "adminterface/engine"
|
@@ -11,6 +11,10 @@ module Adminterface
|
|
11
11
|
ActiveRecord::Migration.next_migration_number(next_migration_number)
|
12
12
|
end
|
13
13
|
|
14
|
+
def install_action_text
|
15
|
+
rails_command "action_text:install"
|
16
|
+
end
|
17
|
+
|
14
18
|
def create_initializer
|
15
19
|
template "active_admin_comment_action_text.rb",
|
16
20
|
"config/initializers/active_admin_comment_action_text.rb"
|
@@ -2,10 +2,10 @@ module Adminterface
|
|
2
2
|
module Generators
|
3
3
|
class ConfigsGenerator < Rails::Generators::Base
|
4
4
|
desc "Copies config files into a directory for customization"
|
5
|
-
argument :namespace, type: :string, default: "Admin"
|
6
|
-
|
7
5
|
source_root File.expand_path("templates", __dir__)
|
8
6
|
|
7
|
+
argument :namespace, type: :string, default: "Admin"
|
8
|
+
|
9
9
|
def copy
|
10
10
|
directory Adminterface::Engine.root.join("lib/adminterface/fixtures"),
|
11
11
|
"config/adminterface/#{namespace.underscore}/"
|
@@ -4,37 +4,35 @@ module Adminterface
|
|
4
4
|
desc "Installs Adminterface and generates necessary files and migrations"
|
5
5
|
source_root File.expand_path("templates", __dir__)
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
class_option :skip_comments,
|
8
|
+
type: :boolean, default: false,
|
9
|
+
desc: "Skip installation of ActionText for comments"
|
10
|
+
class_option :skip_examples,
|
11
|
+
type: :boolean, default: false,
|
12
|
+
desc: "Skip adding sample admin files"
|
13
|
+
class_option :use_webpacker,
|
14
|
+
type: :boolean, default: true,
|
15
|
+
desc: "Install assets with webpacker"
|
16
|
+
class_option :version,
|
17
|
+
aliases: "-v", type: :string, default: Adminterface::VERSION,
|
18
|
+
desc: "Install with a specific version"
|
10
19
|
|
11
20
|
def install_assets
|
12
|
-
|
13
|
-
generate "adminterface:webpacker"
|
14
|
-
end
|
15
|
-
end
|
21
|
+
return unless options[:use_webpacker]
|
16
22
|
|
17
|
-
|
18
|
-
generate "adminterface:comments"
|
23
|
+
generate "adminterface:webpacker -v #{options[:version]}"
|
19
24
|
end
|
20
25
|
|
21
|
-
def
|
22
|
-
|
23
|
-
end
|
26
|
+
def install_comments
|
27
|
+
return if options[:skip_comments]
|
24
28
|
|
25
|
-
|
29
|
+
generate "adminterface:comments"
|
30
|
+
end
|
26
31
|
|
27
|
-
def
|
28
|
-
return
|
32
|
+
def add_examples
|
33
|
+
return if options[:skip_examples]
|
29
34
|
|
30
|
-
|
31
|
-
if yes?("Install webpacker and continue?")
|
32
|
-
gem "webpacker"
|
33
|
-
rails_command "webpacker:install"
|
34
|
-
yield
|
35
|
-
else
|
36
|
-
puts Rainbow("Installation aborted").red
|
37
|
-
end
|
35
|
+
template "dashboard.rb", "app/admin/dashboard.rb"
|
38
36
|
end
|
39
37
|
end
|
40
38
|
end
|
@@ -2,13 +2,13 @@ module Adminterface
|
|
2
2
|
module Generators
|
3
3
|
class ViewsGenerator < Rails::Generators::Base
|
4
4
|
desc "Copies view templates for customization"
|
5
|
-
|
6
5
|
source_root Adminterface::Engine.root.join("app/views")
|
7
6
|
|
8
7
|
def copy
|
9
8
|
directory "active_admin", "app/views/active_admin"
|
10
9
|
directory "kaminari/active_admin", "app/views/kaminari/active_admin"
|
11
|
-
directory "layouts/active_admin_logged_out.html.erb",
|
10
|
+
directory "layouts/active_admin_logged_out.html.erb",
|
11
|
+
"app/views/layouts/active_admin_logged_out.html.erb"
|
12
12
|
end
|
13
13
|
end
|
14
14
|
end
|
@@ -2,11 +2,24 @@ module Adminterface
|
|
2
2
|
module Generators
|
3
3
|
class WebpackerGenerator < Rails::Generators::Base
|
4
4
|
desc "Install Stylesheets and JavaScripts using Webpacker"
|
5
|
+
source_root File.expand_path("templates", __dir__)
|
6
|
+
|
5
7
|
class_option :version,
|
6
8
|
aliases: "-v", type: :string, default: Adminterface::VERSION,
|
7
9
|
desc: "Install with a specific npm package version"
|
8
10
|
|
9
|
-
|
11
|
+
def install_webpacker
|
12
|
+
return if webpacker_installed?
|
13
|
+
|
14
|
+
puts Rainbow("Adminterface requires webpacker:").yellow
|
15
|
+
if yes?("Install webpacker and continue?")
|
16
|
+
gem "webpacker"
|
17
|
+
rails_command "webpacker:install"
|
18
|
+
else
|
19
|
+
puts Rainbow("Installation aborted").red
|
20
|
+
abort
|
21
|
+
end
|
22
|
+
end
|
10
23
|
|
11
24
|
def install_packages
|
12
25
|
insert_into_file "config/webpack/environment.js", after: /require\(('|")@rails\/webpacker\1\);?\n/ do
|
@@ -18,7 +31,7 @@ module Adminterface
|
|
18
31
|
EOF
|
19
32
|
end
|
20
33
|
|
21
|
-
run "yarn add @cmdbrew/adminterface
|
34
|
+
run "yarn add @cmdbrew/adminterface@#{npm_version}"
|
22
35
|
end
|
23
36
|
|
24
37
|
def install_assets
|
@@ -44,11 +57,12 @@ module Adminterface
|
|
44
57
|
|
45
58
|
private
|
46
59
|
|
47
|
-
def
|
48
|
-
|
49
|
-
|
60
|
+
def webpacker_installed?
|
61
|
+
defined?(Webpacker)
|
62
|
+
end
|
50
63
|
|
51
|
-
|
64
|
+
def npm_version
|
65
|
+
options[:version].gsub(".rc", "-rc")
|
52
66
|
end
|
53
67
|
end
|
54
68
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adminterface
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- I-Lung Lee
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-11-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activeadmin
|
@@ -80,7 +80,8 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0.18'
|
83
|
-
description:
|
83
|
+
description: A gem that brings Bootstrap 5, advanced customizability, and other goodies
|
84
|
+
into ActiveAdmin
|
84
85
|
email:
|
85
86
|
- ilung@hey.com
|
86
87
|
executables: []
|
@@ -143,6 +144,7 @@ files:
|
|
143
144
|
- app/assets/stylesheets/adminterface/vendors/_all.scss
|
144
145
|
- app/assets/stylesheets/adminterface/vendors/bootstrap/_all.scss
|
145
146
|
- app/assets/stylesheets/adminterface/vendors/bootstrap/_variables.scss
|
147
|
+
- app/assets/stylesheets/adminterface/vendors/bootstrap/components/_breadcrumb.scss
|
146
148
|
- app/assets/stylesheets/adminterface/vendors/bootstrap/components/_buttons.scss
|
147
149
|
- app/assets/stylesheets/adminterface/vendors/bootstrap/components/_dropdowns.scss
|
148
150
|
- app/assets/stylesheets/adminterface/vendors/bootstrap/components/_navs.scss
|
@@ -150,8 +152,8 @@ files:
|
|
150
152
|
- app/assets/stylesheets/adminterface/vendors/bootstrap/content/_tables.scss
|
151
153
|
- app/assets/stylesheets/adminterface/vendors/bootstrap/content/_typography.scss
|
152
154
|
- app/assets/stylesheets/adminterface/vendors/flatpickr/_all.scss
|
155
|
+
- app/assets/stylesheets/adminterface/vendors/flatpickr/_main.scss
|
153
156
|
- app/assets/stylesheets/adminterface/vendors/flatpickr/_variables.scss
|
154
|
-
- app/assets/stylesheets/adminterface/vendors/flatpickr/main.scss
|
155
157
|
- app/assets/stylesheets/adminterface/vendors/tom_select/_all.scss
|
156
158
|
- app/assets/stylesheets/adminterface/vendors/tom_select/_main.scss
|
157
159
|
- app/assets/stylesheets/adminterface/vendors/trix/_actiontext.scss
|
@@ -174,8 +176,15 @@ files:
|
|
174
176
|
- app/javascript/adminterface/initializers/plugins/input_counter.js
|
175
177
|
- app/javascript/adminterface/initializers/plugins/password_visibility.js
|
176
178
|
- app/javascript/adminterface/initializers/plugins/tom_select.js
|
179
|
+
- app/javascript/adminterface/lib/__tests__/checkbox_toggler.html
|
180
|
+
- app/javascript/adminterface/lib/__tests__/checkbox_toggler.spec.js
|
177
181
|
- app/javascript/adminterface/lib/__tests__/detached_dropdown.spec.js
|
178
182
|
- app/javascript/adminterface/lib/__tests__/filters.spec.js
|
183
|
+
- app/javascript/adminterface/lib/__tests__/has_many.html
|
184
|
+
- app/javascript/adminterface/lib/__tests__/has_many.spec.js
|
185
|
+
- app/javascript/adminterface/lib/__tests__/header_toggler.html
|
186
|
+
- app/javascript/adminterface/lib/__tests__/header_toggler.spec.js
|
187
|
+
- app/javascript/adminterface/lib/__tests__/per_page.spec.js
|
179
188
|
- app/javascript/adminterface/lib/__tests__/utils.spec.js
|
180
189
|
- app/javascript/adminterface/lib/batch_actions.js
|
181
190
|
- app/javascript/adminterface/lib/checkbox_toggler.js
|
@@ -234,7 +243,6 @@ files:
|
|
234
243
|
- lib/adminterface/data/base.rb
|
235
244
|
- lib/adminterface/data/countries.rb
|
236
245
|
- lib/adminterface/data/time_zones.rb
|
237
|
-
- lib/adminterface/encryption/encryptor.rb
|
238
246
|
- lib/adminterface/engine.rb
|
239
247
|
- lib/adminterface/extensions/base_controller.rb
|
240
248
|
- lib/adminterface/extensions/batch_actions/resource_extension.rb
|
@@ -329,12 +337,6 @@ files:
|
|
329
337
|
- lib/adminterface/initializers/resource.rb
|
330
338
|
- lib/adminterface/initializers/view_helpers.rb
|
331
339
|
- lib/adminterface/initializers/views.rb
|
332
|
-
- lib/adminterface/license.rb
|
333
|
-
- lib/adminterface/licensing/base.rb
|
334
|
-
- lib/adminterface/licensing/commercial.rb
|
335
|
-
- lib/adminterface/licensing/notice.rb
|
336
|
-
- lib/adminterface/licensing/personal.rb
|
337
|
-
- lib/adminterface/public.pem
|
338
340
|
- lib/adminterface/version.rb
|
339
341
|
- lib/generators/adminterface/comments/comments_generator.rb
|
340
342
|
- lib/generators/adminterface/comments/templates/README
|
@@ -353,7 +355,7 @@ files:
|
|
353
355
|
- lib/tasks/adminterface_tasks.rake
|
354
356
|
homepage: https://adminterface.io
|
355
357
|
licenses:
|
356
|
-
-
|
358
|
+
- MIT
|
357
359
|
metadata:
|
358
360
|
homepage_uri: https://adminterface.io
|
359
361
|
source_code_uri: https://github.com/cmdbrew/adminterface
|
@@ -374,8 +376,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
374
376
|
- !ruby/object:Gem::Version
|
375
377
|
version: '0'
|
376
378
|
requirements: []
|
377
|
-
rubygems_version: 3.2.
|
379
|
+
rubygems_version: 3.2.32
|
378
380
|
signing_key:
|
379
381
|
specification_version: 4
|
380
|
-
summary:
|
382
|
+
summary: Build functional and beautiful web apps faster with ActiveAdmin
|
381
383
|
test_files: []
|
@@ -1,26 +0,0 @@
|
|
1
|
-
module Adminterface
|
2
|
-
module Encryption
|
3
|
-
class Encryptor
|
4
|
-
extend Callable
|
5
|
-
attr_reader :message
|
6
|
-
|
7
|
-
def initialize(message)
|
8
|
-
@message = message
|
9
|
-
end
|
10
|
-
|
11
|
-
def call
|
12
|
-
Base64.encode64(public_key.public_encrypt(message))
|
13
|
-
end
|
14
|
-
|
15
|
-
private
|
16
|
-
|
17
|
-
def public_key_file
|
18
|
-
@public_key_file ||= File.read(Engine.root.join("lib/adminterface/public.pem"))
|
19
|
-
end
|
20
|
-
|
21
|
-
def public_key
|
22
|
-
@public_key ||= OpenSSL::PKey::RSA.new(public_key_file)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
data/lib/adminterface/license.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
module Adminterface
|
2
|
-
class License
|
3
|
-
class_attribute :license, default: {}
|
4
|
-
|
5
|
-
class << self
|
6
|
-
def verify!
|
7
|
-
return if Rails.env.test?
|
8
|
-
|
9
|
-
self.license =
|
10
|
-
if ::Adminterface.license_key.present?
|
11
|
-
::Adminterface::Licensing::Commercial
|
12
|
-
else
|
13
|
-
::Adminterface::Licensing::Personal
|
14
|
-
end.call
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|