home_page 0.0.5 → 0.0.6
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/home_page/application.js +8 -1
- data/app/assets/javascripts/home_page/base.js.coffee.erb +44 -0
- data/app/assets/javascripts/home_page/lib/jquery.multisortable.js +254 -0
- data/app/assets/javascripts/home_page/page_module_collections/index.js.coffee +14 -0
- data/app/assets/javascripts/home_page/shared/sortable_list.js.coffee +44 -0
- data/app/assets/stylesheets/home_page/application.css +4 -0
- data/app/assets/stylesheets/home_page/bootswatch.css.less +4 -0
- data/app/assets/stylesheets/vendors/keen/dashboards.css +59 -0
- data/app/controllers/home_page/application_controller.rb +24 -0
- data/app/controllers/page_module_collections_controller.rb +96 -0
- data/app/controllers/page_module_collections_modules_controller.rb +43 -0
- data/app/controllers/page_modules_controller.rb +121 -0
- data/app/controllers/settings_controller.rb +30 -0
- data/app/controllers/users_controller.rb +7 -3
- data/app/helpers/home_page/application_helper.rb +22 -0
- data/app/helpers/home_page/form_helper.rb +23 -0
- data/app/helpers/home_page/show_helper.rb +67 -0
- data/app/models/page_module.rb +78 -0
- data/app/models/page_module_collection.rb +24 -0
- data/app/models/page_module_collection_module.rb +8 -0
- data/app/models/setting.rb +26 -0
- data/app/views/apis/volontariat/_settings.html.erb +5 -0
- data/app/views/layouts/application.html.erb +2 -1
- data/app/views/layouts/fluid/without_rows.html.erb +17 -0
- data/app/views/layouts/shared/_foot.html.erb +9 -1
- data/app/views/layouts/shared/_modal.html.erb +16 -0
- data/app/views/page_module_collections/_collection.html.erb +18 -0
- data/app/views/page_module_collections/_form.html.erb +29 -0
- data/app/views/page_module_collections/_page_module.html.erb +27 -0
- data/app/views/page_module_collections/_page_module_collection.html.erb +41 -0
- data/app/views/page_module_collections/destroy.js.erb +9 -0
- data/app/views/page_module_collections/edit.html.erb +3 -0
- data/app/views/page_module_collections/index.html.erb +67 -0
- data/app/views/page_module_collections/new.html.erb +3 -0
- data/app/views/page_module_collections/show.html.erb +44 -0
- data/app/views/page_module_collections/update.js.erb +11 -0
- data/app/views/page_module_collections_modules/_fields.html.erb +10 -0
- data/app/views/page_module_collections_modules/create.js.erb +8 -0
- data/app/views/page_module_collections_modules/destroy.js.erb +9 -0
- data/app/views/page_module_collections_modules/new.html.erb +27 -0
- data/app/views/page_modules/_actions.html.erb +26 -0
- data/app/views/page_modules/_collection.html.erb +19 -0
- data/app/views/page_modules/_fields.html.erb +52 -0
- data/app/views/page_modules/_form.html.erb +25 -0
- data/app/views/page_modules/_page_module.html.erb +14 -0
- data/app/views/page_modules/_tab.html.erb +39 -0
- data/app/views/page_modules/destroy.js.erb +9 -0
- data/app/views/page_modules/edit.html.erb +3 -0
- data/app/views/page_modules/new.html.erb +3 -0
- data/app/views/page_modules/update.js.erb +11 -0
- data/app/views/settings/_apis.html.erb +20 -0
- data/app/views/settings/index.html.erb +13 -0
- data/app/views/settings/plugins/home_page/_panel.html.erb +42 -0
- data/app/views/settings/plugins/home_page/tabs/_apis.html.erb +24 -0
- data/app/views/shared/_javascript_response.js.erb +50 -0
- data/app/views/shared/layouts/_modal.html.erb +14 -0
- data/app/views/users/index.html.erb +5 -1
- data/app/views/users/show.html.erb +5 -0
- data/config/initializers/default_settings.rb +8 -0
- data/config/locales/general/en.yml +33 -2
- data/config/locales/resources/page_module/en.yml +34 -0
- data/config/locales/resources/page_module_collection/en.yml +21 -0
- data/config/locales/resources/setting/en.yml +26 -0
- data/config/routes.rb +18 -1
- data/db/migrate/20150307193102_create_friendly_id_slugs.rb +3 -3
- data/db/migrate/20150313154924_create_settings.rb +17 -0
- data/db/migrate/20150315082328_create_page_modules_and_page_module_collections.rb +43 -0
- data/lib/home_page.rb +9 -0
- data/lib/home_page/api_provider_host.rb +54 -0
- data/lib/home_page/engine.rb +1 -0
- data/lib/home_page/navigation.rb +62 -21
- data/lib/home_page/pagination_metadata.rb +1 -2
- data/lib/home_page/simple_navigation_renderer/breadcrumbs_without_method_links.rb +6 -2
- data/lib/home_page/version.rb +1 -1
- metadata +242 -50
- data/README.rdoc +0 -3
- data/config/initializers/volontariat.rb +0 -3
@@ -27,6 +27,30 @@ class HomePage::ApplicationController < ActionController::Base
|
|
27
27
|
|
28
28
|
private
|
29
29
|
|
30
|
+
def render_or_redirect_by_request_type
|
31
|
+
if request.xhr? || request.env['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'
|
32
|
+
render_javascript_response
|
33
|
+
elsif @template.present?
|
34
|
+
render @template
|
35
|
+
elsif @path.present?
|
36
|
+
redirect_to @path
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def render_javascript_response
|
41
|
+
@method ||= :get
|
42
|
+
@data ||= {}
|
43
|
+
@template_namespace ||= controller_name
|
44
|
+
@template ||= action_name unless @path.present?
|
45
|
+
@template_format ||= 'html'
|
46
|
+
@target ||= "#modal"
|
47
|
+
@target_needs_modal_layout = @target_needs_modal_layout.nil? ? true : @target_needs_modal_layout
|
48
|
+
@modal_title ||= I18n.t("#{controller_name}.#{action_name}.title")
|
49
|
+
@close_modal ||= false
|
50
|
+
|
51
|
+
render partial: 'shared/javascript_response.js', layout: false
|
52
|
+
end
|
53
|
+
|
30
54
|
def custom_view_path
|
31
55
|
prepend_view_path 'app/views/custom'
|
32
56
|
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
class PageModuleCollectionsController < ApplicationController
|
2
|
+
respond_to :html, :js
|
3
|
+
|
4
|
+
before_filter :authenticate_user!
|
5
|
+
before_filter :show_breadcrumbs, except: :index
|
6
|
+
|
7
|
+
def index
|
8
|
+
slug_stub = if params[:slug_stub].blank?
|
9
|
+
@page_module_collection_slug_stubs = PageModuleCollection.pluck(:slug_stub).uniq.sort
|
10
|
+
@page_module_collection_slug_stubs.first
|
11
|
+
else
|
12
|
+
params[:slug_stub]
|
13
|
+
end
|
14
|
+
|
15
|
+
@page_module_collections = PageModuleCollection.where(slug_stub: slug_stub).paginate(page: params[:page], per_page: 10)
|
16
|
+
|
17
|
+
if params[:slug_stub].blank?
|
18
|
+
@page_module_slug_stubs = PageModule.pluck(:slug_stub).uniq.sort
|
19
|
+
@page_modules = PageModule.where(slug_stub: @page_module_slug_stubs.first).paginate(page: params[:module_page], per_page: 10)
|
20
|
+
end
|
21
|
+
|
22
|
+
render partial: 'page_module_collections/collection', layout: false if params[:slug_stub].present?
|
23
|
+
end
|
24
|
+
|
25
|
+
def new
|
26
|
+
@page_module_collection = PageModuleCollection.new(params[:page_module_collection])
|
27
|
+
end
|
28
|
+
|
29
|
+
def create
|
30
|
+
@page_module_collection = PageModuleCollection.create(params[:page_module_collection])
|
31
|
+
|
32
|
+
if @page_module_collection.persisted?
|
33
|
+
@path = page_module_collections_path
|
34
|
+
|
35
|
+
if request.xhr?
|
36
|
+
@target = '#page'
|
37
|
+
@close_modal = true
|
38
|
+
end
|
39
|
+
else
|
40
|
+
@template = :new
|
41
|
+
@target = '.modal-content' if request.xhr?
|
42
|
+
end
|
43
|
+
|
44
|
+
@target_needs_modal_layout = false if request.xhr?
|
45
|
+
|
46
|
+
render_or_redirect_by_request_type
|
47
|
+
end
|
48
|
+
|
49
|
+
def show
|
50
|
+
@page_module_collection = PageModuleCollection.friendly.find(params[:id])
|
51
|
+
@page_modules = @page_module_collection.modules.select(
|
52
|
+
'page_modules.*, page_module_collections_modules.id AS collection_module_id, page_module_collections_modules.position'
|
53
|
+
).order('page_module_collections_modules.position ASC')
|
54
|
+
end
|
55
|
+
|
56
|
+
def edit
|
57
|
+
@page_module_collection = PageModuleCollection.friendly.find(params[:id])
|
58
|
+
end
|
59
|
+
|
60
|
+
def update
|
61
|
+
@page_module_collection = PageModuleCollection.friendly.find(params[:id])
|
62
|
+
|
63
|
+
if @page_module_collection.update_attributes(params[:page_module_collection])
|
64
|
+
flash[:notice] = t('general.form.successfully_updated')
|
65
|
+
|
66
|
+
if request.xhr?
|
67
|
+
@template_format = 'js'
|
68
|
+
else
|
69
|
+
@path = edit_page_module_collection_path(@page_module_collection)
|
70
|
+
end
|
71
|
+
else
|
72
|
+
@template = :edit
|
73
|
+
@target = '.modal-content' if request.xhr?
|
74
|
+
end
|
75
|
+
|
76
|
+
@target_needs_modal_layout = false if request.xhr?
|
77
|
+
|
78
|
+
render_or_redirect_by_request_type
|
79
|
+
end
|
80
|
+
|
81
|
+
def destroy
|
82
|
+
@page_module_collection = PageModuleCollection.friendly.find(params[:id]).destroy
|
83
|
+
|
84
|
+
if @page_module_collection.persisted?
|
85
|
+
flash[:alert] = I18n.t('general.form.destroy_failed')
|
86
|
+
else
|
87
|
+
flash[:notice] = I18n.t('general.form.destroyed')
|
88
|
+
end
|
89
|
+
|
90
|
+
redirect_to page_module_collections_path unless request.xhr?
|
91
|
+
end
|
92
|
+
|
93
|
+
def resource
|
94
|
+
@page_module_collection
|
95
|
+
end
|
96
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
class PageModuleCollectionsModulesController < ApplicationController
|
2
|
+
respond_to :html, :js
|
3
|
+
|
4
|
+
before_filter :authenticate_user!
|
5
|
+
|
6
|
+
def create
|
7
|
+
@page_module_collection = PageModuleCollection.find(params[:page_module_collection_module][:collection_id])
|
8
|
+
|
9
|
+
if params[:page_module_collection_module][:module_id].to_i == 0
|
10
|
+
@template_namespace = 'page_modules'
|
11
|
+
@template = 'new'
|
12
|
+
@page_module = PageModule.new(params[:page_module])
|
13
|
+
@page_module.collection_id = @page_module_collection.id
|
14
|
+
@target_needs_modal_layout = false
|
15
|
+
@target = '.modal-content'
|
16
|
+
|
17
|
+
render_or_redirect_by_request_type
|
18
|
+
else
|
19
|
+
@page_module = PageModule.find params[:page_module_collection_module][:module_id]
|
20
|
+
@page_module_collection.modules << @page_module
|
21
|
+
page_module_collection_module = PageModuleCollectionModule.where(collection_id: @page_module_collection.id).order('position DESC').first
|
22
|
+
@collection_module_id = page_module_collection_module.id
|
23
|
+
@position = page_module_collection_module.position
|
24
|
+
@template_format = 'js'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def destroy
|
29
|
+
@page_module_collection_module = PageModuleCollectionModule.find(params[:id]).destroy
|
30
|
+
|
31
|
+
if @page_module_collection_module.persisted?
|
32
|
+
flash[:alert] = I18n.t('general.form.destroy_failed')
|
33
|
+
else
|
34
|
+
flash[:notice] = I18n.t('general.form.destroyed')
|
35
|
+
end
|
36
|
+
|
37
|
+
redirect_to page_module_collection_path(@page_module_collection_module.collection) unless request.xhr?
|
38
|
+
end
|
39
|
+
|
40
|
+
def resource
|
41
|
+
@page_module || @page_module_collection_module
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,121 @@
|
|
1
|
+
class PageModulesController < ApplicationController
|
2
|
+
respond_to :html, :js
|
3
|
+
|
4
|
+
before_filter :authenticate_user!
|
5
|
+
|
6
|
+
def index
|
7
|
+
slug_stub = if params[:slug_stub].blank?
|
8
|
+
@page_module_slug_stubs = PageModule.pluck(:slug_stub).uniq.sort
|
9
|
+
@page_module_slug_stubs.first
|
10
|
+
else
|
11
|
+
params[:slug_stub]
|
12
|
+
end
|
13
|
+
|
14
|
+
@page_modules = PageModule.where(slug_stub: slug_stub).paginate(page: params[:page], per_page: 10)
|
15
|
+
|
16
|
+
if params[:slug_stub].present?
|
17
|
+
render partial: 'page_modules/collection', layout: false
|
18
|
+
else
|
19
|
+
render partial: 'page_modules/tab', layout: false
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def new
|
24
|
+
if params[:page_module_collection_id].present?
|
25
|
+
@page_module_collection = PageModuleCollection.friendly.find(params[:page_module_collection_id])
|
26
|
+
@page_module_collection_module = PageModuleCollectionModule.new(params[:page_module_collection_module])
|
27
|
+
@page_module_collection_module.collection_id = @page_module_collection.id
|
28
|
+
@page_modules = PageModule
|
29
|
+
module_ids = @page_module_collection.modules.map(&:id)
|
30
|
+
@page_modules = @page_modules.where('id NOT IN(?)', module_ids) if module_ids.any?
|
31
|
+
@page_modules = @page_modules.order('title ASC').map{|p| [p.title, p.id]}
|
32
|
+
|
33
|
+
render template: 'page_module_collections_modules/new'
|
34
|
+
else
|
35
|
+
@page_module = PageModule.new(params[:page_module])
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def create
|
40
|
+
@page_module = PageModule.create(params[:page_module])
|
41
|
+
@page_module.collection_id = params[:page_module][:collection_id]
|
42
|
+
|
43
|
+
if @page_module.persisted?
|
44
|
+
if @page_module.collection_id.present?
|
45
|
+
@path = page_module_collections_modules_path
|
46
|
+
@method = 'post'
|
47
|
+
@data = { page_module_collection_module: { collection_id: @page_module.collection_id, module_id: @page_module.id } }
|
48
|
+
@template_format = 'js'
|
49
|
+
else
|
50
|
+
@path = page_modules_path
|
51
|
+
|
52
|
+
if request.xhr?
|
53
|
+
@target = '#page_modules_tab'
|
54
|
+
@close_modal = true
|
55
|
+
end
|
56
|
+
end
|
57
|
+
else
|
58
|
+
@template = :new
|
59
|
+
|
60
|
+
if request.xhr?
|
61
|
+
@target = '.modal-content'
|
62
|
+
@target_needs_modal_layout = false
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
render_or_redirect_by_request_type
|
67
|
+
end
|
68
|
+
|
69
|
+
def edit
|
70
|
+
@page_module = PageModule.friendly.find(params[:id])
|
71
|
+
end
|
72
|
+
|
73
|
+
def update
|
74
|
+
@page_module = PageModule.friendly.find(params[:id])
|
75
|
+
|
76
|
+
if @page_module.update_attributes(params[:page_module])
|
77
|
+
flash[:notice] = t('general.form.successfully_updated')
|
78
|
+
|
79
|
+
if request.xhr?
|
80
|
+
@template_format = 'js'
|
81
|
+
else
|
82
|
+
@path = edit_page_module_path(@page_module)
|
83
|
+
end
|
84
|
+
else
|
85
|
+
@template = :edit
|
86
|
+
@target = '.modal-content' if request.xhr?
|
87
|
+
end
|
88
|
+
|
89
|
+
render_or_redirect_by_request_type
|
90
|
+
end
|
91
|
+
|
92
|
+
def move
|
93
|
+
page_module_collection = PageModuleCollection.friendly.find(params[:page_module_collection_id])
|
94
|
+
page_module_collection_modules = page_module_collection.page_module_collection_modules.
|
95
|
+
where('page_module_collections_modules.id IN(?)', params[:positions].values).index_by(&:id)
|
96
|
+
|
97
|
+
params[:positions].keys.map(&:to_i).sort.each do |position|
|
98
|
+
id = params[:positions][position.to_s]
|
99
|
+
page_module_collection_modules[id.to_i].reload
|
100
|
+
page_module_collection_modules[id.to_i].insert_at(position.to_i)
|
101
|
+
end
|
102
|
+
|
103
|
+
render nothing: true
|
104
|
+
end
|
105
|
+
|
106
|
+
def destroy
|
107
|
+
@page_module = PageModule.friendly.find(params[:id]).destroy
|
108
|
+
|
109
|
+
if @page_module.persisted?
|
110
|
+
flash[:alert] = I18n.t('general.form.destroy_failed')
|
111
|
+
else
|
112
|
+
flash[:notice] = I18n.t('general.form.destroyed')
|
113
|
+
end
|
114
|
+
|
115
|
+
redirect_to page_modules_path unless request.xhr?
|
116
|
+
end
|
117
|
+
|
118
|
+
def resource
|
119
|
+
@page_module_collection_module || @page_module
|
120
|
+
end
|
121
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
class SettingsController < ApplicationController
|
2
|
+
respond_to :html
|
3
|
+
|
4
|
+
before_filter :authenticate_user!
|
5
|
+
|
6
|
+
def index
|
7
|
+
@settings = Setting.unscoped.index_by(&:var)
|
8
|
+
end
|
9
|
+
|
10
|
+
def show
|
11
|
+
render json: Setting[params[:id2] || params[:id]].to_json
|
12
|
+
end
|
13
|
+
|
14
|
+
def updates
|
15
|
+
@settings = Setting.unscoped.index_by(&:var)
|
16
|
+
|
17
|
+
params[:setting].each do |var, value|
|
18
|
+
next if @settings[var].nil? && (value.nil? || value.strip == '')
|
19
|
+
|
20
|
+
if @settings[var] && value.strip == ''
|
21
|
+
Setting.destroy var
|
22
|
+
else
|
23
|
+
value = Setting.new(var: var, value: value).cast_value
|
24
|
+
Setting[var] = value
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
redirect_to settings_path, notice: t('settings.updates.done')
|
29
|
+
end
|
30
|
+
end
|
@@ -1,12 +1,16 @@
|
|
1
1
|
class UsersController < ApplicationController
|
2
|
-
before_filter :find_resource, only: [:edit, :update, :destroy]
|
2
|
+
before_filter :find_resource, only: [:show, :edit, :update, :destroy]
|
3
3
|
|
4
4
|
respond_to :html
|
5
5
|
|
6
6
|
before_filter :authenticate_user!
|
7
|
+
before_filter :show_breadcrumbs, except: :index
|
7
8
|
|
8
9
|
def index
|
9
|
-
@users = User.order('name ASC')
|
10
|
+
@users = User.order('name ASC').paginate(page: params[:page], per_page: 10)
|
11
|
+
end
|
12
|
+
|
13
|
+
def show
|
10
14
|
end
|
11
15
|
|
12
16
|
def edit
|
@@ -14,7 +18,7 @@ class UsersController < ApplicationController
|
|
14
18
|
|
15
19
|
def update
|
16
20
|
if params[:user][:password].present? ? @user.update_attributes(params[:user]) : @user.update_without_password(params[:user])
|
17
|
-
redirect_to edit_user_path(
|
21
|
+
redirect_to edit_user_path(@user), notice: t('general.form.successfully_updated')
|
18
22
|
else
|
19
23
|
render :edit
|
20
24
|
end
|
@@ -2,6 +2,21 @@ module HomePage
|
|
2
2
|
module ApplicationHelper
|
3
3
|
include AutoHtml
|
4
4
|
|
5
|
+
def self.root_model_class_name_helper(resource)
|
6
|
+
if resource.class.superclass.name == 'ActiveRecord::Base'
|
7
|
+
resource.class.name
|
8
|
+
elsif resource.class.superclass.name == 'Object'
|
9
|
+
# classes like mongo db models without a specific superclass
|
10
|
+
resource.class.name
|
11
|
+
else
|
12
|
+
resource.class.superclass.name
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def root_model_class_name(resource)
|
17
|
+
::HomePage::ApplicationHelper.root_model_class_name_helper(resource)
|
18
|
+
end
|
19
|
+
|
5
20
|
# Taken from https://github.com/seyhunak/twitter-bootstrap-rails
|
6
21
|
# Modified to support html in flash message
|
7
22
|
def bootstrap_flash_raw
|
@@ -56,5 +71,12 @@ module HomePage
|
|
56
71
|
|
57
72
|
doc.to_s
|
58
73
|
end
|
74
|
+
|
75
|
+
def attribute_translation(attribute, current_resource = nil)
|
76
|
+
current_resource = current_resource || resource
|
77
|
+
t("activerecord.attributes.#{root_model_class_name(current_resource).underscore}.#{attribute}",
|
78
|
+
default: t("attributes.#{attribute}")
|
79
|
+
)
|
80
|
+
end
|
59
81
|
end
|
60
82
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module HomePage
|
2
|
+
module FormHelper
|
3
|
+
def setting_input(f, var, options = {})
|
4
|
+
required = options.delete(:required) || false
|
5
|
+
label = options.delete(:label)
|
6
|
+
|
7
|
+
default = Setting.defaults[var]
|
8
|
+
hint_value = default.is_a?(Array) || default.is_a?(Hash) ? default.to_json : default.inspect
|
9
|
+
value = @settings[var].try(:value)
|
10
|
+
value = if value.nil?
|
11
|
+
value
|
12
|
+
else
|
13
|
+
default.is_a?(Array) || default.is_a?(Hash) ? value.to_json : value
|
14
|
+
end
|
15
|
+
|
16
|
+
f.input(
|
17
|
+
var, label: label || t("settings.vars.#{var}"), input_html: { id: var.gsub(/\./, '_'), value: value },
|
18
|
+
hint: Setting.defaults[var].nil? ? nil : t('settings.index.default_value', value: hint_value),
|
19
|
+
required: required
|
20
|
+
)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module HomePage
|
2
|
+
module ShowHelper
|
3
|
+
def show_attributes(*attributes)
|
4
|
+
result = ''
|
5
|
+
|
6
|
+
attributes.each {|attribute| result += show_attribute attribute}
|
7
|
+
|
8
|
+
raw result
|
9
|
+
end
|
10
|
+
|
11
|
+
def show_attribute(attribute, options = {})
|
12
|
+
title = options[:title] || attribute_translation(attribute)
|
13
|
+
value = options[:value] || resource.send(attribute)
|
14
|
+
|
15
|
+
value.blank? ? '' : content_tag(:dt, title) + content_tag(:dd, value)
|
16
|
+
end
|
17
|
+
|
18
|
+
def show_associations(*associations)
|
19
|
+
result = ''
|
20
|
+
|
21
|
+
associations.each {|association| result += show_association association}
|
22
|
+
|
23
|
+
raw result
|
24
|
+
end
|
25
|
+
|
26
|
+
def show_association(association)
|
27
|
+
if association.to_s == association.to_s.pluralize
|
28
|
+
return show_attribute(
|
29
|
+
association,
|
30
|
+
title: t("#{association}.index.title"),
|
31
|
+
value: raw(resource.send(association).map{|a| link_to a.name, a}.join(', '))
|
32
|
+
)
|
33
|
+
end
|
34
|
+
|
35
|
+
title = if general_attribute?(:parent)
|
36
|
+
t("attributes.#{association}")
|
37
|
+
else
|
38
|
+
if resource.send(association)
|
39
|
+
t("activerecord.models.#{root_model_class_name(resource.send(association)).underscore}")
|
40
|
+
else
|
41
|
+
t("activerecord.models.#{association}")
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
if resource.send(association)
|
46
|
+
show_attribute(
|
47
|
+
association,
|
48
|
+
title: title,
|
49
|
+
value: link_to(resource.send(association).try(:name), resource.send(association))
|
50
|
+
)
|
51
|
+
else
|
52
|
+
''
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def show_actions(options = {})
|
57
|
+
result = content_tag :dt, raw(' ')
|
58
|
+
result += content_tag :dd, render(
|
59
|
+
partial: 'shared/resource/actions', locals: {
|
60
|
+
type: root_model_class_name(resource).tableize, resource: resource, namespace: options[:namespace]
|
61
|
+
}
|
62
|
+
)
|
63
|
+
|
64
|
+
raw result
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|