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.
Files changed (204) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +39 -0
  5. data/app/assets/images/drg_cms/add.png +0 -0
  6. data/app/assets/images/drg_cms/arrow_in.png +0 -0
  7. data/app/assets/images/drg_cms/arrow_out.png +0 -0
  8. data/app/assets/images/drg_cms/checkbox-checked.png +0 -0
  9. data/app/assets/images/drg_cms/checkbox-unchecked.png +0 -0
  10. data/app/assets/images/drg_cms/cols.png +0 -0
  11. data/app/assets/images/drg_cms/copy.png +0 -0
  12. data/app/assets/images/drg_cms/edit.png +0 -0
  13. data/app/assets/images/drg_cms/edit_design.png +0 -0
  14. data/app/assets/images/drg_cms/edit_page.png +0 -0
  15. data/app/assets/images/drg_cms/edit_site.png +0 -0
  16. data/app/assets/images/drg_cms/html.png +0 -0
  17. data/app/assets/images/drg_cms/pin.png +0 -0
  18. data/app/assets/images/drg_cms/printer.png +0 -0
  19. data/app/assets/images/drg_cms/reload.png +0 -0
  20. data/app/assets/images/drg_cms/search_16.png +0 -0
  21. data/app/assets/images/drg_cms/spinner.gif +0 -0
  22. data/app/assets/images/drg_cms/view_tile.png +0 -0
  23. data/app/assets/images/drg_cms/x.png +0 -0
  24. data/app/assets/javascripts/drg_cms/drg_cms.js +449 -0
  25. data/app/assets/javascripts/drg_cms/jquery-migrate.js +511 -0
  26. data/app/assets/javascripts/drg_cms/jquery.datetimepicker.js +1353 -0
  27. data/app/assets/javascripts/drg_cms/some_scripts.js +33 -0
  28. data/app/assets/javascripts/drg_cms_application.js +11 -0
  29. data/app/assets/javascripts/drg_cms_cms.js +28 -0
  30. data/app/assets/stylesheets/drg_cms/drg_cms.css +632 -0
  31. data/app/assets/stylesheets/drg_cms/jquery-ui.css +339 -0
  32. data/app/assets/stylesheets/drg_cms/jquery.datetimepicker.css +304 -0
  33. data/app/assets/stylesheets/drg_cms/th-bg.png +0 -0
  34. data/app/assets/stylesheets/drg_cms/theme.css +49 -0
  35. data/app/assets/stylesheets/drg_cms_application.css +12 -0
  36. data/app/assets/stylesheets/drg_cms_cms.css +26 -0
  37. data/app/controllers/cmsedit_controller.rb +673 -0
  38. data/app/controllers/dc_application_controller.rb +385 -0
  39. data/app/controllers/dc_at_the_beginning_controller.rb +120 -0
  40. data/app/controllers/dc_common_controller.rb +314 -0
  41. data/app/controllers/dc_mail_controller.rb +89 -0
  42. data/app/controllers/dc_main_controller.rb +40 -0
  43. data/app/controllers/drgcms_controls/dc_page_controls.rb +40 -0
  44. data/app/forms/all_options.yml +176 -0
  45. data/app/forms/cms_forms.yml +93 -0
  46. data/app/forms/cms_menu.yml +142 -0
  47. data/app/forms/dc_ad.yml +130 -0
  48. data/app/forms/dc_big_table.yml +59 -0
  49. data/app/forms/dc_big_table_locale.yml +41 -0
  50. data/app/forms/dc_big_table_value.yml +47 -0
  51. data/app/forms/dc_category.yml +57 -0
  52. data/app/forms/dc_design.yml +68 -0
  53. data/app/forms/dc_folder_permission.yml +49 -0
  54. data/app/forms/dc_forum_cat.yml +54 -0
  55. data/app/forms/dc_forum_forum.yml +53 -0
  56. data/app/forms/dc_forum_msg.yml +124 -0
  57. data/app/forms/dc_forum_privmsg.yml +125 -0
  58. data/app/forms/dc_forum_topic.yml +131 -0
  59. data/app/forms/dc_journal.yml +85 -0
  60. data/app/forms/dc_link.yml +55 -0
  61. data/app/forms/dc_mail.yml +88 -0
  62. data/app/forms/dc_mail_address.yml +56 -0
  63. data/app/forms/dc_mail_list.yml +44 -0
  64. data/app/forms/dc_mail_list_member.yml +42 -0
  65. data/app/forms/dc_menu.yml +62 -0
  66. data/app/forms/dc_menu_item.yml +81 -0
  67. data/app/forms/dc_page.yml +145 -0
  68. data/app/forms/dc_part.yml +102 -0
  69. data/app/forms/dc_permission.yml +50 -0
  70. data/app/forms/dc_piece.yml +105 -0
  71. data/app/forms/dc_policy.yml +57 -0
  72. data/app/forms/dc_policy_role.yml +42 -0
  73. data/app/forms/dc_policy_rule.yml +38 -0
  74. data/app/forms/dc_policy_rule_nocms.yml +38 -0
  75. data/app/forms/dc_poll.yml +113 -0
  76. data/app/forms/dc_poll_item.yml +76 -0
  77. data/app/forms/dc_simple_menu.yml +64 -0
  78. data/app/forms/dc_simple_menu_item.yml +80 -0
  79. data/app/forms/dc_site.yml +149 -0
  80. data/app/forms/dc_user.yml +142 -0
  81. data/app/forms/dc_user_role.yml +54 -0
  82. data/app/forms/drgcms_cms.yml +28 -0
  83. data/app/helpers/cmsedit_helper.rb +698 -0
  84. data/app/helpers/dc_ad_renderer.rb +206 -0
  85. data/app/helpers/dc_application_helper.rb +704 -0
  86. data/app/helpers/dc_big_menu_renderer.rb +180 -0
  87. data/app/helpers/dc_captcha_renderer.rb +100 -0
  88. data/app/helpers/dc_common_renderer.rb +132 -0
  89. data/app/helpers/dc_mail_renderer.rb +76 -0
  90. data/app/helpers/dc_menu_renderer.rb +143 -0
  91. data/app/helpers/dc_page_renderer.rb +80 -0
  92. data/app/helpers/dc_part_renderer.rb +162 -0
  93. data/app/helpers/dc_piece_renderer.rb +124 -0
  94. data/app/helpers/dc_poll_renderer.rb +219 -0
  95. data/app/helpers/dc_renderer.rb +56 -0
  96. data/app/helpers/dc_simple_menu_renderer.rb +244 -0
  97. data/app/helpers/drgcms_form_field.rb +863 -0
  98. data/app/models/__dc_global_data.rb +44 -0
  99. data/app/models/dc_ad.rb +52 -0
  100. data/app/models/dc_ad_stat.rb +34 -0
  101. data/app/models/dc_big_menu.rb +89 -0
  102. data/app/models/dc_big_table.rb +63 -0
  103. data/app/models/dc_big_table_locale.rb +35 -0
  104. data/app/models/dc_big_table_value.rb +38 -0
  105. data/app/models/dc_category.rb +48 -0
  106. data/app/models/dc_design.rb +48 -0
  107. data/app/models/dc_dummy.rb +30 -0
  108. data/app/models/dc_folder_permission.rb +43 -0
  109. data/app/models/dc_global_data.rb +44 -0
  110. data/app/models/dc_journal.rb +39 -0
  111. data/app/models/dc_key_value_store.rb +90 -0
  112. data/app/models/dc_link.rb +39 -0
  113. data/app/models/dc_mail.rb +64 -0
  114. data/app/models/dc_mail_address.rb +69 -0
  115. data/app/models/dc_mail_list.rb +48 -0
  116. data/app/models/dc_mail_list_member.rb +34 -0
  117. data/app/models/dc_menu.rb +59 -0
  118. data/app/models/dc_menu_item.rb +40 -0
  119. data/app/models/dc_page.rb +123 -0
  120. data/app/models/dc_part.rb +28 -0
  121. data/app/models/dc_permission.rb +58 -0
  122. data/app/models/dc_piece.rb +57 -0
  123. data/app/models/dc_policy.rb +94 -0
  124. data/app/models/dc_policy_role.rb +47 -0
  125. data/app/models/dc_policy_rule.rb +65 -0
  126. data/app/models/dc_poll.rb +46 -0
  127. data/app/models/dc_poll_item.rb +40 -0
  128. data/app/models/dc_sendmail.rb +48 -0
  129. data/app/models/dc_simple_menu.rb +58 -0
  130. data/app/models/dc_simple_menu_item.rb +39 -0
  131. data/app/models/dc_site.rb +92 -0
  132. data/app/models/dc_stat.rb +36 -0
  133. data/app/models/dc_user.rb +91 -0
  134. data/app/models/dc_user_role.rb +36 -0
  135. data/app/models/dc_visit.rb +35 -0
  136. data/app/views/cmsedit/_edit_stuff.html.erb +59 -0
  137. data/app/views/cmsedit/_edit_stuff.js.erb +6 -0
  138. data/app/views/cmsedit/_form.html.erb +21 -0
  139. data/app/views/cmsedit/_result.html.erb +20 -0
  140. data/app/views/cmsedit/edit.html.erb +6 -0
  141. data/app/views/cmsedit/error.html.erb +2 -0
  142. data/app/views/cmsedit/index.html.erb +6 -0
  143. data/app/views/cmsedit/new.html.erb +5 -0
  144. data/app/views/cmsedit/show.html.erb +21 -0
  145. data/app/views/dc_at_the_beginning/create.html.erb +9 -0
  146. data/app/views/dc_at_the_beginning/index.html.erb +19 -0
  147. data/app/views/dc_common/paste_clipboard.html.erb +17 -0
  148. data/app/views/dc_mail/subscribe.html.erb +7 -0
  149. data/app/views/dc_mail/unsubscribe.html.erb +19 -0
  150. data/app/views/layouts/cms.html.erb +17 -0
  151. data/app/views/layouts/cmsedit.html.erb +16 -0
  152. data/app/views/layouts/content.html.erb +16 -0
  153. data/config/initializers/kaminari_patch.rb +36 -0
  154. data/config/locales/datetimepicker.yml +13 -0
  155. data/config/locales/drgcms_en.yml +96 -0
  156. data/config/locales/drgcms_sl.yml +97 -0
  157. data/config/locales/en.yml +7 -0
  158. data/config/locales/kaminari.yml +26 -0
  159. data/config/locales/models_en.yml +790 -0
  160. data/config/locales/models_sl.yml +805 -0
  161. data/config/locales/mongoid_sl.yml +60 -0
  162. data/config/locales/sl.yml +211 -0
  163. data/config/routes.rb +2 -0
  164. data/drg_cms.gemspec +28 -0
  165. data/lib/drg_cms.rb +45 -0
  166. data/lib/drg_cms/engine.rb +30 -0
  167. data/lib/drg_cms/version.rb +3 -0
  168. data/lib/tasks/at_the_beginning.yml +26 -0
  169. data/lib/tasks/dc_cleanup.rake +94 -0
  170. data/lib/tasks/drg_cms_tasks.rake +118 -0
  171. data/lib/tasks/send_mail.rake +253 -0
  172. data/lib/tasks/site_statistics.rake +80 -0
  173. data/test/drg_cms_test.rb +7 -0
  174. data/test/dummy/README.rdoc +261 -0
  175. data/test/dummy/Rakefile +7 -0
  176. data/test/dummy/app/assets/javascripts/application.js +15 -0
  177. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  178. data/test/dummy/app/controllers/application_controller.rb +3 -0
  179. data/test/dummy/app/helpers/application_helper.rb +2 -0
  180. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  181. data/test/dummy/config.ru +4 -0
  182. data/test/dummy/config/application.rb +59 -0
  183. data/test/dummy/config/boot.rb +10 -0
  184. data/test/dummy/config/database.yml +25 -0
  185. data/test/dummy/config/environment.rb +5 -0
  186. data/test/dummy/config/environments/development.rb +37 -0
  187. data/test/dummy/config/environments/production.rb +67 -0
  188. data/test/dummy/config/environments/test.rb +37 -0
  189. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  190. data/test/dummy/config/initializers/inflections.rb +15 -0
  191. data/test/dummy/config/initializers/mime_types.rb +5 -0
  192. data/test/dummy/config/initializers/secret_token.rb +7 -0
  193. data/test/dummy/config/initializers/session_store.rb +8 -0
  194. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  195. data/test/dummy/config/locales/en.yml +5 -0
  196. data/test/dummy/config/routes.rb +58 -0
  197. data/test/dummy/public/404.html +26 -0
  198. data/test/dummy/public/422.html +26 -0
  199. data/test/dummy/public/500.html +25 -0
  200. data/test/dummy/public/favicon.ico +0 -0
  201. data/test/dummy/script/rails +6 -0
  202. data/test/integration/navigation_test.rb +10 -0
  203. data/test/test_helper.rb +15 -0
  204. 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 << "&#9650; #{link_4menu(p)}"
109
+ end
110
+ html << '&nbsp;</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 ? ' &raquo; ' : '') #&rsaquo;&#10132;
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}&nbsp;<span style="color: red;">*</span>&nbsp;#{@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