itsf_backend 3.0.2 → 3.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.
- checksums.yaml +4 -4
- data/app/assets/stylesheets/itsf/backend/application.css.less +2 -1
- data/app/assets/stylesheets/itsf/backend/application/vertical-navigation.css.less +5 -0
- data/app/controllers/itsf/backend/dashboard_controller.rb +1 -0
- data/app/controllers/itsf/backend/home_controller.rb +1 -0
- data/app/helpers/itsf/backend/bootstrap_helper.rb +9 -0
- data/app/renderers/bootstrap/accordion_menu.rb +24 -0
- data/app/views/bootstrap/_accordion_menu.haml +10 -0
- data/app/views/bootstrap/accordion_menu/_item.haml +8 -0
- data/app/views/layouts/itsf/backend/_vertical_navigation.haml +10 -21
- data/app/views/layouts/itsf/backend/base.html.haml +11 -9
- data/lib/itsf/backend/version.rb +1 -1
- metadata +7 -3
- data/app/presenters/bootstrap_table_presenter.rb.old +0 -106
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5691ac4f916cbb8e579376b552022c306c95ed07
|
4
|
+
data.tar.gz: 14463dc4f14178a8522811d95cdf2938193d5fda
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 688ea40c5f9318eda64cfb22cf7a55822dd6acb91da6e9aef5e1d8dce891949af889839fa16f74ea92253bbf00330e86d51b6dd3ab6e17c5ccdfea195672a1d2
|
7
|
+
data.tar.gz: 9219bcb15f27ffcf73da09eb96cebe624a43cf516825abd49f980f9308095861b85309d1bf710f21aae1b38f93d99972913fb2789b9d00ea89dda71fb53c612e
|
@@ -28,8 +28,9 @@
|
|
28
28
|
@import "application/navigation-logo.css.less";
|
29
29
|
@import "application/panel-footer-pagination.css.less";
|
30
30
|
@import "application/panel-with-actions.css.less";
|
31
|
-
@import "application/sidebar.css.less";
|
31
|
+
/* @import "application/sidebar.css.less"; */
|
32
32
|
@import "application/table-actions.css.less";
|
33
33
|
@import "application/table-responsive.css.less";
|
34
34
|
@import "application/tab-with-nav.css.less";
|
35
35
|
@import "application/ui-autocomplete.css.less";
|
36
|
+
@import "application/vertical-navigation.css.less";
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module Itsf::Backend
|
2
2
|
class DashboardController < Configuration.dashboard_base_controller.constantize
|
3
3
|
helper Itsf::Backend::ApplicationHelper
|
4
|
+
helper Itsf::Backend::BootstrapHelper
|
4
5
|
helper MultiClientHelper if Itsf::Backend.features?(:multi_client)
|
5
6
|
|
6
7
|
layout 'itsf/backend/base'
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Bootstrap
|
2
|
+
class AccordionMenu
|
3
|
+
def initialize(view, options = {}, &block)
|
4
|
+
options.reverse_merge!(identifier: SecureRandom.urlsafe_base64, icon: 'folder-open')
|
5
|
+
|
6
|
+
@identifier = options.delete(:identifier)
|
7
|
+
@title = options.delete(:title)
|
8
|
+
@icon = options.delete(:icon)
|
9
|
+
@view = view
|
10
|
+
@block = block
|
11
|
+
end
|
12
|
+
|
13
|
+
def perform
|
14
|
+
items = @view.capture { @block.call(self) }
|
15
|
+
@view.render partial: 'bootstrap/accordion_menu', locals: { identifier: @identifier, title: @title, items: items, icon: @icon }
|
16
|
+
end
|
17
|
+
|
18
|
+
def item(options = {})
|
19
|
+
options.reverse_merge!(icon: nil, target: nil, title: nil, item_count: nil)
|
20
|
+
|
21
|
+
@view.render partial: 'bootstrap/accordion_menu/item', locals: options
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
.accordion-menu.panel-group{ id: "accordion-menu-#{identifier}" }
|
2
|
+
.panel.panel-default
|
3
|
+
.panel-heading
|
4
|
+
%h4.panel-title
|
5
|
+
%a{"data-parent" => "#accordion-menu-#{identifier}", "data-toggle" => "collapse", href: "#accordion-menu-collapse-#{identifier}" }
|
6
|
+
%span{ class: "glyphicon.glyphicon-#{icon}" }
|
7
|
+
= title
|
8
|
+
.panel-collapse.collapse.in{ id: "accordion-menu-collapse-#{identifier}" }
|
9
|
+
%table.table.table-striped.table-hover.table-condensed
|
10
|
+
= items
|
@@ -1,21 +1,10 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
.
|
11
|
-
%div.list-group
|
12
|
-
= link_to(send(engine.engine_name).root_path, class: 'list-group-item') do
|
13
|
-
= t(".home")
|
14
|
-
- controllers = engine.to_s.gsub('::Engine', '::Configuration').constantize.registered_controllers.call
|
15
|
-
- controllers.each do |kontroller|
|
16
|
-
- resource_klass = kontroller.resource_class
|
17
|
-
- if !Itsf::Backend.features?(:pundit) || policy(resource_klass).index?
|
18
|
-
= link_to(send(engine.engine_name).url_for(controller: "/#{kontroller.controller_path}"), class: 'list-group-item') do
|
19
|
-
= resource_klass.model_name.human(count: :other)
|
20
|
-
%span.badge.badge-default= kontroller.resource_count.respond_to?(:call) ? instance_exec(&kontroller.resource_count) : kontroller.resource_count
|
21
|
-
|
1
|
+
- Itsf::Backend::Configuration.backend_engines.each do |engine|
|
2
|
+
- if !respond_to?(:engine_policy) || engine_policy(engine).access?
|
3
|
+
= accordion_menu(identifier: engine.name.parameterize, title: t("classes.#{engine.name.underscore}"), icon: 'menu-down') do |menu|
|
4
|
+
= menu.item(icon: 'home', target: send(engine.engine_name).root_path, title: t(".home"))
|
5
|
+
- controllers = engine.to_s.gsub('::Engine', '::Configuration').constantize.registered_controllers.call
|
6
|
+
- controllers.each do |kontroller|
|
7
|
+
- resource_klass = kontroller.resource_class
|
8
|
+
- if !Itsf::Backend.features?(:pundit) || policy(resource_klass).index?
|
9
|
+
- resource_count = kontroller.resource_count.respond_to?(:call) ? instance_exec(&kontroller.resource_count) : kontroller.resource_count
|
10
|
+
= menu.item(icon: 'list', target: send(engine.engine_name).url_for(controller: "/#{kontroller.controller_path}"), title: resource_klass.model_name.human(count: :other), item_count: resource_count)
|
@@ -33,16 +33,18 @@
|
|
33
33
|
%body
|
34
34
|
#auxiliary-navigation
|
35
35
|
= render 'layouts/itsf/backend/auxiliary_navigation'
|
36
|
-
#wrapper
|
37
|
-
#sidebar-wrapper.brand-primary-background-color
|
38
|
-
= render 'layouts/itsf/backend/vertical_navigation'
|
39
36
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
37
|
+
.container-fluid
|
38
|
+
.row
|
39
|
+
.col-md-3.col-lg-2
|
40
|
+
#vertical-navigation
|
41
|
+
= render 'layouts/itsf/backend/vertical_navigation'
|
42
|
+
.col-md-9.col-lg-10
|
43
|
+
.container-fluid
|
44
|
+
.row
|
45
|
+
.col-lg-12
|
46
|
+
= bootstrap_flash
|
47
|
+
= yield
|
46
48
|
|
47
49
|
|
48
50
|
%footer.footer-sticky
|
data/lib/itsf/backend/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: itsf_backend
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roberto Vasquez Angel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-03-
|
11
|
+
date: 2017-03-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -494,6 +494,7 @@ files:
|
|
494
494
|
- app/assets/stylesheets/itsf/backend/application/table-actions.css.less
|
495
495
|
- app/assets/stylesheets/itsf/backend/application/table-responsive.css.less
|
496
496
|
- app/assets/stylesheets/itsf/backend/application/ui-autocomplete.css.less
|
497
|
+
- app/assets/stylesheets/itsf/backend/application/vertical-navigation.css.less
|
497
498
|
- app/assets/stylesheets/itsf/backend/bootstrap_and_overrides.css.less
|
498
499
|
- app/assets/stylesheets/itsf/backend/vendor/jquery.dragtable.css
|
499
500
|
- app/assets/stylesheets/itsf/backend/vendor/timeline.min.css
|
@@ -535,13 +536,16 @@ files:
|
|
535
536
|
- app/forms/concerns/form/additional_submit_buttons.rb
|
536
537
|
- app/forms/concerns/form/ui_autocomplete.rb
|
537
538
|
- app/helpers/itsf/backend/application_helper.rb
|
539
|
+
- app/helpers/itsf/backend/bootstrap_helper.rb
|
538
540
|
- app/inputs/fake_checkbox_input.rb
|
539
541
|
- app/inputs/fake_text_input.rb
|
540
542
|
- app/policies/itsf/backend/base_policy.rb
|
541
543
|
- app/policies/itsf/backend/dashboard_policy.rb
|
542
544
|
- app/policies/itsf/backend/engine_policy.rb
|
543
545
|
- app/policies/itsf/backend/service/base_policy.rb
|
544
|
-
- app/
|
546
|
+
- app/renderers/bootstrap/accordion_menu.rb
|
547
|
+
- app/views/bootstrap/_accordion_menu.haml
|
548
|
+
- app/views/bootstrap/accordion_menu/_item.haml
|
545
549
|
- app/views/itsf/backend/dashboard/_dashboard_panel.html.haml
|
546
550
|
- app/views/itsf/backend/dashboard/_head_extras.html.haml
|
547
551
|
- app/views/itsf/backend/dashboard/index.html.haml
|
@@ -1,106 +0,0 @@
|
|
1
|
-
class BootstrapTablePresenter < Admino::Table::Presenter
|
2
|
-
private
|
3
|
-
|
4
|
-
def table_html_options
|
5
|
-
{ class: 'table table-striped table-hover table-admino table-scrollable table-condensed' }
|
6
|
-
end
|
7
|
-
|
8
|
-
def head_row(collection_klass, query, view_context)
|
9
|
-
HeadRow.new(collection_klass, query, view_context)
|
10
|
-
end
|
11
|
-
|
12
|
-
def resource_row(resource, view_context)
|
13
|
-
ResourceRow.new(resource, view_context)
|
14
|
-
end
|
15
|
-
|
16
|
-
class HeadRow < Admino::Table::HeadRow
|
17
|
-
def column(*args, &block)
|
18
|
-
attribute_name, label, html_options = parse_column_args(args)
|
19
|
-
|
20
|
-
if label.nil?
|
21
|
-
label = column_label(attribute_name)
|
22
|
-
elsif label.is_a? Symbol
|
23
|
-
label = column_label(label)
|
24
|
-
end
|
25
|
-
|
26
|
-
html_options = complete_column_html_options(
|
27
|
-
attribute_name,
|
28
|
-
html_options
|
29
|
-
)
|
30
|
-
|
31
|
-
# sorting_scope = html_options.delete(:sorting)
|
32
|
-
# sorting_html_options = html_options.delete(:sorting_html_options) { {} }
|
33
|
-
|
34
|
-
# if sorting_scope
|
35
|
-
# raise ArgumentError, 'query object is required' unless query
|
36
|
-
# label = query.sorting.scope_link(sorting_scope, label, sorting_html_options)
|
37
|
-
# end
|
38
|
-
if Itsf::Backend.features?(:ransack)
|
39
|
-
html_options.reverse_merge!(sortable: true, sortable_options: [])
|
40
|
-
sortable = html_options.delete(:sortable)
|
41
|
-
sortable_options = html_options.delete(:sortable_options)
|
42
|
-
if sortable_options.empty?
|
43
|
-
sortable_options << attribute_name
|
44
|
-
sortable_options << resource_klass.human_attribute_name(attribute_name)
|
45
|
-
end
|
46
|
-
|
47
|
-
|
48
|
-
if sortable
|
49
|
-
label = h.sort_link(h.instance_variable_get("@q"), *sortable_options)
|
50
|
-
# label = h.sort_link(h.instance_variable_get("@q"), attribute_name)
|
51
|
-
else
|
52
|
-
label = label.to_s
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
@columns << h.content_tag(:th, label, html_options)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
class ResourceRow < Admino::Table::ResourceRow
|
61
|
-
# def to_html
|
62
|
-
# buffer = @columns
|
63
|
-
|
64
|
-
# if @actions.any?
|
65
|
-
# html_options = column_html_options(:actions)
|
66
|
-
# buffer << h.content_tag(:td, html_options) do
|
67
|
-
# actions_wrapper do
|
68
|
-
# @actions.join(" ").html_safe
|
69
|
-
# end
|
70
|
-
# end
|
71
|
-
# end
|
72
|
-
|
73
|
-
# buffer.html_safe
|
74
|
-
# end
|
75
|
-
|
76
|
-
# def actions_wrapper(&block)
|
77
|
-
# h.content_tag(:div, { class: 'btn-group' }, &block)
|
78
|
-
# end
|
79
|
-
|
80
|
-
# def edit_action_url
|
81
|
-
# view_context.edit_resource_url(resource)
|
82
|
-
# end
|
83
|
-
|
84
|
-
# def destroy_action_url
|
85
|
-
# view_context.resource_url(resource)
|
86
|
-
# end
|
87
|
-
|
88
|
-
# def show_action_html_options
|
89
|
-
# { class: 'btn btn-default btn-xs' }
|
90
|
-
# end
|
91
|
-
|
92
|
-
# def edit_action_html_options
|
93
|
-
# { class: 'btn btn-default btn-xs' }
|
94
|
-
# end
|
95
|
-
|
96
|
-
# def destroy_action_html_options
|
97
|
-
# {
|
98
|
-
# method: :delete,
|
99
|
-
# class: 'btn btn-danger btn-xs',
|
100
|
-
# data: {
|
101
|
-
# confirm: I18n.t('confirmations.delete')
|
102
|
-
# }
|
103
|
-
# }
|
104
|
-
# end
|
105
|
-
end
|
106
|
-
end
|