drg_cms 0.5.50.2 → 0.5.51.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|