kadmin 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- 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>
|