tb_core 1.4.1 → 1.4.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 +34 -2
- data/app/assets/javascripts/admin/core/dashboard.js +19 -16
- data/app/assets/libs/sortable/sortable.js +1481 -0
- data/app/controllers/admin/application_controller.rb +2 -1
- data/app/controllers/admin/users_controller.rb +5 -1
- data/app/controllers/concerns/tb_core/error_handling.rb +49 -0
- data/app/controllers/concerns/tb_core/redirection.rb +23 -0
- data/app/controllers/concerns/tb_core/sortable_params.rb +80 -0
- data/app/controllers/concerns/tb_core/user_authentication.rb +57 -0
- data/app/controllers/spud/application_controller.rb +8 -136
- data/app/controllers/tb_core/application_controller.rb +16 -0
- data/app/helpers/admin/application_helper.rb +3 -1
- data/app/helpers/tb_core/application_helper.rb +32 -0
- data/app/views/admin/users/index.html.erb +6 -6
- data/config/locales/en.yml +1 -0
- data/config/routes.rb +1 -1
- data/lib/generators/spud/templates/application_controller.rb +1 -1
- data/lib/spud_core/engine.rb +1 -1
- data/lib/spud_core/version.rb +1 -1
- data/lib/tb_core/form_builder.rb +1 -1
- data/lib/tb_core/table_header.rb +92 -0
- data/spec/controllers/admin/application_controller_spec.rb +1 -1
- data/spec/controllers/{spud → tb_core}/application_controller_spec.rb +1 -1
- data/spec/controllers/tb_core/sortable_params_spec.rb +64 -0
- data/spec/dummy/app/controllers/application_controller.rb +1 -1
- data/spec/helpers/tb_core/application_helper_spec.rb +39 -0
- data/spec/rails_helper.rb +3 -4
- data/spec/spec_helper.rb +2 -0
- metadata +18 -11
- data/app/assets/javascripts/admin/core/jquery_ui.js +0 -22
- data/app/assets/stylesheets/admin/core/jquery_ui.scss +0 -19
- data/app/controllers/spud/admin/application_controller.rb +0 -12
- data/app/helpers/spud/application_helper.rb +0 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5d4b115f542bdd9445a2a32b9d1d0ea8a664c6ae
|
4
|
+
data.tar.gz: c77ab9bab3976d0c567ea557111991b1b45a8388
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e6b8e1f29af8d51135fb1a724eecceacb31f3bf9d43ec9ca3e2496bdb93c4aecb21027d81ecbd9b4a3e5be3c140b137f2257a799b4cd142cdca5e090c098a3bb
|
7
|
+
data.tar.gz: 13e3206f5b3327ad0473cce81d1869552227c227772fe41cefddd72afe685867ca2e120111e8bf17b89a4864130f55a4a1ef1ae72721657f04fb30c46f4631de
|
data/README.md
CHANGED
@@ -32,7 +32,7 @@ Setup Tasks
|
|
32
32
|
|
33
33
|
The `spud:setup` generator takes care of a few tasks for you. If you missed that step or would like to complete them manually, they are listed below:
|
34
34
|
|
35
|
-
1. Your base `ApplicationController` should extend from `
|
35
|
+
1. Your base `ApplicationController` should extend from `TbCore::ApplicationController`.
|
36
36
|
2. Your base `application.html.erb` should include a few special head tags (see generator template for example).
|
37
37
|
3. You should copy in the base migrations with `rake railties:install:migrations`.
|
38
38
|
|
@@ -121,7 +121,7 @@ Create a file in your app at `app/views/admin/users/_show_additions.html.erb`.
|
|
121
121
|
Error Handling
|
122
122
|
------------
|
123
123
|
|
124
|
-
The base `
|
124
|
+
The base `TbCore::ApplicationController` will automatically rescue from any `Spud::NotFoundError` and `Spud::AccessDeniedError` errors by rendering out the `layouts/error_page.html` template. If you ran the `spud:setup` generator, a template of that name will have been created for you automatically.
|
125
125
|
|
126
126
|
When building your own apps you may raise a `Spud::NotFoundError` or `Spud::AccessDeniedError` error at any time to halt further execution and cause the error page to render. For example:
|
127
127
|
|
@@ -175,6 +175,38 @@ A common case is to have a model in your app that `belongs_to :spud_user`. The `
|
|
175
175
|
<%= f.tb_save_buttons('Widget', widgets_path) %>
|
176
176
|
<% end %>
|
177
177
|
|
178
|
+
Table Sorting
|
179
|
+
-------------
|
180
|
+
|
181
|
+
We provide a few tools to assist with sorting tables of data backed by ActiveRecord queries. In your view, the `tb_table_header` helper method will generate a `<thead>` element with header tags.
|
182
|
+
|
183
|
+
### Example
|
184
|
+
|
185
|
+
```erb
|
186
|
+
<%= tb_table_header :users_path do |t| %>
|
187
|
+
<%= t.sortable :full_name %>
|
188
|
+
<%= t.sortable :email %>
|
189
|
+
<%= t.sortable :birth_date %>
|
190
|
+
<%= t.header :favorite_color %> # Header without sorting
|
191
|
+
<th>Plain HTML is fine too</th>
|
192
|
+
<% end %>
|
193
|
+
```
|
194
|
+
|
195
|
+
On the controller side, you can choose to deal with the `:dir` and `:sort` params using your own custom logic, or you can use the `SortableParams` module.
|
196
|
+
|
197
|
+
```ruby
|
198
|
+
include TbCore::SortableParams
|
199
|
+
|
200
|
+
sortable_by :email, # A basic sort
|
201
|
+
full_name: [:last_name, :first_name], # This will sort on two columns
|
202
|
+
birth_date: 'birth_dates.date :dir', # This will sort on a joined table
|
203
|
+
default: :email # The sort to use when none is passed
|
204
|
+
|
205
|
+
def index
|
206
|
+
MyModel.where(...).order(sortable_query)
|
207
|
+
end
|
208
|
+
```
|
209
|
+
|
178
210
|
Remote Forms
|
179
211
|
--------------
|
180
212
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
//= require sortable/sortable
|
2
|
+
|
1
3
|
(function(){
|
2
4
|
|
3
5
|
var badgeInterval;
|
@@ -46,27 +48,28 @@ var updateBadge = function(badge_id, count) {
|
|
46
48
|
};
|
47
49
|
|
48
50
|
var sortableIcons = function(){
|
49
|
-
|
50
|
-
|
51
|
+
var element = document.querySelector('.sortable');
|
52
|
+
var sortable = Sortable.create(element, {
|
53
|
+
onUpdate: function() {
|
51
54
|
var sortArr = [];
|
52
55
|
var index = 0;
|
53
|
-
|
54
|
-
sortArr.push(
|
55
|
-
});
|
56
|
-
//save the order to userSettings
|
57
|
-
$.ajax('/admin/change_sort', {
|
58
|
-
method: 'PUT',
|
59
|
-
data: {order:sortArr},
|
60
|
-
dataType: "json",
|
61
|
-
success: function(data, status, jqXHR) {
|
62
|
-
|
63
|
-
},
|
64
|
-
error: function(XMLHttpRequest, textStatus, errorThrown) {
|
65
|
-
alert("Status: " + textStatus); alert("Error: " + errorThrown);
|
66
|
-
}
|
56
|
+
document.querySelectorAll('.sortable > div > a').forEach(function(element){
|
57
|
+
sortArr.push(element.getAttribute('href'));
|
67
58
|
});
|
59
|
+
saveOrder(sortArr);
|
68
60
|
}
|
69
61
|
});
|
70
62
|
};
|
71
63
|
|
64
|
+
function saveOrder(sortArray) {
|
65
|
+
$.ajax('/admin/change_sort', {
|
66
|
+
method: 'PUT',
|
67
|
+
data: { order: sortArray },
|
68
|
+
dataType: "json",
|
69
|
+
error: function(XMLHttpRequest, textStatus, errorThrown) {
|
70
|
+
console.error('Saving sort order failed:', arguments);
|
71
|
+
}
|
72
|
+
});
|
73
|
+
}
|
74
|
+
|
72
75
|
})();
|