drg_cms 0.4.39 → 0.4.53
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/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
|