drg_cms 0.4.39
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 +7 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +3 -0
- data/Rakefile +39 -0
- data/app/assets/images/drg_cms/add.png +0 -0
- data/app/assets/images/drg_cms/arrow_in.png +0 -0
- data/app/assets/images/drg_cms/arrow_out.png +0 -0
- data/app/assets/images/drg_cms/checkbox-checked.png +0 -0
- data/app/assets/images/drg_cms/checkbox-unchecked.png +0 -0
- data/app/assets/images/drg_cms/cols.png +0 -0
- data/app/assets/images/drg_cms/copy.png +0 -0
- data/app/assets/images/drg_cms/edit.png +0 -0
- data/app/assets/images/drg_cms/edit_design.png +0 -0
- data/app/assets/images/drg_cms/edit_page.png +0 -0
- data/app/assets/images/drg_cms/edit_site.png +0 -0
- data/app/assets/images/drg_cms/html.png +0 -0
- data/app/assets/images/drg_cms/pin.png +0 -0
- data/app/assets/images/drg_cms/printer.png +0 -0
- data/app/assets/images/drg_cms/reload.png +0 -0
- data/app/assets/images/drg_cms/search_16.png +0 -0
- data/app/assets/images/drg_cms/spinner.gif +0 -0
- data/app/assets/images/drg_cms/view_tile.png +0 -0
- data/app/assets/images/drg_cms/x.png +0 -0
- data/app/assets/javascripts/drg_cms/drg_cms.js +449 -0
- data/app/assets/javascripts/drg_cms/jquery-migrate.js +511 -0
- data/app/assets/javascripts/drg_cms/jquery.datetimepicker.js +1353 -0
- data/app/assets/javascripts/drg_cms/some_scripts.js +33 -0
- data/app/assets/javascripts/drg_cms_application.js +11 -0
- data/app/assets/javascripts/drg_cms_cms.js +28 -0
- data/app/assets/stylesheets/drg_cms/drg_cms.css +632 -0
- data/app/assets/stylesheets/drg_cms/jquery-ui.css +339 -0
- data/app/assets/stylesheets/drg_cms/jquery.datetimepicker.css +304 -0
- data/app/assets/stylesheets/drg_cms/th-bg.png +0 -0
- data/app/assets/stylesheets/drg_cms/theme.css +49 -0
- data/app/assets/stylesheets/drg_cms_application.css +12 -0
- data/app/assets/stylesheets/drg_cms_cms.css +26 -0
- data/app/controllers/cmsedit_controller.rb +673 -0
- data/app/controllers/dc_application_controller.rb +385 -0
- data/app/controllers/dc_at_the_beginning_controller.rb +120 -0
- data/app/controllers/dc_common_controller.rb +314 -0
- data/app/controllers/dc_mail_controller.rb +89 -0
- data/app/controllers/dc_main_controller.rb +40 -0
- data/app/controllers/drgcms_controls/dc_page_controls.rb +40 -0
- data/app/forms/all_options.yml +176 -0
- data/app/forms/cms_forms.yml +93 -0
- data/app/forms/cms_menu.yml +142 -0
- data/app/forms/dc_ad.yml +130 -0
- data/app/forms/dc_big_table.yml +59 -0
- data/app/forms/dc_big_table_locale.yml +41 -0
- data/app/forms/dc_big_table_value.yml +47 -0
- data/app/forms/dc_category.yml +57 -0
- data/app/forms/dc_design.yml +68 -0
- data/app/forms/dc_folder_permission.yml +49 -0
- data/app/forms/dc_forum_cat.yml +54 -0
- data/app/forms/dc_forum_forum.yml +53 -0
- data/app/forms/dc_forum_msg.yml +124 -0
- data/app/forms/dc_forum_privmsg.yml +125 -0
- data/app/forms/dc_forum_topic.yml +131 -0
- data/app/forms/dc_journal.yml +85 -0
- data/app/forms/dc_link.yml +55 -0
- data/app/forms/dc_mail.yml +88 -0
- data/app/forms/dc_mail_address.yml +56 -0
- data/app/forms/dc_mail_list.yml +44 -0
- data/app/forms/dc_mail_list_member.yml +42 -0
- data/app/forms/dc_menu.yml +62 -0
- data/app/forms/dc_menu_item.yml +81 -0
- data/app/forms/dc_page.yml +145 -0
- data/app/forms/dc_part.yml +102 -0
- data/app/forms/dc_permission.yml +50 -0
- data/app/forms/dc_piece.yml +105 -0
- data/app/forms/dc_policy.yml +57 -0
- data/app/forms/dc_policy_role.yml +42 -0
- data/app/forms/dc_policy_rule.yml +38 -0
- data/app/forms/dc_policy_rule_nocms.yml +38 -0
- data/app/forms/dc_poll.yml +113 -0
- data/app/forms/dc_poll_item.yml +76 -0
- data/app/forms/dc_simple_menu.yml +64 -0
- data/app/forms/dc_simple_menu_item.yml +80 -0
- data/app/forms/dc_site.yml +149 -0
- data/app/forms/dc_user.yml +142 -0
- data/app/forms/dc_user_role.yml +54 -0
- data/app/forms/drgcms_cms.yml +28 -0
- data/app/helpers/cmsedit_helper.rb +698 -0
- data/app/helpers/dc_ad_renderer.rb +206 -0
- data/app/helpers/dc_application_helper.rb +704 -0
- data/app/helpers/dc_big_menu_renderer.rb +180 -0
- data/app/helpers/dc_captcha_renderer.rb +100 -0
- data/app/helpers/dc_common_renderer.rb +132 -0
- data/app/helpers/dc_mail_renderer.rb +76 -0
- data/app/helpers/dc_menu_renderer.rb +143 -0
- data/app/helpers/dc_page_renderer.rb +80 -0
- data/app/helpers/dc_part_renderer.rb +162 -0
- data/app/helpers/dc_piece_renderer.rb +124 -0
- data/app/helpers/dc_poll_renderer.rb +219 -0
- data/app/helpers/dc_renderer.rb +56 -0
- data/app/helpers/dc_simple_menu_renderer.rb +244 -0
- data/app/helpers/drgcms_form_field.rb +863 -0
- data/app/models/__dc_global_data.rb +44 -0
- data/app/models/dc_ad.rb +52 -0
- data/app/models/dc_ad_stat.rb +34 -0
- data/app/models/dc_big_menu.rb +89 -0
- data/app/models/dc_big_table.rb +63 -0
- data/app/models/dc_big_table_locale.rb +35 -0
- data/app/models/dc_big_table_value.rb +38 -0
- data/app/models/dc_category.rb +48 -0
- data/app/models/dc_design.rb +48 -0
- data/app/models/dc_dummy.rb +30 -0
- data/app/models/dc_folder_permission.rb +43 -0
- data/app/models/dc_global_data.rb +44 -0
- data/app/models/dc_journal.rb +39 -0
- data/app/models/dc_key_value_store.rb +90 -0
- data/app/models/dc_link.rb +39 -0
- data/app/models/dc_mail.rb +64 -0
- data/app/models/dc_mail_address.rb +69 -0
- data/app/models/dc_mail_list.rb +48 -0
- data/app/models/dc_mail_list_member.rb +34 -0
- data/app/models/dc_menu.rb +59 -0
- data/app/models/dc_menu_item.rb +40 -0
- data/app/models/dc_page.rb +123 -0
- data/app/models/dc_part.rb +28 -0
- data/app/models/dc_permission.rb +58 -0
- data/app/models/dc_piece.rb +57 -0
- data/app/models/dc_policy.rb +94 -0
- data/app/models/dc_policy_role.rb +47 -0
- data/app/models/dc_policy_rule.rb +65 -0
- data/app/models/dc_poll.rb +46 -0
- data/app/models/dc_poll_item.rb +40 -0
- data/app/models/dc_sendmail.rb +48 -0
- data/app/models/dc_simple_menu.rb +58 -0
- data/app/models/dc_simple_menu_item.rb +39 -0
- data/app/models/dc_site.rb +92 -0
- data/app/models/dc_stat.rb +36 -0
- data/app/models/dc_user.rb +91 -0
- data/app/models/dc_user_role.rb +36 -0
- data/app/models/dc_visit.rb +35 -0
- data/app/views/cmsedit/_edit_stuff.html.erb +59 -0
- data/app/views/cmsedit/_edit_stuff.js.erb +6 -0
- data/app/views/cmsedit/_form.html.erb +21 -0
- data/app/views/cmsedit/_result.html.erb +20 -0
- data/app/views/cmsedit/edit.html.erb +6 -0
- data/app/views/cmsedit/error.html.erb +2 -0
- data/app/views/cmsedit/index.html.erb +6 -0
- data/app/views/cmsedit/new.html.erb +5 -0
- data/app/views/cmsedit/show.html.erb +21 -0
- 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/dc_common/paste_clipboard.html.erb +17 -0
- data/app/views/dc_mail/subscribe.html.erb +7 -0
- data/app/views/dc_mail/unsubscribe.html.erb +19 -0
- data/app/views/layouts/cms.html.erb +17 -0
- data/app/views/layouts/cmsedit.html.erb +16 -0
- data/app/views/layouts/content.html.erb +16 -0
- data/config/initializers/kaminari_patch.rb +36 -0
- data/config/locales/datetimepicker.yml +13 -0
- data/config/locales/drgcms_en.yml +96 -0
- data/config/locales/drgcms_sl.yml +97 -0
- data/config/locales/en.yml +7 -0
- data/config/locales/kaminari.yml +26 -0
- data/config/locales/models_en.yml +790 -0
- data/config/locales/models_sl.yml +805 -0
- data/config/locales/mongoid_sl.yml +60 -0
- data/config/locales/sl.yml +211 -0
- data/config/routes.rb +2 -0
- data/drg_cms.gemspec +28 -0
- data/lib/drg_cms.rb +45 -0
- data/lib/drg_cms/engine.rb +30 -0
- data/lib/drg_cms/version.rb +3 -0
- data/lib/tasks/at_the_beginning.yml +26 -0
- data/lib/tasks/dc_cleanup.rake +94 -0
- data/lib/tasks/drg_cms_tasks.rake +118 -0
- data/lib/tasks/send_mail.rake +253 -0
- data/lib/tasks/site_statistics.rake +80 -0
- data/test/drg_cms_test.rb +7 -0
- data/test/dummy/README.rdoc +261 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +15 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +59 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +58 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/test_helper.rb +15 -0
- metadata +375 -0
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
#coding: utf-8
|
|
2
|
+
#--
|
|
3
|
+
# Copyright (c) 2013+ Damjan Rems
|
|
4
|
+
#
|
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
|
6
|
+
# a copy of this software and associated documentation files (the
|
|
7
|
+
# "Software"), to deal in the Software without restriction, including
|
|
8
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
|
9
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
|
10
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
|
11
|
+
# the following conditions:
|
|
12
|
+
#
|
|
13
|
+
# The above copyright notice and this permission notice shall be
|
|
14
|
+
# included in all copies or substantial portions of the Software.
|
|
15
|
+
#
|
|
16
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
17
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
18
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
20
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
21
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
22
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
23
|
+
#++
|
|
24
|
+
|
|
25
|
+
########################################################################
|
|
26
|
+
#
|
|
27
|
+
########################################################################
|
|
28
|
+
class DcBigMenuRenderer
|
|
29
|
+
|
|
30
|
+
include DcApplicationHelper
|
|
31
|
+
########################################################################
|
|
32
|
+
#
|
|
33
|
+
########################################################################
|
|
34
|
+
def initialize( parent, opts )
|
|
35
|
+
@parent = parent
|
|
36
|
+
# @menu = DcSimpleMenu.find_by(site_id: dc_get_site._id)
|
|
37
|
+
@site = parent.dc_get_site
|
|
38
|
+
@opts = opts
|
|
39
|
+
self
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
########################################################################
|
|
43
|
+
# Return selected topmenu level
|
|
44
|
+
########################################################################
|
|
45
|
+
def find_selected
|
|
46
|
+
ret = DcMenu.find( @parent.page.menu_id ) if @parent.page.menu_id
|
|
47
|
+
while ret and ret.parent != nil
|
|
48
|
+
ret = DcMenu.find( ret.parent )
|
|
49
|
+
end
|
|
50
|
+
# return first if not found (something is wrong)
|
|
51
|
+
# p ret
|
|
52
|
+
ret ||= DcMenu.where(dc_site_id: @site._id, parent: nil, active: true).limit(1).first
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
########################################################################
|
|
56
|
+
# Creates edit link if in edit mode.
|
|
57
|
+
########################################################################
|
|
58
|
+
def link_4edit
|
|
59
|
+
c = ''
|
|
60
|
+
if @opts[:edit_mode] > 1
|
|
61
|
+
@opts[:editparams].merge!( { table: 'dc_simple_menu', controller: 'cmsedit', action: 'edit' } )
|
|
62
|
+
title = "#{t('drgcms.edit')}: "
|
|
63
|
+
@opts[:editparams].merge!( { id: @menu.id, title: "#{title}#{@menu.name}" } ) if @menu
|
|
64
|
+
title << t('helpers.label.dc_simple_menu.tabletitle')
|
|
65
|
+
@opts[:editparams].merge!( { action: 'index', title: title }) if @menu.nil?
|
|
66
|
+
c << dc_link_for_edit( @opts[:editparams] )
|
|
67
|
+
end
|
|
68
|
+
c
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
########################################################################
|
|
72
|
+
# Renders menu as table. Thus menu is rendered evenly justified in the width defined by CSS.
|
|
73
|
+
########################################################################
|
|
74
|
+
def link_4menu(item)
|
|
75
|
+
html = ''
|
|
76
|
+
link = item.link
|
|
77
|
+
link = "/#{@site.route_name}/#{item.page_id}" #if link.blank?
|
|
78
|
+
#
|
|
79
|
+
html << @parent.link_to(item.picture, link) unless item.picture.blank?
|
|
80
|
+
html << if !item.caption.blank?
|
|
81
|
+
# TODO Translation
|
|
82
|
+
@parent.link_to(item.caption, link)
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
########################################################################
|
|
87
|
+
# Renders left menu
|
|
88
|
+
########################################################################
|
|
89
|
+
def left_menu
|
|
90
|
+
html = ''
|
|
91
|
+
m = DcMenu.find( @parent.page.menu_id )
|
|
92
|
+
# Show menu on same level if selected has no children
|
|
93
|
+
if DcMenu.where( parent: @parent.page.menu_id ).limit(1).to_a.size == 0
|
|
94
|
+
m = DcMenu.find( m.parent )
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
html << "<div class='menu-left-item-top'>#{m.caption}</div>"
|
|
98
|
+
#
|
|
99
|
+
DcMenu.where( parent: m._id ).sort(order: 1).each do |item|
|
|
100
|
+
html << (item._id == @parent.page.menu_id ? '<div class="menu-left-item-selected">' : '<div class="menu-left-item">')
|
|
101
|
+
html << link_4menu(item)
|
|
102
|
+
html << '</div>'
|
|
103
|
+
end
|
|
104
|
+
#
|
|
105
|
+
html << "<div class='menu-left-item-bottom'>"
|
|
106
|
+
if m.parent
|
|
107
|
+
p = DcMenu.find( m.parent )
|
|
108
|
+
html << "▲ #{link_4menu(p)}"
|
|
109
|
+
end
|
|
110
|
+
html << ' </div>'
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
########################################################################
|
|
114
|
+
# Renders menu path for selected menu
|
|
115
|
+
########################################################################
|
|
116
|
+
def path
|
|
117
|
+
html = ''
|
|
118
|
+
a = []
|
|
119
|
+
m = DcMenu.find( @parent.page.menu_id )
|
|
120
|
+
a << m
|
|
121
|
+
while m.parent
|
|
122
|
+
m = DcMenu.find( m.parent )
|
|
123
|
+
a << m
|
|
124
|
+
end
|
|
125
|
+
#
|
|
126
|
+
(a.size - 1).downto(0) do |i|
|
|
127
|
+
html << "<span id=menu-path-#{a.size - 1 - i}>"
|
|
128
|
+
html << link_4menu(a[i])
|
|
129
|
+
html << (i > 0 ? ' » ' : '') #›➔
|
|
130
|
+
html << '</span>'
|
|
131
|
+
end
|
|
132
|
+
# Save level to parents params object
|
|
133
|
+
@parent.params[:menu_level] = a.size
|
|
134
|
+
html
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
########################################################################
|
|
139
|
+
#
|
|
140
|
+
########################################################################
|
|
141
|
+
def default
|
|
142
|
+
html = '<div class="menu0-div"><ul>'
|
|
143
|
+
@selected = find_selected
|
|
144
|
+
level_0 = DcMenu.where(dc_site_id: @site._id, parent: nil, active: true).sort(order: 1).to_a
|
|
145
|
+
level_0.each do |item|
|
|
146
|
+
# menu can be hidden from user
|
|
147
|
+
can_view, msg = dc_user_can_view(@parent, item)
|
|
148
|
+
next unless can_view
|
|
149
|
+
klas = item.id == @selected.id ? "menu0-selected" : "menu0-item"
|
|
150
|
+
html << "<li class='#{klas}'>#{ link_4menu(item) }</li>\n"
|
|
151
|
+
end
|
|
152
|
+
html << "</ul></div>"
|
|
153
|
+
# submenu
|
|
154
|
+
level_1 = DcMenu.where(dc_site_id: @site._id, parent: @selected.id, active: true).sort(order: 1).to_a
|
|
155
|
+
html << "<div class='menu1-div'><ul>\n"
|
|
156
|
+
level_1.each do |item1|
|
|
157
|
+
# menu can be hidden from user
|
|
158
|
+
can_view, msg = dc_user_can_view(@parent, item1)
|
|
159
|
+
next unless can_view
|
|
160
|
+
html << " <li class='menu1-item'>#{link_4menu(item1)}</li>\n"
|
|
161
|
+
end
|
|
162
|
+
html << '</ul></div>'
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
########################################################################
|
|
166
|
+
#
|
|
167
|
+
########################################################################
|
|
168
|
+
def render_html
|
|
169
|
+
method = @opts[:method] || 'default'
|
|
170
|
+
respond_to?(method) ? send(method) : "Error DcMenu: Method #{method} doesn't exist!"
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
########################################################################
|
|
174
|
+
#
|
|
175
|
+
########################################################################
|
|
176
|
+
def render_css
|
|
177
|
+
@menu ? "#{@menu.css}\n #{@selected ? @selected.css : ''}\n" : ''
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
end
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
#coding: utf-8
|
|
2
|
+
#--
|
|
3
|
+
# Copyright (c) 2012-2013 Damjan Rems
|
|
4
|
+
#
|
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
|
6
|
+
# a copy of this software and associated documentation files (the
|
|
7
|
+
# "Software"), to deal in the Software without restriction, including
|
|
8
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
|
9
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
|
10
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
|
11
|
+
# the following conditions:
|
|
12
|
+
#
|
|
13
|
+
# The above copyright notice and this permission notice shall be
|
|
14
|
+
# included in all copies or substantial portions of the Software.
|
|
15
|
+
#
|
|
16
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
17
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
18
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
20
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
21
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
22
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
23
|
+
#++
|
|
24
|
+
|
|
25
|
+
########################################################################
|
|
26
|
+
#
|
|
27
|
+
########################################################################
|
|
28
|
+
class DcCaptchaRenderer
|
|
29
|
+
|
|
30
|
+
########################################################################
|
|
31
|
+
# check if result of captcha os OK
|
|
32
|
+
########################################################################
|
|
33
|
+
def is_ok?()
|
|
34
|
+
return false unless self.respond_to?(@opts[:type])
|
|
35
|
+
send(@opts[:type], true)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
########################################################################
|
|
39
|
+
#
|
|
40
|
+
########################################################################
|
|
41
|
+
def initialize( parent, opts={} )
|
|
42
|
+
@parent = parent
|
|
43
|
+
@opts = opts
|
|
44
|
+
@part_css = ''
|
|
45
|
+
self
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
########################################################################
|
|
49
|
+
#
|
|
50
|
+
########################################################################
|
|
51
|
+
def simpl(check=false)
|
|
52
|
+
a1 = [['enajst', 11], ['dvanajst',12],['petindvajset',25],['triintridest',33],['devetnajst',19]]
|
|
53
|
+
a2 = [['šest', 6], ['sedem',7],['osem',8],['devet',9],['deset',10]]
|
|
54
|
+
op = [['seštejte','+'],['odštejte','-']]
|
|
55
|
+
#
|
|
56
|
+
if check
|
|
57
|
+
# Prosimo sestejte dvanajst in sedem
|
|
58
|
+
ha1, hop, ha2 = Hash[a1], Hash[op], Hash[a2]
|
|
59
|
+
n1, operacija, prvi, n2, drugi = @opts['vprasanje'].split(' ')
|
|
60
|
+
rezultat = eval("#{ha1[prvi]}#{hop[operacija]}#{ha2[drugi]}")
|
|
61
|
+
return rezultat == @opts['record']['rezultat'].to_i
|
|
62
|
+
else
|
|
63
|
+
txt = "Prosimo #{op[Random.rand(1)][0]} #{a1[Random.rand(4)][0]} in #{a2[Random.rand(4)][0]}"
|
|
64
|
+
y = {}
|
|
65
|
+
y['name'] = 'rezultat'
|
|
66
|
+
y['html'] = {}
|
|
67
|
+
y['html']['size'] = 5
|
|
68
|
+
|
|
69
|
+
<<eot
|
|
70
|
+
<div style="background-color: #fafafa; border: 1px solid #eee; padding: 6px; margin: 5px 5px 25px 5px; font-size: 1.2em; border-radius: 2px;">
|
|
71
|
+
#{txt} <span style="color: red;">*</span> #{@parent.text_field('record','rezultat', size: 5)} #{@parent.hidden_field_tag('vprasanje', txt )}
|
|
72
|
+
</div>
|
|
73
|
+
eot
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
########################################################################
|
|
78
|
+
#
|
|
79
|
+
########################################################################
|
|
80
|
+
def render_html
|
|
81
|
+
captcha_type = @opts[:captcha_type] || @parent.params[:captcha_type]
|
|
82
|
+
return 'Captcha parameter not set!' unless captcha_type
|
|
83
|
+
|
|
84
|
+
html = if self.respond_to?(captcha_type)
|
|
85
|
+
send(captcha_type)
|
|
86
|
+
else
|
|
87
|
+
'Captcha method not defined!'
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
html
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
########################################################################
|
|
94
|
+
#
|
|
95
|
+
########################################################################
|
|
96
|
+
def render_css
|
|
97
|
+
@part_css
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
end
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Copyright (c) 2012-2013 Damjan Rems
|
|
3
|
+
#
|
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
|
5
|
+
# a copy of this software and associated documentation files (the
|
|
6
|
+
# "Software"), to deal in the Software without restriction, including
|
|
7
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
|
8
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
|
9
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
|
10
|
+
# the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be
|
|
13
|
+
# included in all copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
19
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
20
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
21
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
22
|
+
#++
|
|
23
|
+
|
|
24
|
+
########################################################################
|
|
25
|
+
#
|
|
26
|
+
########################################################################
|
|
27
|
+
class DcCommonRenderer
|
|
28
|
+
|
|
29
|
+
include DcApplicationHelper
|
|
30
|
+
|
|
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.
|
|
43
|
+
#
|
|
44
|
+
# Parameters are passed through link. There are currently two parameters,
|
|
45
|
+
# which define renderer and method to be used for creating output.
|
|
46
|
+
#
|
|
47
|
+
# renderer : Defines renderer's class
|
|
48
|
+
# method : Defines renderer's class method
|
|
49
|
+
########################################################################
|
|
50
|
+
def layout_4print
|
|
51
|
+
opts = @opts.dup
|
|
52
|
+
opts[:method] = @parent.params[:method]
|
|
53
|
+
klass = (@parent.params[:renderer] + '_renderer').classify
|
|
54
|
+
obj = Kernel.const_get(klass, Class.new).new(@parent, opts)
|
|
55
|
+
#
|
|
56
|
+
html = obj.render_html
|
|
57
|
+
@css << obj.render_css.to_s
|
|
58
|
+
html
|
|
59
|
+
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
|
+
|
|
82
|
+
########################################################################
|
|
83
|
+
# Renderer for Google analytics code.
|
|
84
|
+
#
|
|
85
|
+
# Parameters are passed through @opts hash and can therefore be set on site or design or page.
|
|
86
|
+
#
|
|
87
|
+
# If eu_cookies_allowed function is defined in javascript libraries it will be
|
|
88
|
+
# called and if false is returend GA code will not be executed. This is in
|
|
89
|
+
# order with European cookie law.
|
|
90
|
+
#
|
|
91
|
+
# Example:
|
|
92
|
+
# dc_render(:dc_common_renderer, method: 'google_analytics', code: 'UA-12345678-9')
|
|
93
|
+
########################################################################
|
|
94
|
+
def google_analytics
|
|
95
|
+
ga_acc = @opts[:code] || @opts[:ga_acc]
|
|
96
|
+
return '' if ga_acc.nil?
|
|
97
|
+
html =<<EOT
|
|
98
|
+
<!-- Google analytics. -->
|
|
99
|
+
<script type="text/javascript">
|
|
100
|
+
(function(i,s,o,g,r,a,m){
|
|
101
|
+
if (typeof(eu_cookies_allowed) === "function" && !eu_cookies_allowed() ) return;
|
|
102
|
+
|
|
103
|
+
i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
|
104
|
+
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
|
105
|
+
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
|
106
|
+
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
|
107
|
+
|
|
108
|
+
if (typeof(ga) === "function") {
|
|
109
|
+
ga('create', '#{ga_acc}', 'auto');
|
|
110
|
+
ga('send', 'pageview')
|
|
111
|
+
}
|
|
112
|
+
</script>
|
|
113
|
+
EOT
|
|
114
|
+
html.html_safe
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
########################################################################
|
|
118
|
+
#
|
|
119
|
+
########################################################################
|
|
120
|
+
def render_html
|
|
121
|
+
method = @opts[:method] || 'default'
|
|
122
|
+
respond_to?(method) ? send(method) : "Error DcCommonRenderer: Method #{method} doesn't exist!"
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
########################################################################
|
|
126
|
+
#
|
|
127
|
+
########################################################################
|
|
128
|
+
def render_css
|
|
129
|
+
@css
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
end
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Copyright (c) 2012+ Damjan Rems
|
|
3
|
+
#
|
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
|
5
|
+
# a copy of this software and associated documentation files (the
|
|
6
|
+
# "Software"), to deal in the Software without restriction, including
|
|
7
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
|
8
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
|
9
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
|
10
|
+
# the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be
|
|
13
|
+
# included in all copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
19
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
20
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
21
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
22
|
+
#++
|
|
23
|
+
|
|
24
|
+
########################################################################
|
|
25
|
+
#
|
|
26
|
+
########################################################################
|
|
27
|
+
class DcMailRenderer
|
|
28
|
+
|
|
29
|
+
include DcApplicationHelper
|
|
30
|
+
|
|
31
|
+
########################################################################
|
|
32
|
+
#
|
|
33
|
+
########################################################################
|
|
34
|
+
def initialize( parent, opts={} )
|
|
35
|
+
@parent = parent
|
|
36
|
+
@opts = opts
|
|
37
|
+
@part_css = ''
|
|
38
|
+
@page = @parent.page
|
|
39
|
+
self
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
########################################################################
|
|
43
|
+
# Dummy params method to return params object
|
|
44
|
+
########################################################################
|
|
45
|
+
def params
|
|
46
|
+
@parent.params
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
########################################################################
|
|
50
|
+
#
|
|
51
|
+
########################################################################
|
|
52
|
+
def subscribe
|
|
53
|
+
begin
|
|
54
|
+
name = "dc_mail/subscribe_#{Rails.application.config.i18n.default_locale}"
|
|
55
|
+
render partial: name
|
|
56
|
+
rescue
|
|
57
|
+
render partial: 'dc_mail/subscribe'
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
########################################################################
|
|
62
|
+
#
|
|
63
|
+
########################################################################
|
|
64
|
+
def render_html
|
|
65
|
+
method = @opts[:method]
|
|
66
|
+
send method if method
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
########################################################################
|
|
70
|
+
#
|
|
71
|
+
########################################################################
|
|
72
|
+
def render_css
|
|
73
|
+
@part_css
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
end
|