godmin 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +24 -0
- data/.hound.yml +2 -0
- data/.rubocop.yml +7 -0
- data/.travis.yml +7 -0
- data/Gemfile +11 -0
- data/MIT-LICENSE +20 -0
- data/README.md +523 -0
- data/Rakefile +34 -0
- data/app/assets/images/godmin/.keep +0 -0
- data/app/assets/javascripts/godmin/application.js +19 -0
- data/app/assets/javascripts/godmin/batch_actions.js +42 -0
- data/app/assets/javascripts/godmin/navigation.js +9 -0
- data/app/assets/javascripts/godmin/select_tags.js +8 -0
- data/app/assets/stylesheets/godmin/application.css.scss +62 -0
- data/app/views/godmin/application/welcome.html.erb +65 -0
- data/app/views/godmin/resource/_actions.html.erb +10 -0
- data/app/views/godmin/resource/_batch_actions.html.erb +12 -0
- data/app/views/godmin/resource/_breadcrumb.html.erb +21 -0
- data/app/views/godmin/resource/_errors.html.erb +9 -0
- data/app/views/godmin/resource/_filters.html.erb +23 -0
- data/app/views/godmin/resource/_form.html.erb +12 -0
- data/app/views/godmin/resource/_pagination.html.erb +6 -0
- data/app/views/godmin/resource/_scopes.html.erb +11 -0
- data/app/views/godmin/resource/_table.html.erb +36 -0
- data/app/views/godmin/resource/columns/_actions.html.erb +11 -0
- data/app/views/godmin/resource/edit.html.erb +5 -0
- data/app/views/godmin/resource/index.html.erb +17 -0
- data/app/views/godmin/resource/new.html.erb +5 -0
- data/app/views/godmin/resource/show.html.erb +1 -0
- data/app/views/godmin/sessions/new.html.erb +9 -0
- data/app/views/godmin/shared/_navigation.html.erb +29 -0
- data/app/views/kaminari/_first_page.html.erb +3 -0
- data/app/views/kaminari/_gap.html.erb +3 -0
- data/app/views/kaminari/_last_page.html.erb +3 -0
- data/app/views/kaminari/_next_page.html.erb +3 -0
- data/app/views/kaminari/_page.html.erb +3 -0
- data/app/views/kaminari/_paginator.html.erb +15 -0
- data/app/views/kaminari/_prev_page.html.erb +3 -0
- data/app/views/layouts/godmin/_content.html.erb +13 -0
- data/app/views/layouts/godmin/_layout.html.erb +13 -0
- data/app/views/layouts/godmin/application.html.erb +17 -0
- data/app/views/layouts/godmin/login.html.erb +18 -0
- data/bin/rails +8 -0
- data/config/locales/en.yml +41 -0
- data/config/locales/sv.yml +41 -0
- data/config/routes.rb +2 -0
- data/godmin.gemspec +32 -0
- data/lib/generators/godmin/authentication/authentication_generator.rb +61 -0
- data/lib/generators/godmin/install/install_generator.rb +34 -0
- data/lib/generators/godmin/policy/policy_generator.rb +29 -0
- data/lib/generators/godmin/resource/resource_generator.rb +56 -0
- data/lib/godmin.rb +24 -0
- data/lib/godmin/application.rb +37 -0
- data/lib/godmin/authentication.rb +35 -0
- data/lib/godmin/authentication/sessions.rb +45 -0
- data/lib/godmin/authentication/user.rb +27 -0
- data/lib/godmin/authorization.rb +30 -0
- data/lib/godmin/authorization/policy.rb +40 -0
- data/lib/godmin/authorization/policy_finder.rb +28 -0
- data/lib/godmin/engine.rb +4 -0
- data/lib/godmin/generators/base.rb +13 -0
- data/lib/godmin/helpers/application.rb +6 -0
- data/lib/godmin/helpers/batch_actions.rb +17 -0
- data/lib/godmin/helpers/filters.rb +108 -0
- data/lib/godmin/helpers/tables.rb +41 -0
- data/lib/godmin/helpers/translations.rb +19 -0
- data/lib/godmin/rails.rb +36 -0
- data/lib/godmin/resolver.rb +46 -0
- data/lib/godmin/resource.rb +126 -0
- data/lib/godmin/resource/batch_actions.rb +45 -0
- data/lib/godmin/resource/filters.rb +41 -0
- data/lib/godmin/resource/ordering.rb +25 -0
- data/lib/godmin/resource/pagination.rb +11 -0
- data/lib/godmin/resource/scopes.rb +49 -0
- data/lib/godmin/version.rb +3 -0
- data/lib/tasks/godmin_tasks.rake +4 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/images/.keep +0 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/controllers/concerns/.keep +0 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/mailers/.keep +0 -0
- data/test/dummy/app/models/.keep +0 -0
- data/test/dummy/app/models/concerns/.keep +0 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +23 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +29 -0
- data/test/dummy/config/environments/production.rb +80 -0
- data/test/dummy/config/environments/test.rb +36 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +12 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +4 -0
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/lib/assets/.keep +0 -0
- data/test/dummy/public/404.html +58 -0
- data/test/dummy/public/422.html +58 -0
- data/test/dummy/public/500.html +57 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/godmin_test.rb +7 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/lib/godmin/policy_finder_test.rb +30 -0
- data/test/lib/godmin/resolver_test.rb +31 -0
- data/test/test_helper.rb +21 -0
- data/vendor/assets/images/godmin/chosen-sprite.png +0 -0
- data/vendor/assets/images/godmin/chosen-sprite@2x.png +0 -0
- data/vendor/assets/javascripts/.keep +0 -0
- data/vendor/assets/stylesheets/.keep +0 -0
- metadata +361 -0
data/Rakefile
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
11
|
+
rdoc.title = 'Godmin'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.rdoc')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
|
18
|
+
load 'rails/tasks/engine.rake'
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
Bundler::GemHelper.install_tasks
|
23
|
+
|
24
|
+
require 'rake/testtask'
|
25
|
+
|
26
|
+
Rake::TestTask.new(:test) do |t|
|
27
|
+
t.libs << 'lib'
|
28
|
+
t.libs << 'test'
|
29
|
+
t.pattern = 'test/**/*_test.rb'
|
30
|
+
t.verbose = false
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
task default: :test
|
File without changes
|
@@ -0,0 +1,19 @@
|
|
1
|
+
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
2
|
+
// listed below.
|
3
|
+
//
|
4
|
+
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
5
|
+
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
|
6
|
+
//
|
7
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
8
|
+
// compiled file.
|
9
|
+
//
|
10
|
+
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
|
11
|
+
// about supported directives.
|
12
|
+
//
|
13
|
+
//= require jquery
|
14
|
+
//= require jquery_ujs
|
15
|
+
//= require bootstrap
|
16
|
+
//= require select2
|
17
|
+
//= require godmin/batch_actions
|
18
|
+
//= require godmin/navigation
|
19
|
+
//= require godmin/select_tags
|
@@ -0,0 +1,42 @@
|
|
1
|
+
(function($) {
|
2
|
+
$(function() {
|
3
|
+
$form = $('#batch-actions-form');
|
4
|
+
$selectAll = $form.find('.batch-actions-select-all');
|
5
|
+
$selectNone = $form.find('.batch-actions-select-none');
|
6
|
+
|
7
|
+
var setSelectToAll = function() {
|
8
|
+
$selectAll.removeClass('hidden');
|
9
|
+
$selectNone.addClass('hidden');
|
10
|
+
};
|
11
|
+
|
12
|
+
var setSelectToNone = function() {
|
13
|
+
$selectAll.addClass('hidden');
|
14
|
+
$selectNone.removeClass('hidden');
|
15
|
+
};
|
16
|
+
|
17
|
+
$form.find('.batch-actions-select').on('click', function() {
|
18
|
+
if ($form.find('input:checkbox:checked').length > 0) {
|
19
|
+
$form.find('input:checkbox').prop('checked', false).trigger('change');
|
20
|
+
setSelectToAll();
|
21
|
+
} else {
|
22
|
+
$form.find('input:checkbox').prop('checked', true).trigger('change');
|
23
|
+
setSelectToNone();
|
24
|
+
}
|
25
|
+
});
|
26
|
+
|
27
|
+
$form.find('input:checkbox').on('change', function() {
|
28
|
+
if ($form.find('input:checkbox:checked').length) {
|
29
|
+
$('.batch-actions-action-link').removeClass('hidden');
|
30
|
+
setSelectToNone();
|
31
|
+
} else {
|
32
|
+
$('.batch-actions-action-link').addClass('hidden');
|
33
|
+
setSelectToAll();
|
34
|
+
}
|
35
|
+
});
|
36
|
+
|
37
|
+
$(document).delegate('.batch-actions-action-link', 'click.rails', function() {
|
38
|
+
$form.find('#batch-actions-action').val($(this).data('value'));
|
39
|
+
$form.submit();
|
40
|
+
});
|
41
|
+
});
|
42
|
+
}(jQuery));
|
@@ -0,0 +1,62 @@
|
|
1
|
+
/*
|
2
|
+
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
3
|
+
* listed below.
|
4
|
+
*
|
5
|
+
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
6
|
+
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
|
7
|
+
*
|
8
|
+
* You're free to add application-wide styles to this file and they'll appear at the top of the
|
9
|
+
* compiled file, but it's generally better to create a new file per style scope.
|
10
|
+
*
|
11
|
+
*= require_self
|
12
|
+
*/
|
13
|
+
|
14
|
+
@import "bootstrap";
|
15
|
+
@import "select2";
|
16
|
+
@import "select2-bootstrap";
|
17
|
+
|
18
|
+
body {
|
19
|
+
margin-bottom: 20px;
|
20
|
+
}
|
21
|
+
|
22
|
+
#login {
|
23
|
+
margin-top: 20px;
|
24
|
+
}
|
25
|
+
|
26
|
+
#scopes {
|
27
|
+
margin-bottom: 20px;
|
28
|
+
}
|
29
|
+
|
30
|
+
#filters {
|
31
|
+
.filter {
|
32
|
+
min-width: 170px;
|
33
|
+
}
|
34
|
+
}
|
35
|
+
|
36
|
+
#actions {
|
37
|
+
@include clearfix();
|
38
|
+
margin-bottom: 20px;
|
39
|
+
}
|
40
|
+
|
41
|
+
#table {
|
42
|
+
td {
|
43
|
+
vertical-align: middle;
|
44
|
+
}
|
45
|
+
}
|
46
|
+
|
47
|
+
.pagination {
|
48
|
+
margin: 0 0 10px 0;
|
49
|
+
}
|
50
|
+
|
51
|
+
.highlight {
|
52
|
+
-webkit-animation: highlight 3s;
|
53
|
+
}
|
54
|
+
|
55
|
+
@-webkit-keyframes highlight {
|
56
|
+
from {
|
57
|
+
background: #fffbcc;
|
58
|
+
}
|
59
|
+
to {
|
60
|
+
background: none;
|
61
|
+
}
|
62
|
+
}
|
@@ -0,0 +1,65 @@
|
|
1
|
+
<div class="row">
|
2
|
+
<div class="col-md-8">
|
3
|
+
<div class="jumbotron">
|
4
|
+
<h1>Welcome aboard</h1>
|
5
|
+
<p>
|
6
|
+
You are now experiencing, first-hand, the power of Godmin:
|
7
|
+
an admin framework for Rails 4+, tweakable to the max.
|
8
|
+
</p>
|
9
|
+
<p>
|
10
|
+
<a href="https://github.com/varvet/godmin/" class="btn btn-primary btn-lg" role="button">
|
11
|
+
<span class="glyphicon glyphicon-book"></span>
|
12
|
+
Browse the documentation
|
13
|
+
</a>
|
14
|
+
</p>
|
15
|
+
</div>
|
16
|
+
<div class="row">
|
17
|
+
<div class="col-md-6">
|
18
|
+
<div class="panel panel-default">
|
19
|
+
<div class="panel-heading">Scopes</div>
|
20
|
+
<div class="panel-body">
|
21
|
+
<p>Scopes are a way of sectioning resources, useful for quick navigation.</p>
|
22
|
+
<%= link_to "Read more about scopes", "#" %>
|
23
|
+
</div>
|
24
|
+
</div>
|
25
|
+
</div>
|
26
|
+
<div class="col-md-6">
|
27
|
+
<div class="panel panel-default">
|
28
|
+
<div class="panel-heading">Filters</div>
|
29
|
+
<div class="panel-body">
|
30
|
+
<p>Filters offer great flexibility when it comes to searching for resources.</p>
|
31
|
+
<%= link_to "Read more about filters", "#" %>
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
</div>
|
35
|
+
</div>
|
36
|
+
<div class="row">
|
37
|
+
<div class="col-md-6">
|
38
|
+
<div class="panel panel-default">
|
39
|
+
<div class="panel-heading">Batch actions</div>
|
40
|
+
<div class="panel-body">
|
41
|
+
<p>Batch actions are an easy way to perform the same action on multiple resources.</p>
|
42
|
+
<%= link_to "Read more about batch actions", "#" %>
|
43
|
+
</div>
|
44
|
+
</div>
|
45
|
+
</div>
|
46
|
+
<div class="col-md-6">
|
47
|
+
<div class="panel panel-default">
|
48
|
+
<div class="panel-heading">Resource fetching</div>
|
49
|
+
<div class="panel-body">
|
50
|
+
<p>Control which resources to fetch, and apply arbitrary conditions, such as sorting.</p>
|
51
|
+
<%= link_to "Read more about resource fetching", "#" %>
|
52
|
+
</div>
|
53
|
+
</div>
|
54
|
+
</div>
|
55
|
+
</div>
|
56
|
+
</div>
|
57
|
+
<div class="col-md-4">
|
58
|
+
<div class="panel panel-default">
|
59
|
+
<div class="panel-heading">Version</div>
|
60
|
+
<div class="panel-body">
|
61
|
+
You are running Godmin <%= Godmin::VERSION %>
|
62
|
+
</div>
|
63
|
+
</div>
|
64
|
+
</div>
|
65
|
+
</div>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<div id="actions">
|
2
|
+
<div class="pull-left">
|
3
|
+
<%= render partial: "batch_actions" %>
|
4
|
+
</div>
|
5
|
+
<div class="pull-right">
|
6
|
+
<% unless authorization_enabled? && !policy(@resources).create? %>
|
7
|
+
<%= link_to t("helpers.submit.create", model: @resource_class.model_name.human), [:new, @resource_class.to_s.underscore], class: "btn btn-default" %>
|
8
|
+
<% end %>
|
9
|
+
</div>
|
10
|
+
</div>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<% if batch_action_map.present? %>
|
2
|
+
<%= link_to translate_scoped("batch_actions.select_all"), "#", class: "btn btn-default batch-actions-select batch-actions-select-all" %>
|
3
|
+
<%= link_to translate_scoped("batch_actions.deselect_all"), "#", class: "btn btn-default batch-actions-select batch-actions-select-none hidden" %>
|
4
|
+
|
5
|
+
<div class="btn-group">
|
6
|
+
<% batch_action_map.each do |name, options| %>
|
7
|
+
<%= batch_action_link(name, options) %>
|
8
|
+
<% end %>
|
9
|
+
</div>
|
10
|
+
|
11
|
+
<%= hidden_field_tag "batch_action[action]", nil, id: "batch-actions-action" %>
|
12
|
+
<% end %>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<ol class="breadcrumb">
|
2
|
+
<% if index %>
|
3
|
+
<li class="active">
|
4
|
+
<%= @resource_class.model_name.human(count: 2) %>
|
5
|
+
</li>
|
6
|
+
<% else %>
|
7
|
+
<li>
|
8
|
+
<%= link_to @resource_class.model_name.human(count: 2), @resource_class %>
|
9
|
+
</li>
|
10
|
+
<% end %>
|
11
|
+
</li>
|
12
|
+
<% unless index %>
|
13
|
+
<li class="active">
|
14
|
+
<% if @resource.new_record? %>
|
15
|
+
<%= t("helpers.submit.create", model: @resource_class.model_name.human) %>
|
16
|
+
<% else %>
|
17
|
+
<%= @resource.to_s %>
|
18
|
+
<% end %>
|
19
|
+
</li>
|
20
|
+
<% end %>
|
21
|
+
</ol>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<div id="filters" class="panel panel-default">
|
2
|
+
<div class="panel-body">
|
3
|
+
<%= form_tag params, method: :get, class: "form-inline" do %>
|
4
|
+
|
5
|
+
<%= hidden_field_tag :scope, nil, value: params[:scope] %>
|
6
|
+
<%= hidden_field_tag :order, nil, value: params[:order] %>
|
7
|
+
|
8
|
+
<% filter_map.each do |name, options| %>
|
9
|
+
<div class="filter form-group">
|
10
|
+
<%= label_tag name, translate_scoped("filters.labels.#{name}", default: name.to_s.titleize) %><br>
|
11
|
+
<%= filter_input_tag name, options %>
|
12
|
+
</div>
|
13
|
+
<% end %>
|
14
|
+
|
15
|
+
<div class="pull-right">
|
16
|
+
<label> </label><br>
|
17
|
+
<%= button_tag translate_scoped("filters.buttons.apply"), class: "btn btn-default" %>
|
18
|
+
<%= link_to translate_scoped("filters.buttons.clear"), polymorphic_path(@resource_class, scope: params[:scope], order: params[:order]), class: "btn btn-default" %>
|
19
|
+
</div>
|
20
|
+
|
21
|
+
<% end %>
|
22
|
+
</div>
|
23
|
+
</div>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<%= simple_form_for @resource, html: { role: "form" } do |f| %>
|
2
|
+
<% attrs_for_form.each do |attr| %>
|
3
|
+
<div class="form-group">
|
4
|
+
<% if @resource_class.column_names.include? attr.to_s %>
|
5
|
+
<%= f.input attr, error: false, input_html: { class: "form-control" } %>
|
6
|
+
<% else %>
|
7
|
+
<%= f.association attr, error: false, input_html: { class: "form-control chosen" } %>
|
8
|
+
<% end %>
|
9
|
+
</div>
|
10
|
+
<% end %>
|
11
|
+
<%= f.button :submit, class: "btn btn-default" %>
|
12
|
+
<% end %>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<% unless scope_map.empty? %>
|
2
|
+
<div id="scopes">
|
3
|
+
<ul class="nav nav-tabs">
|
4
|
+
<% scope_map.each do |name, options| %>
|
5
|
+
<li class="<%= "active" if params[:scope] == name.to_s %>">
|
6
|
+
<%= link_to translate_scoped("scopes.#{name.to_s.underscore}", default: name.to_s.titleize), url_for(params.merge(scope: name, only_path: true).except(:page)) %>
|
7
|
+
</li>
|
8
|
+
<% end %>
|
9
|
+
</ul>
|
10
|
+
</div>
|
11
|
+
<% end %>
|
@@ -0,0 +1,36 @@
|
|
1
|
+
<div id="table" class="table-responsive">
|
2
|
+
<table class="table table-bordered table-hover">
|
3
|
+
<tr>
|
4
|
+
<% if batch_action_map.present? %>
|
5
|
+
<th></th>
|
6
|
+
<% end %>
|
7
|
+
<% attrs_for_index.each do |attr| %>
|
8
|
+
<th>
|
9
|
+
<%= column_header attr %>
|
10
|
+
</th>
|
11
|
+
<% end %>
|
12
|
+
<th></th>
|
13
|
+
</tr>
|
14
|
+
<% @resources.each do |resource| %>
|
15
|
+
<% if flash[:batch_actioned_ids] && flash[:batch_actioned_ids].include?(resource.id) %>
|
16
|
+
<tr class="highlight">
|
17
|
+
<% else %>
|
18
|
+
<tr>
|
19
|
+
<% end %>
|
20
|
+
<% if batch_action_map.present? %>
|
21
|
+
<td align="center">
|
22
|
+
<%= check_box_tag "batch_action[items][#{resource.id}]" %>
|
23
|
+
</td>
|
24
|
+
<% end %>
|
25
|
+
<% attrs_for_index.each do |attr| %>
|
26
|
+
<td>
|
27
|
+
<%= column_value(resource, attr) %>
|
28
|
+
</td>
|
29
|
+
<% end %>
|
30
|
+
<td>
|
31
|
+
<%= render partial: "columns/actions", locals: { resource: resource } %>
|
32
|
+
</td>
|
33
|
+
</tr>
|
34
|
+
<% end %>
|
35
|
+
</table>
|
36
|
+
</div>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<div class="btn-group btn-group-sm pull-right">
|
2
|
+
<% unless authorization_enabled? && !policy(resource).show? %>
|
3
|
+
<%= link_to translate_scoped("column_actions.show"), resource, class: "btn btn-default" %>
|
4
|
+
<% end %>
|
5
|
+
<% unless authorization_enabled? && !policy(resource).edit? %>
|
6
|
+
<%= link_to translate_scoped("column_actions.edit"), [:edit, resource], class: "btn btn-default" %>
|
7
|
+
<% end %>
|
8
|
+
<% unless authorization_enabled? && !policy(resource).destroy? %>
|
9
|
+
<%= link_to translate_scoped("column_actions.destroy"), resource, method: :delete, data: { confirm: translate_scoped("column_actions.confirm_message") }, class: "btn btn-danger" %>
|
10
|
+
<% end %>
|
11
|
+
</div>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<%= render partial: "breadcrumb", locals: { index: true } %>
|
2
|
+
|
3
|
+
<%= render partial: "scopes" %>
|
4
|
+
|
5
|
+
<% if filter_map.present? %>
|
6
|
+
<%= render partial: "filters" %>
|
7
|
+
<% end %>
|
8
|
+
|
9
|
+
<%= form_tag [:batch_action, @resource_class], id: "batch-actions-form" do %>
|
10
|
+
|
11
|
+
<%= render partial: "actions" %>
|
12
|
+
|
13
|
+
<%= render partial: "table" %>
|
14
|
+
|
15
|
+
<% end %>
|
16
|
+
|
17
|
+
<%= render partial: "pagination" %>
|