udongo 2.0.4 → 3.0.0
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/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
|
|