drg_cms 0.5.50.2 → 0.5.51.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/History.log +47 -0
- data/README.md +2 -1
- data/app/assets/images/32px.png +0 -0
- data/app/assets/images/drg_cms/32px.png +0 -0
- data/app/assets/images/drg_cms/40px.png +0 -0
- data/app/assets/images/drg_cms/throbber.gif +0 -0
- data/app/assets/images/throbber.gif +0 -0
- data/app/assets/javascripts/drg_cms/drg_cms.js +3 -3
- data/app/assets/javascripts/drg_cms/jstree.min.js +6 -0
- data/app/assets/javascripts/drg_cms_cms.js +2 -1
- data/app/assets/stylesheets/drg_cms/drg_cms.css +9 -0
- data/app/assets/stylesheets/drg_cms/jstree.css +1108 -0
- data/app/assets/stylesheets/drg_cms_cms.css +1 -0
- data/app/controllers/cmsedit_controller.rb +14 -12
- data/app/controllers/dc_application_controller.rb +2 -2
- data/app/controllers/dc_common_controller.rb +15 -20
- data/app/controllers/dc_page_control.rb +8 -0
- data/app/controllers/design_element_settings_control.rb +135 -0
- data/app/forms/all_options.yml +7 -1
- data/app/forms/cms_menu.yml +1 -1
- data/app/forms/dc_browse_fields.yml +1 -1
- data/app/forms/dc_browse_models.yml +2 -2
- data/app/forms/dc_category.yml +4 -4
- data/app/forms/dc_menu.yml +6 -0
- data/app/forms/dc_page.yml +22 -12
- data/app/forms/dc_simple_menu.yml +6 -0
- data/app/forms/dc_site.yml +6 -0
- data/app/helpers/cmsedit_helper.rb +12 -8
- data/app/helpers/dc_application_helper.rb +79 -18
- data/app/helpers/dc_menu_renderer.rb +6 -1
- data/app/helpers/dc_part_renderer.rb +1 -1
- data/app/models/concerns/dc_page_concern.rb +133 -0
- data/app/models/concerns/dc_piece_concern.rb +57 -0
- data/app/models/concerns/dc_policy_rule_concern.rb +78 -0
- data/app/models/concerns/dc_site_concern.rb +94 -0
- data/app/models/concerns/dc_user_concern.rb +130 -0
- data/app/models/dc_ad.rb +1 -1
- data/app/models/dc_big_menu.rb +1 -1
- data/app/models/dc_category.rb +19 -4
- data/app/models/dc_dummy.rb +3 -2
- data/app/models/dc_link.rb +1 -1
- data/app/models/dc_memory.rb +127 -0
- data/app/models/dc_menu.rb +69 -3
- data/app/models/dc_menu_item.rb +17 -0
- data/app/models/dc_page.rb +0 -106
- data/app/models/dc_part.rb +0 -1
- data/app/models/dc_piece.rb +0 -35
- data/app/models/dc_policy_rule.rb +0 -56
- data/app/models/dc_simple_menu.rb +36 -0
- data/app/models/dc_simple_menu_item.rb +0 -0
- data/app/models/dc_site.rb +1 -71
- data/app/models/dc_user.rb +0 -108
- data/app/models/drgcms_form_fields.rb +187 -26
- data/app/views/cmsedit/_result.html.erb +3 -4
- data/config/locales/models_en.yml +11 -3
- data/config/locales/models_sl.yml +7 -0
- data/lib/drg_cms.rb +1 -0
- data/lib/drg_cms/version.rb +1 -1
- data/lib/tasks/log_statistics.rb +14 -8
- metadata +16 -2
data/app/forms/dc_site.yml
CHANGED
@@ -411,7 +411,7 @@ def dc_columns_for_result(document)
|
|
411
411
|
# as field
|
412
412
|
elsif document.respond_to?(v['name'])
|
413
413
|
dc_format_value(document.send( v['name'] ), v['format'])
|
414
|
-
# as hash (
|
414
|
+
# as hash (dc_memory)
|
415
415
|
elsif document.class == Hash
|
416
416
|
document[ v['name'] ]
|
417
417
|
# error
|
@@ -589,13 +589,17 @@ end
|
|
589
589
|
############################################################################
|
590
590
|
# Create background div and table definitions for result set.
|
591
591
|
############################################################################
|
592
|
-
def dc_background_for_result
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
592
|
+
def dc_background_for_result(start)
|
593
|
+
if start == :start
|
594
|
+
html = '<div class="dc-result-div" '
|
595
|
+
html << (@form['result_set']['table_style'] ? "style=\"overflow-x: scroll;\" >" : '>')
|
596
|
+
html << "\n"
|
597
|
+
#
|
598
|
+
html << "<table class=\"dc-result #{@form['result_set']['table_class']}\" "
|
599
|
+
html << (@form['result_set']['table_style'] ? "style=\"#{@form['result_set']['table_style']}\" >" : '>')
|
600
|
+
else
|
601
|
+
html = '</table></div>'
|
602
|
+
end
|
599
603
|
html.html_safe
|
600
604
|
end
|
601
605
|
|
@@ -65,7 +65,7 @@ end
|
|
65
65
|
# find where the message is comming from.
|
66
66
|
############################################################################
|
67
67
|
def dc_deprecate(msg)
|
68
|
-
|
68
|
+
logger.info "#{dc_get_site.name}: #{msg}"
|
69
69
|
end
|
70
70
|
|
71
71
|
############################################################################
|
@@ -154,8 +154,6 @@ def dc_render_from_site(opts={})
|
|
154
154
|
render(inline: design, layout: opts[:layout], with: opts[:with])
|
155
155
|
end
|
156
156
|
|
157
|
-
|
158
|
-
|
159
157
|
########################################################################
|
160
158
|
# Used for designs with lots of common code and one (or more) part which differs.
|
161
159
|
# Point is to define design once and replace some parts of design dinamically.
|
@@ -172,13 +170,24 @@ end
|
|
172
170
|
# This helper is replacement dc_render_from_site method which will soon be deprecated.
|
173
171
|
########################################################################
|
174
172
|
def dc_render_design_part(part)
|
175
|
-
|
176
|
-
|
177
|
-
|
173
|
+
case
|
174
|
+
when part.nil? then ''
|
175
|
+
# Send as array. Part may be defined with options on page. First element has
|
176
|
+
# name of element which defines what to do. If not defined default behaviour is
|
177
|
+
# called. That is what is defined in second part of array.
|
178
|
+
when part.class == Array then
|
179
|
+
if @options.dig(:settings, part.first)
|
180
|
+
#TODO to be defined
|
181
|
+
else
|
182
|
+
result = part.last.call
|
183
|
+
result.class == Array ? result.first : result
|
184
|
+
end
|
185
|
+
when part.class == Proc then
|
178
186
|
result = part.call
|
179
187
|
result.class == Array ? result.first : result
|
180
|
-
|
181
|
-
|
188
|
+
# Send as string. Evaluate content of string
|
189
|
+
when part.class == String then eval part
|
190
|
+
# For future maybe. Just call objects to_s method.
|
182
191
|
else
|
183
192
|
part.to_s
|
184
193
|
end.html_safe
|
@@ -188,6 +197,26 @@ def dc_render_design(part)
|
|
188
197
|
dc_render_design_part(part)
|
189
198
|
end
|
190
199
|
|
200
|
+
############################################################################
|
201
|
+
# This is main method used for render parts of design into final HTML document.
|
202
|
+
#
|
203
|
+
# Parameters:
|
204
|
+
# [renderer] String or Symbol. Class name (in lowercase) that will be used to render final HTML code.
|
205
|
+
# If class name is provided without '_renderer' suffix it will be added automatically.
|
206
|
+
#
|
207
|
+
# When renderer has value :part, it is a shortcut for dc_render_design_part method which
|
208
|
+
# is used to draw parts of layout on design.
|
209
|
+
#
|
210
|
+
# [opts] Hash. Additional options that are passed to method. Options are merged with
|
211
|
+
# options set on site, design, page and passed to renderer object.
|
212
|
+
#
|
213
|
+
# Example:
|
214
|
+
# <%= dc_render(:dc_page, method: 'view', category: 'news') %>
|
215
|
+
############################################################################
|
216
|
+
def dc_render_partial(opts={})
|
217
|
+
_origin.render(partial: opts[:partial], formats: [:html], locals: opts[:locals])
|
218
|
+
end
|
219
|
+
|
191
220
|
########################################################################
|
192
221
|
# Helper for rendering top CMS menu when in editing mode
|
193
222
|
########################################################################
|
@@ -206,6 +235,7 @@ end
|
|
206
235
|
def dc_page_bottom()
|
207
236
|
%Q[<style type="text/css">#{@css}</style>#{javascript_tag @js}].html_safe
|
208
237
|
end
|
238
|
+
|
209
239
|
############################################################################
|
210
240
|
# Creates title div for DRG CMS dialogs. Title may also contain pagination section on right side if
|
211
241
|
# result_set is provided as parameter.
|
@@ -265,6 +295,11 @@ def dc_new_title()
|
|
265
295
|
t( title['new'], title['new'] )
|
266
296
|
else
|
267
297
|
if @form['table'] == 'dc_dummy'
|
298
|
+
dc_deprecate('dc_dummy will be deprecated. Use dc_memory instead.')
|
299
|
+
@form['table'] = 'dc_memory'
|
300
|
+
end
|
301
|
+
# in memory variables
|
302
|
+
if @form['table'] == 'dc_memory'
|
268
303
|
t( @form['title'], @form['title'] )
|
269
304
|
else
|
270
305
|
"#{t('drgcms.new')} : #{t_tablename(@form['table'])}"
|
@@ -441,7 +476,7 @@ def dc_link_for_create(opts)
|
|
441
476
|
title = opts.delete('title') #
|
442
477
|
title = t(title, title) if title
|
443
478
|
target = opts.delete('target') || 'iframe_cms'
|
444
|
-
opts['
|
479
|
+
opts['formname'] ||= opts['table'].split(';').last
|
445
480
|
opts['action'] = 'new'
|
446
481
|
opts['controller'] ||= 'cmsedit'
|
447
482
|
js = "$('##{target}').attr('src', '#{_origin.url_for(opts)}'); return false;"
|
@@ -453,8 +488,9 @@ end
|
|
453
488
|
# Will create HTML code required to edit document.
|
454
489
|
#
|
455
490
|
# Parameters:
|
456
|
-
# [opts] Hash. Optional parameters for url_for helper. These options must provide
|
457
|
-
# and id parameters.
|
491
|
+
# [opts] Hash. Optional parameters for url_for helper. These options must provide
|
492
|
+
# at least table, formname and id parameters. Optional title, target and icon parameters
|
493
|
+
# can be set.
|
458
494
|
#
|
459
495
|
# Example:
|
460
496
|
# html << dc_link_for_edit( @options ) if @opts[:edit_mode] > 1
|
@@ -465,12 +501,14 @@ end
|
|
465
501
|
def dc_link_for_edit(opts)
|
466
502
|
opts.stringify_keys!
|
467
503
|
title = opts.delete('title') #
|
504
|
+
title = t(title)
|
468
505
|
target = opts.delete('target') || 'iframe_cms'
|
506
|
+
icon = opts.delete('icon') || 'edit lg'
|
469
507
|
opts['controller'] ||= 'cmsedit'
|
470
|
-
opts['action']
|
471
|
-
opts['
|
508
|
+
opts['action'] ||= 'edit'
|
509
|
+
opts['formname'] ||= opts['table'].split(';').last
|
472
510
|
js = "$('##{target}').attr('src', '#{_origin.url_for(opts)}'); return false;"
|
473
|
-
dc_link_to(nil, _origin.fa_icon(
|
511
|
+
dc_link_to(nil, _origin.fa_icon(icon, class: 'dc-inline-link'), '#',
|
474
512
|
{ onclick: js, title: title, alt: 'Edit'})
|
475
513
|
end
|
476
514
|
|
@@ -518,6 +556,7 @@ end
|
|
518
556
|
# String. HTML code required for manipulation of currently processed document.
|
519
557
|
########################################################################
|
520
558
|
def dc_page_edit_menu(opts=@opts)
|
559
|
+
opts[:edit_mode] ||= _origin.session[:edit_mode]
|
521
560
|
return '' if opts[:edit_mode] < 2
|
522
561
|
# save some data to cookie. This can not go to session.
|
523
562
|
page = opts[:page] || @page
|
@@ -530,6 +569,7 @@ def dc_page_edit_menu(opts=@opts)
|
|
530
569
|
}
|
531
570
|
_origin.cookies[:record] = Marshal.dump(kukis)
|
532
571
|
title = "#{t('drgcms.edit')}: #{page.subject}"
|
572
|
+
opts[:editparams] ||= {}
|
533
573
|
dc_link_menu_tag(title) do |html|
|
534
574
|
opts[:editparams].merge!( controller: 'cmsedit', action: 'edit', 'icon' => 'edit' )
|
535
575
|
opts[:editparams].merge!( :id => page.id, :table => _origin.site.page_table, formname: opts[:formname], edit_only: 'body' )
|
@@ -546,7 +586,7 @@ def dc_page_edit_menu(opts=@opts)
|
|
546
586
|
opts[:editparams].merge!(ids: page.id, formname: 'dc_part', 'icon' => 'plus-square-o',
|
547
587
|
table: "#{_origin.site.page_table};dc_part" )
|
548
588
|
html << dc_link_for_edit1( opts[:editparams], t('drgcms.edit_new_part') )
|
549
|
-
end
|
589
|
+
end.html_safe
|
550
590
|
end
|
551
591
|
|
552
592
|
########################################################################
|
@@ -562,9 +602,26 @@ end
|
|
562
602
|
# eval: 'dc_page_class.all_pages_for_site(@parent.dc_get_site)'
|
563
603
|
########################################################################
|
564
604
|
def dc_page_class()
|
565
|
-
dc_get_site.page_class.classify.constantize
|
605
|
+
# dc_get_site.page_class.classify.constantize
|
606
|
+
dc_get_site.page_table.classify.constantize
|
566
607
|
end
|
567
608
|
|
609
|
+
########################################################################
|
610
|
+
# Return menu class model defined in site document menu_class field.
|
611
|
+
#
|
612
|
+
# Used in forms for providing menus class to the forms object.
|
613
|
+
#
|
614
|
+
# Example as used on form:
|
615
|
+
# 30:
|
616
|
+
# name: menu_id
|
617
|
+
# type: tree_view
|
618
|
+
# eval: 'dc_menu_class.all_menus_for_site(@parent.dc_get_site)'
|
619
|
+
########################################################################
|
620
|
+
def dc_menu_class()
|
621
|
+
dc_get_site.menu_class.classify.constantize
|
622
|
+
end
|
623
|
+
|
624
|
+
|
568
625
|
####################################################################
|
569
626
|
# Wrapper for i18 t method, with some spice added. If translation is not found English
|
570
627
|
# translation value will be returned. And if still not found default value will be returned if passed.
|
@@ -984,6 +1041,11 @@ def dc_user_can_view(ctrl, policy_id)
|
|
984
1041
|
#
|
985
1042
|
site = ctrl.site
|
986
1043
|
policies = site.dc_policies
|
1044
|
+
policies = if site.inherit_policy.blank?
|
1045
|
+
site.dc_policies
|
1046
|
+
else
|
1047
|
+
Mongoid::QueryCache.cache { DcSite.find(site.inherit_policy) }.dc_policies
|
1048
|
+
end
|
987
1049
|
# permission defined by default policy
|
988
1050
|
default_policy = Mongoid::QueryCache.cache { policies.find_by(is_default: true) }
|
989
1051
|
return false, 'Default accsess policy not found for the site!' unless default_policy
|
@@ -1004,7 +1066,6 @@ def dc_user_can_view(ctrl, policy_id)
|
|
1004
1066
|
ctrl.session[:user_roles] = [role.id]
|
1005
1067
|
end
|
1006
1068
|
# Check if user has any role that allows him to view part
|
1007
|
-
# p h, ctrl.session[:user_roles]
|
1008
1069
|
can_view, msg = false,''
|
1009
1070
|
ctrl.session[:user_roles].each do |role|
|
1010
1071
|
next unless permissions[role] # role not yet defined. Will die in next line.
|
@@ -1148,7 +1209,7 @@ end
|
|
1148
1209
|
# Html code for edit iframe
|
1149
1210
|
########################################################################
|
1150
1211
|
def dc_iframe_edit(table, opts={})
|
1151
|
-
ret = if params.size > 2 and table # controller, action, path is minimal
|
1212
|
+
ret = if params.to_unsafe_h.size > 2 and table # controller, action, path is minimal
|
1152
1213
|
params[:controller] = 'cmsedit'
|
1153
1214
|
params[:action] = (params[:oper] and (params[:oper] == 'edit')) ? 'edit' : 'index'
|
1154
1215
|
params[:action] = opts[:action] unless params[:oper]
|
@@ -50,7 +50,11 @@ end
|
|
50
50
|
# Return selected topmenu level.
|
51
51
|
########################################################################
|
52
52
|
def find_selected
|
53
|
-
|
53
|
+
if @parent.page.menu_id
|
54
|
+
top_menu_id = @parent.page.menu_id
|
55
|
+
top_menu_id = @parent.page.menu_id.split(';')[1] if @parent.page.menu_id.match(';')
|
56
|
+
ret = @menu.dc_menu_items.find(top_menu_id)
|
57
|
+
end
|
54
58
|
# return first if not found (something is wrong)
|
55
59
|
ret ||= @menu.dc_menu_items[0]
|
56
60
|
end
|
@@ -128,6 +132,7 @@ def do_menu_level(menu, options={})
|
|
128
132
|
opts = options.clone
|
129
133
|
opts['ids'] = (opts['ids'] ? "#{opts['ids']};" : '') + menu._id.to_s
|
130
134
|
opts['table'] = (opts['table'] ? "#{opts['table']};" : '') + 'dc_menu_item'
|
135
|
+
opts['formname'] = nil # must be
|
131
136
|
end
|
132
137
|
html << do_menu_level(item, opts)
|
133
138
|
end
|
@@ -97,7 +97,7 @@ def load_parts #:nodoc:
|
|
97
97
|
type = decamelize_type(part._type) || 'dc_part'
|
98
98
|
@parent.parts << [part, @parent.page.id, type, "#{@parent.site.page_table};#{type}"]
|
99
99
|
end
|
100
|
-
# add parts in
|
100
|
+
# add parts in site
|
101
101
|
@parent.site.dc_parts.where(active: true).each do |part|
|
102
102
|
type = decamelize_type(part._type) || 'dc_part'
|
103
103
|
@parent.parts << [part, @parent.site.id, type, "dc_site;#{type}"]
|
@@ -0,0 +1,133 @@
|
|
1
|
+
#coding: utf-8
|
2
|
+
#--
|
3
|
+
# Copyright (c) 2012+ 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
|
+
# ActiveSupport::Concern definition for DcPage class.
|
27
|
+
#########################################################################
|
28
|
+
module DcPageConcern
|
29
|
+
extend ActiveSupport::Concern
|
30
|
+
included do
|
31
|
+
|
32
|
+
include Mongoid::Document
|
33
|
+
include Mongoid::Timestamps
|
34
|
+
|
35
|
+
field :subject, type: String, default: ''
|
36
|
+
field :title, type: String
|
37
|
+
field :subject_link, type: String, default: ''
|
38
|
+
field :alt_link, type: String, default: ''
|
39
|
+
field :sub_subject, type: String, default: ''
|
40
|
+
field :picture, type: String
|
41
|
+
field :gallery, type: String
|
42
|
+
field :body, type: String, default: ''
|
43
|
+
field :css, type: String, default: ''
|
44
|
+
field :script, type: String, default: ''
|
45
|
+
field :params, type: String
|
46
|
+
field :menu_id, type: String
|
47
|
+
field :author_id, type: BSON::ObjectId
|
48
|
+
field :dc_poll_id, type: BSON::ObjectId
|
49
|
+
field :author_name, type: String
|
50
|
+
field :publish_date, type: DateTime
|
51
|
+
field :user_name, type: String
|
52
|
+
field :valid_from, type: DateTime
|
53
|
+
field :valid_to, type: DateTime
|
54
|
+
field :comments, type: Integer, default: 1 # 0 => not allowed, 1 => allowed
|
55
|
+
field :active, type: Boolean, default: true
|
56
|
+
field :created_by, type: BSON::ObjectId
|
57
|
+
field :updated_by, type: BSON::ObjectId
|
58
|
+
field :kats, type: Array # Categories
|
59
|
+
|
60
|
+
field :policy_id, type: BSON::ObjectId
|
61
|
+
|
62
|
+
embeds_many :dc_parts
|
63
|
+
|
64
|
+
belongs_to :dc_site #, optional: true
|
65
|
+
belongs_to :dc_design #, optional: true
|
66
|
+
|
67
|
+
index ({ dc_site_id: 1, subject_link: 1 })
|
68
|
+
index kats: 1
|
69
|
+
index alt_link: 1
|
70
|
+
|
71
|
+
before_save :do_before_save
|
72
|
+
|
73
|
+
validates :publish_date, presence: true
|
74
|
+
|
75
|
+
######################################################################
|
76
|
+
protected
|
77
|
+
|
78
|
+
######################################################################
|
79
|
+
# Implementation of before_save callback.
|
80
|
+
######################################################################
|
81
|
+
def do_before_save
|
82
|
+
if self.subject_link.empty?
|
83
|
+
self.subject_link = DcPage.clear_link(self.subject.downcase.strip)
|
84
|
+
# add id to link, but only if something is written in subject
|
85
|
+
self.subject_link << "-#{self.id.to_s}" if self.subject_link.size > 1
|
86
|
+
end
|
87
|
+
# menu_id is returned as string Array class if entered on form as tree_select object.
|
88
|
+
self.menu_id = self.menu_id.scan(/"([^"]*)"/)[0][0] if self.menu_id.to_s.match('"')
|
89
|
+
end
|
90
|
+
|
91
|
+
######################################################################
|
92
|
+
# Clears subject link of chars that shouldn't be there and also takes care
|
93
|
+
# than link size is not larger than 100 chars.
|
94
|
+
######################################################################
|
95
|
+
def self.clear_link(link)
|
96
|
+
link.gsub!(/\.|\?|\!\&|»|«|\,|\"|\'|\:/,'')
|
97
|
+
link.gsub!('<br>','')
|
98
|
+
link.gsub!('–','-')
|
99
|
+
link.gsub!(' ','-')
|
100
|
+
link.gsub!('---','-')
|
101
|
+
link.gsub!('--','-')
|
102
|
+
# it shall not be greater than 100 chars. Don't break in the middle of words
|
103
|
+
if link.size > 100
|
104
|
+
link = link[0,100]
|
105
|
+
link.chop! until link[-1,1] == '-' or link.size < 10 # delete until -
|
106
|
+
end
|
107
|
+
link.chop! if link[-1,1] == '-' # remove - at the end
|
108
|
+
link
|
109
|
+
end
|
110
|
+
|
111
|
+
######################################################################
|
112
|
+
# Return all pages belonging to site ready for select input field. Used
|
113
|
+
# by dc_menu* forms, for selecting page which will be linked by menu option.
|
114
|
+
#
|
115
|
+
# Parameters:
|
116
|
+
# [site] Site document.
|
117
|
+
######################################################################
|
118
|
+
def self.all_pages_for_site(site)
|
119
|
+
only(:subject, :subject_link).where(dc_site_id: site._id, active: true).order(subject: 1).
|
120
|
+
inject([]) { |r,page| r << [ page.subject, page.subject_link] }
|
121
|
+
end
|
122
|
+
|
123
|
+
########################################################################
|
124
|
+
# Return filter options
|
125
|
+
########################################################################
|
126
|
+
def self.dc_filters
|
127
|
+
{'title' => 'drgcms.filters.this_site_only', 'operation' => 'eq',
|
128
|
+
'field' => 'dc_site_id', 'value' => '@current_site'}
|
129
|
+
end
|
130
|
+
|
131
|
+
end
|
132
|
+
|
133
|
+
end
|
@@ -0,0 +1,57 @@
|
|
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
|
+
# ActiveSupport::Concern definition for DcPiece class.
|
27
|
+
#########################################################################
|
28
|
+
module DcPieceConcern
|
29
|
+
extend ActiveSupport::Concern
|
30
|
+
included do
|
31
|
+
|
32
|
+
include Mongoid::Document
|
33
|
+
include Mongoid::Timestamps
|
34
|
+
|
35
|
+
field :name, type: String, default: ''
|
36
|
+
field :description, type: String, default: ''
|
37
|
+
field :picture, type: String
|
38
|
+
field :thumbnail, type: String
|
39
|
+
field :body, type: String, default: ''
|
40
|
+
field :css, type: String, default: ''
|
41
|
+
field :script, type: String, default: ''
|
42
|
+
field :script_type, type: String, default: ''
|
43
|
+
field :params, type: String, default: ''
|
44
|
+
field :piece_id, type: BSON::ObjectId
|
45
|
+
field :div_id, type: String
|
46
|
+
field :site_id, type: BSON::ObjectId
|
47
|
+
field :order, type: Integer, default: 0
|
48
|
+
field :active, type: Boolean, default: true
|
49
|
+
field :valid_from, type: DateTime
|
50
|
+
field :valid_to, type: DateTime
|
51
|
+
|
52
|
+
field :created_by, type: BSON::ObjectId
|
53
|
+
field :updated_by, type: BSON::ObjectId
|
54
|
+
|
55
|
+
validates :name, presence: true
|
56
|
+
end
|
57
|
+
end
|