drg_cms 0.4.39 → 0.4.53
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +49 -0
- data/app/assets/images/drg_cms/file_manager.png +0 -0
- data/app/assets/javascripts/drg_cms/drg_cms.js +8 -8
- data/app/assets/stylesheets/drg_cms/drg_cms.css +22 -20
- data/app/controllers/cmsedit_controller.rb +170 -114
- data/app/controllers/dc_application_controller.rb +142 -56
- data/app/controllers/dc_common_controller.rb +56 -34
- data/app/controllers/dc_main_controller.rb +1 -4
- data/app/controllers/drgcms_controls/dc_page_controls.rb +3 -0
- data/app/forms/all_options.yml +3 -0
- data/app/forms/cms_menu.yml +100 -117
- data/app/forms/dc_design.yml +1 -1
- data/app/forms/dc_ident.yml +37 -0
- data/app/forms/dc_menu_item.yml +1 -1
- data/app/forms/dc_permission.yml +1 -1
- data/app/forms/dc_site.yml +4 -0
- data/app/helpers/cmsedit_helper.rb +44 -80
- data/app/helpers/dc_ad_renderer.rb +27 -15
- data/app/helpers/dc_application_helper.rb +433 -196
- data/app/helpers/dc_big_menu_renderer.rb +40 -40
- data/app/helpers/dc_captcha_renderer.rb +38 -25
- data/app/helpers/dc_common_renderer.rb +15 -48
- data/app/helpers/dc_menu_renderer.rb +30 -20
- data/app/helpers/dc_page_renderer.rb +14 -18
- data/app/helpers/dc_part_renderer.rb +45 -16
- data/app/helpers/dc_piece_renderer.rb +23 -29
- data/app/helpers/dc_poll_renderer.rb +31 -20
- data/app/helpers/dc_renderer.rb +5 -4
- data/app/helpers/dc_simple_menu_renderer.rb +90 -68
- data/app/models/{__dc_global_data.rb → __dc_stat.rb} +20 -21
- data/app/models/dc_ad.rb +13 -1
- data/app/models/dc_ad_stat.rb +6 -0
- data/app/models/dc_big_menu.rb +15 -2
- data/app/models/dc_big_table.rb +27 -4
- data/app/models/dc_big_table_locale.rb +7 -0
- data/app/models/dc_big_table_value.rb +7 -0
- data/app/models/dc_category.rb +9 -3
- data/app/models/dc_design.rb +50 -0
- data/app/models/dc_dummy.rb +41 -1
- data/app/models/dc_folder_permission.rb +9 -2
- data/app/models/{dc_global_data.rb → dc_ident.rb} +20 -22
- data/app/models/dc_journal.rb +9 -1
- data/app/models/dc_key_value_store.rb +41 -4
- data/app/models/dc_link.rb +7 -0
- data/app/models/dc_menu.rb +20 -3
- data/app/models/dc_menu_item.rb +7 -0
- data/app/models/dc_page.rb +31 -12
- data/app/models/dc_part.rb +34 -4
- data/app/models/dc_permission.rb +32 -12
- data/app/models/dc_piece.rb +32 -4
- data/app/models/dc_policy.rb +17 -11
- data/app/models/dc_policy_role.rb +12 -7
- data/app/models/dc_policy_rule.rb +32 -4
- data/app/models/dc_poll.rb +8 -0
- data/app/models/dc_poll_item.rb +6 -0
- data/app/models/dc_simple_menu.rb +18 -3
- data/app/models/dc_simple_menu_item.rb +20 -2
- data/app/models/dc_site.rb +13 -3
- data/app/models/dc_stat.rb +8 -1
- data/app/models/dc_user.rb +18 -2
- data/app/models/dc_user_role.rb +7 -0
- data/app/models/dc_visit.rb +5 -0
- data/app/{helpers → models}/drgcms_form_field.rb +171 -73
- data/app/views/__dc_at_the_beginning/create.html.erb +9 -0
- data/app/views/__dc_at_the_beginning/index.html.erb +19 -0
- data/app/views/cmsedit/_edit_stuff.html.erb +2 -0
- data/app/views/cmsedit/_form.html.erb +0 -1
- data/app/views/dc_mail/subscribe.html.erb +0 -0
- data/config/initializers/kaminari_patch.rb +5 -4
- data/config/locales/drgcms_en.yml +4 -0
- data/config/locales/drgcms_sl.yml +1 -0
- data/config/locales/models_en.yml +14 -3
- data/config/locales/models_sl.yml +13 -4
- data/drg_cms.gemspec +4 -4
- data/lib/drg_cms.rb +37 -8
- data/lib/drg_cms/engine.rb +2 -2
- data/lib/drg_cms/version.rb +3 -2
- data/lib/tasks/at_the_beginning.yml +0 -0
- data/lib/tasks/dc_at_the_beginning.rake +118 -0
- data/lib/tasks/dc_cleanup.rake +19 -7
- data/lib/tasks/log_statistics.rb +66 -0
- data/lib/tasks/site_statistics.rake +29 -12
- data/test/dummy/app/controllers/application_controller.rb +1 -1
- data/test/dummy/app/helpers/application_helper.rb +1 -1
- metadata +15 -26
- data/README.rdoc +0 -3
- data/app/controllers/dc_at_the_beginning_controller.rb +0 -120
- data/app/controllers/dc_mail_controller.rb +0 -89
- data/app/forms/dc_forum_cat.yml +0 -54
- data/app/forms/dc_forum_forum.yml +0 -53
- data/app/forms/dc_forum_msg.yml +0 -124
- data/app/forms/dc_forum_privmsg.yml +0 -125
- data/app/forms/dc_forum_topic.yml +0 -131
- data/app/forms/dc_mail.yml +0 -88
- data/app/forms/dc_mail_address.yml +0 -56
- data/app/forms/dc_mail_list.yml +0 -44
- data/app/forms/dc_mail_list_member.yml +0 -42
- data/app/helpers/dc_mail_renderer.rb +0 -76
- data/app/models/dc_mail.rb +0 -64
- data/app/models/dc_mail_address.rb +0 -69
- data/app/models/dc_mail_list.rb +0 -48
- data/app/models/dc_mail_list_member.rb +0 -34
- data/app/models/dc_sendmail.rb +0 -48
@@ -23,55 +23,57 @@
|
|
23
23
|
#++
|
24
24
|
|
25
25
|
########################################################################
|
26
|
-
#
|
26
|
+
# dc_big_menu is experimental menu system which can be used as alternative
|
27
|
+
# to dc_menu when sub menu menu level is larger than two levels. Idea is to have top two levels
|
28
|
+
# of menu displayed on standard top of page position with other sub levels displayed vertically
|
29
|
+
# on left or right part of page. Renderer also provides path method, which can be used to show
|
30
|
+
# menu path of currently displayed page.
|
27
31
|
########################################################################
|
28
32
|
class DcBigMenuRenderer
|
29
33
|
|
30
34
|
include DcApplicationHelper
|
31
35
|
########################################################################
|
32
|
-
#
|
36
|
+
# Object initialization.
|
33
37
|
########################################################################
|
34
|
-
def initialize( parent, opts )
|
38
|
+
def initialize( parent, opts ) #:nodoc:
|
35
39
|
@parent = parent
|
36
|
-
# @menu = DcSimpleMenu.find_by(site_id: dc_get_site._id)
|
37
40
|
@site = parent.dc_get_site
|
38
41
|
@opts = opts
|
39
42
|
self
|
40
43
|
end
|
41
44
|
|
42
45
|
########################################################################
|
43
|
-
#
|
46
|
+
# Find out which top level menu currently displayed page belongs to. Subroutine of default method.
|
44
47
|
########################################################################
|
45
|
-
def find_selected
|
46
|
-
ret =
|
48
|
+
def find_selected #:nodoc:
|
49
|
+
ret = DcBigMenu.find( @parent.page.menu_id ) if @parent.page.menu_id
|
47
50
|
while ret and ret.parent != nil
|
48
|
-
ret =
|
51
|
+
ret = DcBigMenu.find( ret.parent )
|
49
52
|
end
|
50
53
|
# return first if not found (something is wrong)
|
51
54
|
# p ret
|
52
|
-
ret ||=
|
55
|
+
ret ||= DcBigMenu.where(dc_site_id: @site._id, parent: nil, active: true).limit(1).first
|
53
56
|
end
|
54
57
|
|
55
58
|
########################################################################
|
56
59
|
# Creates edit link if in edit mode.
|
57
60
|
########################################################################
|
58
|
-
def link_4edit
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
c
|
61
|
+
def link_4edit #:nodoc:
|
62
|
+
html = ''
|
63
|
+
return html unless @opts[:edit_mode] > 1
|
64
|
+
|
65
|
+
@opts[:editparams].merge!( { table: 'dc_big_menu', controller: 'cmsedit', action: 'edit' } )
|
66
|
+
title = "#{t('drgcms.edit')}: "
|
67
|
+
@opts[:editparams].merge!( { id: @menu.id, title: "#{title}#{@menu.name}" } ) if @menu
|
68
|
+
title << t('helpers.label.dc_big_menu.tabletitle')
|
69
|
+
@opts[:editparams].merge!( { action: 'index', title: title }) if @menu.nil?
|
70
|
+
html << dc_link_for_edit( @opts[:editparams] )
|
69
71
|
end
|
70
72
|
|
71
73
|
########################################################################
|
72
|
-
#
|
74
|
+
# Returns html code for single link on a menu.
|
73
75
|
########################################################################
|
74
|
-
def link_4menu(item)
|
76
|
+
def link_4menu(item) #:nodoc:
|
75
77
|
html = ''
|
76
78
|
link = item.link
|
77
79
|
link = "/#{@site.route_name}/#{item.page_id}" #if link.blank?
|
@@ -84,19 +86,18 @@ def link_4menu(item)
|
|
84
86
|
end
|
85
87
|
|
86
88
|
########################################################################
|
87
|
-
#
|
89
|
+
# Renderer for menu part displayed on left position of page.
|
88
90
|
########################################################################
|
89
91
|
def left_menu
|
90
92
|
html = ''
|
91
|
-
m =
|
93
|
+
m = DcBigMenu.find( @parent.page.menu_id )
|
92
94
|
# Show menu on same level if selected has no children
|
93
|
-
if
|
94
|
-
m =
|
95
|
+
if DcBigMenu.where( parent: @parent.page.menu_id ).limit(1).to_a.size == 0
|
96
|
+
m = DcBigMenu.find( m.parent )
|
95
97
|
end
|
96
|
-
|
98
|
+
#
|
97
99
|
html << "<div class='menu-left-item-top'>#{m.caption}</div>"
|
98
|
-
|
99
|
-
DcMenu.where( parent: m._id ).sort(order: 1).each do |item|
|
100
|
+
DcBigMenu.where( parent: m._id ).sort(order: 1).each do |item|
|
100
101
|
html << (item._id == @parent.page.menu_id ? '<div class="menu-left-item-selected">' : '<div class="menu-left-item">')
|
101
102
|
html << link_4menu(item)
|
102
103
|
html << '</div>'
|
@@ -104,22 +105,22 @@ def left_menu
|
|
104
105
|
#
|
105
106
|
html << "<div class='menu-left-item-bottom'>"
|
106
107
|
if m.parent
|
107
|
-
p =
|
108
|
+
p = DcBigMenu.find( m.parent )
|
108
109
|
html << "▲ #{link_4menu(p)}"
|
109
110
|
end
|
110
111
|
html << ' </div>'
|
111
112
|
end
|
112
113
|
|
113
114
|
########################################################################
|
114
|
-
# Renders menu path for selected
|
115
|
+
# Renders menu path for currently selected page.
|
115
116
|
########################################################################
|
116
117
|
def path
|
117
118
|
html = ''
|
118
119
|
a = []
|
119
|
-
m =
|
120
|
+
m = DcBigMenu.find( @parent.page.menu_id )
|
120
121
|
a << m
|
121
122
|
while m.parent
|
122
|
-
m =
|
123
|
+
m = DcBigMenu.find( m.parent )
|
123
124
|
a << m
|
124
125
|
end
|
125
126
|
#
|
@@ -134,14 +135,13 @@ def path
|
|
134
135
|
html
|
135
136
|
end
|
136
137
|
|
137
|
-
|
138
138
|
########################################################################
|
139
|
-
#
|
139
|
+
# Default methods renders top two levels of menu on top of page.
|
140
140
|
########################################################################
|
141
141
|
def default
|
142
142
|
html = '<div class="menu0-div"><ul>'
|
143
143
|
@selected = find_selected
|
144
|
-
level_0 =
|
144
|
+
level_0 = DcBigMenu.where(dc_site_id: @site._id, parent: nil, active: true).sort(order: 1).to_a
|
145
145
|
level_0.each do |item|
|
146
146
|
# menu can be hidden from user
|
147
147
|
can_view, msg = dc_user_can_view(@parent, item)
|
@@ -151,7 +151,7 @@ def default
|
|
151
151
|
end
|
152
152
|
html << "</ul></div>"
|
153
153
|
# submenu
|
154
|
-
level_1 =
|
154
|
+
level_1 = DcBigMenu.where(dc_site_id: @site._id, parent: @selected.id, active: true).sort(order: 1).to_a
|
155
155
|
html << "<div class='menu1-div'><ul>\n"
|
156
156
|
level_1.each do |item1|
|
157
157
|
# menu can be hidden from user
|
@@ -163,15 +163,15 @@ def default
|
|
163
163
|
end
|
164
164
|
|
165
165
|
########################################################################
|
166
|
-
#
|
166
|
+
# Renderer dispatcher. Method returns HTML part of code.
|
167
167
|
########################################################################
|
168
168
|
def render_html
|
169
169
|
method = @opts[:method] || 'default'
|
170
|
-
respond_to?(method) ? send(method) : "Error
|
170
|
+
respond_to?(method) ? send(method) : "Error DcBigMenu: Method #{method} doesn't exist!"
|
171
171
|
end
|
172
172
|
|
173
173
|
########################################################################
|
174
|
-
#
|
174
|
+
# Return CSS part of code.
|
175
175
|
########################################################################
|
176
176
|
def render_css
|
177
177
|
@menu ? "#{@menu.css}\n #{@selected ? @selected.css : ''}\n" : ''
|
@@ -23,12 +23,13 @@
|
|
23
23
|
#++
|
24
24
|
|
25
25
|
########################################################################
|
26
|
-
#
|
26
|
+
# This is renderer to return captcha code field when required on data entry. It currently
|
27
|
+
# implements only very basic captcha logic and only in Slovenian language.
|
27
28
|
########################################################################
|
28
|
-
class DcCaptchaRenderer
|
29
|
+
class DcCaptchaRenderer < DcRenderer
|
29
30
|
|
30
31
|
########################################################################
|
31
|
-
#
|
32
|
+
# Check if result of captcha is OK.
|
32
33
|
########################################################################
|
33
34
|
def is_ok?()
|
34
35
|
return false unless self.respond_to?(@opts[:type])
|
@@ -36,19 +37,9 @@ def is_ok?()
|
|
36
37
|
end
|
37
38
|
|
38
39
|
########################################################################
|
39
|
-
#
|
40
|
-
########################################################################
|
41
|
-
def initialize( parent, opts={} )
|
42
|
-
@parent = parent
|
43
|
-
@opts = opts
|
44
|
-
@part_css = ''
|
45
|
-
self
|
46
|
-
end
|
47
|
-
|
48
|
-
########################################################################
|
49
|
-
#
|
40
|
+
# Very simple captcha type. This is Slovenian only version.
|
50
41
|
########################################################################
|
51
|
-
def simpl(check=false)
|
42
|
+
def simpl(check=false) #:nodoc:
|
52
43
|
a1 = [['enajst', 11], ['dvanajst',12],['petindvajset',25],['triintridest',33],['devetnajst',19]]
|
53
44
|
a2 = [['šest', 6], ['sedem',7],['osem',8],['devet',9],['deset',10]]
|
54
45
|
op = [['seštejte','+'],['odštejte','-']]
|
@@ -75,26 +66,48 @@ eot
|
|
75
66
|
end
|
76
67
|
|
77
68
|
########################################################################
|
78
|
-
#
|
69
|
+
# Very simple captcha. Will ask for name of month in a year and check if entered value is valid when
|
70
|
+
# asked to check.
|
71
|
+
#
|
72
|
+
# Parameters:
|
73
|
+
# [check] Boolean. Send true if you are checking if entered value is OK. Default is false.
|
74
|
+
# Method will return HTML code required to render capcha field on form.
|
75
|
+
#
|
76
|
+
# Returns:
|
77
|
+
# HTML code for displaying captcha field on page.
|
78
|
+
# If parameters check is true then method checks if written data is correct and returns true/false.
|
79
|
+
########################################################################
|
80
|
+
def simple(check=false)
|
81
|
+
if check
|
82
|
+
number = @opts['question'].split(' ').last.chomp('?').to_i
|
83
|
+
month = I18n.t('date.month_names')[number].downcase
|
84
|
+
return month == @opts['record']['captcha_result'].to_i
|
85
|
+
else
|
86
|
+
number = Random.rand(11) + 1
|
87
|
+
txt = I18n.t('drgcms.dc_captcha.simple_message', number)
|
88
|
+
|
89
|
+
<<eot
|
90
|
+
<div style="background-color: #fafafa; border: 1px solid #eee; padding: 6px; margin: 5px 5px 25px 5px; font-size: 1.2em; border-radius: 2px;">
|
91
|
+
#{txt} <span style="color: red;">*</span> #{@parent.text_field('record','captcha_result', size: 5)} #{@parent.hidden_field_tag('question', txt )}
|
92
|
+
</div>
|
93
|
+
eot
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
########################################################################
|
98
|
+
# Return HTML part of code.
|
79
99
|
########################################################################
|
80
100
|
def render_html
|
81
101
|
captcha_type = @opts[:captcha_type] || @parent.params[:captcha_type]
|
82
|
-
return '
|
102
|
+
return 'DcCaptchaRenderer: Error captcha_type parameter not set!' unless captcha_type
|
83
103
|
|
84
104
|
html = if self.respond_to?(captcha_type)
|
85
105
|
send(captcha_type)
|
86
106
|
else
|
87
|
-
|
107
|
+
"DcCaptchaRenderer: Error method #{captcha_type} not defined!"
|
88
108
|
end
|
89
109
|
|
90
110
|
html
|
91
111
|
end
|
92
112
|
|
93
|
-
########################################################################
|
94
|
-
#
|
95
|
-
########################################################################
|
96
|
-
def render_css
|
97
|
-
@part_css
|
98
|
-
end
|
99
|
-
|
100
113
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright (c) 2012
|
2
|
+
# Copyright (c) 2012+ Damjan Rems
|
3
3
|
#
|
4
4
|
# Permission is hereby granted, free of charge, to any person obtaining
|
5
5
|
# a copy of this software and associated documentation files (the
|
@@ -22,30 +22,23 @@
|
|
22
22
|
#++
|
23
23
|
|
24
24
|
########################################################################
|
25
|
-
#
|
25
|
+
# Renderer methods which may be useful on any site.
|
26
26
|
########################################################################
|
27
|
-
class DcCommonRenderer
|
27
|
+
class DcCommonRenderer < DcRenderer
|
28
28
|
|
29
29
|
include DcApplicationHelper
|
30
30
|
|
31
31
|
########################################################################
|
32
|
-
#
|
33
|
-
|
34
|
-
def initialize( parent, opts={} )
|
35
|
-
@parent = parent
|
36
|
-
@opts = opts
|
37
|
-
@css = ''
|
38
|
-
self
|
39
|
-
end
|
40
|
-
|
41
|
-
########################################################################
|
42
|
-
# Renderer for printer friendly layout.
|
32
|
+
# Renderer for printer friendly layout. Will call another renderer which
|
33
|
+
# should provide html code for printer friendly output.
|
43
34
|
#
|
44
35
|
# Parameters are passed through link. There are currently two parameters,
|
45
36
|
# which define renderer and method to be used for creating output.
|
46
37
|
#
|
47
|
-
# renderer
|
48
|
-
#
|
38
|
+
# renderer::
|
39
|
+
# Defines renderer's class
|
40
|
+
# method::
|
41
|
+
# Defines renderer's class method
|
49
42
|
########################################################################
|
50
43
|
def layout_4print
|
51
44
|
opts = @opts.dup
|
@@ -57,39 +50,20 @@ def layout_4print
|
|
57
50
|
@css << obj.render_css.to_s
|
58
51
|
html
|
59
52
|
end
|
60
|
-
=begin
|
61
|
-
# OLD code
|
62
|
-
html =<<EOT
|
63
|
-
<!-- Google analytics. -->
|
64
|
-
<script type="text/javascript">
|
65
|
-
var _gaq = _gaq || [];
|
66
|
-
_gaq.push(['_setAccount', '#{ga_acc}']);
|
67
|
-
_gaq.push(['_trackPageview']);
|
68
|
-
|
69
|
-
(function() {
|
70
|
-
if (typeof(eu_cookies_allowed) === "function" && !eu_cookies_allowed() ) return;
|
71
|
-
var ga = document.createElement('script');
|
72
|
-
ga.type = 'text/javascript';
|
73
|
-
ga.async = true;
|
74
|
-
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
75
|
-
var s = document.getElementsByTagName('script')[0];
|
76
|
-
s.parentNode.insertBefore(ga, s);
|
77
|
-
})();
|
78
|
-
</script>
|
79
|
-
EOT
|
80
|
-
=end
|
81
53
|
|
82
54
|
########################################################################
|
83
55
|
# Renderer for Google analytics code.
|
84
56
|
#
|
85
|
-
# Parameters
|
57
|
+
# Parameters:
|
58
|
+
# Are passed through @opts hash and can therefore be set on site or design
|
59
|
+
# or page document parameters field as ga_acc key.
|
86
60
|
#
|
87
61
|
# If eu_cookies_allowed function is defined in javascript libraries it will be
|
88
|
-
# called and if false is
|
62
|
+
# called and if false is returned GA code will not be executed. This is in
|
89
63
|
# order with European cookie law.
|
90
64
|
#
|
91
65
|
# Example:
|
92
|
-
#
|
66
|
+
# dc_render(:dc_common_renderer, method: 'google_analytics', code: 'UA-12345678-9')
|
93
67
|
########################################################################
|
94
68
|
def google_analytics
|
95
69
|
ga_acc = @opts[:code] || @opts[:ga_acc]
|
@@ -115,18 +89,11 @@ EOT
|
|
115
89
|
end
|
116
90
|
|
117
91
|
########################################################################
|
118
|
-
#
|
92
|
+
# Return HTML part of code.
|
119
93
|
########################################################################
|
120
94
|
def render_html
|
121
95
|
method = @opts[:method] || 'default'
|
122
96
|
respond_to?(method) ? send(method) : "Error DcCommonRenderer: Method #{method} doesn't exist!"
|
123
97
|
end
|
124
98
|
|
125
|
-
########################################################################
|
126
|
-
#
|
127
|
-
########################################################################
|
128
|
-
def render_css
|
129
|
-
@css
|
130
|
-
end
|
131
|
-
|
132
99
|
end
|
@@ -23,15 +23,22 @@
|
|
23
23
|
#++
|
24
24
|
|
25
25
|
########################################################################
|
26
|
-
#
|
26
|
+
# Default menu renderer for dc_menus collection. Renderer produces output for
|
27
|
+
# rendering menu with (theoretically) infinite level of sub menus. In practice
|
28
|
+
# reasonable maximum level of 4 is advised.
|
29
|
+
#
|
30
|
+
# Example (as used in design):
|
31
|
+
# dc_render(:dc_menu, name: 'my_menu')
|
32
|
+
# # when :name option is ommited it will use site document's menu_name field
|
33
|
+
# dc_render(:dc_menu)
|
27
34
|
########################################################################
|
28
35
|
class DcMenuRenderer
|
29
36
|
|
30
37
|
include DcApplicationHelper
|
31
38
|
########################################################################
|
32
|
-
#
|
39
|
+
# Object initialization. Will also prepare DcMenu document.
|
33
40
|
########################################################################
|
34
|
-
def initialize( parent, opts )
|
41
|
+
def initialize( parent, opts ) #:nodoc:
|
35
42
|
@parent = parent
|
36
43
|
opts[:name] ||= parent.site.menu_name # default in site
|
37
44
|
@menu = DcMenu.find_by(name: opts[:name].to_s)
|
@@ -40,7 +47,7 @@ def initialize( parent, opts )
|
|
40
47
|
end
|
41
48
|
|
42
49
|
########################################################################
|
43
|
-
# Return selected topmenu level
|
50
|
+
# Return selected topmenu level.
|
44
51
|
########################################################################
|
45
52
|
def find_selected
|
46
53
|
ret = @menu.dc_menu_items.find( @parent.page.menu_id ) if @parent.page.menu_id
|
@@ -51,33 +58,36 @@ end
|
|
51
58
|
########################################################################
|
52
59
|
# Creates edit link if in edit mode.
|
53
60
|
########################################################################
|
54
|
-
def link_4edit(opts)
|
61
|
+
def link_4edit(opts) #:nodoc:
|
55
62
|
html = ''
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
html
|
63
|
+
# return html unless @opts[:edit_mode] > 1
|
64
|
+
|
65
|
+
opts.merge!( { controller: 'cmsedit', action: 'edit' } )
|
66
|
+
title = "#{t('drgcms.edit')}: "
|
67
|
+
opts[:title] = "#{title} #{opts[:title]}"
|
68
|
+
|
69
|
+
html << '<li>'+dc_link_for_edit(opts)+'</li>'
|
63
70
|
end
|
64
71
|
|
65
72
|
########################################################################
|
66
|
-
# Returns html code required
|
73
|
+
# Returns html code required to create single link in a menu. Subroutine of do_menu_level.
|
67
74
|
########################################################################
|
68
75
|
def link_4menu(item)
|
69
|
-
#
|
76
|
+
# link should start with '/'
|
70
77
|
item.link = ((item.link[0] == '/' ? '' : '/') + item.link) unless item.link.match('http')
|
71
78
|
target = item.target.blank? ? nil : item.target
|
72
|
-
|
79
|
+
# - in first place won't write caption text
|
73
80
|
caption = item.caption[0] == '-' ? '' : item.caption.to_s
|
74
81
|
img_title = item.caption.to_s.sub('-','')
|
75
|
-
|
76
|
-
(
|
82
|
+
# add picture if picture is not blank
|
83
|
+
(item.picture.blank? ? '' :
|
84
|
+
@parent.link_to( @parent.image_tag(item.picture), item.link, {title: img_title, target: target} )) +
|
85
|
+
(caption.blank? ? '' :
|
86
|
+
@parent.link_to(caption, item.link, {target: target}) )
|
77
87
|
end
|
78
88
|
|
79
89
|
########################################################################
|
80
|
-
# Creates
|
90
|
+
# Creates HTML code required for submenu on single level. Subroutine of default.
|
81
91
|
########################################################################
|
82
92
|
def do_menu_level(menu, options={})
|
83
93
|
html = '<ul>'
|
@@ -126,7 +136,7 @@ def default
|
|
126
136
|
end
|
127
137
|
|
128
138
|
########################################################################
|
129
|
-
#
|
139
|
+
# Renderer dispatcher. Method returns HTML part of code.
|
130
140
|
########################################################################
|
131
141
|
def render_html
|
132
142
|
method = @opts[:method] || 'default'
|
@@ -134,7 +144,7 @@ def render_html
|
|
134
144
|
end
|
135
145
|
|
136
146
|
########################################################################
|
137
|
-
#
|
147
|
+
# Return CSS part of code.
|
138
148
|
########################################################################
|
139
149
|
def render_css
|
140
150
|
@menu.css if @menu
|