udongo 2.0.4 → 3.0.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/javascripts/backend/application.js +1 -0
- data/app/assets/javascripts/backend/bootstrap.js +3 -3569
- data/app/assets/javascripts/backend/tree.js +106 -65
- data/app/assets/stylesheets/backend/application.scss +2 -0
- data/app/assets/stylesheets/backend/bootstrap.scss +29 -51
- data/app/assets/stylesheets/backend/components/_page_tree.scss +9 -0
- data/app/assets/stylesheets/backend/custom.scss +0 -0
- data/app/assets/stylesheets/backend/font-awesome.scss +644 -1977
- data/app/assets/stylesheets/backend/udongo.scss +1 -0
- data/app/controllers/backend/admins_controller.rb +2 -2
- data/app/controllers/{backend_controller.rb → backend/base_controller.rb} +13 -5
- data/app/controllers/backend/content/rows/columns_controller.rb +1 -1
- 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 +1 -1
- data/app/controllers/backend/dashboard_controller.rb +1 -1
- data/app/controllers/backend/email_templates_controller.rb +12 -12
- data/app/controllers/backend/emails_controller.rb +1 -1
- data/app/controllers/backend/navigation/items_controller.rb +9 -11
- data/app/controllers/backend/navigations_controller.rb +1 -1
- data/app/controllers/backend/pages_controller.rb +17 -39
- data/app/controllers/backend/redirects_controller.rb +1 -1
- data/app/controllers/backend/seo_controller.rb +1 -1
- data/app/controllers/backend/sessions_controller.rb +1 -1
- data/app/controllers/backend/snippets_controller.rb +14 -13
- data/app/controllers/backend/tagbox_controller.rb +1 -1
- data/app/controllers/catch_all_controller.rb +1 -1
- data/app/controllers/concerns/backend/content_type_controller.rb +3 -1
- data/app/controllers/redirects_controller.rb +1 -1
- data/app/decorators/page_decorator.rb +1 -4
- data/app/forms/backend/email_template_translation_form.rb +1 -23
- data/app/forms/backend/navigation_item_translation_form.rb +1 -23
- data/app/forms/backend/page_translation_form.rb +13 -18
- data/app/forms/backend/snippet_translation_form.rb +1 -23
- data/app/forms/backend/translation_form.rb +22 -0
- data/app/helpers/udongo_helper.rb +0 -4
- data/app/mailers/general_mailer.rb +14 -4
- data/app/models/admin.rb +2 -2
- data/app/models/comment.rb +1 -2
- data/app/models/concerns/addressable.rb +40 -0
- data/app/models/concerns/addressable/config.rb +33 -0
- data/app/models/concerns/cacheable.rb +1 -1
- data/app/models/email.rb +2 -2
- data/app/models/email_template.rb +2 -1
- data/app/views/backend/_general_form_error.html.erb +6 -0
- data/app/views/backend/admins/_form.html.erb +3 -0
- data/app/views/backend/content/rows/columns/_dimension_fields.html.erb +3 -0
- data/app/views/backend/content/rows/columns/edit.html.erb +3 -5
- data/app/views/backend/content/rows/columns/new.html.erb +3 -5
- data/app/views/backend/content/rows/images/edit.html.erb +2 -0
- data/app/views/backend/dashboard/show.html.erb +1 -1
- data/app/views/backend/email_templates/_form.html.erb +29 -7
- data/app/views/backend/email_templates/_tabs.html.erb +1 -1
- data/app/views/backend/email_templates/edit_translation.html.erb +1 -0
- data/app/views/backend/navigation/items/_form.html.erb +4 -2
- data/app/views/backend/navigation/items/_tabs.html.erb +1 -1
- data/app/views/backend/navigation/items/edit_translation.html.erb +1 -0
- data/app/views/backend/pages/_form.html.erb +4 -2
- data/app/views/backend/pages/_tabs.html.erb +1 -1
- data/app/views/backend/pages/edit_translation.html.erb +1 -0
- data/app/views/backend/redirects/_form.html.erb +2 -0
- data/app/views/backend/snippets/_form.html.erb +3 -1
- data/app/views/backend/snippets/_tabs.html.erb +1 -1
- data/app/views/backend/snippets/edit.html.erb +1 -1
- data/app/views/backend/snippets/edit_translation.html.erb +1 -0
- data/app/views/backend/snippets/new.html.erb +1 -1
- data/app/views/layouts/backend/_top_navigation.html.erb +1 -2
- data/changelog.md +38 -0
- data/config/initializers/simple_form_bootstrap.rb +13 -9
- data/config/locales/en_backend.yml +1 -4
- data/config/locales/en_forms.yml +3 -0
- data/config/locales/nl_backend.yml +3 -4
- data/config/locales/nl_forms.yml +3 -0
- data/config/routes.rb +5 -7
- data/db/migrate/20160815100903_remove_form_models.rb +9 -0
- data/db/migrate/20161014135637_add_category_to_admin.rb +5 -0
- data/db/migrate/20161029124558_add_locale_to_admin.rb +6 -0
- data/db/migrate/20161029130557_add_bcc_and_cc_to_email_templates.rb +6 -0
- data/db/migrate/20161029171056_add_ccc_and_bcc_to_email.rb +6 -0
- data/lib/udongo/configs/flexible_content.rb +7 -0
- data/lib/udongo/configs/i18n.rb +5 -3
- data/lib/udongo/configs/i18ns/app.rb +12 -0
- data/lib/udongo/configs/i18ns/cms.rb +12 -0
- data/lib/udongo/flexible_content/column_width_calculator.rb +4 -2
- data/lib/udongo/pages/tree.rb +15 -0
- data/lib/udongo/pages/tree_node.rb +43 -0
- data/lib/udongo/version.rb +1 -1
- data/readme.md +103 -43
- data/vendor/assets/javascripts/backend/select2.min.js +3 -0
- data/vendor/assets/stylesheets/backend/jstree/default/style.scss +3 -3
- data/vendor/assets/stylesheets/backend/select2.min.scss +1 -0
- metadata +22 -30
- data/app/controllers/backend/forms/base_controller.rb +0 -14
- data/app/controllers/backend/forms/submissions_controller.rb +0 -8
- data/app/controllers/backend/forms_controller.rb +0 -7
- data/app/controllers/backend/webserver_controller.rb +0 -6
- data/app/decorators/form_decorator.rb +0 -16
- data/app/decorators/form_submission_decorator.rb +0 -3
- data/app/forms/backend/email_template_form.rb +0 -38
- data/app/forms/backend/navigation_item_form.rb +0 -23
- data/app/forms/backend/page_form.rb +0 -26
- data/app/forms/backend/snippet_form.rb +0 -35
- data/app/models/form.rb +0 -10
- data/app/models/form_field.rb +0 -15
- data/app/models/form_field_validation.rb +0 -11
- data/app/models/form_submission.rb +0 -15
- data/app/models/form_submission_data.rb +0 -5
- data/app/views/backend/_form_errors.html.erb +0 -15
- data/app/views/backend/forms/index.html.erb +0 -27
- data/app/views/backend/forms/submissions/_filter.html.erb +0 -16
- data/app/views/backend/forms/submissions/index.html.erb +0 -34
- data/lib/generators/udongo/form/form_generator.rb +0 -62
- data/lib/generators/udongo/form/templates/form.rb +0 -18
- data/lib/udongo/configs/forms.rb +0 -18
- data/lib/udongo/configs/routes.rb +0 -13
- data/lib/udongo/email_vars/form_submission.rb +0 -18
- data/lib/udongo/forms/submission_datagrid.rb +0 -27
- data/lib/udongo/forms/submission_filter.rb +0 -31
@@ -1,4 +1,4 @@
|
|
1
|
-
class Backend::AdminsController <
|
1
|
+
class Backend::AdminsController < Backend::BaseController
|
2
2
|
before_action :find_admin, only: [:show, :edit, :update, :destroy]
|
3
3
|
before_action -> { breadcrumb.add t('b.admins'), backend_admins_path }
|
4
4
|
|
@@ -45,7 +45,7 @@ class Backend::AdminsController < BackendController
|
|
45
45
|
|
46
46
|
def allowed_params
|
47
47
|
params[:admin].permit(
|
48
|
-
:first_name, :last_name, :email, :password, :password_confirmation
|
48
|
+
:locale, :first_name, :last_name, :email, :password, :password_confirmation
|
49
49
|
)
|
50
50
|
end
|
51
51
|
|
@@ -1,8 +1,8 @@
|
|
1
|
-
class
|
1
|
+
class Backend::BaseController < ActionController::Base
|
2
2
|
include Udongo::Cryptography
|
3
3
|
|
4
4
|
layout 'backend/application'
|
5
|
-
before_action :check_login
|
5
|
+
before_action :interface_locale, :check_login
|
6
6
|
|
7
7
|
def breadcrumb
|
8
8
|
@breadcrumb ||= Udongo::Breadcrumb.new
|
@@ -18,13 +18,21 @@ class BackendController < ActionController::Base
|
|
18
18
|
Udongo::Notification.new(notice).translate(actor)
|
19
19
|
end
|
20
20
|
|
21
|
-
def
|
22
|
-
Udongo.config.i18n.default_locale
|
21
|
+
def default_app_locale
|
22
|
+
Udongo.config.i18n.app.default_locale
|
23
23
|
end
|
24
|
-
helper_method :
|
24
|
+
helper_method :default_app_locale
|
25
25
|
|
26
26
|
private
|
27
27
|
|
28
|
+
def interface_locale
|
29
|
+
if current_admin && current_admin.locale.present?
|
30
|
+
I18n.locale = current_admin.locale
|
31
|
+
else
|
32
|
+
I18n.locale = Udongo.config.i18n.cms.default_interface_locale
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
28
36
|
def check_login
|
29
37
|
unless current_admin
|
30
38
|
session[:backend_redirect] = request.url
|
@@ -1,2 +1,2 @@
|
|
1
|
-
class Backend::DashboardController <
|
1
|
+
class Backend::DashboardController < Backend::BaseController
|
2
2
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class Backend::EmailTemplatesController <
|
1
|
+
class Backend::EmailTemplatesController < Backend::BaseController
|
2
2
|
include Concerns::Backend::TranslatableController
|
3
3
|
include Concerns::Backend::PositionableController
|
4
4
|
|
@@ -10,27 +10,21 @@ class Backend::EmailTemplatesController < BackendController
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def new
|
13
|
-
@
|
13
|
+
@model = EmailTemplate.new
|
14
14
|
end
|
15
15
|
|
16
16
|
def create
|
17
|
-
@
|
17
|
+
@model = EmailTemplate.new allowed_params
|
18
18
|
|
19
|
-
if @
|
20
|
-
redirect_to edit_translation_backend_email_template_path(@
|
19
|
+
if @model.save
|
20
|
+
redirect_to edit_translation_backend_email_template_path(@model, translation_locale: default_app_locale), notice: translate_notice(:added, :email_template)
|
21
21
|
else
|
22
22
|
render :new
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
def edit
|
27
|
-
@form = Backend::EmailTemplateForm.new(@model)
|
28
|
-
end
|
29
|
-
|
30
26
|
def update
|
31
|
-
|
32
|
-
|
33
|
-
if @form.save params[:email_template]
|
27
|
+
if @model.update_attributes allowed_params
|
34
28
|
redirect_to edit_backend_email_template_path(@model), notice: translate_notice(:edited, :email_template)
|
35
29
|
else
|
36
30
|
render :edit
|
@@ -43,6 +37,12 @@ class Backend::EmailTemplatesController < BackendController
|
|
43
37
|
@model = EmailTemplate.find params[:id]
|
44
38
|
end
|
45
39
|
|
40
|
+
def allowed_params
|
41
|
+
params[:email_template].permit(
|
42
|
+
:identifier, :description, :from_name, :from_email, :cc, :bcc
|
43
|
+
)
|
44
|
+
end
|
45
|
+
|
46
46
|
def translation_form
|
47
47
|
Backend::EmailTemplateTranslationForm.new(
|
48
48
|
@model, @model.translation(params[:translation_locale])
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class Backend::Navigation::ItemsController <
|
1
|
+
class Backend::Navigation::ItemsController < Backend::BaseController
|
2
2
|
include Concerns::Backend::TranslatableController
|
3
3
|
include Concerns::Backend::PositionableController
|
4
4
|
|
@@ -7,27 +7,21 @@ class Backend::Navigation::ItemsController < BackendController
|
|
7
7
|
before_action { breadcrumb.add t('b.navigation'), backend_navigations_path }
|
8
8
|
|
9
9
|
def new
|
10
|
-
@
|
10
|
+
@model = @navigation.items.new.decorate
|
11
11
|
end
|
12
12
|
|
13
13
|
def create
|
14
|
-
@
|
14
|
+
@model = @navigation.items.new(allowed_params).decorate
|
15
15
|
|
16
|
-
if @
|
16
|
+
if @model.save
|
17
17
|
redirect_to backend_navigations_path, notice: translate_notice(:added, :navigation_item)
|
18
18
|
else
|
19
19
|
render :new
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
def edit
|
24
|
-
@form = Backend::NavigationItemForm.new(@model)
|
25
|
-
end
|
26
|
-
|
27
23
|
def update
|
28
|
-
|
29
|
-
|
30
|
-
if @form.save params[:navigation_item]
|
24
|
+
if @model.update_attributes allowed_params
|
31
25
|
redirect_to backend_navigations_path, notice: translate_notice(:changes_saved)
|
32
26
|
else
|
33
27
|
render :edit
|
@@ -49,6 +43,10 @@ class Backend::Navigation::ItemsController < BackendController
|
|
49
43
|
@model = NavigationItem.find(params[:id]).decorate
|
50
44
|
end
|
51
45
|
|
46
|
+
def allowed_params
|
47
|
+
params[:navigation_item].permit(:page_id, :extra)
|
48
|
+
end
|
49
|
+
|
52
50
|
def translation_form
|
53
51
|
Backend::NavigationItemTranslationForm.new(
|
54
52
|
@model, @model.translation(params[:translation_locale])
|
@@ -1,7 +1,7 @@
|
|
1
|
-
class Backend::PagesController <
|
1
|
+
class Backend::PagesController < Backend::BaseController
|
2
2
|
include Concerns::Backend::TranslatableController
|
3
3
|
|
4
|
-
before_action :find_model,
|
4
|
+
before_action :find_model, except: [:index, :new, :create]
|
5
5
|
before_action -> { breadcrumb.add t('b.pages'), backend_pages_path }
|
6
6
|
|
7
7
|
def index
|
@@ -10,39 +10,38 @@ class Backend::PagesController < BackendController
|
|
10
10
|
respond_to do |format|
|
11
11
|
format.html
|
12
12
|
format.json {
|
13
|
-
render json:
|
13
|
+
render json: Udongo::Pages::Tree.new(self).data
|
14
14
|
}
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
18
|
def new
|
19
|
-
@
|
19
|
+
@model = Page.new.decorate
|
20
20
|
end
|
21
21
|
|
22
22
|
def create
|
23
|
-
@
|
23
|
+
@model = Page.new(allowed_params).decorate
|
24
24
|
|
25
|
-
if @
|
26
|
-
redirect_to edit_backend_page_path(@
|
25
|
+
if @model.save
|
26
|
+
redirect_to edit_backend_page_path(@model), notice: translate_notice(:added, :page)
|
27
27
|
else
|
28
28
|
render :new
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
-
def edit
|
33
|
-
@form = Backend::PageForm.new(@model)
|
34
|
-
end
|
35
|
-
|
36
32
|
def update
|
37
|
-
|
38
|
-
|
39
|
-
if @form.save params[:page]
|
33
|
+
if @model.update_attributes allowed_params
|
40
34
|
redirect_to edit_backend_page_path(@model), notice: translate_notice(:edited, :page)
|
41
35
|
else
|
42
36
|
render :edit
|
43
37
|
end
|
44
38
|
end
|
45
39
|
|
40
|
+
def toggle_visibility
|
41
|
+
@model.visible? ? @model.hide! : @model.show!
|
42
|
+
render json: { toggled: @model }
|
43
|
+
end
|
44
|
+
|
46
45
|
def tree_drag_and_drop
|
47
46
|
# TODO (Dave) - check if this page is draggable.
|
48
47
|
render json: { moved: @model.set_position(params[:position], params[:parent_id]) }
|
@@ -53,20 +52,16 @@ class Backend::PagesController < BackendController
|
|
53
52
|
render json: { trashed: @model.destroy }
|
54
53
|
end
|
55
54
|
|
56
|
-
def page_tree_data(parent_id: nil)
|
57
|
-
Page.where(parent_id: parent_id).inject([]) do |data, p|
|
58
|
-
hash = node_data p
|
59
|
-
hash[:children] = page_tree_data(parent_id: p.id) if p.children.any?
|
60
|
-
data << hash
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
55
|
private
|
65
56
|
|
66
57
|
def find_model
|
67
58
|
@model = Page.find(params[:id]).decorate
|
68
59
|
end
|
69
60
|
|
61
|
+
def allowed_params
|
62
|
+
params[:page].permit(:description, :parent_id, :visible)
|
63
|
+
end
|
64
|
+
|
70
65
|
def translation_form
|
71
66
|
Backend::PageTranslationForm.new(
|
72
67
|
@model,
|
@@ -74,21 +69,4 @@ class Backend::PagesController < BackendController
|
|
74
69
|
@model.seo(params[:translation_locale])
|
75
70
|
)
|
76
71
|
end
|
77
|
-
|
78
|
-
def node_data(page)
|
79
|
-
{
|
80
|
-
text: page.description,
|
81
|
-
type: :file,
|
82
|
-
state: { selected: false },
|
83
|
-
data: {
|
84
|
-
id: page.id,
|
85
|
-
url: edit_backend_page_path(page),
|
86
|
-
delete_url: backend_page_path(page, format: :json),
|
87
|
-
deletable: page.deletable?,
|
88
|
-
draggable: page.draggable?,
|
89
|
-
update_position_url: tree_drag_and_drop_backend_page_path(page)
|
90
|
-
},
|
91
|
-
children: []
|
92
|
-
}
|
93
|
-
end
|
94
72
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class Backend::SnippetsController <
|
1
|
+
class Backend::SnippetsController < Backend::BaseController
|
2
2
|
include Concerns::Backend::TranslatableController
|
3
3
|
|
4
4
|
before_action :find_model, only: [:edit, :update]
|
@@ -9,28 +9,22 @@ class Backend::SnippetsController < BackendController
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def new
|
12
|
-
@
|
12
|
+
@model = Snippet.new
|
13
13
|
end
|
14
14
|
|
15
15
|
def create
|
16
|
-
@
|
16
|
+
@model = Snippet.new allowed_params
|
17
17
|
|
18
|
-
if @
|
19
|
-
redirect_to edit_translation_backend_snippet_path(@
|
18
|
+
if @model.save
|
19
|
+
redirect_to edit_translation_backend_snippet_path(@model, translation_locale: default_app_locale),
|
20
20
|
notice: translate_notice(:added, :snippet)
|
21
21
|
else
|
22
22
|
render :new
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
def edit
|
27
|
-
@form = Backend::SnippetForm.new(@model)
|
28
|
-
end
|
29
|
-
|
30
26
|
def update
|
31
|
-
|
32
|
-
|
33
|
-
if @form.save params[:snippet]
|
27
|
+
if @model.update_attributes allowed_params
|
34
28
|
redirect_to edit_backend_snippet_path(@model),
|
35
29
|
notice: translate_notice(:edited, :snippet)
|
36
30
|
else
|
@@ -44,7 +38,14 @@ class Backend::SnippetsController < BackendController
|
|
44
38
|
@model = Snippet.find params[:id]
|
45
39
|
end
|
46
40
|
|
41
|
+
def allowed_params
|
42
|
+
params[:snippet].permit(:identifier, :description)
|
43
|
+
end
|
44
|
+
|
47
45
|
def translation_form
|
48
|
-
Backend::SnippetTranslationForm.new(
|
46
|
+
Backend::SnippetTranslationForm.new(
|
47
|
+
@model,
|
48
|
+
@model.translation(params[:translation_locale])
|
49
|
+
)
|
49
50
|
end
|
50
51
|
end
|
@@ -28,7 +28,9 @@ module Concerns
|
|
28
28
|
def content_path
|
29
29
|
column = @model.column
|
30
30
|
path = "edit_translation_backend_#{column.row.rowable.class.to_s.downcase}_path"
|
31
|
-
|
31
|
+
# TODO this needs to be the locale that you were editing, not the interface locale.
|
32
|
+
# You can reproduce this by editing flexible content in NL when your interface is english.
|
33
|
+
send(path, column.row.rowable, @model.column.row.locale, anchor: "content-row-#{column.row.id}")
|
32
34
|
end
|
33
35
|
|
34
36
|
def update
|
@@ -6,7 +6,7 @@ class RedirectsController < ActionController::Base
|
|
6
6
|
redirect.used!
|
7
7
|
redirect_to redirect.destination_uri, status: redirect.status_code
|
8
8
|
else
|
9
|
-
render
|
9
|
+
render plain: 'No such redirect or disabled.', status: 404
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|