udongo 1.0.3 → 1.0.4
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/app/assets/javascripts/backend/flexible_content.js +33 -0
- data/app/assets/javascripts/backend/sortable.js +1 -1
- data/app/assets/stylesheets/backend/pages/_flexible_content.scss +61 -0
- data/app/controllers/backend/admins_controller.rb +7 -7
- data/app/controllers/backend/content/rows/columns_controller.rb +7 -15
- data/app/controllers/backend/content/rows/images_controller.rb +1 -1
- data/app/controllers/backend/content/rows/texts_controller.rb +1 -1
- data/app/controllers/backend/content/rows_controller.rb +4 -13
- data/app/controllers/backend/email_templates_controller.rb +4 -4
- data/app/controllers/backend/emails_controller.rb +3 -3
- data/app/controllers/backend/forms/base_controller.rb +14 -0
- data/app/controllers/backend/forms/submissions_controller.rb +8 -0
- data/app/controllers/backend/forms_controller.rb +7 -0
- data/app/controllers/backend/navigation/items_controller.rb +8 -5
- data/app/controllers/backend/navigations_controller.rb +1 -1
- data/app/controllers/backend/pages_controller.rb +5 -5
- data/app/controllers/backend/redirects_controller.rb +4 -4
- data/app/controllers/backend/sessions_controller.rb +1 -1
- data/app/controllers/backend/snippets_controller.rb +6 -5
- data/app/controllers/backend/tagbox_controller.rb +4 -4
- data/app/controllers/backend_controller.rb +3 -3
- data/app/controllers/catch_all_controller.rb +1 -1
- data/app/controllers/redirects_controller.rb +1 -1
- data/app/decorators/application_decorator.rb +5 -0
- data/app/decorators/content_image_decorator.rb +1 -1
- data/app/decorators/content_row_decorator.rb +9 -0
- data/app/decorators/content_text_decorator.rb +1 -1
- data/app/decorators/form_decorator.rb +16 -0
- data/app/decorators/form_submission_decorator.rb +3 -0
- data/app/decorators/navigation_item_decorator.rb +2 -2
- data/app/decorators/page_decorator.rb +2 -2
- data/app/decorators/pagination_decorator.rb +4 -0
- data/app/decorators/redirect_decorator.rb +1 -1
- data/app/decorators/snippet_decorator.rb +1 -1
- data/app/forms/backend/snippet_form.rb +4 -18
- data/app/helpers/backend/pagination_helper.rb +1 -11
- data/app/helpers/icon_helper.rb +1 -1
- data/app/helpers/snippet_helper.rb +1 -1
- data/app/models/concerns/storable/collection.rb +48 -26
- data/app/models/concerns/translatable.rb +1 -1
- data/app/models/content_row.rb +4 -0
- data/app/models/form.rb +1 -0
- data/app/models/store_with_file.rb +2 -0
- data/app/views/backend/content/_image.html.erb +1 -8
- data/app/views/backend/content/_rows.html.erb +52 -49
- data/app/views/backend/emails/index.html.erb +2 -10
- data/app/views/backend/forms/index.html.erb +27 -0
- data/app/views/backend/forms/submissions/_filter.html.erb +16 -0
- data/app/views/backend/forms/submissions/index.html.erb +34 -0
- data/app/views/backend/redirects/index.html.erb +2 -10
- data/app/views/layouts/backend/_top_navigation.html.erb +1 -0
- data/changelog.md +14 -1
- data/config/locales/en_backend.yml +5 -5
- data/config/locales/nl_backend.yml +10 -10
- data/config/routes.rb +6 -6
- data/db/migrate/20160711114156_add_description_to_forms.rb +5 -0
- data/lib/generators/udongo/form/form_generator.rb +1 -1
- data/lib/tasks/udongo_tasks.rake +1 -1
- data/lib/udongo/config.rb +2 -1
- data/lib/udongo/configs/forms.rb +14 -0
- data/lib/udongo/flexible_content/column_width_calculator.rb +32 -0
- data/lib/udongo/form.rb +36 -0
- data/lib/udongo/forms/config.rb +11 -0
- data/lib/udongo/forms/submission_datagrid.rb +29 -0
- data/lib/udongo/forms/submission_filter.rb +33 -0
- data/lib/udongo/notification.rb +19 -0
- data/lib/udongo/object_path.rb +0 -2
- data/lib/udongo/version.rb +1 -1
- data/lib/udongo/will_paginate/options.rb +40 -0
- data/lib/udongo/will_paginate/renderer.rb +8 -4
- data/lib/udongo.rb +4 -11
- data/readme.md +145 -49
- metadata +24 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9a9d78af6af9e79dc93e988f912f0dc35cf63c32
|
4
|
+
data.tar.gz: 77387997bf2df93647585e6a8c980002d688999a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad09958982bbb2913c20486dcce2b295c6c96533199bc1f79d0684e6875dccbc25a09a7d0aa3b25f382f02584bb2e803480989b7c72575503ab248e01b91cc93
|
7
|
+
data.tar.gz: 08666441135710beb54f0baa767f14c3c3d5a081ac937eb652cf1e0209dd39a2545be838aa4f826ed132f7009aa029bacb2a0a8c7ac666bcb58221ea3e5776af
|
@@ -0,0 +1,33 @@
|
|
1
|
+
var flexible_content = flexible_content || {
|
2
|
+
init: function() {
|
3
|
+
$('#content-rows .cards').sortable({
|
4
|
+
axis: 'y',
|
5
|
+
handle: '.card-header',
|
6
|
+
update: sortable.update_position_listener,
|
7
|
+
tolerance: 'pointer',
|
8
|
+
placeholder: 'placeholder',
|
9
|
+
start: function(e, ui){
|
10
|
+
ui.placeholder.height(ui.item.height());
|
11
|
+
ui.placeholder.css('margin-bottom', ui.item.css('margin-bottom'));
|
12
|
+
}
|
13
|
+
});
|
14
|
+
|
15
|
+
$('.content-columns').sortable({
|
16
|
+
axis: 'x',
|
17
|
+
handle: '.card',
|
18
|
+
update: sortable.update_position_listener,
|
19
|
+
tolerance: 'pointer',
|
20
|
+
placeholder: 'placeholder',
|
21
|
+
start: function(e, ui){
|
22
|
+
var classes = ui.item.attr('class').replace('content-column ') + ' placeholder';
|
23
|
+
ui.placeholder.attr('class', classes);
|
24
|
+
ui.placeholder.height(ui.item.find('.card').height());
|
25
|
+
ui.placeholder.width(ui.item.find('.card').width() - 30);
|
26
|
+
ui.placeholder.css('margin-left', '15px');
|
27
|
+
ui.placeholder.css('margin-right', '15px');
|
28
|
+
}
|
29
|
+
})
|
30
|
+
}
|
31
|
+
}
|
32
|
+
|
33
|
+
$(function(){ flexible_content.init(); });
|
@@ -1,5 +1,66 @@
|
|
1
1
|
#content-rows {
|
2
2
|
margin-bottom: 35px;
|
3
|
+
|
4
|
+
.placeholder {
|
5
|
+
background-color: #ffdc99;
|
6
|
+
border: 1px solid #ddba77;
|
7
|
+
border-radius: 4px;
|
8
|
+
opacity: 0.5;
|
9
|
+
}
|
10
|
+
|
11
|
+
.handle {
|
12
|
+
cursor: move;
|
13
|
+
}
|
14
|
+
|
15
|
+
.content-column {
|
16
|
+
.card {
|
17
|
+
&:hover {
|
18
|
+
border: 1px solid #999;
|
19
|
+
|
20
|
+
.btn-group a {
|
21
|
+
border: 1px solid #999 !important;
|
22
|
+
border-bottom: none !important;
|
23
|
+
color: #333 !important;
|
24
|
+
}
|
25
|
+
}
|
26
|
+
|
27
|
+
.card-footer {
|
28
|
+
background-color: white;
|
29
|
+
padding-bottom: 4px;
|
30
|
+
padding-top: 20px;
|
31
|
+
border-top: none;
|
32
|
+
|
33
|
+
.btn-group {
|
34
|
+
position: absolute;
|
35
|
+
bottom: 0;
|
36
|
+
left: 0;
|
37
|
+
|
38
|
+
a {
|
39
|
+
border: 1px solid #e5e5e5;
|
40
|
+
border-bottom: none;
|
41
|
+
color: #e5e5e5;
|
42
|
+
|
43
|
+
&:first-child {
|
44
|
+
border-left: none !important;
|
45
|
+
border-top-left-radius: 0;
|
46
|
+
}
|
47
|
+
|
48
|
+
&:last-child {
|
49
|
+
border-bottom-right-radius: 0;
|
50
|
+
}
|
51
|
+
}
|
52
|
+
}
|
53
|
+
}
|
54
|
+
}
|
55
|
+
}
|
56
|
+
|
57
|
+
a.btn.full-width {
|
58
|
+
width: 100%;
|
59
|
+
}
|
60
|
+
|
61
|
+
a.btn.block {
|
62
|
+
padding: 25px;
|
63
|
+
}
|
3
64
|
}
|
4
65
|
|
5
66
|
.lightbox {
|
@@ -3,7 +3,7 @@ class Backend::AdminsController < BackendController
|
|
3
3
|
before_action -> { breadcrumb.add t('b.admins'), backend_admins_path }
|
4
4
|
|
5
5
|
def index
|
6
|
-
@admins =
|
6
|
+
@admins = Admin.all
|
7
7
|
end
|
8
8
|
|
9
9
|
def show
|
@@ -11,14 +11,14 @@ class Backend::AdminsController < BackendController
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def new
|
14
|
-
@admin =
|
14
|
+
@admin = Admin.new
|
15
15
|
end
|
16
16
|
|
17
17
|
def create
|
18
|
-
@admin =
|
18
|
+
@admin = Admin.new allowed_params
|
19
19
|
|
20
20
|
if @admin.save
|
21
|
-
redirect_to backend_admins_path, notice:
|
21
|
+
redirect_to backend_admins_path, notice: translate_notice(:added, :admin)
|
22
22
|
else
|
23
23
|
render :new
|
24
24
|
end
|
@@ -26,7 +26,7 @@ class Backend::AdminsController < BackendController
|
|
26
26
|
|
27
27
|
def update
|
28
28
|
if @admin.update_attributes allowed_params
|
29
|
-
redirect_to backend_admins_path, notice:
|
29
|
+
redirect_to backend_admins_path, notice: translate_notice(:changes_saved)
|
30
30
|
else
|
31
31
|
render :edit
|
32
32
|
end
|
@@ -34,13 +34,13 @@ class Backend::AdminsController < BackendController
|
|
34
34
|
|
35
35
|
def destroy
|
36
36
|
@admin.destroy
|
37
|
-
redirect_to backend_admins_path, notice:
|
37
|
+
redirect_to backend_admins_path, notice: translate_notice(:deleted, :admin)
|
38
38
|
end
|
39
39
|
|
40
40
|
private
|
41
41
|
|
42
42
|
def find_admin
|
43
|
-
@admin =
|
43
|
+
@admin = Admin.find params[:id]
|
44
44
|
end
|
45
45
|
|
46
46
|
def allowed_params
|
@@ -1,10 +1,12 @@
|
|
1
1
|
class Backend::Content::Rows::ColumnsController < BackendController
|
2
|
+
include Concerns::Backend::PositionableController
|
3
|
+
|
2
4
|
before_action :find_row
|
3
|
-
before_action :
|
5
|
+
before_action :find_model, only: [:edit, :update, :update_position, :destroy]
|
4
6
|
layout 'backend/lightbox'
|
5
7
|
|
6
8
|
def new
|
7
|
-
@column = @row.columns.new
|
9
|
+
@column = @row.columns.new(@row.column_width_calculator.hashed_values)
|
8
10
|
cancel_url
|
9
11
|
end
|
10
12
|
|
@@ -29,16 +31,6 @@ class Backend::Content::Rows::ColumnsController < BackendController
|
|
29
31
|
end
|
30
32
|
end
|
31
33
|
|
32
|
-
def move_up
|
33
|
-
@column.move_higher
|
34
|
-
redirect_to cancel_url
|
35
|
-
end
|
36
|
-
|
37
|
-
def move_down
|
38
|
-
@column.move_lower
|
39
|
-
redirect_to cancel_url
|
40
|
-
end
|
41
|
-
|
42
34
|
def destroy
|
43
35
|
@column.destroy
|
44
36
|
|
@@ -49,11 +41,11 @@ class Backend::Content::Rows::ColumnsController < BackendController
|
|
49
41
|
private
|
50
42
|
|
51
43
|
def find_row
|
52
|
-
@row =
|
44
|
+
@row = ContentRow.find params[:row_id]
|
53
45
|
end
|
54
46
|
|
55
|
-
def
|
56
|
-
@column =
|
47
|
+
def find_model
|
48
|
+
@column = ContentColumn.find params[:id]
|
57
49
|
end
|
58
50
|
|
59
51
|
def allowed_params
|
@@ -1,5 +1,6 @@
|
|
1
1
|
class Backend::Content::RowsController < BackendController
|
2
|
-
|
2
|
+
include Concerns::Backend::PositionableController
|
3
|
+
before_action :find_model, only: [:update_position, :destroy]
|
3
4
|
|
4
5
|
def new
|
5
6
|
if params[:klass] && params[:id] && params[:locale]
|
@@ -12,16 +13,6 @@ class Backend::Content::RowsController < BackendController
|
|
12
13
|
end
|
13
14
|
end
|
14
15
|
|
15
|
-
def move_up
|
16
|
-
@row.move_higher
|
17
|
-
redirect_back_to_content
|
18
|
-
end
|
19
|
-
|
20
|
-
def move_down
|
21
|
-
@row.move_lower
|
22
|
-
redirect_back_to_content
|
23
|
-
end
|
24
|
-
|
25
16
|
def destroy
|
26
17
|
@row.destroy
|
27
18
|
redirect_back_to_content('content-rows')
|
@@ -29,8 +20,8 @@ class Backend::Content::RowsController < BackendController
|
|
29
20
|
|
30
21
|
private
|
31
22
|
|
32
|
-
def
|
33
|
-
@row =
|
23
|
+
def find_model
|
24
|
+
@row = ContentRow.find params[:id]
|
34
25
|
end
|
35
26
|
|
36
27
|
def content_path(instance, locale, anchor)
|
@@ -6,15 +6,15 @@ class Backend::EmailTemplatesController < BackendController
|
|
6
6
|
before_action -> { breadcrumb.add t('b.email_templates'), backend_email_templates_path }
|
7
7
|
|
8
8
|
def index
|
9
|
-
@email_templates =
|
9
|
+
@email_templates = EmailTemplate.all
|
10
10
|
end
|
11
11
|
|
12
12
|
def new
|
13
|
-
@model =
|
13
|
+
@model = EmailTemplate.new
|
14
14
|
end
|
15
15
|
|
16
16
|
def create
|
17
|
-
@model =
|
17
|
+
@model = EmailTemplate.new allowed_params
|
18
18
|
|
19
19
|
if @model.save
|
20
20
|
redirect_to edit_translation_backend_email_template_path(@model, translation_locale: default_locale), notice: translate_notice(:added, :email_template)
|
@@ -34,7 +34,7 @@ class Backend::EmailTemplatesController < BackendController
|
|
34
34
|
private
|
35
35
|
|
36
36
|
def find_model
|
37
|
-
@model =
|
37
|
+
@model = EmailTemplate.find params[:id]
|
38
38
|
end
|
39
39
|
|
40
40
|
def translation_form
|
@@ -4,15 +4,15 @@ class Backend::EmailsController < BackendController
|
|
4
4
|
before_action -> { breadcrumb.add t('b.emails'), backend_emails_path }
|
5
5
|
|
6
6
|
def index
|
7
|
-
@emails = paginate
|
7
|
+
@emails = paginate Email.all.order('id DESC')
|
8
8
|
end
|
9
9
|
|
10
10
|
def show
|
11
|
-
@email =
|
11
|
+
@email = Email.find params[:id]
|
12
12
|
end
|
13
13
|
|
14
14
|
def html_content
|
15
|
-
@email =
|
15
|
+
@email = Email.find params[:id]
|
16
16
|
render text: @email.html_content
|
17
17
|
end
|
18
18
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class Backend::Forms::BaseController < BackendController
|
2
|
+
before_action :find_form
|
3
|
+
|
4
|
+
before_action -> do
|
5
|
+
breadcrumb.add t('b.forms'), backend_forms_path
|
6
|
+
breadcrumb.add @form.description
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def find_form
|
12
|
+
@form ||= Form.find(params[:form_id].to_i).decorate
|
13
|
+
end
|
14
|
+
end
|
@@ -14,7 +14,8 @@ class Backend::Navigation::ItemsController < BackendController
|
|
14
14
|
@model = @navigation.items.new(allowed_params).decorate
|
15
15
|
|
16
16
|
if @model.save
|
17
|
-
redirect_to backend_navigations_path,
|
17
|
+
redirect_to backend_navigations_path,
|
18
|
+
notice: translate_notice(:added, :navigation_item)
|
18
19
|
else
|
19
20
|
render :new
|
20
21
|
end
|
@@ -22,7 +23,8 @@ class Backend::Navigation::ItemsController < BackendController
|
|
22
23
|
|
23
24
|
def update
|
24
25
|
if @model.update_attributes allowed_params
|
25
|
-
redirect_to backend_navigations_path,
|
26
|
+
redirect_to backend_navigations_path,
|
27
|
+
notice: translate_notice(:changes_saved)
|
26
28
|
else
|
27
29
|
render :edit
|
28
30
|
end
|
@@ -30,17 +32,18 @@ class Backend::Navigation::ItemsController < BackendController
|
|
30
32
|
|
31
33
|
def destroy
|
32
34
|
@model.destroy
|
33
|
-
redirect_to backend_navigations_path,
|
35
|
+
redirect_to backend_navigations_path,
|
36
|
+
notice: translate_notice(:deleted, :navigation_item)
|
34
37
|
end
|
35
38
|
|
36
39
|
private
|
37
40
|
|
38
41
|
def find_navigation
|
39
|
-
@navigation =
|
42
|
+
@navigation = Navigation.find params[:navigation_id]
|
40
43
|
end
|
41
44
|
|
42
45
|
def find_model
|
43
|
-
@model =
|
46
|
+
@model = NavigationItem.find(params[:id]).decorate
|
44
47
|
end
|
45
48
|
|
46
49
|
def allowed_params
|
@@ -5,7 +5,7 @@ class Backend::PagesController < BackendController
|
|
5
5
|
before_action -> { breadcrumb.add t('b.pages'), backend_pages_path }
|
6
6
|
|
7
7
|
def index
|
8
|
-
@pages =
|
8
|
+
@pages = Page.all
|
9
9
|
|
10
10
|
respond_to do |format|
|
11
11
|
format.html
|
@@ -16,11 +16,11 @@ class Backend::PagesController < BackendController
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def new
|
19
|
-
@model =
|
19
|
+
@model = Page.new.decorate
|
20
20
|
end
|
21
21
|
|
22
22
|
def create
|
23
|
-
@model =
|
23
|
+
@model = Page.new(params.require('page').permit(:description, :visible, :parent_id)).decorate
|
24
24
|
|
25
25
|
if @model.save
|
26
26
|
redirect_to edit_backend_page_path(@model), notice: translate_notice(:added, :page)
|
@@ -46,7 +46,7 @@ class Backend::PagesController < BackendController
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def page_tree_data(parent_id: nil)
|
49
|
-
|
49
|
+
Page.where(parent_id: parent_id).inject([]) do |data, p|
|
50
50
|
hash = node_data p
|
51
51
|
hash[:children] = page_tree_data(parent_id: p.id) if p.children.any?
|
52
52
|
data << hash
|
@@ -56,7 +56,7 @@ class Backend::PagesController < BackendController
|
|
56
56
|
private
|
57
57
|
|
58
58
|
def find_model
|
59
|
-
@model =
|
59
|
+
@model = Page.find(params[:id]).decorate
|
60
60
|
end
|
61
61
|
|
62
62
|
def translation_form
|
@@ -5,16 +5,16 @@ class Backend::RedirectsController < BackendController
|
|
5
5
|
before_action :find_model, only: [:edit, :update, :destroy]
|
6
6
|
|
7
7
|
def index
|
8
|
-
@search =
|
8
|
+
@search = Redirect.ransack params[:q]
|
9
9
|
@redirects = @search.result(distinct: true).order('times_used DESC').page(page_number).per_page(per_page)
|
10
10
|
end
|
11
11
|
|
12
12
|
def new
|
13
|
-
@redirect =
|
13
|
+
@redirect = Redirect.new(status_code: 301).decorate
|
14
14
|
end
|
15
15
|
|
16
16
|
def create
|
17
|
-
@redirect =
|
17
|
+
@redirect = Redirect.new(allowed_params).decorate
|
18
18
|
|
19
19
|
if @redirect.save
|
20
20
|
redirect_to backend_redirects_path, notice: translate_notice(:added, :redirect)
|
@@ -45,6 +45,6 @@ class Backend::RedirectsController < BackendController
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def find_model
|
48
|
-
@redirect =
|
48
|
+
@redirect = Redirect.find(params[:id]).decorate
|
49
49
|
end
|
50
50
|
end
|
@@ -3,7 +3,7 @@ class Backend::SessionsController < BackendController
|
|
3
3
|
layout 'backend/login'
|
4
4
|
|
5
5
|
def create
|
6
|
-
admin =
|
6
|
+
admin = Admin.find_by(email: params[:session][:email])
|
7
7
|
|
8
8
|
if admin && admin.authenticate(params[:session][:password])
|
9
9
|
session[:admin_id] = admin.id
|
@@ -5,19 +5,19 @@ class Backend::SnippetsController < BackendController
|
|
5
5
|
before_action -> { breadcrumb.add t('b.snippets'), backend_snippets_path }
|
6
6
|
|
7
7
|
def index
|
8
|
-
@snippets =
|
8
|
+
@snippets = Snippet.order(:description)
|
9
9
|
end
|
10
10
|
|
11
11
|
def new
|
12
12
|
@form = Backend::SnippetForm.new
|
13
|
-
# @model = ::Snippet.new
|
14
13
|
end
|
15
14
|
|
16
15
|
def create
|
17
16
|
@form = Backend::SnippetForm.new
|
18
17
|
|
19
18
|
if @form.save params[:snippet]
|
20
|
-
redirect_to edit_translation_backend_snippet_path(@form.snippet, translation_locale: default_locale),
|
19
|
+
redirect_to edit_translation_backend_snippet_path(@form.snippet, translation_locale: default_locale),
|
20
|
+
notice: translate_notice(:added, :snippet)
|
21
21
|
else
|
22
22
|
render :new
|
23
23
|
end
|
@@ -31,7 +31,8 @@ class Backend::SnippetsController < BackendController
|
|
31
31
|
@form = Backend::SnippetForm.new(@model)
|
32
32
|
|
33
33
|
if @form.save params[:snippet]
|
34
|
-
redirect_to edit_backend_snippet_path(@model),
|
34
|
+
redirect_to edit_backend_snippet_path(@model),
|
35
|
+
notice: translate_notice(:edited, :snippet)
|
35
36
|
else
|
36
37
|
render :edit
|
37
38
|
end
|
@@ -40,7 +41,7 @@ class Backend::SnippetsController < BackendController
|
|
40
41
|
private
|
41
42
|
|
42
43
|
def find_model
|
43
|
-
@model =
|
44
|
+
@model = Snippet.find params[:id]
|
44
45
|
end
|
45
46
|
|
46
47
|
def translation_form
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class Backend::TagboxController < BackendController
|
2
2
|
def index
|
3
|
-
tags =
|
3
|
+
tags = Tag.by_locale(locale).pluck(:name).map do |name|
|
4
4
|
{ label: name, value: name }
|
5
5
|
end
|
6
6
|
|
@@ -25,15 +25,15 @@ class Backend::TagboxController < BackendController
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def find_tag
|
28
|
-
|
28
|
+
Tag.find_by locale: params[:locale], name: params[:tag]
|
29
29
|
end
|
30
30
|
|
31
31
|
def tag_creatable?
|
32
|
-
|
32
|
+
!Tag.exists?(tag_params) && Udongo.config.allow_new_tags?
|
33
33
|
end
|
34
34
|
|
35
35
|
def create_tag
|
36
|
-
|
36
|
+
Tag.create! tag_params
|
37
37
|
end
|
38
38
|
|
39
39
|
def tag_params
|
@@ -10,12 +10,12 @@ class BackendController < ActionController::Base
|
|
10
10
|
helper_method :breadcrumb
|
11
11
|
|
12
12
|
def current_admin
|
13
|
-
@current_admin ||=
|
13
|
+
@current_admin ||= Admin.find(session[:admin_id]) if session[:admin_id]
|
14
14
|
end
|
15
15
|
helper_method :current_admin
|
16
16
|
|
17
|
-
def translate_notice(notice, actor)
|
18
|
-
|
17
|
+
def translate_notice(notice, actor = nil)
|
18
|
+
Udongo::Notification.new(notice).translate(actor)
|
19
19
|
end
|
20
20
|
|
21
21
|
def default_locale
|
@@ -0,0 +1,9 @@
|
|
1
|
+
class ContentRowDecorator < ApplicationDecorator
|
2
|
+
delegate_all
|
3
|
+
|
4
|
+
# If the max. column count for the biggest screen medium is met, we can safely
|
5
|
+
# assume no more additional columns are needed.
|
6
|
+
def column_limit_reached?
|
7
|
+
column_width_calculator.total(:width_xl) >= 12
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class FormDecorator < ApplicationDecorator
|
2
|
+
delegate_all
|
3
|
+
|
4
|
+
def datagrid
|
5
|
+
@datagrid ||= Udongo::Forms::SubmissionDatagrid.new(object)
|
6
|
+
end
|
7
|
+
|
8
|
+
def datagrid_fields_configured?
|
9
|
+
Udongo.config.forms.send(identifier).datagrid_fields.any?
|
10
|
+
end
|
11
|
+
|
12
|
+
def email_present?
|
13
|
+
return false if datagrid_fields_configured?
|
14
|
+
data.select('DISTINCT name').map(&:name).include?('email')
|
15
|
+
end
|
16
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class NavigationItemDecorator <
|
1
|
+
class NavigationItemDecorator < ApplicationDecorator
|
2
2
|
delegate_all
|
3
3
|
|
4
4
|
def label
|
@@ -22,7 +22,7 @@ class NavigationItemDecorator < Draper::Decorator
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def options_for_page
|
25
|
-
|
25
|
+
Page.order(:description).map do |p|
|
26
26
|
[p.description, p.id]
|
27
27
|
end
|
28
28
|
end
|