drg_cms 0.5.10.7 → 0.5.10.10
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/app/assets/stylesheets/drg_cms/drg_cms.css +3 -1
- data/app/controllers/dc_application_controller.rb +37 -7
- data/app/controllers/dc_common_controller.rb +10 -5
- data/app/forms/all_options.yml +1 -1
- data/app/forms/dc_category.yml +7 -0
- data/app/forms/dc_page.yml +9 -3
- data/app/helpers/dc_application_helper.rb +80 -14
- data/app/helpers/dc_common_renderer.rb +1 -0
- data/app/helpers/dc_simple_menu_renderer.rb +1 -1
- data/app/models/dc_category.rb +6 -3
- data/app/models/dc_policy_role.rb +12 -0
- data/app/models/drgcms_form_fields.rb +15 -2
- data/config/locales/models_en.yml +2 -0
- data/config/locales/models_sl.yml +2 -0
- data/drg_cms.gemspec +5 -4
- data/lib/drg_cms/version.rb +1 -1
- data/lib/tasks/dc_cleanup.rake +16 -0
- metadata +23 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bdf44bace6e210feb0eb13a51f30edac416f50af
|
4
|
+
data.tar.gz: 883617538b019a15dd6cb1aa320b56cf9f578247
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ef0e470d00455dbf50ade1b16c041ea73926e329c6cc94ae2345860ffa314148089e823f4e979266d469fd92a755b1f79487966943c5f4e6940163c6ebb71e2e
|
7
|
+
data.tar.gz: 9525e91d098007daedf5171f7973d1a5a9d38f46c8b4304c39ff70c5c8b3c90172dd4df83d425b3eb565f71153e1055068e640af7dfa0f0b1a8446f4838c0d52
|
@@ -198,12 +198,6 @@ def dc_user_can(permission, table=params[:table])
|
|
198
198
|
add_permissions_for table_name
|
199
199
|
end
|
200
200
|
end
|
201
|
-
# Sometimes anonymous user is allowed to use cmsedit. Search for system default role.
|
202
|
-
#TODO This might not be the best idea. Check in the future.
|
203
|
-
if session[:user_roles].nil? or session[:user_roles] == []
|
204
|
-
guest = DcUserRole.find_by(:system_name => 'guest')
|
205
|
-
session[:user_roles] = guest ? [guest.id] : []
|
206
|
-
end
|
207
201
|
# Return true if any of the permissions user has is higher or equal to requested permission
|
208
202
|
session[:user_roles].each {|r| return true if @permissions[r] and @permissions[r] >= permission }
|
209
203
|
false
|
@@ -268,6 +262,36 @@ def dc_not_modified?(*documents)
|
|
268
262
|
false
|
269
263
|
end
|
270
264
|
|
265
|
+
##########################################################################
|
266
|
+
# Will determine design content or view filename which defines design.
|
267
|
+
#
|
268
|
+
# Returns:
|
269
|
+
# design_body: design body as defined in site or design document.
|
270
|
+
# design_view: view file name which will be used for rendering design
|
271
|
+
##########################################################################
|
272
|
+
def get_design_and_render(design_doc)
|
273
|
+
layout = @site.site_layout.blank? ? 'content' : @site.site_layout
|
274
|
+
site_top = '<%= dc_page_top %>'
|
275
|
+
site_bottom = '<%= dc_page_bottom %>'
|
276
|
+
#
|
277
|
+
if design_doc
|
278
|
+
if !design_doc.rails_view.blank?
|
279
|
+
if design_doc.rails_view.downcase != 'site'
|
280
|
+
return render design_doc.rails_view, layout: layout
|
281
|
+
end
|
282
|
+
elsif !design_doc.body.blank?
|
283
|
+
design = site_top + design_doc.body + site_bottom
|
284
|
+
return render(inline: design, layout: layout)
|
285
|
+
end
|
286
|
+
end
|
287
|
+
#
|
288
|
+
if @site.rails_view.blank?
|
289
|
+
design = site_top + @site.design + site_bottom
|
290
|
+
return render(inline: design, layout: layout)
|
291
|
+
end
|
292
|
+
render @site.rails_view, layout: layout
|
293
|
+
end
|
294
|
+
|
271
295
|
##########################################################################
|
272
296
|
# This is default page process action. It will search for site, page and
|
273
297
|
# design documents, collect parameters from different objects, add CMS edit code if allowed
|
@@ -334,7 +358,8 @@ def dc_process_default_request()
|
|
334
358
|
dc_log_visit()
|
335
359
|
end
|
336
360
|
@page_title = @page.title.blank? ? "#{@site.page_title}-#{@page.subject}" : @page.title
|
337
|
-
|
361
|
+
# define design
|
362
|
+
=begin
|
338
363
|
design = @design ? @design.body : @site.design
|
339
364
|
# render view. inline if defined in design
|
340
365
|
view_filename = @design ? @design.rails_view.to_s : ''
|
@@ -346,6 +371,8 @@ def dc_process_default_request()
|
|
346
371
|
else
|
347
372
|
render view_filename, layout: layout
|
348
373
|
end
|
374
|
+
=end
|
375
|
+
get_design_and_render @design
|
349
376
|
end
|
350
377
|
|
351
378
|
##########################################################################
|
@@ -378,6 +405,7 @@ def dc_single_sitedoc_request
|
|
378
405
|
#
|
379
406
|
@page_title = "#{@site.page_title} #{@part.name}"
|
380
407
|
@js, @css = '', ''
|
408
|
+
=begin
|
381
409
|
layout = @site.site_layout.blank? ? 'content' : @site.site_layout
|
382
410
|
if @site.rails_view.blank?
|
383
411
|
design = @site.design + '<style type="text/css"><%= @css.html_safe %></style><%= javascript_tag @js %>'
|
@@ -386,6 +414,8 @@ def dc_single_sitedoc_request
|
|
386
414
|
else
|
387
415
|
render @site.rails_view, layout: layout
|
388
416
|
end
|
417
|
+
=end
|
418
|
+
get_design_and_render nil
|
389
419
|
end
|
390
420
|
|
391
421
|
########################################################################
|
@@ -149,8 +149,7 @@ end
|
|
149
149
|
def restore_from_journal
|
150
150
|
# Only administrators can perform this operation
|
151
151
|
unless dc_user_has_role('admin')
|
152
|
-
{ 'msg_info' => (t ('drgcms.not_authorized')) }
|
153
|
-
return render inline: result.to_json, formats: 'js'
|
152
|
+
return render inline: { 'msg_info' => (t ('drgcms.not_authorized')) }.to_json, formats: 'js'
|
154
153
|
end
|
155
154
|
# selected fields to hash
|
156
155
|
restore = params[:select].inject({}) {|r,v| r[v.first] = 0 if v.last == '1'; r}
|
@@ -305,11 +304,10 @@ def fill_login_data(user, remember_me)
|
|
305
304
|
session[:user_id] = user.id
|
306
305
|
session[:user_name] = user.name
|
307
306
|
session[:edit_mode] = 0
|
308
|
-
session[:user_roles] =
|
307
|
+
session[:user_roles] = []
|
309
308
|
# special for SUPERADMIN
|
310
309
|
sa = DcPolicyRole.find_by(system_name: 'superadmin')
|
311
310
|
if sa and (role = user.dc_user_roles.find_by(dc_policy_role_id: sa.id))
|
312
|
-
session[:user_roles] = []
|
313
311
|
session[:user_roles] << role.dc_policy_role_id
|
314
312
|
session[:edit_mode] = 2
|
315
313
|
return
|
@@ -328,9 +326,16 @@ def fill_login_data(user, remember_me)
|
|
328
326
|
# set edit_mode
|
329
327
|
# session[:edit_mode] = 1 if policy_role.has_cms_menu
|
330
328
|
session[:edit_mode] = 1 if policy_role.permission > 1
|
331
|
-
session[:user_roles] ||= [] #
|
332
329
|
session[:user_roles] << role.dc_policy_role_id
|
333
330
|
end
|
331
|
+
# Add default guest role if no role set
|
332
|
+
# This was previously in dc_user_can. I belive it should be here.
|
333
|
+
#TODO This might not be the best idea. Check in the future.
|
334
|
+
if session[:user_roles].size == 0
|
335
|
+
guest = DcUserRole.find_by(:system_name => 'guest')
|
336
|
+
session[:user_roles] << guest.id if guest
|
337
|
+
end
|
338
|
+
|
334
339
|
# Save remember me cookie if not CMS user and remember me is selected
|
335
340
|
if session[:edit_mode] == 0 and remember_me
|
336
341
|
cookies.signed[:remember_me] = { :value => user.id, :expires => 180.days.from_now}
|
data/app/forms/all_options.yml
CHANGED
@@ -135,7 +135,7 @@ form:
|
|
135
135
|
name: dc_site_id
|
136
136
|
type: select
|
137
137
|
multiple: true || 1
|
138
|
-
eval: dc_choices4('model','description_field_name','_id')
|
138
|
+
eval: "dc_choices4('model','description_field_name','_id',site: :with_nil)"
|
139
139
|
eval: ModelName.choices4_site
|
140
140
|
html:
|
141
141
|
include_blank: true
|
data/app/forms/dc_category.yml
CHANGED
data/app/forms/dc_page.yml
CHANGED
@@ -89,10 +89,16 @@ form:
|
|
89
89
|
include_blank: true
|
90
90
|
120:
|
91
91
|
name: kats
|
92
|
-
type: multitext_autocomplete
|
93
|
-
search: dc_category.name
|
92
|
+
# type: multitext_autocomplete
|
93
|
+
# search: dc_category.name
|
94
|
+
# html:
|
95
|
+
# size: 30
|
96
|
+
type: select
|
97
|
+
multiple: true
|
98
|
+
eval: "dc_choices4('DcCategory','name','_id',site: :with_nil)"
|
94
99
|
html:
|
95
|
-
|
100
|
+
include_blank: true
|
101
|
+
size: 4
|
96
102
|
|
97
103
|
2advanced:
|
98
104
|
10:
|
@@ -124,17 +124,82 @@ def dc_replace_in_design(opts={})
|
|
124
124
|
design.sub!(opts[:replace], opts[:with])
|
125
125
|
end
|
126
126
|
end
|
127
|
-
render(inline: design, layout:
|
127
|
+
render(inline: design, layout: nil)
|
128
128
|
end
|
129
129
|
|
130
130
|
########################################################################
|
131
|
-
#
|
131
|
+
# Used for designs with lots of common code and one (or more) part which differs.
|
132
|
+
# It will simply replace anchor code with value of variable.
|
133
|
+
#
|
134
|
+
# Example: As used in design. Backslashing < and % is important \<\%
|
135
|
+
# <% part = "<div class='some-class'>\<\%= dc_render(:my_renderer, method: 'render_method') \%\></div>" %>
|
136
|
+
# <%= dc_replace_in_design(piece: 'piece_name', replace: '[main]', with: part) %>
|
137
|
+
#
|
138
|
+
# Want to replace more than one part. Use array.
|
139
|
+
# <%= dc_replace_in_design(replace: ['[part1]','[part2]'], with: [part1, part2]) %>
|
140
|
+
#
|
141
|
+
# This helper is replacement for old 'script' method defined in dc_piece_renderer,
|
142
|
+
# but it uses design defined in site document if piece parameter is not set.
|
132
143
|
########################################################################
|
133
|
-
def
|
134
|
-
|
135
|
-
|
144
|
+
def dc_render_from_site(opts={})
|
145
|
+
design = opts[:piece] ? DcPiece.find(name: opts[:piece]).script : dc_get_site.design
|
146
|
+
layout = opts[:layout] || (dc_get_site.site_layout.size > 2 ? dc_get_site.site_layout : nil)
|
147
|
+
|
148
|
+
render(inline: design, layout: opts[:layout], with: opts[:with])
|
136
149
|
end
|
137
150
|
|
151
|
+
|
152
|
+
|
153
|
+
########################################################################
|
154
|
+
# Used for designs with lots of common code and one (or more) part which differs.
|
155
|
+
# Point is to define design once and replace some parts of design dinamically.
|
156
|
+
# Design may be defined in site and design doc defines only parts that vary
|
157
|
+
# from page to page.
|
158
|
+
#
|
159
|
+
# Example: As used in design.
|
160
|
+
# <%= dc_render_design_part(@main) %>
|
161
|
+
#
|
162
|
+
# main variable is defined in design body for example:
|
163
|
+
#
|
164
|
+
# @main = Proc.new {render partial: 'parts/home'}
|
165
|
+
#
|
166
|
+
# This helper is replacement dc_render_from_site method which will soon be deprecated.
|
167
|
+
########################################################################
|
168
|
+
def dc_render_design_part(part)
|
169
|
+
if part.nil?
|
170
|
+
''
|
171
|
+
elsif part.class == Proc
|
172
|
+
result = part.call
|
173
|
+
result.class == Array ? result.first : result
|
174
|
+
elsif part.class == String
|
175
|
+
eval part
|
176
|
+
else
|
177
|
+
part.to_s
|
178
|
+
end.html_safe
|
179
|
+
end
|
180
|
+
|
181
|
+
def dc_render_design(part)
|
182
|
+
dc_render_design_part(part)
|
183
|
+
end
|
184
|
+
|
185
|
+
########################################################################
|
186
|
+
# Helper for rendering top CMS menu when in editing mode
|
187
|
+
########################################################################
|
188
|
+
def dc_page_top()
|
189
|
+
if @design and !@design.rails_view.blank?
|
190
|
+
# Evaluate parameters in design body
|
191
|
+
eval(@design.body)
|
192
|
+
end
|
193
|
+
session[:edit_mode] > 0 ? render(partial: 'cmsedit/edit_stuff') : ''
|
194
|
+
end
|
195
|
+
|
196
|
+
########################################################################
|
197
|
+
# Helper for adding additional css and javascript code added by documents
|
198
|
+
# and renderers during page rendering.
|
199
|
+
########################################################################
|
200
|
+
def dc_page_bottom()
|
201
|
+
%Q[<style type="text/css">#{@css}</style>#{javascript_tag @js}].html_safe
|
202
|
+
end
|
138
203
|
############################################################################
|
139
204
|
# Creates title div for DRG CMS dialogs. Title may also contain pagination section on right side if
|
140
205
|
# result_set is provided as parameter.
|
@@ -818,8 +883,9 @@ end
|
|
818
883
|
# [model] String. Collection (table) name in lowercase format.
|
819
884
|
# [name] String. Field name containing description text.
|
820
885
|
# [id] String. Field name containing id field. Default is '_id'
|
821
|
-
# [options] Hash. Various options. Currently
|
822
|
-
# documents belonging to current site
|
886
|
+
# [options] Hash. Various options. Currently site: (:only, :with_nil, :all) is used.
|
887
|
+
# Will return only documents belonging to current site, also with site not defined,
|
888
|
+
# or all documents.
|
823
889
|
#
|
824
890
|
# Example (as used in forms):
|
825
891
|
# 50:
|
@@ -830,7 +896,11 @@ end
|
|
830
896
|
def dc_choices4(model, name, id='_id', options = {})
|
831
897
|
model = model.classify.constantize
|
832
898
|
qry = model.only(id, name)
|
833
|
-
|
899
|
+
if (param = options[:site])
|
900
|
+
sites = [dc_get_site.id] unless param == :all
|
901
|
+
sites << nil if param == :with_nil
|
902
|
+
qry = qry.in(dc_site_id: sites) if sites
|
903
|
+
end
|
834
904
|
qry = qry.and(active: true) if model.method_defined?(:active)
|
835
905
|
# qry = qry.sort(name => 1)
|
836
906
|
# choices = []
|
@@ -957,13 +1027,9 @@ end
|
|
957
1027
|
def dc_user_has_role( role, user=nil, roles=nil )
|
958
1028
|
roles = _origin.session[:user_roles] if roles.nil?
|
959
1029
|
user = _origin.session[:user_id] if user.nil?
|
960
|
-
return false if user.nil?
|
1030
|
+
return false if user.nil? or roles.nil?
|
961
1031
|
#
|
962
|
-
|
963
|
-
rol = role
|
964
|
-
role = DcPolicyRole.find_by(name: rol)
|
965
|
-
role = DcPolicyRole.find_by(system_name: rol) if role.nil?
|
966
|
-
end
|
1032
|
+
role = DcPolicyRole.get_role(role)
|
967
1033
|
return false if role.nil?
|
968
1034
|
# role is included in roles array
|
969
1035
|
roles.include?(role._id)
|
@@ -41,6 +41,7 @@ include DcApplicationHelper
|
|
41
41
|
# Defines renderer's class method
|
42
42
|
########################################################################
|
43
43
|
def layout_4print
|
44
|
+
return '' if @parent.params[:renderer].blank?
|
44
45
|
opts = @opts.dup
|
45
46
|
opts[:method] = @parent.params[:method]
|
46
47
|
klass = (@parent.params[:renderer] + '_renderer').classify
|
@@ -110,7 +110,7 @@ def link_4menu(item)
|
|
110
110
|
caption << ' '
|
111
111
|
end
|
112
112
|
# - in first place won't write caption text
|
113
|
-
caption = caption.html_safe + (item.caption[0] == '-' ? '' : item.caption )
|
113
|
+
caption = caption.html_safe + (item.caption[0] == '-' ? '' : item.caption.html_safe )
|
114
114
|
|
115
115
|
target = item.target.blank? ? nil : item.target
|
116
116
|
@parent.link_to(caption, link, {target: target})
|
data/app/models/dc_category.rb
CHANGED
@@ -53,16 +53,19 @@ class DcCategory
|
|
53
53
|
field :order, type: Integer, default: 0
|
54
54
|
field :created_by, type: BSON::ObjectId
|
55
55
|
field :updated_by, type: BSON::ObjectId
|
56
|
+
field :dc_site_id, type: BSON::ObjectId
|
56
57
|
|
57
58
|
validates :name, :presence => true
|
58
59
|
|
59
60
|
index name: 1
|
60
61
|
index ctype: 1
|
62
|
+
index site_id: 1
|
61
63
|
|
62
64
|
#########################################################################
|
63
65
|
# Returns all values where parent value is nil (top level parent).
|
64
66
|
#########################################################################
|
65
|
-
|
66
|
-
|
67
|
-
|
67
|
+
def self.values_for_parent #:nodoc:
|
68
|
+
where(parent: nil).sort(name: 1).inject([]) {|r,v| r << [v.name, v._id]}
|
69
|
+
end
|
70
|
+
|
68
71
|
end
|
@@ -58,4 +58,16 @@ def self.choices4_roles
|
|
58
58
|
where(active: true).order_by(name: 1).inject([]) { |r,role| r << [ role.name, role._id] }
|
59
59
|
end
|
60
60
|
|
61
|
+
########################################################################
|
62
|
+
# Search for role when role parameter is String.
|
63
|
+
########################################################################
|
64
|
+
def self.get_role(role)
|
65
|
+
if role.class == String
|
66
|
+
rol = role
|
67
|
+
role = find_by(name: rol) || find_by(system_name: rol)
|
68
|
+
end
|
69
|
+
role
|
70
|
+
end
|
71
|
+
|
72
|
+
|
61
73
|
end
|
@@ -468,7 +468,7 @@ def render
|
|
468
468
|
link = @parent.link_to(@parent.fa_icon('remove lg', class: 'dc-animate dc-red'), '#',
|
469
469
|
onclick: "$('##{rec.id}').hide(); var v = $('##{record}_#{@yaml['name']}_#{rec.id}'); v.val(\"-\" + v.val());return false;")
|
470
470
|
field = @parent.hidden_field(record, "#{@yaml['name']}_#{rec.id}", value: element)
|
471
|
-
"<div id=\"#{rec.id}\" style=\"padding:2px;\">#{link} #{rec
|
471
|
+
"<div id=\"#{rec.id}\" style=\"padding:2px;\">#{link} #{rec.send(field_name)}<br>#{field}</div>"
|
472
472
|
else
|
473
473
|
'** error **'
|
474
474
|
end
|
@@ -650,6 +650,19 @@ def render
|
|
650
650
|
self
|
651
651
|
end
|
652
652
|
|
653
|
+
###########################################################################
|
654
|
+
# Return value.
|
655
|
+
###########################################################################
|
656
|
+
def self.get_data(params, name)
|
657
|
+
if params['record'][name].class == Array
|
658
|
+
params['record'][name].delete_if {|e| e.blank? }
|
659
|
+
return nil if params['record'][name].size == 0
|
660
|
+
# convert to BSON objects
|
661
|
+
return params['record'][name].map{ |e| BSON::ObjectId.from_string(e) }
|
662
|
+
end
|
663
|
+
params['record'][name]
|
664
|
+
end
|
665
|
+
|
653
666
|
end
|
654
667
|
|
655
668
|
###########################################################################
|
@@ -1136,7 +1149,7 @@ def render
|
|
1136
1149
|
# Found value to be written in field
|
1137
1150
|
if value
|
1138
1151
|
record = t.find(value)
|
1139
|
-
value_displayed = record
|
1152
|
+
value_displayed = record.send(ret_name) if record
|
1140
1153
|
end
|
1141
1154
|
# return if readonly
|
1142
1155
|
return ro_standard(value_displayed) if @readonly
|
@@ -391,6 +391,7 @@ en:
|
|
391
391
|
order: Order
|
392
392
|
parent: Parent
|
393
393
|
active: Active
|
394
|
+
dc_site_id: Valid for site
|
394
395
|
updated_at: Spremenjen
|
395
396
|
|
396
397
|
dc_mail:
|
@@ -777,6 +778,7 @@ en:
|
|
777
778
|
order: Additional order, which can be used for sorting.
|
778
779
|
parent: Parent category. Leave blank if this is top level category.
|
779
780
|
active: Category is active.
|
781
|
+
dc_site_id: Category is valid only for site
|
780
782
|
updated_at: Last update
|
781
783
|
|
782
784
|
dc_mail:
|
@@ -396,6 +396,7 @@ sl:
|
|
396
396
|
order: Zaporedje
|
397
397
|
parent: Nadrejeni
|
398
398
|
active: Aktiven
|
399
|
+
dc_site_id: Spletišče
|
399
400
|
updated_at: Spremenjen
|
400
401
|
|
401
402
|
dc_mail:
|
@@ -790,6 +791,7 @@ sl:
|
|
790
791
|
order: Zaporedje, ki se lahko uporabi pri grupiranju člankov.
|
791
792
|
parent: Nadrejena kategorija. Pustite prazno če je to najvišja kategorija.
|
792
793
|
active: Aktivna
|
794
|
+
dc_site_id: Kategorija velja za stran
|
793
795
|
updated_at: Podatki so bili zadnjič spremenjeni
|
794
796
|
|
795
797
|
dc_mail:
|
data/drg_cms.gemspec
CHANGED
@@ -14,17 +14,18 @@ Gem::Specification.new do |s|
|
|
14
14
|
s.homepage = "http://www.drgcms.org"
|
15
15
|
s.summary = "DRG CMS: Rapid web application development tool for Ruby, Rails and MongoDB"
|
16
16
|
s.description = "DRG CMS can be used for rapid building of complex, data-entry intensive web sites as well as building your in-house private cloud applications."
|
17
|
-
s.license = "MIT
|
17
|
+
s.license = "MIT"
|
18
18
|
s.files = Dir["{app,config,db,lib}/**/*"] + ["MIT-LICENSE", "Rakefile", "README.md", "History.log", "drg_cms.gemspec"]
|
19
19
|
s.test_files = Dir["test/**/*"]
|
20
20
|
|
21
21
|
s.add_dependency 'rails', '~> 4'
|
22
22
|
s.add_dependency 'jquery-rails'
|
23
|
-
s.add_dependency 'jquery-ui-rails'
|
23
|
+
s.add_dependency 'jquery-ui-rails', '~> 5'
|
24
|
+
s.add_dependency 'non-stupid-digest-assets'
|
24
25
|
|
25
26
|
s.add_dependency 'bcrypt' #, '~> 3.0.0'
|
26
|
-
s.add_dependency '
|
27
|
-
s.add_dependency '
|
27
|
+
s.add_dependency 'mongoid', '~> 5'
|
28
|
+
s.add_dependency 'mongo_session_store-rails4'
|
28
29
|
s.add_dependency 'kaminari'
|
29
30
|
s.add_dependency 'font-awesome-rails'
|
30
31
|
s.add_dependency 'sort_alphabetical'
|
data/lib/drg_cms/version.rb
CHANGED
data/lib/tasks/dc_cleanup.rake
CHANGED
@@ -46,6 +46,22 @@ namespace :drg_cms do
|
|
46
46
|
DcSite.collection.database.command(eval: "db.runCommand ( { compact: 'sessions' } )" )
|
47
47
|
end
|
48
48
|
|
49
|
+
###########################################################################
|
50
|
+
desc 'Clears mongodb session documents created by web robots'
|
51
|
+
task :clear_sessions_from_robots, [:name] => :environment do |t, args|
|
52
|
+
# This should remove all sessions documents created by web robots
|
53
|
+
# ActionDispatch::Session::MongoidStore::Session.where('$where' => 'this.created_at == this.updated_at').limit(1000).each do |doc|
|
54
|
+
n = 0
|
55
|
+
ActionDispatch::Session::MongoidStore::Session.batch_size(1000).all.each do |doc|
|
56
|
+
if (doc.created_at == doc.updated_at)
|
57
|
+
doc.delete
|
58
|
+
p "Deleted #{n}" if (n+=1)%1000 == 0
|
59
|
+
end
|
60
|
+
end
|
61
|
+
p "Deleted #{n}"
|
62
|
+
DcSite.collection.database.command(eval: "db.runCommand ( { compact: 'sessions' } )" )
|
63
|
+
end
|
64
|
+
|
49
65
|
###########################################################################
|
50
66
|
desc 'Removes all statistics from dc_visits up to specified date and save them to visits_date.json.'
|
51
67
|
task :clear_visits, [:name] => :environment do |t, args|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: drg_cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.10.
|
4
|
+
version: 0.5.10.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Damjan Rems
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-12-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -42,18 +42,18 @@ dependencies:
|
|
42
42
|
name: jquery-ui-rails
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '5'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '5'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: non-stupid-digest-assets
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
@@ -67,7 +67,7 @@ dependencies:
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: bcrypt
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - ">="
|
@@ -82,6 +82,20 @@ dependencies:
|
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: mongoid
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '5'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '5'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: mongo_session_store-rails4
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
86
100
|
requirements:
|
87
101
|
- - ">="
|
@@ -349,7 +363,7 @@ files:
|
|
349
363
|
- test/test_helper.rb
|
350
364
|
homepage: http://www.drgcms.org
|
351
365
|
licenses:
|
352
|
-
- MIT
|
366
|
+
- MIT
|
353
367
|
metadata: {}
|
354
368
|
post_install_message:
|
355
369
|
rdoc_options: []
|