drg_cms 0.4.39
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +3 -0
- data/Rakefile +39 -0
- data/app/assets/images/drg_cms/add.png +0 -0
- data/app/assets/images/drg_cms/arrow_in.png +0 -0
- data/app/assets/images/drg_cms/arrow_out.png +0 -0
- data/app/assets/images/drg_cms/checkbox-checked.png +0 -0
- data/app/assets/images/drg_cms/checkbox-unchecked.png +0 -0
- data/app/assets/images/drg_cms/cols.png +0 -0
- data/app/assets/images/drg_cms/copy.png +0 -0
- data/app/assets/images/drg_cms/edit.png +0 -0
- data/app/assets/images/drg_cms/edit_design.png +0 -0
- data/app/assets/images/drg_cms/edit_page.png +0 -0
- data/app/assets/images/drg_cms/edit_site.png +0 -0
- data/app/assets/images/drg_cms/html.png +0 -0
- data/app/assets/images/drg_cms/pin.png +0 -0
- data/app/assets/images/drg_cms/printer.png +0 -0
- data/app/assets/images/drg_cms/reload.png +0 -0
- data/app/assets/images/drg_cms/search_16.png +0 -0
- data/app/assets/images/drg_cms/spinner.gif +0 -0
- data/app/assets/images/drg_cms/view_tile.png +0 -0
- data/app/assets/images/drg_cms/x.png +0 -0
- data/app/assets/javascripts/drg_cms/drg_cms.js +449 -0
- data/app/assets/javascripts/drg_cms/jquery-migrate.js +511 -0
- data/app/assets/javascripts/drg_cms/jquery.datetimepicker.js +1353 -0
- data/app/assets/javascripts/drg_cms/some_scripts.js +33 -0
- data/app/assets/javascripts/drg_cms_application.js +11 -0
- data/app/assets/javascripts/drg_cms_cms.js +28 -0
- data/app/assets/stylesheets/drg_cms/drg_cms.css +632 -0
- data/app/assets/stylesheets/drg_cms/jquery-ui.css +339 -0
- data/app/assets/stylesheets/drg_cms/jquery.datetimepicker.css +304 -0
- data/app/assets/stylesheets/drg_cms/th-bg.png +0 -0
- data/app/assets/stylesheets/drg_cms/theme.css +49 -0
- data/app/assets/stylesheets/drg_cms_application.css +12 -0
- data/app/assets/stylesheets/drg_cms_cms.css +26 -0
- data/app/controllers/cmsedit_controller.rb +673 -0
- data/app/controllers/dc_application_controller.rb +385 -0
- data/app/controllers/dc_at_the_beginning_controller.rb +120 -0
- data/app/controllers/dc_common_controller.rb +314 -0
- data/app/controllers/dc_mail_controller.rb +89 -0
- data/app/controllers/dc_main_controller.rb +40 -0
- data/app/controllers/drgcms_controls/dc_page_controls.rb +40 -0
- data/app/forms/all_options.yml +176 -0
- data/app/forms/cms_forms.yml +93 -0
- data/app/forms/cms_menu.yml +142 -0
- data/app/forms/dc_ad.yml +130 -0
- data/app/forms/dc_big_table.yml +59 -0
- data/app/forms/dc_big_table_locale.yml +41 -0
- data/app/forms/dc_big_table_value.yml +47 -0
- data/app/forms/dc_category.yml +57 -0
- data/app/forms/dc_design.yml +68 -0
- data/app/forms/dc_folder_permission.yml +49 -0
- data/app/forms/dc_forum_cat.yml +54 -0
- data/app/forms/dc_forum_forum.yml +53 -0
- data/app/forms/dc_forum_msg.yml +124 -0
- data/app/forms/dc_forum_privmsg.yml +125 -0
- data/app/forms/dc_forum_topic.yml +131 -0
- data/app/forms/dc_journal.yml +85 -0
- data/app/forms/dc_link.yml +55 -0
- data/app/forms/dc_mail.yml +88 -0
- data/app/forms/dc_mail_address.yml +56 -0
- data/app/forms/dc_mail_list.yml +44 -0
- data/app/forms/dc_mail_list_member.yml +42 -0
- data/app/forms/dc_menu.yml +62 -0
- data/app/forms/dc_menu_item.yml +81 -0
- data/app/forms/dc_page.yml +145 -0
- data/app/forms/dc_part.yml +102 -0
- data/app/forms/dc_permission.yml +50 -0
- data/app/forms/dc_piece.yml +105 -0
- data/app/forms/dc_policy.yml +57 -0
- data/app/forms/dc_policy_role.yml +42 -0
- data/app/forms/dc_policy_rule.yml +38 -0
- data/app/forms/dc_policy_rule_nocms.yml +38 -0
- data/app/forms/dc_poll.yml +113 -0
- data/app/forms/dc_poll_item.yml +76 -0
- data/app/forms/dc_simple_menu.yml +64 -0
- data/app/forms/dc_simple_menu_item.yml +80 -0
- data/app/forms/dc_site.yml +149 -0
- data/app/forms/dc_user.yml +142 -0
- data/app/forms/dc_user_role.yml +54 -0
- data/app/forms/drgcms_cms.yml +28 -0
- data/app/helpers/cmsedit_helper.rb +698 -0
- data/app/helpers/dc_ad_renderer.rb +206 -0
- data/app/helpers/dc_application_helper.rb +704 -0
- data/app/helpers/dc_big_menu_renderer.rb +180 -0
- data/app/helpers/dc_captcha_renderer.rb +100 -0
- data/app/helpers/dc_common_renderer.rb +132 -0
- data/app/helpers/dc_mail_renderer.rb +76 -0
- data/app/helpers/dc_menu_renderer.rb +143 -0
- data/app/helpers/dc_page_renderer.rb +80 -0
- data/app/helpers/dc_part_renderer.rb +162 -0
- data/app/helpers/dc_piece_renderer.rb +124 -0
- data/app/helpers/dc_poll_renderer.rb +219 -0
- data/app/helpers/dc_renderer.rb +56 -0
- data/app/helpers/dc_simple_menu_renderer.rb +244 -0
- data/app/helpers/drgcms_form_field.rb +863 -0
- data/app/models/__dc_global_data.rb +44 -0
- data/app/models/dc_ad.rb +52 -0
- data/app/models/dc_ad_stat.rb +34 -0
- data/app/models/dc_big_menu.rb +89 -0
- data/app/models/dc_big_table.rb +63 -0
- data/app/models/dc_big_table_locale.rb +35 -0
- data/app/models/dc_big_table_value.rb +38 -0
- data/app/models/dc_category.rb +48 -0
- data/app/models/dc_design.rb +48 -0
- data/app/models/dc_dummy.rb +30 -0
- data/app/models/dc_folder_permission.rb +43 -0
- data/app/models/dc_global_data.rb +44 -0
- data/app/models/dc_journal.rb +39 -0
- data/app/models/dc_key_value_store.rb +90 -0
- data/app/models/dc_link.rb +39 -0
- data/app/models/dc_mail.rb +64 -0
- data/app/models/dc_mail_address.rb +69 -0
- data/app/models/dc_mail_list.rb +48 -0
- data/app/models/dc_mail_list_member.rb +34 -0
- data/app/models/dc_menu.rb +59 -0
- data/app/models/dc_menu_item.rb +40 -0
- data/app/models/dc_page.rb +123 -0
- data/app/models/dc_part.rb +28 -0
- data/app/models/dc_permission.rb +58 -0
- data/app/models/dc_piece.rb +57 -0
- data/app/models/dc_policy.rb +94 -0
- data/app/models/dc_policy_role.rb +47 -0
- data/app/models/dc_policy_rule.rb +65 -0
- data/app/models/dc_poll.rb +46 -0
- data/app/models/dc_poll_item.rb +40 -0
- data/app/models/dc_sendmail.rb +48 -0
- data/app/models/dc_simple_menu.rb +58 -0
- data/app/models/dc_simple_menu_item.rb +39 -0
- data/app/models/dc_site.rb +92 -0
- data/app/models/dc_stat.rb +36 -0
- data/app/models/dc_user.rb +91 -0
- data/app/models/dc_user_role.rb +36 -0
- data/app/models/dc_visit.rb +35 -0
- data/app/views/cmsedit/_edit_stuff.html.erb +59 -0
- data/app/views/cmsedit/_edit_stuff.js.erb +6 -0
- data/app/views/cmsedit/_form.html.erb +21 -0
- data/app/views/cmsedit/_result.html.erb +20 -0
- data/app/views/cmsedit/edit.html.erb +6 -0
- data/app/views/cmsedit/error.html.erb +2 -0
- data/app/views/cmsedit/index.html.erb +6 -0
- data/app/views/cmsedit/new.html.erb +5 -0
- data/app/views/cmsedit/show.html.erb +21 -0
- 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/dc_common/paste_clipboard.html.erb +17 -0
- data/app/views/dc_mail/subscribe.html.erb +7 -0
- data/app/views/dc_mail/unsubscribe.html.erb +19 -0
- data/app/views/layouts/cms.html.erb +17 -0
- data/app/views/layouts/cmsedit.html.erb +16 -0
- data/app/views/layouts/content.html.erb +16 -0
- data/config/initializers/kaminari_patch.rb +36 -0
- data/config/locales/datetimepicker.yml +13 -0
- data/config/locales/drgcms_en.yml +96 -0
- data/config/locales/drgcms_sl.yml +97 -0
- data/config/locales/en.yml +7 -0
- data/config/locales/kaminari.yml +26 -0
- data/config/locales/models_en.yml +790 -0
- data/config/locales/models_sl.yml +805 -0
- data/config/locales/mongoid_sl.yml +60 -0
- data/config/locales/sl.yml +211 -0
- data/config/routes.rb +2 -0
- data/drg_cms.gemspec +28 -0
- data/lib/drg_cms.rb +45 -0
- data/lib/drg_cms/engine.rb +30 -0
- data/lib/drg_cms/version.rb +3 -0
- data/lib/tasks/at_the_beginning.yml +26 -0
- data/lib/tasks/dc_cleanup.rake +94 -0
- data/lib/tasks/drg_cms_tasks.rake +118 -0
- data/lib/tasks/send_mail.rake +253 -0
- data/lib/tasks/site_statistics.rake +80 -0
- data/test/drg_cms_test.rb +7 -0
- data/test/dummy/README.rdoc +261 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +15 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +59 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +58 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/test_helper.rb +15 -0
- metadata +375 -0
@@ -0,0 +1,34 @@
|
|
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
|
+
class DcMailListMember
|
24
|
+
include Mongoid::Document
|
25
|
+
include Mongoid::Timestamps
|
26
|
+
|
27
|
+
belongs_to :dc_mail_list
|
28
|
+
embedded_in :dc_mail_address
|
29
|
+
|
30
|
+
field :reason, type: String
|
31
|
+
field :active, type: Boolean, default: true
|
32
|
+
field :created_by, type: BSON::ObjectId
|
33
|
+
field :updated_by, type: BSON::ObjectId
|
34
|
+
end
|
@@ -0,0 +1,59 @@
|
|
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
|
+
class DcMenu
|
24
|
+
include Mongoid::Document
|
25
|
+
include Mongoid::Timestamps
|
26
|
+
|
27
|
+
field :name, type: String
|
28
|
+
field :description, type: String
|
29
|
+
field :div_name, type: String
|
30
|
+
field :css, type: String
|
31
|
+
field :active, type: Boolean, default: true
|
32
|
+
field :created_by, type: BSON::ObjectId
|
33
|
+
field :updated_by, type: BSON::ObjectId
|
34
|
+
|
35
|
+
index( { name: 1 }, { unique: true } )
|
36
|
+
|
37
|
+
embeds_many :dc_menu_items
|
38
|
+
|
39
|
+
validates :name, :length => { :minimum => 4 }
|
40
|
+
validates :name, uniqueness: true
|
41
|
+
validates_length_of :description, minimum: 10
|
42
|
+
|
43
|
+
#######################################################################
|
44
|
+
#
|
45
|
+
#######################################################################
|
46
|
+
def self.choices4_menu(site)
|
47
|
+
rez = []
|
48
|
+
menus = (site.menu_name.blank? ? all : where(name: site.menu_name)).to_a
|
49
|
+
menus.each do |menu|
|
50
|
+
rez << [menu.name, nil]
|
51
|
+
menu.dc_menu_items.where(active: true).order_by(:order => 1).each do |menu_item|
|
52
|
+
# next unless menu_item.active
|
53
|
+
rez << ['-- ' + menu_item.caption, menu_item._id]
|
54
|
+
end
|
55
|
+
end
|
56
|
+
rez
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
@@ -0,0 +1,40 @@
|
|
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
|
+
class DcMenuItem
|
24
|
+
include Mongoid::Document
|
25
|
+
include Mongoid::Timestamps
|
26
|
+
|
27
|
+
field :caption, type: String
|
28
|
+
field :picture, type: String
|
29
|
+
field :link, type: String
|
30
|
+
field :target, type: String
|
31
|
+
field :page_id, type: BSON::ObjectId
|
32
|
+
field :order, type: Integer
|
33
|
+
field :active, type: Boolean, default: true
|
34
|
+
field :policy_id, type: BSON::ObjectId
|
35
|
+
|
36
|
+
field :created_by, type: BSON::ObjectId
|
37
|
+
field :updated_by, type: BSON::ObjectId
|
38
|
+
|
39
|
+
embeds_many :dc_menu_items, :cyclic => true
|
40
|
+
end
|
@@ -0,0 +1,123 @@
|
|
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
|
+
module DcPageCommon
|
26
|
+
extend ActiveSupport::Concern
|
27
|
+
included do
|
28
|
+
|
29
|
+
include Mongoid::Document
|
30
|
+
include Mongoid::Timestamps
|
31
|
+
|
32
|
+
field :subject, type: String, default: ''
|
33
|
+
field :subject_link, type: String, default: ''
|
34
|
+
field :alt_link, type: String, default: ''
|
35
|
+
field :sub_subject, type: String, default: ''
|
36
|
+
field :picture, type: String
|
37
|
+
field :gallery, type: String
|
38
|
+
field :body, type: String, default: ''
|
39
|
+
field :css, type: String, default: ''
|
40
|
+
field :script, type: String, default: ''
|
41
|
+
field :params, type: String
|
42
|
+
field :menu_id, type: BSON::ObjectId
|
43
|
+
field :author_id, type: BSON::ObjectId
|
44
|
+
field :dc_poll_id, type: BSON::ObjectId
|
45
|
+
field :author_name, type: String
|
46
|
+
field :publish_date, type: DateTime
|
47
|
+
field :user_name, type: String
|
48
|
+
field :valid_from, type: DateTime
|
49
|
+
field :valid_to, type: DateTime
|
50
|
+
field :comments, type: Integer, default: 1 # 0 => not allowed, 1 => allowed
|
51
|
+
field :active, type: Boolean, default: true
|
52
|
+
field :created_by, type: BSON::ObjectId
|
53
|
+
field :updated_by, type: BSON::ObjectId
|
54
|
+
field :kats, type: Array # Categories
|
55
|
+
|
56
|
+
field :policy_id, type: BSON::ObjectId
|
57
|
+
|
58
|
+
embeds_many :dc_parts
|
59
|
+
|
60
|
+
belongs_to :dc_site
|
61
|
+
belongs_to :dc_design
|
62
|
+
|
63
|
+
index ({ dc_site_id: 1, subject_link: 1 })
|
64
|
+
index kats: 1
|
65
|
+
index alt_link: 1
|
66
|
+
|
67
|
+
before_save :do_before_save
|
68
|
+
|
69
|
+
validates :publish_date, presence: true
|
70
|
+
|
71
|
+
######################################################################
|
72
|
+
#
|
73
|
+
######################################################################
|
74
|
+
protected
|
75
|
+
|
76
|
+
######################################################################
|
77
|
+
# Clears subject link of chars that shouldn't be there and also take care of its size
|
78
|
+
######################################################################
|
79
|
+
def clear_link(link)
|
80
|
+
link.gsub!(/\.|\?|\!\&|»|«|\,|\"|\'|\:/,'')
|
81
|
+
link.gsub!('<br>','')
|
82
|
+
link.gsub!(' ','-')
|
83
|
+
link.gsub!('---','-')
|
84
|
+
link.gsub!('--','-')
|
85
|
+
# it shall not be greater than 100 chars. Don't break in the middle of words
|
86
|
+
if link.size > 100
|
87
|
+
link = link[0,100]
|
88
|
+
link.chop! until link[-1,1] == '-' or link.size < 10 # delete until -
|
89
|
+
end
|
90
|
+
link.chop! if link[-1,1] == '-' # remove - at the end
|
91
|
+
link
|
92
|
+
end
|
93
|
+
|
94
|
+
######################################################################
|
95
|
+
#
|
96
|
+
######################################################################
|
97
|
+
def do_before_save
|
98
|
+
if self.subject_link.empty?
|
99
|
+
self.subject_link = clear_link(self.subject.downcase.strip)
|
100
|
+
# add date to link, but only if something is written in subject
|
101
|
+
self.subject_link << self.publish_date.strftime('-%Y%m%d') if self.subject_link.size > 1
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
################################################################################
|
106
|
+
|
107
|
+
######################################################################
|
108
|
+
# Return all pages belonging to site ready for select input field.
|
109
|
+
######################################################################
|
110
|
+
def self.all_pages_for_site(site)
|
111
|
+
where(dc_site_id: site._id, active: true).order(subject: 1).
|
112
|
+
inject([]) { |r,page| r << [ page.subject, page.subject_link] }
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
######################################################################
|
119
|
+
#
|
120
|
+
######################################################################
|
121
|
+
class DcPage
|
122
|
+
include DcPageCommon
|
123
|
+
end
|
@@ -0,0 +1,28 @@
|
|
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
|
+
class DcPart < DcPiece
|
24
|
+
embedded_in :dc_design
|
25
|
+
embedded_in :dc_page
|
26
|
+
|
27
|
+
field :policy_id, type: BSON::ObjectId
|
28
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2012+ Damjan Rems
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
5
|
+
# a copy of this software and associated documentation files (the
|
6
|
+
# "Software"), to deal in the Software without restriction, including
|
7
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
8
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
10
|
+
# the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be
|
13
|
+
# included in all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
+
#++
|
23
|
+
|
24
|
+
#########################################################################
|
25
|
+
#
|
26
|
+
#########################################################################
|
27
|
+
class DcPermission
|
28
|
+
# Declaration of permissions
|
29
|
+
NO_ACCESS = 0
|
30
|
+
CAN_VIEW = 1
|
31
|
+
CAN_CREATE = 2
|
32
|
+
CAN_EDIT = 4
|
33
|
+
CAN_EDIT_ALL = 8
|
34
|
+
CAN_DELETE = 16
|
35
|
+
CAN_DELETE_ALL = 32
|
36
|
+
CAN_ADMIN = 64
|
37
|
+
SUPERADMIN = 128
|
38
|
+
|
39
|
+
include Mongoid::Document
|
40
|
+
include Mongoid::Timestamps
|
41
|
+
|
42
|
+
field :table_name, type: String
|
43
|
+
field :is_default, type: Boolean, default: false
|
44
|
+
field :active, type: Boolean, default: true
|
45
|
+
|
46
|
+
#embeds_many :dc_policy_rules
|
47
|
+
embeds_many :dc_policy_rules, as: :policy_rules
|
48
|
+
|
49
|
+
index( { table_name: 1 }, { unique: true } )
|
50
|
+
|
51
|
+
validates :table_name, presence: true
|
52
|
+
validates :table_name, uniqueness: true
|
53
|
+
|
54
|
+
def self.values_for_permissions
|
55
|
+
[['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
|
+
end
|
57
|
+
|
58
|
+
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
|
+
class DcPiece
|
24
|
+
include Mongoid::Document
|
25
|
+
include Mongoid::Timestamps
|
26
|
+
|
27
|
+
field :name, type: String, default: ''
|
28
|
+
field :description, type: String, default: ''
|
29
|
+
field :picture, type: String
|
30
|
+
field :thumbnail, type: String
|
31
|
+
field :body, type: String, default: ''
|
32
|
+
field :css, type: String, default: ''
|
33
|
+
field :script, type: String, default: ''
|
34
|
+
field :script_type, type: String, default: ''
|
35
|
+
field :params, type: String, default: ''
|
36
|
+
field :piece_id, type: BSON::ObjectId
|
37
|
+
field :div_id, type: String
|
38
|
+
field :site_id, type: BSON::ObjectId
|
39
|
+
field :order, type: Integer, default: 0
|
40
|
+
field :active, type: Boolean, default: true
|
41
|
+
field :valid_from, type: DateTime
|
42
|
+
field :valid_to, type: DateTime
|
43
|
+
|
44
|
+
field :created_by, type: BSON::ObjectId
|
45
|
+
field :updated_by, type: BSON::ObjectId
|
46
|
+
|
47
|
+
index( { name: 1 }, { unique: true } )
|
48
|
+
index( { site_id: 1 } )
|
49
|
+
|
50
|
+
########################################################################
|
51
|
+
# Return choices for select for dc_policy_role_id
|
52
|
+
########################################################################
|
53
|
+
def self.choices4_pieces
|
54
|
+
all.inject([]) { |r,piece| r << [ piece.name, piece._id] }
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2012+ Damjan Rems
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
5
|
+
# a copy of this software and associated documentation files (the
|
6
|
+
# "Software"), to deal in the Software without restriction, including
|
7
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
8
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
10
|
+
# the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be
|
13
|
+
# included in all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
+
#++
|
23
|
+
|
24
|
+
#########################################################################
|
25
|
+
#
|
26
|
+
#########################################################################
|
27
|
+
class DcPolicy
|
28
|
+
include Mongoid::Document
|
29
|
+
include Mongoid::Timestamps
|
30
|
+
|
31
|
+
field :name, type: String
|
32
|
+
field :description, type: String, default: ''
|
33
|
+
field :is_default, type: Boolean, default: false
|
34
|
+
field :active, type: Boolean, default: true
|
35
|
+
field :updated_by, type: BSON::ObjectId
|
36
|
+
field :message, type: String, default: ''
|
37
|
+
|
38
|
+
#embeds_many :dc_policy_rules
|
39
|
+
embeds_many :dc_policy_rules, as: :policy_rules
|
40
|
+
embedded_in :dc_site
|
41
|
+
|
42
|
+
validates :name, :length => { :minimum => 4 }
|
43
|
+
validates :message, :length => { :minimum => 5 }
|
44
|
+
|
45
|
+
# index name: 1
|
46
|
+
# index 'dc_policy_rules._id' => 1
|
47
|
+
|
48
|
+
#########################################################################
|
49
|
+
#
|
50
|
+
#########################################################################
|
51
|
+
def self.values_for_permissions
|
52
|
+
[['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
|
+
end
|
54
|
+
|
55
|
+
#########################################################################
|
56
|
+
# returns all possible policy rules for use in select input field
|
57
|
+
#########################################################################
|
58
|
+
def self.choices4_policies()
|
59
|
+
rez = []
|
60
|
+
all.each do |policy|
|
61
|
+
rez << [policy.name, nil]
|
62
|
+
policy.dc_policy_rules.each do |rule|
|
63
|
+
rez << ['-- ' + rule.name, rule._id]
|
64
|
+
end
|
65
|
+
end
|
66
|
+
rez
|
67
|
+
end
|
68
|
+
|
69
|
+
#########################################################################
|
70
|
+
# Returns policy rules for the site. Since it is called from policy_role form
|
71
|
+
# which can be embedded in lots of tables (collections) table name of parent
|
72
|
+
# is also send as parameter.
|
73
|
+
#########################################################################
|
74
|
+
def self.choices4_site_policy(table, id)
|
75
|
+
unless table == 'dc_site'
|
76
|
+
t = table.classify.constantize
|
77
|
+
id = t.find(id).dc_site_id
|
78
|
+
end
|
79
|
+
rez = []
|
80
|
+
site = DcSite.find_by(id: id)
|
81
|
+
site.dc_policy.dc_policy_rules.each { |rule| rez << [rule.name, rule._id] }
|
82
|
+
rez
|
83
|
+
end
|
84
|
+
|
85
|
+
#########################################################################
|
86
|
+
# returns name for policy rule id
|
87
|
+
#########################################################################
|
88
|
+
def self.policy_rule_name_for(id)
|
89
|
+
pol = find_by('dc_policy_rules._id' => BSON::ObjectId.from_string(id))
|
90
|
+
return 'Invalid policy name!' if pol.nil?
|
91
|
+
pol.dc_policy_rules.find(id).name
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|