drg_cms 0.4.39 → 0.4.53
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +49 -0
- data/app/assets/images/drg_cms/file_manager.png +0 -0
- data/app/assets/javascripts/drg_cms/drg_cms.js +8 -8
- data/app/assets/stylesheets/drg_cms/drg_cms.css +22 -20
- data/app/controllers/cmsedit_controller.rb +170 -114
- data/app/controllers/dc_application_controller.rb +142 -56
- data/app/controllers/dc_common_controller.rb +56 -34
- data/app/controllers/dc_main_controller.rb +1 -4
- data/app/controllers/drgcms_controls/dc_page_controls.rb +3 -0
- data/app/forms/all_options.yml +3 -0
- data/app/forms/cms_menu.yml +100 -117
- data/app/forms/dc_design.yml +1 -1
- data/app/forms/dc_ident.yml +37 -0
- data/app/forms/dc_menu_item.yml +1 -1
- data/app/forms/dc_permission.yml +1 -1
- data/app/forms/dc_site.yml +4 -0
- data/app/helpers/cmsedit_helper.rb +44 -80
- data/app/helpers/dc_ad_renderer.rb +27 -15
- data/app/helpers/dc_application_helper.rb +433 -196
- data/app/helpers/dc_big_menu_renderer.rb +40 -40
- data/app/helpers/dc_captcha_renderer.rb +38 -25
- data/app/helpers/dc_common_renderer.rb +15 -48
- data/app/helpers/dc_menu_renderer.rb +30 -20
- data/app/helpers/dc_page_renderer.rb +14 -18
- data/app/helpers/dc_part_renderer.rb +45 -16
- data/app/helpers/dc_piece_renderer.rb +23 -29
- data/app/helpers/dc_poll_renderer.rb +31 -20
- data/app/helpers/dc_renderer.rb +5 -4
- data/app/helpers/dc_simple_menu_renderer.rb +90 -68
- data/app/models/{__dc_global_data.rb → __dc_stat.rb} +20 -21
- data/app/models/dc_ad.rb +13 -1
- data/app/models/dc_ad_stat.rb +6 -0
- data/app/models/dc_big_menu.rb +15 -2
- data/app/models/dc_big_table.rb +27 -4
- data/app/models/dc_big_table_locale.rb +7 -0
- data/app/models/dc_big_table_value.rb +7 -0
- data/app/models/dc_category.rb +9 -3
- data/app/models/dc_design.rb +50 -0
- data/app/models/dc_dummy.rb +41 -1
- data/app/models/dc_folder_permission.rb +9 -2
- data/app/models/{dc_global_data.rb → dc_ident.rb} +20 -22
- data/app/models/dc_journal.rb +9 -1
- data/app/models/dc_key_value_store.rb +41 -4
- data/app/models/dc_link.rb +7 -0
- data/app/models/dc_menu.rb +20 -3
- data/app/models/dc_menu_item.rb +7 -0
- data/app/models/dc_page.rb +31 -12
- data/app/models/dc_part.rb +34 -4
- data/app/models/dc_permission.rb +32 -12
- data/app/models/dc_piece.rb +32 -4
- data/app/models/dc_policy.rb +17 -11
- data/app/models/dc_policy_role.rb +12 -7
- data/app/models/dc_policy_rule.rb +32 -4
- data/app/models/dc_poll.rb +8 -0
- data/app/models/dc_poll_item.rb +6 -0
- data/app/models/dc_simple_menu.rb +18 -3
- data/app/models/dc_simple_menu_item.rb +20 -2
- data/app/models/dc_site.rb +13 -3
- data/app/models/dc_stat.rb +8 -1
- data/app/models/dc_user.rb +18 -2
- data/app/models/dc_user_role.rb +7 -0
- data/app/models/dc_visit.rb +5 -0
- data/app/{helpers → models}/drgcms_form_field.rb +171 -73
- data/app/views/__dc_at_the_beginning/create.html.erb +9 -0
- data/app/views/__dc_at_the_beginning/index.html.erb +19 -0
- data/app/views/cmsedit/_edit_stuff.html.erb +2 -0
- data/app/views/cmsedit/_form.html.erb +0 -1
- data/app/views/dc_mail/subscribe.html.erb +0 -0
- data/config/initializers/kaminari_patch.rb +5 -4
- data/config/locales/drgcms_en.yml +4 -0
- data/config/locales/drgcms_sl.yml +1 -0
- data/config/locales/models_en.yml +14 -3
- data/config/locales/models_sl.yml +13 -4
- data/drg_cms.gemspec +4 -4
- data/lib/drg_cms.rb +37 -8
- data/lib/drg_cms/engine.rb +2 -2
- data/lib/drg_cms/version.rb +3 -2
- data/lib/tasks/at_the_beginning.yml +0 -0
- data/lib/tasks/dc_at_the_beginning.rake +118 -0
- data/lib/tasks/dc_cleanup.rake +19 -7
- data/lib/tasks/log_statistics.rb +66 -0
- data/lib/tasks/site_statistics.rake +29 -12
- data/test/dummy/app/controllers/application_controller.rb +1 -1
- data/test/dummy/app/helpers/application_helper.rb +1 -1
- metadata +15 -26
- data/README.rdoc +0 -3
- data/app/controllers/dc_at_the_beginning_controller.rb +0 -120
- data/app/controllers/dc_mail_controller.rb +0 -89
- data/app/forms/dc_forum_cat.yml +0 -54
- data/app/forms/dc_forum_forum.yml +0 -53
- data/app/forms/dc_forum_msg.yml +0 -124
- data/app/forms/dc_forum_privmsg.yml +0 -125
- data/app/forms/dc_forum_topic.yml +0 -131
- data/app/forms/dc_mail.yml +0 -88
- data/app/forms/dc_mail_address.yml +0 -56
- data/app/forms/dc_mail_list.yml +0 -44
- data/app/forms/dc_mail_list_member.yml +0 -42
- data/app/helpers/dc_mail_renderer.rb +0 -76
- data/app/models/dc_mail.rb +0 -64
- data/app/models/dc_mail_address.rb +0 -69
- data/app/models/dc_mail_list.rb +0 -48
- data/app/models/dc_mail_list_member.rb +0 -34
- data/app/models/dc_sendmail.rb +0 -48
@@ -21,6 +21,15 @@
|
|
21
21
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
22
|
#++
|
23
23
|
|
24
|
+
#########################################################################
|
25
|
+
# Mongoid::Document model for dc_key_value_stores collection.
|
26
|
+
#
|
27
|
+
# This model represents key/value store. Typical usage is for saving last
|
28
|
+
# used document number on some internal document numbering schema.
|
29
|
+
#
|
30
|
+
# Example:
|
31
|
+
# doc_number = DcKeyValueStore.get_next_value('invoices', invoice_date.year)
|
32
|
+
#########################################################################
|
24
33
|
class DcKeyValueStore
|
25
34
|
include Mongoid::Document
|
26
35
|
|
@@ -31,6 +40,12 @@ class DcKeyValueStore
|
|
31
40
|
|
32
41
|
###########################################################################
|
33
42
|
# Will return value incremented by 1 and update document with new value.
|
43
|
+
#
|
44
|
+
# Parameters:
|
45
|
+
# [keys] Array. Any number of parameters from which key will be generated.
|
46
|
+
#
|
47
|
+
# Returns:
|
48
|
+
# String. Last saved value incremented by 1.
|
34
49
|
###########################################################################
|
35
50
|
def self.get_next_value(*keys)
|
36
51
|
doc = find_by(key: keys.join('-'))
|
@@ -46,8 +61,12 @@ end
|
|
46
61
|
|
47
62
|
###########################################################################
|
48
63
|
# Will try to restore to previous value if value is not already incremented.
|
64
|
+
#
|
65
|
+
# Parameters:
|
66
|
+
# [value] String. Last value obtained by get_next_value method.
|
67
|
+
# [keys] Array. Any number of parameters from which key will be generated.
|
49
68
|
###########################################################################
|
50
|
-
def self.restore_value(value
|
69
|
+
def self.restore_value(value, *keys)
|
51
70
|
doc = find_by(key: keys.join('-'))
|
52
71
|
if value == doc.value
|
53
72
|
value = (value.to_i - 1).to_s
|
@@ -59,7 +78,15 @@ def self.restore_value(value,*keys)
|
|
59
78
|
end
|
60
79
|
|
61
80
|
###########################################################################
|
62
|
-
#
|
81
|
+
# Will return value incremented by 1 but will not update document with new value.
|
82
|
+
# Used for presenting user with most possible document number. Real document number must
|
83
|
+
# of course be obtained by get_next_value before document is saved to collection.
|
84
|
+
#
|
85
|
+
# Parameters:
|
86
|
+
# [keys] Array. Any number of parameters from which key will be generated.
|
87
|
+
#
|
88
|
+
# Returns:
|
89
|
+
# String. Last saved value incremented by 1.
|
63
90
|
###########################################################################
|
64
91
|
def self.peep_next_value(*keys)
|
65
92
|
doc = find_by(key: keys.join('-'))
|
@@ -67,7 +94,13 @@ def self.peep_next_value(*keys)
|
|
67
94
|
end
|
68
95
|
|
69
96
|
###########################################################################
|
70
|
-
#
|
97
|
+
# Will return current value for the key.
|
98
|
+
#
|
99
|
+
# Parameters:
|
100
|
+
# [keys] Array. Any number of parameters from which key will be generated.
|
101
|
+
#
|
102
|
+
# Returns:
|
103
|
+
# String. Current value for specified key or nil if key is not found.
|
71
104
|
###########################################################################
|
72
105
|
def self.get_value(*keys)
|
73
106
|
doc = find_by(key: keys.join('-'))
|
@@ -75,7 +108,11 @@ def self.get_value(*keys)
|
|
75
108
|
end
|
76
109
|
|
77
110
|
###########################################################################
|
78
|
-
#
|
111
|
+
# Will set value for the key. If document is not found new document will be created.
|
112
|
+
#
|
113
|
+
# Parameters:
|
114
|
+
# [value] String. New value to be set.
|
115
|
+
# [keys] Array. Any number of parameters from which key will be generated.
|
79
116
|
###########################################################################
|
80
117
|
def self.set_value(value, *keys)
|
81
118
|
doc = find_by(key: keys.join('-'))
|
data/app/models/dc_link.rb
CHANGED
@@ -20,6 +20,13 @@
|
|
20
20
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
21
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
22
|
#++
|
23
|
+
|
24
|
+
#########################################################################
|
25
|
+
# Mongoid::Document model for dc_links collection.
|
26
|
+
#
|
27
|
+
# DcLink documents may be used for creating alternative url links. page_id field must
|
28
|
+
# point to valid DcPage document which will be used for further processing.
|
29
|
+
#########################################################################
|
23
30
|
class DcLink
|
24
31
|
include Mongoid::Document
|
25
32
|
include Mongoid::Timestamps
|
data/app/models/dc_menu.rb
CHANGED
@@ -20,6 +20,14 @@
|
|
20
20
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
21
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
22
|
#++
|
23
|
+
|
24
|
+
#########################################################################
|
25
|
+
# Mongoid::Document model for dc_menus collection.
|
26
|
+
#
|
27
|
+
# Default menu system for DRG CMS. Model recursively embeds DcMenuItem documents
|
28
|
+
# which (theoretically) results in infinite level of sub menus. In practice
|
29
|
+
# reasonable maximum level of 4 is advised.
|
30
|
+
#########################################################################
|
23
31
|
class DcMenu
|
24
32
|
include Mongoid::Document
|
25
33
|
include Mongoid::Timestamps
|
@@ -41,15 +49,24 @@ class DcMenu
|
|
41
49
|
validates_length_of :description, minimum: 10
|
42
50
|
|
43
51
|
#######################################################################
|
44
|
-
#
|
52
|
+
# Will return all top level menu items of specified menu. Used in DcPage document for
|
53
|
+
# selecting top level selected menu, when document displayed in browser.
|
54
|
+
#
|
55
|
+
# Called from DcApplicationHelper :dc_choices4_menu: method.
|
56
|
+
#
|
57
|
+
# Parameters:
|
58
|
+
# [Site] DcSite document. Site for which menu belongs to. If site is not specified
|
59
|
+
# all current menus in dc_menus collection will be returned.
|
60
|
+
#
|
61
|
+
# Returns:
|
62
|
+
# Array. Of choices prepared for select input field.
|
45
63
|
#######################################################################
|
46
64
|
def self.choices4_menu(site)
|
47
65
|
rez = []
|
48
66
|
menus = (site.menu_name.blank? ? all : where(name: site.menu_name)).to_a
|
49
67
|
menus.each do |menu|
|
50
68
|
rez << [menu.name, nil]
|
51
|
-
menu.dc_menu_items.where(active: true).order_by(:
|
52
|
-
# next unless menu_item.active
|
69
|
+
menu.dc_menu_items.where(active: true).order_by(order: 1).each do |menu_item|
|
53
70
|
rez << ['-- ' + menu_item.caption, menu_item._id]
|
54
71
|
end
|
55
72
|
end
|
data/app/models/dc_menu_item.rb
CHANGED
@@ -20,6 +20,13 @@
|
|
20
20
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
21
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
22
|
#++
|
23
|
+
|
24
|
+
#########################################################################
|
25
|
+
# Mongoid::Document model for dc_menu_items embedded documents.
|
26
|
+
#
|
27
|
+
# DcMenuItem documents are embedded in the DcMenu document and define one menu
|
28
|
+
# item of menu system.
|
29
|
+
#########################################################################
|
23
30
|
class DcMenuItem
|
24
31
|
include Mongoid::Document
|
25
32
|
include Mongoid::Timestamps
|
data/app/models/dc_page.rb
CHANGED
@@ -22,7 +22,10 @@
|
|
22
22
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
23
23
|
#++
|
24
24
|
|
25
|
-
|
25
|
+
#########################################################################
|
26
|
+
# ActiveSupport::Concern definition for DcPage class.
|
27
|
+
#########################################################################
|
28
|
+
module DcPageConcern
|
26
29
|
extend ActiveSupport::Concern
|
27
30
|
included do
|
28
31
|
|
@@ -56,6 +59,8 @@ field :kats, type: Array # Categories
|
|
56
59
|
field :policy_id, type: BSON::ObjectId
|
57
60
|
|
58
61
|
embeds_many :dc_parts
|
62
|
+
#embeds_many :dc_parts, as: :dc_parts
|
63
|
+
|
59
64
|
|
60
65
|
belongs_to :dc_site
|
61
66
|
belongs_to :dc_design
|
@@ -68,13 +73,12 @@ before_save :do_before_save
|
|
68
73
|
|
69
74
|
validates :publish_date, presence: true
|
70
75
|
|
71
|
-
######################################################################
|
72
|
-
#
|
73
76
|
######################################################################
|
74
77
|
protected
|
75
78
|
|
76
79
|
######################################################################
|
77
|
-
# Clears subject link of chars that shouldn't be there and also
|
80
|
+
# Clears subject link of chars that shouldn't be there and also takes care
|
81
|
+
# than link size is not larger than 100 chars.
|
78
82
|
######################################################################
|
79
83
|
def clear_link(link)
|
80
84
|
link.gsub!(/\.|\?|\!\&|»|«|\,|\"|\'|\:/,'')
|
@@ -92,7 +96,7 @@ def clear_link(link)
|
|
92
96
|
end
|
93
97
|
|
94
98
|
######################################################################
|
95
|
-
#
|
99
|
+
# Implementation of before_save callback.
|
96
100
|
######################################################################
|
97
101
|
def do_before_save
|
98
102
|
if self.subject_link.empty?
|
@@ -102,10 +106,12 @@ def do_before_save
|
|
102
106
|
end
|
103
107
|
end
|
104
108
|
|
105
|
-
################################################################################
|
106
|
-
|
107
109
|
######################################################################
|
108
|
-
# Return all pages belonging to site ready for select input field.
|
110
|
+
# Return all pages belonging to site ready for select input field. Used
|
111
|
+
# by dc_menu* forms, for selecting page which will be linked by menu option.
|
112
|
+
#
|
113
|
+
# Parameters:
|
114
|
+
# [site] Site document.
|
109
115
|
######################################################################
|
110
116
|
def self.all_pages_for_site(site)
|
111
117
|
where(dc_site_id: site._id, active: true).order(subject: 1).
|
@@ -115,9 +121,22 @@ end
|
|
115
121
|
end
|
116
122
|
end
|
117
123
|
|
118
|
-
|
119
|
-
#
|
120
|
-
|
124
|
+
#########################################################################
|
125
|
+
# Mongoid::Document model for dc_page documents.
|
126
|
+
#
|
127
|
+
# DcPage documents are anchors for urls. Default DcApplicationController::dc_process_default_request()
|
128
|
+
# method searches for DcPage document by subject_link, id or alt_link. When found it loads
|
129
|
+
# design document defined by design_id and renders view code defined by design.
|
130
|
+
#
|
131
|
+
# Site owner has all control of how DcPage data is rendered by providing its own page renderer methods.
|
132
|
+
#
|
133
|
+
# Every DcPage document may embed many DcPart documents. DcPart documents mostly contain fields
|
134
|
+
# with same names and functionality as DcPage fields. And may therefore represent whole subpage data
|
135
|
+
# system within single document. Clever programmer may provide data for whole web site in just
|
136
|
+
# one DcSite, one DcMenu, one DcDesign and one DcPage document (with some embedded documents). And since
|
137
|
+
# DRG runs multiple sites on single Rails instance by default, may run hundreds of small sites
|
138
|
+
# on single Rails instance.
|
139
|
+
#########################################################################
|
121
140
|
class DcPage
|
122
|
-
include
|
141
|
+
include DcPageConcern
|
123
142
|
end
|
data/app/models/dc_part.rb
CHANGED
@@ -20,9 +20,39 @@
|
|
20
20
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
21
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
22
|
#++
|
23
|
-
|
24
|
-
|
25
|
-
|
23
|
+
require_dependency DrgCms.model 'dc_piece'
|
24
|
+
|
25
|
+
########################################################################
|
26
|
+
# Mongoid::Document model for dc_part embedded documents.
|
27
|
+
#
|
28
|
+
# DcPart model is used for embedding parts of final document into other models. It declares fields
|
29
|
+
# which may be used in various scenarios. For example:
|
30
|
+
# - part of page which is visible to all users and part only to registered users
|
31
|
+
# - list of pictures or attachments which belong to document
|
32
|
+
# -
|
33
|
+
#
|
34
|
+
# DcPart model inherits its definition from DcPiece model, but adds policy_id
|
35
|
+
# field to definition. Policy_id field may be used where site policy must be
|
36
|
+
# taken into account when rendering part.
|
37
|
+
########################################################################
|
38
|
+
class DcPart
|
39
|
+
include DcPieceConcern
|
40
|
+
|
41
|
+
field :_type, type: String, default: 'DcPart' # needed when changed to Concern
|
42
|
+
field :policy_id, type: BSON::ObjectId
|
43
|
+
field :link, type: String
|
44
|
+
|
45
|
+
embedded_in :dc_parts, polymorphic: true
|
46
|
+
|
47
|
+
before_save :do_before_save
|
48
|
+
|
49
|
+
######################################################################
|
50
|
+
# Implementation of before_save callback.
|
51
|
+
######################################################################
|
52
|
+
def do_before_save
|
53
|
+
if self.link.empty?
|
54
|
+
self.link = self.name.strip.downcase.gsub(' ','-')
|
55
|
+
end
|
56
|
+
end
|
26
57
|
|
27
|
-
field :policy_id, type: BSON::ObjectId
|
28
58
|
end
|
data/app/models/dc_permission.rb
CHANGED
@@ -21,20 +21,36 @@
|
|
21
21
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
22
|
#++
|
23
23
|
|
24
|
-
|
25
|
-
#
|
24
|
+
########################################################################
|
25
|
+
# Mongoid::Document model for dc_permissions collection.
|
26
|
+
#
|
27
|
+
# dc_permissions collection is used for saving documents which define permissions
|
28
|
+
# for accessing individual collections within DRG CMS system. Document which is marked
|
29
|
+
# as default is the top level document and defines general permissions valid for
|
30
|
+
# all collections. Other documents define permissions for accessing single
|
31
|
+
# collections or even embedded documents within collections.
|
26
32
|
#########################################################################
|
27
33
|
class DcPermission
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
34
|
+
#- Available permissions settings
|
35
|
+
|
36
|
+
# User has no access
|
37
|
+
NO_ACCESS = 0
|
38
|
+
# User can view documents
|
39
|
+
CAN_VIEW = 1
|
40
|
+
# User can create new documents
|
41
|
+
CAN_CREATE = 2
|
42
|
+
# User can edit his own documents
|
43
|
+
CAN_EDIT = 4
|
44
|
+
# User can edit all documents in collection
|
45
|
+
CAN_EDIT_ALL = 8
|
46
|
+
# User can delete his own documents
|
47
|
+
CAN_DELETE = 16
|
48
|
+
# User can delete all documents in collection
|
35
49
|
CAN_DELETE_ALL = 32
|
36
|
-
|
37
|
-
|
50
|
+
# User can admin collection (same as can_delete_all, but can see documents which do not belong to current site)
|
51
|
+
CAN_ADMIN = 64
|
52
|
+
# User is superadmin. Basicly same as admin.
|
53
|
+
SUPERADMIN = 128
|
38
54
|
|
39
55
|
include Mongoid::Document
|
40
56
|
include Mongoid::Timestamps
|
@@ -51,7 +67,11 @@ index( { table_name: 1 }, { unique: true } )
|
|
51
67
|
validates :table_name, presence: true
|
52
68
|
validates :table_name, uniqueness: true
|
53
69
|
|
54
|
-
|
70
|
+
########################################################################
|
71
|
+
# Will return choices for permissions prepared for usega in select input field.
|
72
|
+
# This will return english only comments so it is not used.
|
73
|
+
########################################################################
|
74
|
+
def self.values_for_permissions #:nodoc:
|
55
75
|
[['NO_ACCESS',0],['CAN_VIEW',1],['CAN_CREATE',2],['CAN_EDIT',4],['CAN_EDIT_ALL',8],['CAN_DELETE',16],['CAN_DELETE_ALL',32],['CAN_ADMIN',64],['SUPERADMIN',128]]
|
56
76
|
end
|
57
77
|
|
data/app/models/dc_piece.rb
CHANGED
@@ -20,7 +20,15 @@
|
|
20
20
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
21
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
22
|
#++
|
23
|
-
|
23
|
+
|
24
|
+
|
25
|
+
#########################################################################
|
26
|
+
# ActiveSupport::Concern definition for DcPiece class.
|
27
|
+
#########################################################################
|
28
|
+
module DcPieceConcern
|
29
|
+
extend ActiveSupport::Concern
|
30
|
+
included do
|
31
|
+
|
24
32
|
include Mongoid::Document
|
25
33
|
include Mongoid::Timestamps
|
26
34
|
|
@@ -44,14 +52,34 @@ class DcPiece
|
|
44
52
|
field :created_by, type: BSON::ObjectId
|
45
53
|
field :updated_by, type: BSON::ObjectId
|
46
54
|
|
55
|
+
validates :name, presence: true
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
########################################################################
|
60
|
+
# Mongoid::Document model for dc_piece documents.
|
61
|
+
#
|
62
|
+
# DcPiece model is used for documents or pieces of web site which are common to site
|
63
|
+
# or perhaps to all sites in database. For example page footer is a good candidate
|
64
|
+
# to be saved in a dc_piece collection.
|
65
|
+
#
|
66
|
+
# Documents in dc_pieces collection must have unique name assigned. Default DcPartRenderer
|
67
|
+
# also looks into dc_pieces collection and collects all documents which belong to
|
68
|
+
# current site (site_id field) and renders them according to div_id field value.
|
69
|
+
########################################################################
|
70
|
+
class DcPiece
|
71
|
+
include DcPieceConcern
|
72
|
+
|
47
73
|
index( { name: 1 }, { unique: true } )
|
48
|
-
index( { site_id: 1 } )
|
74
|
+
index( { site_id: 1 } )
|
75
|
+
|
76
|
+
validates :name, uniqueness: true
|
49
77
|
|
50
78
|
########################################################################
|
51
|
-
# Return choices for select for
|
79
|
+
# Return choices for select for selecting documents on dc_part form.
|
52
80
|
########################################################################
|
53
81
|
def self.choices4_pieces
|
54
82
|
all.inject([]) { |r,piece| r << [ piece.name, piece._id] }
|
55
83
|
end
|
56
84
|
|
57
|
-
end
|
85
|
+
end
|
data/app/models/dc_policy.rb
CHANGED
@@ -21,8 +21,15 @@
|
|
21
21
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
22
|
#++
|
23
23
|
|
24
|
-
|
25
|
-
#
|
24
|
+
########################################################################
|
25
|
+
# Mongoid::Document model for dc_policy documents embedded into dc_sites collection documents.
|
26
|
+
#
|
27
|
+
# DcPolicy documents define policies for accessing data on web site. Policies define which
|
28
|
+
# user roles (defined in dc_policy_roles collection) has no access, can view or edit data (sees CMS menu) on
|
29
|
+
# current active web page. Policies can then be applied to individual documents belonging to the web site.
|
30
|
+
#
|
31
|
+
# Document defined as default, holds top level policy which is inherited by all
|
32
|
+
# other policies. Default policy is also used when document has no access policy assigned.
|
26
33
|
#########################################################################
|
27
34
|
class DcPolicy
|
28
35
|
include Mongoid::Document
|
@@ -35,25 +42,23 @@ class DcPolicy
|
|
35
42
|
field :updated_by, type: BSON::ObjectId
|
36
43
|
field :message, type: String, default: ''
|
37
44
|
|
38
|
-
#embeds_many :dc_policy_rules
|
39
45
|
embeds_many :dc_policy_rules, as: :policy_rules
|
40
46
|
embedded_in :dc_site
|
41
47
|
|
42
48
|
validates :name, :length => { :minimum => 4 }
|
43
49
|
validates :message, :length => { :minimum => 5 }
|
44
50
|
|
45
|
-
|
46
|
-
# index 'dc_policy_rules._id' => 1
|
47
|
-
|
51
|
+
=begin
|
48
52
|
#########################################################################
|
49
|
-
#
|
53
|
+
# Returns values for permissions ready to be used in select field.
|
50
54
|
#########################################################################
|
51
|
-
def self.values_for_permissions
|
55
|
+
def self.values_for_permissions
|
52
56
|
[['NO_ACCESS',0],['CAN_VIEW',1],['CAN_CREATE',2],['CAN_EDIT',4],['CAN_EDIT_ALL',8],['CAN_DELETE',16],['CAN_DELETE_ALL',32],['CAN_ADMIN',64],['SUPERADMIN',128]]
|
53
57
|
end
|
54
58
|
|
59
|
+
|
55
60
|
#########################################################################
|
56
|
-
#
|
61
|
+
# Returns all possible policy rules for use in select input field
|
57
62
|
#########################################################################
|
58
63
|
def self.choices4_policies()
|
59
64
|
rez = []
|
@@ -65,7 +70,7 @@ def self.choices4_policies()
|
|
65
70
|
end
|
66
71
|
rez
|
67
72
|
end
|
68
|
-
|
73
|
+
|
69
74
|
#########################################################################
|
70
75
|
# Returns policy rules for the site. Since it is called from policy_role form
|
71
76
|
# which can be embedded in lots of tables (collections) table name of parent
|
@@ -90,5 +95,6 @@ def self.policy_rule_name_for(id)
|
|
90
95
|
return 'Invalid policy name!' if pol.nil?
|
91
96
|
pol.dc_policy_rules.find(id).name
|
92
97
|
end
|
93
|
-
|
98
|
+
=end
|
99
|
+
|
94
100
|
end
|