kadmin 0.3.1 → 0.3.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/README.md +44 -44
- data/Rakefile +146 -146
- data/app/assets/javascripts/modular/app.js +1388 -1388
- data/app/assets/javascripts/modular/application.js +3 -3
- data/app/assets/javascripts/modular/vendor.js +57671 -57671
- data/app/assets/stylesheets/kadmin/typeahead-select.scss +2 -0
- data/app/assets/stylesheets/modular/app-blue.css +2795 -2795
- data/app/assets/stylesheets/modular/app-custom.css +2795 -2795
- data/app/assets/stylesheets/modular/app-green.css +2795 -2795
- data/app/assets/stylesheets/modular/app-orange.css +2795 -2795
- data/app/assets/stylesheets/modular/app-purple.css +2795 -2795
- data/app/assets/stylesheets/modular/app-red.css +2795 -2795
- data/app/assets/stylesheets/modular/app-seagreen.css +2795 -2795
- data/app/assets/stylesheets/modular/app.css +2795 -2795
- data/app/assets/stylesheets/modular/custom.css +51 -19
- data/app/assets/stylesheets/modular/vendor.css +12999 -12999
- data/app/controllers/kadmin/application_controller.rb +64 -64
- data/app/controllers/kadmin/auth_controller.rb +98 -98
- data/app/controllers/kadmin/concerns/authorized_user.rb +67 -67
- data/app/controllers/kadmin/dash_controller.rb +19 -19
- data/app/decorators/kadmin/finder_decorator.rb +50 -50
- data/app/decorators/kadmin/pager_decorator.rb +33 -33
- data/app/helpers/kadmin/alert_helper.rb +59 -59
- data/app/helpers/kadmin/application_helper.rb +4 -4
- data/app/helpers/kadmin/bootstrap_helper.rb +23 -23
- data/app/helpers/kadmin/form_builder.rb +9 -9
- data/app/helpers/kadmin/forms/inverted_check_box.rb +10 -10
- data/app/helpers/kadmin/navigation_helper.rb +28 -28
- data/app/helpers/kadmin/pagination_helper.rb +95 -95
- data/app/views/kadmin/auth/login.html.erb +4 -4
- data/app/views/kadmin/components/_finder.html.erb +14 -18
- data/app/views/kadmin/components/finder/_empty.html.erb +3 -3
- data/app/views/kadmin/components/finder/_form.erb +10 -10
- data/app/views/kadmin/components/finder/_header.html.erb +14 -11
- data/app/views/kadmin/dash/index.html.erb +5 -5
- data/app/views/kadmin/error.html.erb +5 -5
- data/app/views/kadmin/helpers/_alerts.html.erb +4 -4
- data/app/views/kadmin/helpers/_form_errors.html.erb +10 -10
- data/app/views/layouts/modular/application.html.erb +134 -132
- data/config/initializers/action_view.rb +2 -2
- data/config/initializers/assets.rb +5 -5
- data/config/locales/de.yml +25 -25
- data/config/locales/en.yml +24 -24
- data/config/routes.rb +12 -12
- data/lib/kadmin.rb +22 -22
- data/lib/kadmin/auth.rb +31 -31
- data/lib/kadmin/auth/configuration.rb +66 -66
- data/lib/kadmin/auth/unauthorized_error.rb +14 -14
- data/lib/kadmin/auth/user.rb +15 -15
- data/lib/kadmin/auth/user_store.rb +21 -21
- data/lib/kadmin/configuration.rb +18 -18
- data/lib/kadmin/engine.rb +15 -15
- data/lib/kadmin/error.rb +7 -7
- data/lib/kadmin/errors/authorization.rb +15 -15
- data/lib/kadmin/finder.rb +66 -66
- data/lib/kadmin/form.rb +179 -179
- data/lib/kadmin/pager.rb +93 -93
- data/lib/kadmin/version.rb +3 -3
- data/test/dummy/README.rdoc +28 -28
- data/test/dummy/Rakefile +6 -6
- data/test/dummy/app/assets/javascripts/application.js +13 -13
- data/test/dummy/app/assets/stylesheets/application.css +15 -15
- data/test/dummy/app/controllers/admin/application_controller.rb +11 -11
- data/test/dummy/app/controllers/admin/people_controller.rb +89 -89
- data/test/dummy/app/controllers/admin_controller.rb +4 -4
- data/test/dummy/app/controllers/application_controller.rb +5 -5
- data/test/dummy/app/controllers/authorized_controller.rb +8 -8
- data/test/dummy/app/helpers/application_helper.rb +2 -2
- data/test/dummy/app/models/group.rb +8 -8
- data/test/dummy/app/models/group_person.rb +6 -6
- data/test/dummy/app/models/person.rb +20 -20
- data/test/dummy/app/views/admin/index.html.erb +1 -1
- data/test/dummy/app/views/admin/people/_form.html.erb +34 -34
- data/test/dummy/app/views/admin/people/_table.html.erb +33 -33
- data/test/dummy/app/views/admin/people/edit.html.erb +4 -4
- data/test/dummy/app/views/admin/people/index.html.erb +3 -3
- data/test/dummy/app/views/admin/people/new.html.erb +5 -5
- data/test/dummy/app/views/admin/people/show.html.erb +3 -3
- data/test/dummy/app/views/authorized/index.html.erb +1 -1
- data/test/dummy/app/views/layouts/application.html.erb +14 -14
- data/test/dummy/bin/bundle +3 -3
- data/test/dummy/bin/rails +4 -4
- data/test/dummy/bin/rake +4 -4
- data/test/dummy/bin/setup +29 -29
- data/test/dummy/config.ru +4 -4
- data/test/dummy/config/application.rb +39 -39
- data/test/dummy/config/boot.rb +5 -5
- data/test/dummy/config/database.yml +22 -22
- data/test/dummy/config/environment.rb +5 -5
- data/test/dummy/config/environments/development.rb +41 -41
- data/test/dummy/config/environments/production.rb +79 -79
- data/test/dummy/config/environments/test.rb +42 -42
- data/test/dummy/config/initializers/assets.rb +10 -10
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -7
- data/test/dummy/config/initializers/cookies_serializer.rb +3 -3
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -4
- data/test/dummy/config/initializers/inflections.rb +16 -16
- data/test/dummy/config/initializers/kadmin.rb +24 -24
- data/test/dummy/config/initializers/mime_types.rb +4 -4
- data/test/dummy/config/initializers/session_store.rb +3 -3
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -14
- data/test/dummy/config/locales/en.yml +17 -17
- data/test/dummy/config/routes.rb +13 -13
- data/test/dummy/config/secrets.yml +22 -22
- data/test/dummy/db/migrate/20161006114509_create_people.rb +11 -11
- data/test/dummy/db/migrate/20161006134459_create_groups.rb +11 -11
- data/test/dummy/db/migrate/20161006134746_create_group_people.rb +11 -11
- data/test/dummy/db/schema.rb +43 -43
- data/test/dummy/lib/forms/group_form.rb +16 -16
- data/test/dummy/lib/forms/person_form.rb +19 -19
- data/test/dummy/public/404.html +67 -67
- data/test/dummy/public/422.html +67 -67
- data/test/dummy/public/500.html +66 -66
- data/test/dummy/test/fixtures/children.yml +11 -11
- data/test/dummy/test/fixtures/group_people.yml +11 -11
- data/test/dummy/test/fixtures/groups.yml +11 -11
- data/test/dummy/test/fixtures/people.yml +11 -11
- data/test/dummy/test/models/group_person_test.rb +7 -7
- data/test/dummy/test/models/group_test.rb +7 -7
- data/test/kadmin/form_test.rb +6 -6
- data/test/test_helper.rb +32 -32
- metadata +54 -53
|
@@ -1,95 +1,95 @@
|
|
|
1
|
-
module Kadmin
|
|
2
|
-
module PaginationHelper
|
|
3
|
-
# @param [Kadmin::Pager] pager context to paginate
|
|
4
|
-
# @param [Array<Integer>] sizes array of page sizes
|
|
5
|
-
def paginate(pager, sizes)
|
|
6
|
-
return content_tag(:div, pagination_page_list(pager) + pagination_size_list(pager, sizes), class: 'btn-toolbar')
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
# Page Links
|
|
10
|
-
# Always include:
|
|
11
|
-
# => Previous page, first, last, next
|
|
12
|
-
# If we're over page 10, at ... after previous link
|
|
13
|
-
# If there aren't showing the last page yet, add ... before next link
|
|
14
|
-
def pagination_page_list(pager)
|
|
15
|
-
links = []
|
|
16
|
-
window = (pager.current_page - 2)..(pager.current_page + 2)
|
|
17
|
-
|
|
18
|
-
window = Range.new(0, window.end - window.begin) if window.begin.negative?
|
|
19
|
-
window = Range.new(window.begin, pager.pages - 1) if window.end >= pager.pages
|
|
20
|
-
|
|
21
|
-
first_link = pagination_navigate_link(pager, 0, '«')
|
|
22
|
-
previous_link = pagination_navigate_link(pager, pager.current_page - 1, '‹')
|
|
23
|
-
last_link = pagination_navigate_link(pager, pager.pages - 1, '»')
|
|
24
|
-
next_link = pagination_navigate_link(pager, pager.current_page + 1, '›')
|
|
25
|
-
|
|
26
|
-
if pager.previous_page?(window.begin)
|
|
27
|
-
links << pagination_non_link('…', 'disabled')
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
window.each do |number|
|
|
31
|
-
links << pagination_page_link(number, pager)
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
if pager.next_page?(window.end)
|
|
35
|
-
links << pagination_non_link('…', 'disabled')
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
links.unshift(first_link, previous_link)
|
|
39
|
-
links << next_link
|
|
40
|
-
links << last_link
|
|
41
|
-
|
|
42
|
-
return content_tag(:div, links.reduce(&:+), class: 'btn-group')
|
|
43
|
-
end
|
|
44
|
-
private :pagination_page_list
|
|
45
|
-
|
|
46
|
-
def pagination_non_link(text, css_classes = nil)
|
|
47
|
-
classes = %w(btn btn-default) + Array.wrap(css_classes)
|
|
48
|
-
return content_tag(:div, text.to_s.html_safe, class: classes.join(' '))
|
|
49
|
-
end
|
|
50
|
-
private :pagination_non_link
|
|
51
|
-
|
|
52
|
-
def pagination_link(text, options = {}, css_classes = nil)
|
|
53
|
-
classes = %w(btn btn-default) + Array.wrap(css_classes)
|
|
54
|
-
return link_to(text.to_s.html_safe, params.merge(options), class: classes.join(' '))
|
|
55
|
-
end
|
|
56
|
-
private :pagination_link
|
|
57
|
-
|
|
58
|
-
def pagination_page_link(page, pager)
|
|
59
|
-
link = if pager.current_page?(page)
|
|
60
|
-
pagination_non_link(page + 1, 'active')
|
|
61
|
-
else
|
|
62
|
-
pagination_link(page + 1, page_offset: pager.offset_at(page))
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
return link
|
|
66
|
-
end
|
|
67
|
-
private :pagination_page_link
|
|
68
|
-
|
|
69
|
-
def pagination_navigate_link(pager, page, text)
|
|
70
|
-
link = if pager.contains?(page)
|
|
71
|
-
pagination_link(text, page_offset: pager.offset_at(page))
|
|
72
|
-
else
|
|
73
|
-
pagination_non_link(text, 'disabled')
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
return link
|
|
77
|
-
end
|
|
78
|
-
private :pagination_navigate_link
|
|
79
|
-
|
|
80
|
-
# Page Sizes
|
|
81
|
-
def pagination_size_list(pager, sizes)
|
|
82
|
-
label = content_tag(:div, 'Per page: ', class: 'btn')
|
|
83
|
-
links = sizes.map do |size|
|
|
84
|
-
if pager.size == size
|
|
85
|
-
pagination_non_link(size, 'active')
|
|
86
|
-
else
|
|
87
|
-
pagination_link(size, page_size: size)
|
|
88
|
-
end
|
|
89
|
-
end.reduce(&:+)
|
|
90
|
-
|
|
91
|
-
return content_tag(:div, label + links, class: 'btn-group')
|
|
92
|
-
end
|
|
93
|
-
private :pagination_size_list
|
|
94
|
-
end
|
|
95
|
-
end
|
|
1
|
+
module Kadmin
|
|
2
|
+
module PaginationHelper
|
|
3
|
+
# @param [Kadmin::Pager] pager context to paginate
|
|
4
|
+
# @param [Array<Integer>] sizes array of page sizes
|
|
5
|
+
def paginate(pager, sizes)
|
|
6
|
+
return content_tag(:div, pagination_page_list(pager) + pagination_size_list(pager, sizes), class: 'btn-toolbar')
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
# Page Links
|
|
10
|
+
# Always include:
|
|
11
|
+
# => Previous page, first, last, next
|
|
12
|
+
# If we're over page 10, at ... after previous link
|
|
13
|
+
# If there aren't showing the last page yet, add ... before next link
|
|
14
|
+
def pagination_page_list(pager)
|
|
15
|
+
links = []
|
|
16
|
+
window = (pager.current_page - 2)..(pager.current_page + 2)
|
|
17
|
+
|
|
18
|
+
window = Range.new(0, window.end - window.begin) if window.begin.negative?
|
|
19
|
+
window = Range.new(window.begin, pager.pages - 1) if window.end >= pager.pages
|
|
20
|
+
|
|
21
|
+
first_link = pagination_navigate_link(pager, 0, '«')
|
|
22
|
+
previous_link = pagination_navigate_link(pager, pager.current_page - 1, '‹')
|
|
23
|
+
last_link = pagination_navigate_link(pager, pager.pages - 1, '»')
|
|
24
|
+
next_link = pagination_navigate_link(pager, pager.current_page + 1, '›')
|
|
25
|
+
|
|
26
|
+
if pager.previous_page?(window.begin)
|
|
27
|
+
links << pagination_non_link('…', 'disabled')
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
window.each do |number|
|
|
31
|
+
links << pagination_page_link(number, pager)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
if pager.next_page?(window.end)
|
|
35
|
+
links << pagination_non_link('…', 'disabled')
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
links.unshift(first_link, previous_link)
|
|
39
|
+
links << next_link
|
|
40
|
+
links << last_link
|
|
41
|
+
|
|
42
|
+
return content_tag(:div, links.reduce(&:+), class: 'btn-group')
|
|
43
|
+
end
|
|
44
|
+
private :pagination_page_list
|
|
45
|
+
|
|
46
|
+
def pagination_non_link(text, css_classes = nil)
|
|
47
|
+
classes = %w(btn btn-default) + Array.wrap(css_classes)
|
|
48
|
+
return content_tag(:div, text.to_s.html_safe, class: classes.join(' '))
|
|
49
|
+
end
|
|
50
|
+
private :pagination_non_link
|
|
51
|
+
|
|
52
|
+
def pagination_link(text, options = {}, css_classes = nil)
|
|
53
|
+
classes = %w(btn btn-default) + Array.wrap(css_classes)
|
|
54
|
+
return link_to(text.to_s.html_safe, params.merge(options), class: classes.join(' '))
|
|
55
|
+
end
|
|
56
|
+
private :pagination_link
|
|
57
|
+
|
|
58
|
+
def pagination_page_link(page, pager)
|
|
59
|
+
link = if pager.current_page?(page)
|
|
60
|
+
pagination_non_link(page + 1, 'active')
|
|
61
|
+
else
|
|
62
|
+
pagination_link(page + 1, page_offset: pager.offset_at(page))
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
return link
|
|
66
|
+
end
|
|
67
|
+
private :pagination_page_link
|
|
68
|
+
|
|
69
|
+
def pagination_navigate_link(pager, page, text)
|
|
70
|
+
link = if pager.contains?(page)
|
|
71
|
+
pagination_link(text, page_offset: pager.offset_at(page))
|
|
72
|
+
else
|
|
73
|
+
pagination_non_link(text, 'disabled')
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
return link
|
|
77
|
+
end
|
|
78
|
+
private :pagination_navigate_link
|
|
79
|
+
|
|
80
|
+
# Page Sizes
|
|
81
|
+
def pagination_size_list(pager, sizes)
|
|
82
|
+
label = content_tag(:div, 'Per page: ', class: 'btn')
|
|
83
|
+
links = sizes.map do |size|
|
|
84
|
+
if pager.size == size
|
|
85
|
+
pagination_non_link(size, 'active')
|
|
86
|
+
else
|
|
87
|
+
pagination_link(size, page_size: size)
|
|
88
|
+
end
|
|
89
|
+
end.reduce(&:+)
|
|
90
|
+
|
|
91
|
+
return content_tag(:div, label + links, class: 'btn-group')
|
|
92
|
+
end
|
|
93
|
+
private :pagination_size_list
|
|
94
|
+
end
|
|
95
|
+
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<div style='text-align: center; margin-top: 1em'>
|
|
2
|
-
<p><%= link_to(t('kadmin.auth.please_login'), omniauth_provider_link) %></p>
|
|
3
|
-
<p><%= t('kadmin.auth.login_required') %></p>
|
|
4
|
-
</div>
|
|
1
|
+
<div style='text-align: center; margin-top: 1em'>
|
|
2
|
+
<p><%= link_to(t('kadmin.auth.please_login'), omniauth_provider_link) %></p>
|
|
3
|
+
<p><%= t('kadmin.auth.login_required') %></p>
|
|
4
|
+
</div>
|
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
<%= render partial: 'kadmin/components/finder/header', locals: { finder: finder } %>
|
|
2
|
-
|
|
3
|
-
<div class='container-fluid'>
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
<%= render partial: 'kadmin/components/finder/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
<%= paginate(finder.pager, [15, 30, 50, 100]) %>
|
|
16
|
-
<% end %>
|
|
17
|
-
</div>
|
|
18
|
-
</div>
|
|
1
|
+
<%= render partial: 'kadmin/components/finder/header', locals: { finder: finder } %>
|
|
2
|
+
|
|
3
|
+
<div class='container-fluid'>
|
|
4
|
+
<div class='row' style='padding-top: 15px'>
|
|
5
|
+
<% if finder.results.empty? %>
|
|
6
|
+
<%= render partial: 'kadmin/components/finder/empty', locals: { finder: finder } %>
|
|
7
|
+
<% else %>
|
|
8
|
+
<%= yield %>
|
|
9
|
+
<% if finder.results.size > 50 %>
|
|
10
|
+
<%= paginate(finder.pager, [50, 100, 1000]) %>
|
|
11
|
+
<% end %>
|
|
12
|
+
<% end %>
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
<div class='jumbotron'>
|
|
2
|
-
<p><%= t('kadmin.components.finder.empty') %></p>
|
|
3
|
-
</div>
|
|
1
|
+
<div class='jumbotron'>
|
|
2
|
+
<p><%= t('kadmin.components.finder.empty') %></p>
|
|
3
|
+
</div>
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
<%= form_tag(request.path, method: 'get', class: 'form-inline') do %>
|
|
2
|
-
<div class='form-group'>
|
|
3
|
-
<%= link_to(t('kadmin.components.finder.create'), url_for(action: :new), class: 'btn btn-primary') %>
|
|
4
|
-
<% finder.filters.each do |name, filter| %>
|
|
5
|
-
<%= text_field_tag("filter_#{name}", filter&.value, class: 'form-control', placeholder: "Filter by #{name}...") %>
|
|
6
|
-
<% end %>
|
|
7
|
-
<%= submit_tag(t('kadmin.components.finder.filter'), class: 'btn btn-default form-control') %>
|
|
8
|
-
|
|
9
|
-
</div>
|
|
10
|
-
<% end %>
|
|
1
|
+
<%= form_tag(request.path, method: 'get', class: 'form-inline pull-right') do %>
|
|
2
|
+
<div class='form-group'>
|
|
3
|
+
<%= link_to(t('kadmin.components.finder.create'), url_for(action: :new), class: 'btn btn-primary', style: 'margin-right: 20px') %>
|
|
4
|
+
<% finder.filters.each do |name, filter| %>
|
|
5
|
+
<%= text_field_tag("filter_#{name}", filter&.value, class: 'form-control', placeholder: "Filter by #{name}...") %>
|
|
6
|
+
<% end %>
|
|
7
|
+
<%= submit_tag(t('kadmin.components.finder.filter'), class: 'btn btn-default form-control') %>
|
|
8
|
+
<!--<%= link_to(t('kadmin.components.finder.clear'), request.path, class: 'btn btn-danger form-control') %>-->
|
|
9
|
+
</div>
|
|
10
|
+
<% end %>
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
<div class="
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
<div class="card-title-block">
|
|
2
|
+
<h3 class="title">
|
|
3
|
+
<%= finder.currently_showing %>
|
|
4
|
+
<% unless finder.empty? %>
|
|
5
|
+
(
|
|
6
|
+
<%= t('kadmin.components.finder.out_of', total: finder.pager.total) %>
|
|
7
|
+
<%= finder.applied_filters %>
|
|
8
|
+
)
|
|
9
|
+
<% end %>
|
|
10
|
+
<% if finder.filters.present? %>
|
|
11
|
+
<%= render partial: 'kadmin/components/finder/form', locals: { finder: finder } %>
|
|
12
|
+
<% end %>
|
|
13
|
+
</h3>
|
|
14
|
+
</div>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
<div class='jumbotron' style='margin-top: 1em;'>
|
|
2
|
-
<
|
|
3
|
-
<hr class='m-y-2'>
|
|
4
|
-
<p><%= t('kadmin.dash_message') %></p>
|
|
5
|
-
</div>
|
|
1
|
+
<div class='jumbotron' style='margin-top: 1em;'>
|
|
2
|
+
<h3 class=''><%= t('kadmin.welcome', user: current_user) %></h3>
|
|
3
|
+
<hr class='m-y-2'>
|
|
4
|
+
<p><%= t('kadmin.dash_message') %></p>
|
|
5
|
+
</div>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
<div class='jumbotron' style='margin-top: 1em'>
|
|
2
|
-
<h1 class='display-3'><%= title %></h1>
|
|
3
|
-
<hr class='m-y-2'>
|
|
4
|
-
<p><%= message %></p>
|
|
5
|
-
</div>
|
|
1
|
+
<div class='jumbotron' style='margin-top: 1em'>
|
|
2
|
+
<h1 class='display-3'><%= title %></h1>
|
|
3
|
+
<hr class='m-y-2'>
|
|
4
|
+
<p><%= message %></p>
|
|
5
|
+
</div>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<div class='alerts'>
|
|
2
|
-
<%= render_flash_alerts %>
|
|
3
|
-
<%= yield :flash_alerts %>
|
|
4
|
-
</div>
|
|
1
|
+
<div class='alerts'>
|
|
2
|
+
<%= render_flash_alerts %>
|
|
3
|
+
<%= yield :flash_alerts %>
|
|
4
|
+
</div>
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
<% if model.errors.present? %>
|
|
2
|
-
<%= alert('danger') do %>
|
|
3
|
-
<p><%= glyphicon('exclamation-sign') %> <%= t('kadmin.forms.please_correct') %></p>
|
|
4
|
-
<ul>
|
|
5
|
-
<% model.errors.full_messages.each do |message| %>
|
|
6
|
-
<li><%= message.html_safe %></li>
|
|
7
|
-
<% end %>
|
|
8
|
-
</ul>
|
|
9
|
-
<% end %>
|
|
10
|
-
<% end %>
|
|
1
|
+
<% if model.errors.present? %>
|
|
2
|
+
<%= alert('danger') do %>
|
|
3
|
+
<p><%= glyphicon('exclamation-sign') %> <%= t('kadmin.forms.please_correct') %></p>
|
|
4
|
+
<ul>
|
|
5
|
+
<% model.errors.full_messages.each do |message| %>
|
|
6
|
+
<li><%= message.html_safe %></li>
|
|
7
|
+
<% end %>
|
|
8
|
+
</ul>
|
|
9
|
+
<% end %>
|
|
10
|
+
<% end %>
|
|
@@ -1,133 +1,135 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html class="no-js" lang="en">
|
|
3
|
-
|
|
4
|
-
<head>
|
|
5
|
-
<meta charset="utf-8">
|
|
6
|
-
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
|
7
|
-
<title>Apps/Services Admin</title>
|
|
8
|
-
<meta name="description" content="">
|
|
9
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
10
|
-
<link rel="apple-touch-icon" href="apple-touch-icon.png">
|
|
11
|
-
<!-- Place favicon.ico in the root directory -->
|
|
12
|
-
<%= stylesheet_link_tag "modular/vendor.css", media: "all" %>
|
|
13
|
-
<%= stylesheet_link_tag "modular/app-blue.css", media: "all" %>
|
|
14
|
-
<%= stylesheet_link_tag "modular/custom.css", media: "all" %>
|
|
15
|
-
<%=
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
<%
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
<a class="dropdown-item" href="#"> <i class="fa fa-
|
|
41
|
-
<
|
|
42
|
-
<a class="dropdown-item" href="
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
<%
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html class="no-js" lang="en">
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
|
7
|
+
<title>Apps/Services Admin</title>
|
|
8
|
+
<meta name="description" content="">
|
|
9
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
10
|
+
<link rel="apple-touch-icon" href="apple-touch-icon.png">
|
|
11
|
+
<!-- Place favicon.ico in the root directory -->
|
|
12
|
+
<%= stylesheet_link_tag "modular/vendor.css", media: "all" %>
|
|
13
|
+
<%= stylesheet_link_tag "modular/app-blue.css", media: "all" %>
|
|
14
|
+
<%= stylesheet_link_tag "modular/custom.css", media: "all" %>
|
|
15
|
+
<%= yield :stylesheets %>
|
|
16
|
+
<%= csrf_meta_tags %>
|
|
17
|
+
<!-- Additional scripts -->
|
|
18
|
+
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
|
|
19
|
+
<%= javascript_include_tag "modular/application.js" %>
|
|
20
|
+
<%= javascript_include_tag "modular/custom.js" %>
|
|
21
|
+
</head>
|
|
22
|
+
|
|
23
|
+
<body>
|
|
24
|
+
<div class="main-wrapper">
|
|
25
|
+
<div class="app" id="app">
|
|
26
|
+
<header class="header">
|
|
27
|
+
<h3 class="title" style="margin-left: 40px;"> <!--Moin, moin!--> </h3>
|
|
28
|
+
<div class="header-block header-block-nav">
|
|
29
|
+
<ul class="nav-profile">
|
|
30
|
+
<% if logged_in? %>
|
|
31
|
+
<%= link_to(t('kadmin.authorization.logout'), Kadmin::Engine.routes.url_helpers.auth_logout_path) %>
|
|
32
|
+
<% end %>
|
|
33
|
+
<li class="profile dropdown">
|
|
34
|
+
|
|
35
|
+
<!--<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
|
|
36
|
+
<div class="img" style="background-image: url('https://avatars3.githubusercontent.com/u/3959008?v=3&s=40')"> </div>
|
|
37
|
+
<span class="name">John Doe</span>
|
|
38
|
+
</a>
|
|
39
|
+
<div class="dropdown-menu profile-dropdown-menu" aria-labelledby="dropdownMenu1">
|
|
40
|
+
<a class="dropdown-item" href="#"> <i class="fa fa-user icon"></i> Profile </a>
|
|
41
|
+
<a class="dropdown-item" href="#"> <i class="fa fa-bell icon"></i> Notifications </a>
|
|
42
|
+
<a class="dropdown-item" href="#"> <i class="fa fa-gear icon"></i> Settings </a>
|
|
43
|
+
<div class="dropdown-divider"></div>
|
|
44
|
+
<a class="dropdown-item" href="login.html"> <i class="fa fa-power-off icon"></i> Logout </a>
|
|
45
|
+
</div>-->
|
|
46
|
+
</li>
|
|
47
|
+
</ul>
|
|
48
|
+
</div>
|
|
49
|
+
</header>
|
|
50
|
+
<aside class="sidebar">
|
|
51
|
+
<div class="sidebar-container">
|
|
52
|
+
<div class="sidebar-header">
|
|
53
|
+
<div class="brand">
|
|
54
|
+
<!--<div class="logo"> <span class="l l1"></span> <span class="l l2"></span> <span class="l l3"></span> <span class="l l4"></span> <span class="l l5"></span> </div>-->
|
|
55
|
+
<a class="titlelink" href="/admin">Apps&Services Admin</a> </div>
|
|
56
|
+
</div>
|
|
57
|
+
<nav class="menu">
|
|
58
|
+
<ul class="nav metismenu" id="sidebar-menu">
|
|
59
|
+
|
|
60
|
+
<% unless @layout_navbar_links.blank? %>
|
|
61
|
+
<% @layout_navbar_links.each do |link| %>
|
|
62
|
+
<%= nav_link_to(link[:title], link[:path]) %>
|
|
63
|
+
<% end %>
|
|
64
|
+
<% end %>
|
|
65
|
+
<!--<li class="active">
|
|
66
|
+
<a href="index.html"> <i class="fa fa-home"></i> Dashboard </a>
|
|
67
|
+
</li>
|
|
68
|
+
<li>
|
|
69
|
+
<a href=""> <i class="fa fa-th-large"></i> Items Manager <i class="fa arrow"></i> </a>
|
|
70
|
+
<ul>
|
|
71
|
+
<li> <a href="items-list.html">
|
|
72
|
+
Items List
|
|
73
|
+
</a> </li>
|
|
74
|
+
<li> <a href="item-editor.html">
|
|
75
|
+
Item Editor
|
|
76
|
+
</a> </li>
|
|
77
|
+
</ul>
|
|
78
|
+
</li>-->
|
|
79
|
+
</ul>
|
|
80
|
+
</nav>
|
|
81
|
+
</div>
|
|
82
|
+
</aside>
|
|
83
|
+
<div class="sidebar-overlay" id="sidebar-overlay"></div>
|
|
84
|
+
<article class="content dashboard-page">
|
|
85
|
+
<div class="row">
|
|
86
|
+
<% if content_for?(:sidebar) %>
|
|
87
|
+
<div class="col-xl-8">
|
|
88
|
+
<!-- main -->
|
|
89
|
+
<%= render partial: 'kadmin/helpers/alerts' %>
|
|
90
|
+
<%= yield %>
|
|
91
|
+
</div>
|
|
92
|
+
<div class="col-xl-4 helpsidebar">
|
|
93
|
+
<!-- sidebar -->
|
|
94
|
+
<div class="card card-default">
|
|
95
|
+
<div class="card-header">
|
|
96
|
+
<div class="header-block">
|
|
97
|
+
<p class="title">Help</p>
|
|
98
|
+
</div>
|
|
99
|
+
</div>
|
|
100
|
+
<div class="card-block">
|
|
101
|
+
<%= yield(:sidebar) %>
|
|
102
|
+
</div>
|
|
103
|
+
<!--<div class="card-footer"> Card Footer </div>-->
|
|
104
|
+
</div>
|
|
105
|
+
</div>
|
|
106
|
+
<% else %>
|
|
107
|
+
<div class="col-sm-12">
|
|
108
|
+
<%= render partial: 'kadmin/helpers/alerts' %>
|
|
109
|
+
<%= yield %>
|
|
110
|
+
</div>
|
|
111
|
+
<% end %>
|
|
112
|
+
</div>
|
|
113
|
+
</article>
|
|
114
|
+
<footer class="footer">
|
|
115
|
+
<div class="footer-block buttons"> </div>
|
|
116
|
+
<div class="footer-block author">
|
|
117
|
+
<ul>
|
|
118
|
+
<li> Problems? <a href="https://redmine.offerista.com/projects/apps-services/issues/new">Create a Ticket</a> </li>
|
|
119
|
+
</ul>
|
|
120
|
+
</div>
|
|
121
|
+
</footer>
|
|
122
|
+
</div>
|
|
123
|
+
</div>
|
|
124
|
+
<!-- Reference block for JS -->
|
|
125
|
+
<div class="ref" id="ref">
|
|
126
|
+
<div class="color-primary"></div>
|
|
127
|
+
<div class="chart">
|
|
128
|
+
<div class="color-primary"></div>
|
|
129
|
+
<div class="color-secondary"></div>
|
|
130
|
+
</div>
|
|
131
|
+
</div>
|
|
132
|
+
<%= yield :javascripts %>
|
|
133
|
+
</body>
|
|
134
|
+
|
|
133
135
|
</html>
|