udongo 5.0.2 → 5.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/stylesheets/backend/components/_form.scss +5 -0
- data/app/assets/stylesheets/backend/components/_table.scss +3 -0
- data/app/assets/stylesheets/backend/udongo.scss +1 -0
- data/app/controllers/backend/emails_controller.rb +1 -1
- data/app/controllers/backend/users_controller.rb +7 -4
- data/app/controllers/concerns/pagination_controller.rb +1 -1
- data/app/forms/backend/page_translation_form.rb +2 -60
- data/app/forms/backend/translation_with_seo_form.rb +71 -0
- data/app/views/backend/users/_filter.html.erb +25 -0
- data/app/views/backend/users/_form.html.erb +1 -0
- data/app/views/backend/users/index.html.erb +11 -6
- data/changelog.md +14 -1
- data/config/locales/nl_backend.yml +1 -0
- data/config/locales/nl_forms.yml +1 -0
- data/db/migrate/20170215132531_add_active_to_users.rb +6 -0
- data/lib/udongo/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6e7758e4a1bfb4e24e8b4ff54ba00225802be713
|
4
|
+
data.tar.gz: 2c45f1de07eac96c9127c5bfb0c338bec8754f51
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3f2a7cbd3e48e5a773ed2bfe24ccbcc0eeb10ae6570b32bea19381875e30ebb710bbd4761cd6063aeee7ff41912dc52923a057ea6986f33ae48dff0771985d59
|
7
|
+
data.tar.gz: 7291bf66476a79eba40459c33e5234ed20679f9c37177d0f1e6ed22ad061edce684c3730b7f2a396f7008037b676a0af08d616394023edf69fd0729d65487781
|
@@ -11,6 +11,11 @@
|
|
11
11
|
margin-bottom: 2rem;
|
12
12
|
}
|
13
13
|
|
14
|
+
// To make sure collections rendered by SimpleForm show on multiple lines.
|
15
|
+
label.collection_check_boxes {
|
16
|
+
display: block;
|
17
|
+
}
|
18
|
+
|
14
19
|
// Underscored because of SimpleForm
|
15
20
|
.date_picker, .date_range_picker {
|
16
21
|
[readonly="readonly"] {
|
@@ -1,9 +1,12 @@
|
|
1
1
|
class Backend::UsersController < Backend::BaseController
|
2
|
-
|
2
|
+
include Concerns::PaginationController
|
3
|
+
|
4
|
+
before_action :find_model, only: [:show, :edit, :update, :destroy]
|
3
5
|
before_action -> { breadcrumb.add t('b.users'), backend_users_path }
|
4
6
|
|
5
7
|
def index
|
6
|
-
@
|
8
|
+
@search = User.ransack params[:q]
|
9
|
+
@users = @search.result(distinct: true).order(:last_name, :first_name).page(page_number).per_page(per_page)
|
7
10
|
end
|
8
11
|
|
9
12
|
def show
|
@@ -39,13 +42,13 @@ class Backend::UsersController < Backend::BaseController
|
|
39
42
|
|
40
43
|
private
|
41
44
|
|
42
|
-
def
|
45
|
+
def find_model
|
43
46
|
@user = User.find params[:id]
|
44
47
|
end
|
45
48
|
|
46
49
|
def allowed_params
|
47
50
|
params[:user].permit(
|
48
|
-
:first_name, :last_name, :email, :password, :password_confirmation
|
51
|
+
:first_name, :last_name, :email, :active, :password, :password_confirmation
|
49
52
|
)
|
50
53
|
end
|
51
54
|
end
|
@@ -1,68 +1,10 @@
|
|
1
|
-
class Backend::PageTranslationForm <
|
2
|
-
attr_reader :page, :translation, :seo
|
3
|
-
|
1
|
+
class Backend::PageTranslationForm < Backend::TranslationWithSeoForm
|
4
2
|
attribute :title, String
|
5
3
|
attribute :subtitle, String
|
6
4
|
|
7
|
-
|
8
|
-
attribute :seo_keywords, String
|
9
|
-
attribute :seo_description, String
|
10
|
-
attribute :seo_custom, String
|
11
|
-
attribute :seo_slug, String
|
12
|
-
|
13
|
-
validates :title, :seo_slug, presence: true
|
14
|
-
|
15
|
-
delegate :id, to: :page
|
16
|
-
|
17
|
-
def initialize(page, translation, seo)
|
18
|
-
@page = page
|
19
|
-
@translation = translation
|
20
|
-
@seo = seo
|
21
|
-
|
22
|
-
self.title = @translation.title
|
23
|
-
self.subtitle = @translation.subtitle
|
24
|
-
|
25
|
-
%w(title keywords description custom slug).each do |f|
|
26
|
-
self.send("seo_#{f}=", @seo.send(f))
|
27
|
-
end
|
28
|
-
end
|
5
|
+
validates :title, presence: true
|
29
6
|
|
30
7
|
def self.model_name
|
31
8
|
Page.model_name
|
32
9
|
end
|
33
|
-
|
34
|
-
def persisted?
|
35
|
-
true
|
36
|
-
end
|
37
|
-
|
38
|
-
def save(params)
|
39
|
-
self.title = params[:title]
|
40
|
-
self.subtitle = params[:subtitle]
|
41
|
-
|
42
|
-
%w(title keywords description custom slug).each do |f|
|
43
|
-
self.send("seo_#{f}=", params["seo_#{f}".to_sym])
|
44
|
-
end
|
45
|
-
|
46
|
-
if valid?
|
47
|
-
save_object
|
48
|
-
true
|
49
|
-
else
|
50
|
-
false
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
private
|
55
|
-
|
56
|
-
def save_object
|
57
|
-
@translation.title = title
|
58
|
-
@translation.subtitle = subtitle
|
59
|
-
|
60
|
-
%w(title keywords description custom slug).each do |f|
|
61
|
-
@seo.send("#{f}=", send("seo_#{f}"))
|
62
|
-
end
|
63
|
-
|
64
|
-
# Saves the page, translation and SEO info all at once.
|
65
|
-
@seo.save!
|
66
|
-
@page.save!
|
67
|
-
end
|
68
10
|
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
class Backend::TranslationWithSeoForm < Udongo::Form
|
2
|
+
attr_reader :model, :translation, :seo
|
3
|
+
delegate :id, to: :model
|
4
|
+
|
5
|
+
attribute :seo_title, String
|
6
|
+
attribute :seo_keywords, String
|
7
|
+
attribute :seo_description, String
|
8
|
+
attribute :seo_custom, String
|
9
|
+
attribute :seo_slug, String
|
10
|
+
|
11
|
+
validates :seo_slug, presence: true
|
12
|
+
|
13
|
+
def initialize(model, translation, seo)
|
14
|
+
@model = model
|
15
|
+
@translation = translation
|
16
|
+
@seo = seo
|
17
|
+
|
18
|
+
non_seo_attributes.each do |f|
|
19
|
+
self.send "#{f}=", @translation.send(f)
|
20
|
+
end
|
21
|
+
|
22
|
+
seo_attributes.each do |f|
|
23
|
+
self.send("seo_#{f}=", @seo.send(f))
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def persisted?
|
28
|
+
true
|
29
|
+
end
|
30
|
+
|
31
|
+
def save(params)
|
32
|
+
non_seo_attributes.each do |f|
|
33
|
+
self.send "#{f}=", params[f.to_sym]
|
34
|
+
end
|
35
|
+
|
36
|
+
seo_attributes.each do |f|
|
37
|
+
self.send("seo_#{f}=", params["seo_#{f}".to_sym])
|
38
|
+
end
|
39
|
+
|
40
|
+
if valid?
|
41
|
+
save_object
|
42
|
+
true
|
43
|
+
else
|
44
|
+
false
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def seo_attributes
|
49
|
+
%w(title keywords description custom slug)
|
50
|
+
end
|
51
|
+
|
52
|
+
def non_seo_attributes
|
53
|
+
attributes.keys.select { |k| !k.to_s.starts_with?('seo_') }
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
def save_object
|
59
|
+
non_seo_attributes.each do |f|
|
60
|
+
@translation.send "#{f}=", self.send(f)
|
61
|
+
end
|
62
|
+
|
63
|
+
seo_attributes.each do |f|
|
64
|
+
@seo.send("#{f}=", send("seo_#{f}"))
|
65
|
+
end
|
66
|
+
|
67
|
+
# Saves the model, translation and SEO info all at once.
|
68
|
+
@seo.save!
|
69
|
+
@model.save!
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<div class="card filter">
|
2
|
+
<div class="card-block">
|
3
|
+
<%= search_form_for [:backend, @search] do |f| %>
|
4
|
+
<div class="row">
|
5
|
+
<div class="col-md-4 form-group">
|
6
|
+
<%= f.search_field :first_name_cont, placeholder: t('b.first_name'), class: 'form-control' %>
|
7
|
+
</div>
|
8
|
+
|
9
|
+
<div class="col-md-4 form-group">
|
10
|
+
<%= f.search_field :last_name_cont, placeholder: t('b.last_name'), class: 'form-control' %>
|
11
|
+
</div>
|
12
|
+
|
13
|
+
<div class="col-md-4 form-group">
|
14
|
+
<%= f.search_field :email_cont, placeholder: t('b.email'), class: 'form-control' %>
|
15
|
+
</div>
|
16
|
+
</div>
|
17
|
+
|
18
|
+
<div class="row">
|
19
|
+
<div class="col-md-6">
|
20
|
+
<%= f.submit class: 'btn btn-primary btn-sm' %>
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
<% end %>
|
24
|
+
</div>
|
25
|
+
</div>
|
@@ -1,4 +1,5 @@
|
|
1
1
|
<%= render 'backend/breadcrumbs' %>
|
2
|
+
<%= render 'filter' %>
|
2
3
|
|
3
4
|
<p class="text-xs-right">
|
4
5
|
<%= link_to icon(:plus, t('b.add')), new_backend_user_path, class: 'btn btn-primary btn-sm' %>
|
@@ -10,24 +11,28 @@
|
|
10
11
|
<tr>
|
11
12
|
<th><%= t 'b.name' %></th>
|
12
13
|
<th><%= t 'b.email' %></th>
|
14
|
+
<th><%= t 'b.active' %></th>
|
13
15
|
<th> </th>
|
14
16
|
</tr>
|
15
17
|
</thead>
|
16
18
|
|
17
19
|
<tbody>
|
18
|
-
<% @users.each do |
|
19
|
-
<tr>
|
20
|
-
<td><%=
|
21
|
-
<td><%= mail_to
|
20
|
+
<% @users.each do |u| %>
|
21
|
+
<tr class="<%= 'text-muted' unless u.active? %>">
|
22
|
+
<td><%= u.full_name %></td>
|
23
|
+
<td><%= mail_to u.email %></td>
|
24
|
+
<td><%= t u.active?.to_s %></td>
|
22
25
|
<td class="text-xs-right">
|
23
|
-
<%= link_to icon(:pencil_square_o), edit_backend_user_path(
|
24
|
-
<%= link_to icon(:trash), backend_user_path(
|
26
|
+
<%= link_to icon(:pencil_square_o), edit_backend_user_path(u) %>
|
27
|
+
<%= link_to icon(:trash), backend_user_path(u), method: :delete, data: {confirm: t('b.msg.confirm') }%>
|
25
28
|
</td>
|
26
29
|
</tr>
|
27
30
|
<% end %>
|
28
31
|
</tbody>
|
29
32
|
</table>
|
30
33
|
|
34
|
+
<%= udongo_paginate @users %>
|
35
|
+
|
31
36
|
<% else %>
|
32
37
|
<p><%= t 'b.msg.no_items' %></p>
|
33
38
|
<% end %>
|
data/changelog.md
CHANGED
@@ -1,4 +1,17 @@
|
|
1
|
-
5.0
|
1
|
+
5.1.0 - 2017-02-15
|
2
|
+
--
|
3
|
+
* The users module now orders by last/first name.
|
4
|
+
* The default number of items per page is now 10 instead of 30.
|
5
|
+
* A user now has an active/inactive state that you can manage.
|
6
|
+
* You can now filter users by their first name, last name and email address.
|
7
|
+
* Next to the ```Backend::TranslationForm``` we now added the ```Backend::TranslationWithSeoForm```
|
8
|
+
which makes those forms great again.
|
9
|
+
* Add fix for a collection of checkboxes rendered by SimpleForm to show on
|
10
|
+
multiple lines.
|
11
|
+
* Set a max width for the cell containing the sortable handle.
|
12
|
+
|
13
|
+
|
14
|
+
5.0.2 - 2017-02-13
|
2
15
|
--
|
3
16
|
* Fix bug in the SEO form of b/pages#edit_translation that prevented you from
|
4
17
|
saving SEO data.
|
data/config/locales/nl_forms.yml
CHANGED
data/lib/udongo/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: udongo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.0
|
4
|
+
version: 5.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Davy Hellemans
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-02-
|
12
|
+
date: 2017-02-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -442,6 +442,7 @@ files:
|
|
442
442
|
- app/assets/stylesheets/backend/components/_nav.scss
|
443
443
|
- app/assets/stylesheets/backend/components/_navbar.scss
|
444
444
|
- app/assets/stylesheets/backend/components/_page_tree.scss
|
445
|
+
- app/assets/stylesheets/backend/components/_table.scss
|
445
446
|
- app/assets/stylesheets/backend/components/_tabs.scss
|
446
447
|
- app/assets/stylesheets/backend/custom.scss
|
447
448
|
- app/assets/stylesheets/backend/font-awesome.scss
|
@@ -490,6 +491,7 @@ files:
|
|
490
491
|
- app/forms/backend/page_translation_form.rb
|
491
492
|
- app/forms/backend/snippet_translation_form.rb
|
492
493
|
- app/forms/backend/translation_form.rb
|
494
|
+
- app/forms/backend/translation_with_seo_form.rb
|
493
495
|
- app/helpers/backend/dropdown_helper.rb
|
494
496
|
- app/helpers/backend/pagination_helper.rb
|
495
497
|
- app/helpers/icon_helper.rb
|
@@ -617,6 +619,7 @@ files:
|
|
617
619
|
- app/views/backend/snippets/edit_translation.html.erb
|
618
620
|
- app/views/backend/snippets/index.html.erb
|
619
621
|
- app/views/backend/snippets/new.html.erb
|
622
|
+
- app/views/backend/users/_filter.html.erb
|
620
623
|
- app/views/backend/users/_form.html.erb
|
621
624
|
- app/views/backend/users/_tabs.html.erb
|
622
625
|
- app/views/backend/users/edit.html.erb
|
@@ -718,6 +721,7 @@ files:
|
|
718
721
|
- db/migrate/20170118153840_create_search_modules.rb
|
719
722
|
- db/migrate/20170202170310_rename_key_to_name_for_search_indices.rb
|
720
723
|
- db/migrate/20170212150903_cleanup_user_model.rb
|
724
|
+
- db/migrate/20170215132531_add_active_to_users.rb
|
721
725
|
- lib/tasks/task_extras.rb
|
722
726
|
- lib/tasks/udongo_tasks.rake
|
723
727
|
- lib/udongo.rb
|