admin-panel 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/Gemfile.lock +4 -0
- data/README.md +7 -3
- data/admin-panel.gemspec +2 -1
- data/lib/admin-panel/version.rb +1 -1
- data/lib/generators/admin_panel/install/install_generator.rb +7 -3
- data/lib/generators/admin_panel/install/templates/layouts/{admin → erb/admin}/_messages.html.erb +0 -0
- data/lib/generators/admin_panel/install/templates/layouts/{admin → erb/admin}/_navigation.html.erb +0 -0
- data/lib/generators/admin_panel/install/templates/layouts/{admin → erb/admin}/application.html.erb +0 -0
- data/lib/generators/admin_panel/install/templates/layouts/haml/admin/_messages.html.haml +5 -0
- data/lib/generators/admin_panel/install/templates/layouts/haml/admin/_navigation.html.haml +13 -0
- data/lib/generators/admin_panel/install/templates/layouts/haml/admin/application.html.haml +16 -0
- data/lib/generators/admin_panel/install/templates/views/erb/admin/dashboard/index.html.erb +1 -0
- data/lib/generators/admin_panel/install/templates/views/{admin → erb/admin}/passwords/edit.html.erb +0 -0
- data/lib/generators/admin_panel/install/templates/views/{admin → erb/admin}/passwords/new.html.erb +0 -0
- data/lib/generators/admin_panel/install/templates/views/{admin → erb/admin}/sessions/new.html.erb +1 -1
- data/lib/generators/admin_panel/install/templates/views/erb/kaminari/admin-bootstrap/_first_page.html.erb +13 -0
- data/lib/generators/admin_panel/install/templates/views/erb/kaminari/admin-bootstrap/_gap.html.erb +8 -0
- data/lib/generators/admin_panel/install/templates/views/erb/kaminari/admin-bootstrap/_last_page.html.erb +13 -0
- data/lib/generators/admin_panel/install/templates/views/erb/kaminari/admin-bootstrap/_next_page.html.erb +14 -0
- data/lib/generators/admin_panel/install/templates/views/erb/kaminari/admin-bootstrap/_page.html.erb +12 -0
- data/lib/generators/admin_panel/install/templates/views/erb/kaminari/admin-bootstrap/_paginator.html.erb +23 -0
- data/lib/generators/admin_panel/install/templates/views/erb/kaminari/admin-bootstrap/_prev_page.html.erb +13 -0
- data/lib/generators/admin_panel/install/templates/views/haml/admin/dashboard/index.html.haml +1 -0
- data/lib/generators/admin_panel/install/templates/views/haml/admin/passwords/edit.html.haml +13 -0
- data/lib/generators/admin_panel/install/templates/views/haml/admin/passwords/new.html.haml +10 -0
- data/lib/generators/admin_panel/install/templates/views/haml/admin/sessions/new.html.haml +13 -0
- data/lib/generators/admin_panel/install/templates/views/haml/kaminari/admin-bootstrap/_first_page.html.haml +11 -0
- data/lib/generators/admin_panel/install/templates/views/haml/kaminari/admin-bootstrap/_gap.html.haml +9 -0
- data/lib/generators/admin_panel/install/templates/views/haml/kaminari/admin-bootstrap/_last_page.html.haml +11 -0
- data/lib/generators/admin_panel/install/templates/views/haml/kaminari/admin-bootstrap/_next_page.html.haml +12 -0
- data/lib/generators/admin_panel/install/templates/views/haml/kaminari/admin-bootstrap/_page.html.haml +12 -0
- data/lib/generators/admin_panel/install/templates/views/haml/kaminari/admin-bootstrap/_paginator.html.haml +21 -0
- data/lib/generators/admin_panel/install/templates/views/haml/kaminari/admin-bootstrap/_prev_page.html.haml +11 -0
- data/lib/generators/admin_panel/scaffold/templates/controllers/controller.rb.erb +1 -1
- data/lib/generators/admin_panel/scaffold/templates/views/erb/_form.html.erb.erb +1 -1
- data/lib/generators/admin_panel/scaffold/templates/views/erb/edit.html.erb.erb +9 -8
- data/lib/generators/admin_panel/scaffold/templates/views/erb/index.html.erb.erb +14 -12
- data/lib/generators/admin_panel/scaffold/templates/views/erb/new.html.erb.erb +5 -9
- data/lib/generators/admin_panel/scaffold/templates/views/erb/show.html.erb.erb +15 -19
- data/lib/generators/admin_panel/scaffold/templates/views/haml/_form.html.haml.erb +15 -0
- data/lib/generators/admin_panel/scaffold/templates/views/haml/edit.html.haml.erb +12 -0
- data/lib/generators/admin_panel/scaffold/templates/views/haml/index.html.haml.erb +33 -0
- data/lib/generators/admin_panel/scaffold/templates/views/haml/new.html.haml.erb +10 -0
- data/lib/generators/admin_panel/scaffold/templates/views/haml/show.html.haml.erb +19 -0
- data/spec/generators/admin_panel/install/install_generator_spec.rb +4 -0
- metadata +50 -10
- data/lib/generators/admin_panel/install/templates/views/admin/dashboard/index.html.erb +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d576adba9f3f426390beb98ce565a2dd3f9cad6c
|
4
|
+
data.tar.gz: b0b7c5cbabace377af3932220d4b8b259b5bc64d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7767e7da9205c126aa2b6a90595f7d65fb0c2445009e948dd6ced8c64d4390695a51932487be12d255d13e1e313126e7c9e5162d844fd8cdfaaa4e207f4487c3
|
7
|
+
data.tar.gz: c67f7de6a57171029cf9b55db6140691629254c6ac261a001cc55ffc9ec77556d70ec8ad89398b9d51f9f6920ddf8fdb6144e0e1d9c1c1b397723d49f73e235c
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
@@ -4,6 +4,7 @@ PATH
|
|
4
4
|
admin-panel (0.1.2)
|
5
5
|
bootstrap-sass (~> 3.1)
|
6
6
|
devise (~> 3.2)
|
7
|
+
kaminari (~> 0.16)
|
7
8
|
railties (>= 4.0.0)
|
8
9
|
sass-rails (>= 4.0.0)
|
9
10
|
simple_form (>= 3.1.0.rc1)
|
@@ -48,6 +49,9 @@ GEM
|
|
48
49
|
hike (1.2.3)
|
49
50
|
i18n (0.6.9)
|
50
51
|
json (1.8.1)
|
52
|
+
kaminari (0.16.1)
|
53
|
+
actionpack (>= 3.0.0)
|
54
|
+
activesupport (>= 3.0.0)
|
51
55
|
minitest (5.3.4)
|
52
56
|
multi_json (1.10.1)
|
53
57
|
orm_adapter (0.5.0)
|
data/README.md
CHANGED
@@ -9,10 +9,11 @@ Installation
|
|
9
9
|
Start with adding these gems to your Gemfile:
|
10
10
|
|
11
11
|
```ruby
|
12
|
-
gem 'admin-panel', '~> 0.1.
|
12
|
+
gem 'admin-panel', '~> 0.1.3'
|
13
13
|
gem 'devise', '~> 3.2'
|
14
14
|
gem 'simple_form', '3.1.0.rc1'
|
15
15
|
gem 'bootstrap-sass', '~> 3.1'
|
16
|
+
gem 'kaminari', '~> 0.16.1'
|
16
17
|
```
|
17
18
|
|
18
19
|
Then do `bundle install` and run the installer:
|
@@ -40,6 +41,8 @@ Thanks
|
|
40
41
|
|
41
42
|
This gem was based mostly on two different pieces of software: [bootstrap-generators](https://github.com/decioferreira/bootstrap-generators) and [rails-admin-scaffold](https://github.com/dhampik/rails-admin-scaffold)
|
42
43
|
|
44
|
+
I also took the liberty of copying kaminari bootstrap templates from [kaminari-bootstrap](https://github.com/mcasimir/kaminari-bootstrap)
|
45
|
+
|
43
46
|
TODO
|
44
47
|
----
|
45
48
|
|
@@ -48,8 +51,9 @@ Currently this gem is pretty much one-evening project, I'm not sure if I'll cont
|
|
48
51
|
Things that'd be nice to have:
|
49
52
|
|
50
53
|
- support for anything more than Active Record
|
51
|
-
- support for anything more than Erb (haml
|
54
|
+
- ~~support for anything more than Erb (haml)~~
|
55
|
+
- support for slim
|
52
56
|
- namespace change support and more configuration options
|
53
|
-
- kaminari/will_paginate support
|
57
|
+
- ~~kaminari/will_paginate support~~
|
54
58
|
- I liked the idea of copying the files to your project during install at first but now it just seems silly; I should probably rewrite everything from scratch to work more similarly to Devise, including the ability to extend default controllers where necessary
|
55
59
|
- I was also supposed to add Carrierwave support too but ran out of time
|
data/admin-panel.gemspec
CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.authors = ['Michał Matyas']
|
9
9
|
spec.email = ['michal@higher.lv']
|
10
10
|
spec.summary = 'Generates Twitter Bootstrap based admin panel with scaffolder'
|
11
|
-
spec.description = 'Generates Twitter Bootstrap based admin panel with scaffolder. Project is quite opinionated, requires Rails 4, SASS, SimpleForm and Devise.'
|
11
|
+
spec.description = 'Generates Twitter Bootstrap based admin panel with scaffolder. Project is quite opinionated, requires Rails 4, SASS, SimpleForm, Kaminari and Devise.'
|
12
12
|
spec.homepage = 'https://github.com/d4rky-pl/admin-panel'
|
13
13
|
spec.license = 'MIT'
|
14
14
|
|
@@ -26,4 +26,5 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.add_runtime_dependency 'bootstrap-sass', '~> 3.1'
|
27
27
|
spec.add_runtime_dependency 'simple_form', '>= 3.1.0.rc1'
|
28
28
|
spec.add_runtime_dependency 'devise', '~> 3.2'
|
29
|
+
spec.add_runtime_dependency 'kaminari', '~> 0.16'
|
29
30
|
end
|
data/lib/admin-panel/version.rb
CHANGED
@@ -16,16 +16,20 @@ module AdminPanel
|
|
16
16
|
invoke 'simple_form:install', [], ['--bootstrap']
|
17
17
|
end
|
18
18
|
|
19
|
+
def generate_kaminari_config
|
20
|
+
invoke 'kaminari:config'
|
21
|
+
end
|
22
|
+
|
19
23
|
attr_reader :app_name
|
20
24
|
|
21
25
|
def copy_layout
|
22
26
|
@app_name = ::Rails.application.class.to_s.split("::").first.humanize
|
23
27
|
extension = "html.#{options[:template_engine]}"
|
24
28
|
|
25
|
-
template "layouts/admin/application.#{
|
29
|
+
template "layouts/#{options[:template_engine]}/admin/application.html.#{options[:template_engine]}", "app/views/layouts/admin/application.html.#{options[:template_engine]}"
|
26
30
|
['_messages', '_navigation'].each do |file|
|
27
31
|
filename = "#{file}.#{extension}"
|
28
|
-
copy_file "layouts/admin/#{filename}", "app/views/layouts/admin/#{filename}"
|
32
|
+
copy_file "layouts/#{options[:template_engine]}/admin/#{filename}", "app/views/layouts/admin/#{filename}"
|
29
33
|
end
|
30
34
|
end
|
31
35
|
|
@@ -39,7 +43,7 @@ module AdminPanel
|
|
39
43
|
|
40
44
|
def copy_scaffold
|
41
45
|
directory 'controllers', 'app/controllers'
|
42
|
-
directory
|
46
|
+
directory "views/#{options[:template_engine]}", 'app/views'
|
43
47
|
end
|
44
48
|
|
45
49
|
def create_admin_model
|
data/lib/generators/admin_panel/install/templates/layouts/{admin → erb/admin}/_messages.html.erb
RENAMED
File without changes
|
data/lib/generators/admin_panel/install/templates/layouts/{admin → erb/admin}/_navigation.html.erb
RENAMED
File without changes
|
data/lib/generators/admin_panel/install/templates/layouts/{admin → erb/admin}/application.html.erb
RENAMED
File without changes
|
@@ -0,0 +1,13 @@
|
|
1
|
+
%nav.navbar.navbar-default{role: "navigation"}
|
2
|
+
.container-fluid
|
3
|
+
.navbar-header
|
4
|
+
%a.navbar-brand{href: admin_dashboard_path} App name
|
5
|
+
|
6
|
+
- if admin_signed_in?
|
7
|
+
%ul.nav.navbar-nav
|
8
|
+
- admin_pages.each do |page|
|
9
|
+
%li{class: controller_name == page[:controller] ? 'active' : ''}
|
10
|
+
%a{href: page[:url]}= page[:name]
|
11
|
+
|
12
|
+
%ul.nav.navbar-nav.navbar-right
|
13
|
+
%li= link_to 'Sign out', destroy_admin_session_path, method: :delete
|
@@ -0,0 +1,16 @@
|
|
1
|
+
!!!
|
2
|
+
%html
|
3
|
+
%head
|
4
|
+
%meta{ content: "width=device-width, initial-scale=1.0", name: "viewport" }/
|
5
|
+
%title= content_for?(:title) ? yield(:title) : "<%= app_name.underscore.titleize %>"
|
6
|
+
%meta{ name: 'description', content: content_for?(:description) ? yield(:description) : "<%= app_name.underscore.titleize %>" }
|
7
|
+
= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true
|
8
|
+
= javascript_include_tag 'application', 'data-turbolinks-track' => true
|
9
|
+
= csrf_meta_tags
|
10
|
+
%body
|
11
|
+
%header
|
12
|
+
= render partial: 'layouts/admin/navigation'
|
13
|
+
%main{ role: 'main' }
|
14
|
+
.container
|
15
|
+
= render partial: 'layouts/admin/messages'
|
16
|
+
= yield
|
@@ -0,0 +1 @@
|
|
1
|
+
<h1>Dashboard goes here</h1>
|
data/lib/generators/admin_panel/install/templates/views/{admin → erb/admin}/passwords/edit.html.erb
RENAMED
File without changes
|
data/lib/generators/admin_panel/install/templates/views/{admin → erb/admin}/passwords/new.html.erb
RENAMED
File without changes
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<%# Link to the "First" page
|
2
|
+
- available local variables
|
3
|
+
url: url to the first page
|
4
|
+
current_page: a page object for the currently displayed page
|
5
|
+
total_pages: total number of pages
|
6
|
+
per_page: number of items to fetch per page
|
7
|
+
remote: data-remote
|
8
|
+
-%>
|
9
|
+
<% unless current_page.first? -%>
|
10
|
+
<li class="first">
|
11
|
+
<%= link_to raw(t 'views.pagination.first'), url, {:remote => remote} %>
|
12
|
+
</li>
|
13
|
+
<% end -%>
|
data/lib/generators/admin_panel/install/templates/views/erb/kaminari/admin-bootstrap/_gap.html.erb
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
<%# Non-link tag that stands for skipped pages...
|
2
|
+
- available local variables
|
3
|
+
current_page: a page object for the currently displayed page
|
4
|
+
total_pages: total number of pages
|
5
|
+
per_page: number of items to fetch per page
|
6
|
+
remote: data-remote
|
7
|
+
-%>
|
8
|
+
<li class="page gap disabled"><a><%= raw(t 'views.pagination.truncate') %></a></li>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<%# Link to the "Last" page
|
2
|
+
- available local variables
|
3
|
+
url: url to the last page
|
4
|
+
current_page: a page object for the currently displayed page
|
5
|
+
total_pages: total number of pages
|
6
|
+
per_page: number of items to fetch per page
|
7
|
+
remote: data-remote
|
8
|
+
-%>
|
9
|
+
<% unless current_page.last? -%>
|
10
|
+
<li class="last">
|
11
|
+
<%= link_to raw(t 'views.pagination.last'), url, {:remote => remote} %>
|
12
|
+
</li>
|
13
|
+
<% end -%>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<%# Link to the "Next" page
|
2
|
+
- available local variables
|
3
|
+
url: url to the next page
|
4
|
+
current_page: a page object for the currently displayed page
|
5
|
+
total_pages: total number of pages
|
6
|
+
per_page: number of items to fetch per page
|
7
|
+
remote: data-remote
|
8
|
+
-%>
|
9
|
+
|
10
|
+
<% unless current_page.last? -%>
|
11
|
+
<li class="next">
|
12
|
+
<%= link_to raw(t 'views.pagination.next'), url, :remote => remote, :rel => 'next' %>
|
13
|
+
</li>
|
14
|
+
<% end -%>
|
data/lib/generators/admin_panel/install/templates/views/erb/kaminari/admin-bootstrap/_page.html.erb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
<%# Link showing page number
|
2
|
+
- available local variables
|
3
|
+
page: a page object for "this" page
|
4
|
+
url: url to this page
|
5
|
+
current_page: a page object for the currently displayed page
|
6
|
+
total_pages: total number of pages
|
7
|
+
per_page: number of items to fetch per page
|
8
|
+
remote: data-remote
|
9
|
+
-%>
|
10
|
+
<li class="page<%= ' active' if page.current? %>">
|
11
|
+
<%= link_to page, (page.current? ? 'javascript:void(0)' : url), opts = {:remote => remote, :rel => page.next? ? 'next' : page.prev? ? 'prev' : nil} %>
|
12
|
+
</li>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<%# The container tag
|
2
|
+
- available local variables
|
3
|
+
current_page: a page object for the currently displayed page
|
4
|
+
total_pages: total number of pages
|
5
|
+
per_page: number of items to fetch per page
|
6
|
+
remote: data-remote
|
7
|
+
paginator: the paginator that renders the pagination tags inside
|
8
|
+
-%>
|
9
|
+
<%= paginator.render do -%>
|
10
|
+
<ul class="pagination">
|
11
|
+
<%= first_page_tag unless current_page.first? %>
|
12
|
+
<%= prev_page_tag unless current_page.first? %>
|
13
|
+
<% each_page do |page| -%>
|
14
|
+
<% if page.left_outer? || page.right_outer? || page.inside_window? -%>
|
15
|
+
<%= page_tag page %>
|
16
|
+
<% elsif !page.was_truncated? -%>
|
17
|
+
<%= gap_tag %>
|
18
|
+
<% end -%>
|
19
|
+
<% end -%>
|
20
|
+
<%= next_page_tag unless current_page.last? %>
|
21
|
+
<%= last_page_tag unless current_page.last? %>
|
22
|
+
</ul>
|
23
|
+
<% end -%>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<%# Link to the "Previous" page
|
2
|
+
- available local variables
|
3
|
+
url: url to the previous page
|
4
|
+
current_page: a page object for the currently displayed page
|
5
|
+
total_pages: total number of pages
|
6
|
+
per_page: number of items to fetch per page
|
7
|
+
remote: data-remote
|
8
|
+
-%>
|
9
|
+
<% unless current_page.first? -%>
|
10
|
+
<li class="prev">
|
11
|
+
<%= link_to raw(t 'views.pagination.previous'), url, :remote => remote, :rel => 'prev' %>
|
12
|
+
</li>
|
13
|
+
<% end -%>
|
@@ -0,0 +1 @@
|
|
1
|
+
%h1 Dashboard goes here
|
@@ -0,0 +1,13 @@
|
|
1
|
+
%h2 Change your password
|
2
|
+
= simple_form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f|
|
3
|
+
= f.error_notification
|
4
|
+
|
5
|
+
= f.input :reset_password_token, as: :hidden
|
6
|
+
= f.full_error :reset_password_token
|
7
|
+
|
8
|
+
.form-inputs
|
9
|
+
= f.input :password, label: "New password", required: true, autofocus: true
|
10
|
+
= f.input :password_confirmation, label: "Confirm your new password", required: true
|
11
|
+
|
12
|
+
.form-actions
|
13
|
+
= f.button :submit, "Change my password"
|
@@ -0,0 +1,10 @@
|
|
1
|
+
%h2 Forgot your password?
|
2
|
+
|
3
|
+
= simple_form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f|
|
4
|
+
= f.error_notification
|
5
|
+
|
6
|
+
.form-inputs
|
7
|
+
= f.input :email, required: true, autofocus: true
|
8
|
+
|
9
|
+
.form-actions
|
10
|
+
= f.button :submit, "Send me reset password instructions"
|
@@ -0,0 +1,13 @@
|
|
1
|
+
%h2 Sign in
|
2
|
+
|
3
|
+
= simple_form_for(resource, as: resource_name, url: session_path(resource_name)) do |f|
|
4
|
+
.form-inputs
|
5
|
+
= f.input :email, required: false, autofocus: true
|
6
|
+
= f.input :password, required: false
|
7
|
+
= f.input :remember_me, as: :boolean if devise_mapping.rememberable?
|
8
|
+
|
9
|
+
.form-actions
|
10
|
+
= f.button :submit, "Sign in"
|
11
|
+
|
12
|
+
- if devise_mapping.recoverable?
|
13
|
+
= link_to "Forgot your password?", new_password_path(resource_name)
|
@@ -0,0 +1,11 @@
|
|
1
|
+
-# Link to the "First" page
|
2
|
+
-# - available local variables
|
3
|
+
-# url: url to the first page
|
4
|
+
-# current_page: a page object for the currently displayed page
|
5
|
+
-# total_pages: total number of pages
|
6
|
+
-# per_page: number of items to fetch per page
|
7
|
+
-# remote: data-remote
|
8
|
+
-#
|
9
|
+
- unless current_page.first?
|
10
|
+
%li.first
|
11
|
+
= link_to raw(t 'views.pagination.first'), url, {:remote => remote}
|
data/lib/generators/admin_panel/install/templates/views/haml/kaminari/admin-bootstrap/_gap.html.haml
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
-# Non-link tag that stands for skipped pages...
|
2
|
+
-# - available local variables
|
3
|
+
-# current_page: a page object for the currently displayed page
|
4
|
+
-# total_pages: total number of pages
|
5
|
+
-# per_page: number of items to fetch per page
|
6
|
+
-# remote: data-remote
|
7
|
+
-#
|
8
|
+
%li.page.gap.disabled
|
9
|
+
%a= raw(t 'views.pagination.truncate')
|
@@ -0,0 +1,11 @@
|
|
1
|
+
-# Link to the "Last" page
|
2
|
+
-# - available local variables
|
3
|
+
-# url: url to the last page
|
4
|
+
-# current_page: a page object for the currently displayed page
|
5
|
+
-# total_pages: total number of pages
|
6
|
+
-# per_page: number of items to fetch per page
|
7
|
+
-# remote: data-remote
|
8
|
+
|
9
|
+
- unless current_page.last?
|
10
|
+
%li.last
|
11
|
+
= link_to raw(t 'views.pagination.last'), url, {:remote => remote}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
-# Link to the "Next" page
|
2
|
+
-# - available local variables
|
3
|
+
-# url: url to the next page
|
4
|
+
-# current_page: a page object for the currently displayed page
|
5
|
+
-# total_pages: total number of pages
|
6
|
+
-# per_page: number of items to fetch per page
|
7
|
+
-# remote: data-remote
|
8
|
+
-#
|
9
|
+
|
10
|
+
- unless current_page.last?
|
11
|
+
%li.next
|
12
|
+
= link_to raw(t 'views.pagination.next'), url, :remote => remote, :rel => 'next'
|
@@ -0,0 +1,12 @@
|
|
1
|
+
-# Link showing page number
|
2
|
+
-# - available local variables
|
3
|
+
-# page: a page object for "this" page
|
4
|
+
-# url: url to this page
|
5
|
+
-# current_page: a page object for the currently displayed page
|
6
|
+
-# total_pages: total number of pages
|
7
|
+
-# per_page: number of items to fetch per page
|
8
|
+
-# remote: data-remote
|
9
|
+
-#
|
10
|
+
|
11
|
+
%li.page{ class: "#{'active' if page.current?}"}
|
12
|
+
= link_to page, (page.current? ? 'javascript:void(0)' : url), opts = {:remote => remote, :rel => page.next? ? 'next' : page.prev? ? 'prev' : nil}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
-# The container tag
|
2
|
+
-# - available local variables
|
3
|
+
-# current_page: a page object for the currently displayed page
|
4
|
+
-# total_pages: total number of pages
|
5
|
+
-# per_page: number of items to fetch per page
|
6
|
+
-# remote: data-remote
|
7
|
+
-# paginator: the paginator that renders the pagination tags inside
|
8
|
+
-#
|
9
|
+
|
10
|
+
= paginator.render do
|
11
|
+
%ul.pagination
|
12
|
+
= first_page_tag unless current_page.first?
|
13
|
+
= prev_page_tag unless current_page.first?
|
14
|
+
- each_page do |page|
|
15
|
+
- if page.left_outer? || page.right_outer? || page.inside_window?
|
16
|
+
= page_tag page
|
17
|
+
- elsif !page.was_truncated?
|
18
|
+
= gap_tag
|
19
|
+
|
20
|
+
= next_page_tag unless current_page.last?
|
21
|
+
= last_page_tag unless current_page.last?
|
@@ -0,0 +1,11 @@
|
|
1
|
+
-# Link to the "Previous" page
|
2
|
+
-# - available local variables
|
3
|
+
-# url: url to the previous page
|
4
|
+
-# current_page: a page object for the currently displayed page
|
5
|
+
-# total_pages: total number of pages
|
6
|
+
-# per_page: number of items to fetch per page
|
7
|
+
-# remote: data-remote
|
8
|
+
|
9
|
+
- unless current_page.first?
|
10
|
+
%li.prev
|
11
|
+
= link_to raw(t 'views.pagination.previous'), url, :remote => remote, :rel => 'prev'
|
@@ -9,7 +9,7 @@ class <%= prefixed_controller_class_name %>Controller < <%= parent_controller_cl
|
|
9
9
|
|
10
10
|
# GET <%= prefixed_route_url %>
|
11
11
|
def index
|
12
|
-
@<%= plural_table_name %> = <%=
|
12
|
+
@<%= plural_table_name %> = <%= class_name %>.page params[:page]
|
13
13
|
end
|
14
14
|
|
15
15
|
# GET <%= prefixed_route_url %>/1
|
@@ -1,12 +1,13 @@
|
|
1
1
|
<div class="page-header">
|
2
|
-
|
3
|
-
<
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
2
|
+
<%%= link_to <%= prefixed_index_helper %>_path, class: 'btn btn-default pull-right' do %>
|
3
|
+
<i class="glyphicon glyphicon-list-alt"></i>
|
4
|
+
Back
|
5
|
+
<%% end %>
|
6
|
+
<%%= link_to <%= "[:#{prefix}, @#{singular_table_name}]" %>, class: 'btn btn-primary pull-right' do %>
|
7
|
+
<i class="glyphicon glyphicon-info-sign"></i>
|
8
|
+
Show
|
9
|
+
<%% end %>
|
10
|
+
<h1>Editing <%= human_name %></h1>
|
10
11
|
</div>
|
11
12
|
|
12
13
|
<%%= render 'form' %>
|
@@ -1,21 +1,19 @@
|
|
1
1
|
<div class="page-header">
|
2
|
-
|
3
|
-
<
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
<%%= link_to 'New <%= human_name %>', new_<%= prefixed_plain_model_url %>_path, class: 'btn btn-success'%>
|
8
|
-
</div>
|
9
|
-
</div>
|
2
|
+
<%%= link_to new_<%= prefixed_plain_model_url %>_path, class: 'btn btn-success pull-right' do %>
|
3
|
+
<i class="glyphicon glyphicon-plus"></i>
|
4
|
+
New <%= human_name %>
|
5
|
+
<%% end %>
|
6
|
+
<h1><%= plural_table_name.humanize %></h1>
|
10
7
|
</div>
|
11
8
|
|
12
|
-
<table class="table table-striped">
|
9
|
+
<table class="table table-striped table-hover table-bordered">
|
13
10
|
<thead>
|
14
11
|
<tr>
|
15
12
|
<% attributes.reject(&:password_digest?).each do |attribute| -%>
|
16
13
|
<th><%= attribute.human_name %></th>
|
17
14
|
<% end -%>
|
18
|
-
<th
|
15
|
+
<th></th>
|
16
|
+
<th></th>
|
19
17
|
</tr>
|
20
18
|
</thead>
|
21
19
|
|
@@ -26,12 +24,16 @@
|
|
26
24
|
<td><%%= link_to <%= singular_table_name %>.<%= attribute.name %>, <%= "[:#{prefix}, #{singular_table_name}]" %> %></td>
|
27
25
|
<% end -%>
|
28
26
|
<td class="text-right">
|
29
|
-
<%%= link_to 'Show', <%= "[:#{prefix}, #{singular_table_name}]" %>, class: 'btn btn-default' %>
|
30
27
|
<%%= link_to 'Edit', edit_<%= prefixed_plain_model_url %>_path(<%= singular_table_name %>), class: 'btn btn-primary' %>
|
28
|
+
</td>
|
29
|
+
<td class="text-right">
|
31
30
|
<%%= link_to 'Destroy', <%= "[:#{prefix}, #{singular_table_name}]" %>, method: :delete, data: { confirm: 'Are you sure?' }, class: 'btn btn-danger' %>
|
32
|
-
|
31
|
+
</td>
|
33
32
|
</tr>
|
34
33
|
<%% end %>
|
35
34
|
</tbody>
|
36
35
|
</table>
|
37
36
|
|
37
|
+
<div class="text-center">
|
38
|
+
<%%= paginate @<%= plural_table_name %>, theme: 'admin-bootstrap' %>
|
39
|
+
</div>
|
@@ -1,14 +1,10 @@
|
|
1
1
|
<div class="page-header">
|
2
|
-
|
3
|
-
<
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
<%%= link_to 'Back', <%= prefixed_index_helper %>_path, class: 'btn btn-default' %>
|
8
|
-
</div>
|
9
|
-
</div>
|
2
|
+
<%%= link_to <%= prefixed_index_helper %>_path, class: 'btn btn-default pull-right' do %>
|
3
|
+
<i class="glyphicon glyphicon-list-alt"></i>
|
4
|
+
Back
|
5
|
+
<%% end %>
|
6
|
+
<h1>New <%= human_name %></h1>
|
10
7
|
</div>
|
11
8
|
|
12
|
-
|
13
9
|
<%%= render 'form' %>
|
14
10
|
|
@@ -1,22 +1,18 @@
|
|
1
|
-
<
|
1
|
+
<div class="page-header">
|
2
|
+
<%%= link_to <%= prefixed_index_helper %>_path, class: 'btn btn-default pull-right' do %>
|
3
|
+
<i class="glyphicon glyphicon-list-alt"></i>
|
4
|
+
Back
|
5
|
+
<%% end %>
|
6
|
+
<%%= link_to edit_<%= prefixed_plain_model_url %>_path(@<%= singular_table_name %>), class: 'btn btn-primary pull-right' do %>
|
7
|
+
<i class="glyphicon glyphicon-pencil"></i>
|
8
|
+
Edit
|
9
|
+
<%% end %>
|
10
|
+
<h1>Show <%= human_name %></h1>
|
11
|
+
</div>
|
2
12
|
|
3
|
-
<
|
4
|
-
<tbody>
|
13
|
+
<dl class="dl-horizontal">
|
5
14
|
<% attributes.reject(&:password_digest?).each do |attribute| -%>
|
6
|
-
<
|
7
|
-
|
8
|
-
<td><%%= @<%= singular_table_name %>.<%= attribute.name %> %></td>
|
9
|
-
</tr>
|
15
|
+
<dt><%= attribute.human_name %>:</dt>
|
16
|
+
<dd><%%= @<%= singular_table_name %>.<%= attribute.name %> %></dd>
|
10
17
|
<% end -%>
|
11
|
-
</
|
12
|
-
</table>
|
13
|
-
|
14
|
-
<div class="row">
|
15
|
-
<div class="col-md-6">
|
16
|
-
<%%= link_to 'Back', <%= prefixed_index_helper %>_path, class: 'btn btn-default' %>
|
17
|
-
</div
|
18
|
-
<div class="col-md-6 text-right">
|
19
|
-
<%%= link_to 'Edit', edit_<%= prefixed_plain_model_url %>_path(@<%= singular_table_name %>), class: 'btn btn-primary' %>
|
20
|
-
<%%= link_to 'Destroy', <%= "[:#{prefix}, @#{singular_table_name}]" %>, method: :delete, data: { confirm: 'Are you sure?' }, class: 'btn btn-danger' %>
|
21
|
-
</div>
|
22
|
-
</div>
|
18
|
+
</dl>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
= simple_form_for(<%= "[:#{prefix}, @#{singular_table_name}]" %>, html: { class: 'form-horizontal' },
|
2
|
+
wrapper: :horizontal_form,
|
3
|
+
wrapper_mappings: { check_boxes: :horizontal_radio_and_checkboxes,
|
4
|
+
radio_buttons: :horizontal_radio_and_checkboxes,
|
5
|
+
file: :horizontal_file_input,
|
6
|
+
boolean: :horizontal_boolean }) do |f|
|
7
|
+
|
8
|
+
= f.error_notification
|
9
|
+
|
10
|
+
.form-inputs
|
11
|
+
<%- attributes.each do |attribute| -%>
|
12
|
+
= f.<%= attribute.reference? ? :association : :input %> :<%= attribute.name %>
|
13
|
+
<%- end -%>
|
14
|
+
.form-actions
|
15
|
+
= f.button :submit, :class => 'btn btn-primary'
|
@@ -0,0 +1,12 @@
|
|
1
|
+
.page-header
|
2
|
+
= link_to <%= prefixed_index_helper %>_path, class: 'btn btn-default pull-right' do
|
3
|
+
%i.glyphicon.glyphicon-list-alt
|
4
|
+
Back
|
5
|
+
|
6
|
+
= link_to <%= "[:#{prefix}, @#{singular_table_name}]" %>, class: 'btn btn-primary pull-right' do
|
7
|
+
%i.glyphicon.glyphicon-info-sign
|
8
|
+
Show
|
9
|
+
%h1
|
10
|
+
Editing <%= human_name %>
|
11
|
+
|
12
|
+
= render 'form'
|
@@ -0,0 +1,33 @@
|
|
1
|
+
.page-header
|
2
|
+
= link_to new_<%= prefixed_plain_model_url %>_path, class: 'btn btn-success pull-right' do
|
3
|
+
%i.glyphicon.glyphicon-plus
|
4
|
+
New <%= human_name %>
|
5
|
+
|
6
|
+
%h1
|
7
|
+
<%= plural_table_name.humanize %></h1>
|
8
|
+
|
9
|
+
%table.table.table-striped.table-hover.table-bordered
|
10
|
+
%thead
|
11
|
+
%tr
|
12
|
+
<%- attributes.reject(&:password_digest?).each do |attribute| -%>
|
13
|
+
%th
|
14
|
+
<%= attribute.human_name %>
|
15
|
+
<%- end -%>
|
16
|
+
%th
|
17
|
+
%th
|
18
|
+
|
19
|
+
%tbody
|
20
|
+
- @<%= plural_table_name %>.each do |<%= singular_table_name %>|
|
21
|
+
%tr
|
22
|
+
<%- attributes.reject(&:password_digest?).each do |attribute| -%>
|
23
|
+
%td
|
24
|
+
= link_to <%= singular_table_name %>.<%= attribute.name %>, <%= "[:#{prefix}, #{singular_table_name}]" %>
|
25
|
+
<%- end -%>
|
26
|
+
%td.text-right
|
27
|
+
= link_to 'Edit', edit_<%= prefixed_plain_model_url %>_path(<%= singular_table_name %>), class: 'btn btn-primary'
|
28
|
+
|
29
|
+
%td.text-right
|
30
|
+
= link_to 'Destroy', <%= "[:#{prefix}, #{singular_table_name}]" %>, method: :delete, data: { confirm: 'Are you sure?' }, class: 'btn btn-danger'
|
31
|
+
|
32
|
+
.text-center
|
33
|
+
= paginate @<%= plural_table_name %>, theme: 'admin-bootstrap'
|
@@ -0,0 +1,19 @@
|
|
1
|
+
.page-header
|
2
|
+
= link_to <%= prefixed_index_helper %>_path, class: 'btn btn-default pull-right' do
|
3
|
+
%i.glyphicon.glyphicon-list-alt
|
4
|
+
Back
|
5
|
+
|
6
|
+
= link_to edit_<%= prefixed_plain_model_url %>_path(@<%= singular_table_name %>), class: 'btn btn-primary pull-right' do
|
7
|
+
%i.glyphicon.glyphicon-pencil
|
8
|
+
Edit
|
9
|
+
|
10
|
+
%h1
|
11
|
+
Show <%= human_name %>
|
12
|
+
|
13
|
+
%dl.dl-horizontal
|
14
|
+
<%- attributes.reject(&:password_digest?).each do |attribute| -%>
|
15
|
+
%dt
|
16
|
+
<%= attribute.human_name %>:
|
17
|
+
%dd
|
18
|
+
= @<%= singular_table_name %>.<%= attribute.name %>
|
19
|
+
<%- end -%>
|
@@ -19,6 +19,10 @@ describe AdminPanel::Generators::InstallGenerator do
|
|
19
19
|
it_should_exist 'config/initializers/simple_form.rb'
|
20
20
|
end
|
21
21
|
|
22
|
+
describe 'kaminari:config' do
|
23
|
+
it_should_exist 'config/initializers/kaminari_config.rb'
|
24
|
+
end
|
25
|
+
|
22
26
|
describe 'copying layout' do
|
23
27
|
it_should_exist 'app/views/layouts/admin/application.html.erb'
|
24
28
|
it_should_exist 'app/views/layouts/admin/_messages.html.erb'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: admin-panel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michał Matyas
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
11
|
+
date: 2014-06-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -136,8 +136,22 @@ dependencies:
|
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '3.2'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: kaminari
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0.16'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0.16'
|
139
153
|
description: Generates Twitter Bootstrap based admin panel with scaffolder. Project
|
140
|
-
is quite opinionated, requires Rails 4, SASS, SimpleForm and Devise.
|
154
|
+
is quite opinionated, requires Rails 4, SASS, SimpleForm, Kaminari and Devise.
|
141
155
|
email:
|
142
156
|
- michal@higher.lv
|
143
157
|
executables: []
|
@@ -161,13 +175,34 @@ files:
|
|
161
175
|
- lib/generators/admin_panel/install/templates/controllers/admin/sessions_controller.rb
|
162
176
|
- lib/generators/admin_panel/install/templates/controllers/concerns/administrable.rb
|
163
177
|
- lib/generators/admin_panel/install/templates/helpers/admin_helper.rb
|
164
|
-
- lib/generators/admin_panel/install/templates/layouts/admin/_messages.html.erb
|
165
|
-
- lib/generators/admin_panel/install/templates/layouts/admin/_navigation.html.erb
|
166
|
-
- lib/generators/admin_panel/install/templates/layouts/admin/application.html.erb
|
167
|
-
- lib/generators/admin_panel/install/templates/
|
168
|
-
- lib/generators/admin_panel/install/templates/
|
169
|
-
- lib/generators/admin_panel/install/templates/
|
170
|
-
- lib/generators/admin_panel/install/templates/views/admin/
|
178
|
+
- lib/generators/admin_panel/install/templates/layouts/erb/admin/_messages.html.erb
|
179
|
+
- lib/generators/admin_panel/install/templates/layouts/erb/admin/_navigation.html.erb
|
180
|
+
- lib/generators/admin_panel/install/templates/layouts/erb/admin/application.html.erb
|
181
|
+
- lib/generators/admin_panel/install/templates/layouts/haml/admin/_messages.html.haml
|
182
|
+
- lib/generators/admin_panel/install/templates/layouts/haml/admin/_navigation.html.haml
|
183
|
+
- lib/generators/admin_panel/install/templates/layouts/haml/admin/application.html.haml
|
184
|
+
- lib/generators/admin_panel/install/templates/views/erb/admin/dashboard/index.html.erb
|
185
|
+
- lib/generators/admin_panel/install/templates/views/erb/admin/passwords/edit.html.erb
|
186
|
+
- lib/generators/admin_panel/install/templates/views/erb/admin/passwords/new.html.erb
|
187
|
+
- lib/generators/admin_panel/install/templates/views/erb/admin/sessions/new.html.erb
|
188
|
+
- lib/generators/admin_panel/install/templates/views/erb/kaminari/admin-bootstrap/_first_page.html.erb
|
189
|
+
- lib/generators/admin_panel/install/templates/views/erb/kaminari/admin-bootstrap/_gap.html.erb
|
190
|
+
- lib/generators/admin_panel/install/templates/views/erb/kaminari/admin-bootstrap/_last_page.html.erb
|
191
|
+
- lib/generators/admin_panel/install/templates/views/erb/kaminari/admin-bootstrap/_next_page.html.erb
|
192
|
+
- lib/generators/admin_panel/install/templates/views/erb/kaminari/admin-bootstrap/_page.html.erb
|
193
|
+
- lib/generators/admin_panel/install/templates/views/erb/kaminari/admin-bootstrap/_paginator.html.erb
|
194
|
+
- lib/generators/admin_panel/install/templates/views/erb/kaminari/admin-bootstrap/_prev_page.html.erb
|
195
|
+
- lib/generators/admin_panel/install/templates/views/haml/admin/dashboard/index.html.haml
|
196
|
+
- lib/generators/admin_panel/install/templates/views/haml/admin/passwords/edit.html.haml
|
197
|
+
- lib/generators/admin_panel/install/templates/views/haml/admin/passwords/new.html.haml
|
198
|
+
- lib/generators/admin_panel/install/templates/views/haml/admin/sessions/new.html.haml
|
199
|
+
- lib/generators/admin_panel/install/templates/views/haml/kaminari/admin-bootstrap/_first_page.html.haml
|
200
|
+
- lib/generators/admin_panel/install/templates/views/haml/kaminari/admin-bootstrap/_gap.html.haml
|
201
|
+
- lib/generators/admin_panel/install/templates/views/haml/kaminari/admin-bootstrap/_last_page.html.haml
|
202
|
+
- lib/generators/admin_panel/install/templates/views/haml/kaminari/admin-bootstrap/_next_page.html.haml
|
203
|
+
- lib/generators/admin_panel/install/templates/views/haml/kaminari/admin-bootstrap/_page.html.haml
|
204
|
+
- lib/generators/admin_panel/install/templates/views/haml/kaminari/admin-bootstrap/_paginator.html.haml
|
205
|
+
- lib/generators/admin_panel/install/templates/views/haml/kaminari/admin-bootstrap/_prev_page.html.haml
|
171
206
|
- lib/generators/admin_panel/scaffold/scaffold_generator.rb
|
172
207
|
- lib/generators/admin_panel/scaffold/templates/controllers/controller.rb.erb
|
173
208
|
- lib/generators/admin_panel/scaffold/templates/views/erb/_form.html.erb.erb
|
@@ -175,6 +210,11 @@ files:
|
|
175
210
|
- lib/generators/admin_panel/scaffold/templates/views/erb/index.html.erb.erb
|
176
211
|
- lib/generators/admin_panel/scaffold/templates/views/erb/new.html.erb.erb
|
177
212
|
- lib/generators/admin_panel/scaffold/templates/views/erb/show.html.erb.erb
|
213
|
+
- lib/generators/admin_panel/scaffold/templates/views/haml/_form.html.haml.erb
|
214
|
+
- lib/generators/admin_panel/scaffold/templates/views/haml/edit.html.haml.erb
|
215
|
+
- lib/generators/admin_panel/scaffold/templates/views/haml/index.html.haml.erb
|
216
|
+
- lib/generators/admin_panel/scaffold/templates/views/haml/new.html.haml.erb
|
217
|
+
- lib/generators/admin_panel/scaffold/templates/views/haml/show.html.haml.erb
|
178
218
|
- spec/dummy/Rakefile
|
179
219
|
- spec/dummy/app/assets/javascripts/application.js
|
180
220
|
- spec/dummy/app/assets/stylesheets/application.css
|
@@ -1 +0,0 @@
|
|
1
|
-
<h1>Dashboard goes here</h1>
|