drg_cms 0.6.1.1.1 → 0.6.1.4

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.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +25 -10
  3. data/app/assets/javascripts/drg_cms/drg_cms.js +99 -29
  4. data/app/assets/stylesheets/drg_cms/drg_cms.css +89 -12
  5. data/app/controllers/dc_application_controller.rb +60 -163
  6. data/app/controllers/dc_common_controller.rb +49 -45
  7. data/app/forms/all_options.yml +4 -1
  8. data/app/forms/dc_page.yml +4 -0
  9. data/app/helpers/cms_edit_helper.rb +31 -22
  10. data/app/helpers/cms_index_helper.rb +42 -21
  11. data/app/helpers/dc_application_helper.rb +31 -44
  12. data/app/models/concerns/dc_page_concern.rb +3 -2
  13. data/app/models/concerns/dc_piece_concern.rb +1 -1
  14. data/app/models/concerns/dc_site_concern.rb +1 -1
  15. data/app/models/concerns/dc_user_concern.rb +3 -3
  16. data/app/models/dc_filter.rb +16 -10
  17. data/app/models/drgcms_form_fields/date_picker.rb +2 -0
  18. data/app/models/drgcms_form_fields/drgcms_field.rb +2 -1
  19. data/app/models/drgcms_form_fields/embedded.rb +4 -2
  20. data/app/models/drgcms_form_fields/number_field.rb +4 -3
  21. data/app/models/drgcms_form_fields/readonly.rb +13 -17
  22. data/app/models/drgcms_form_fields/select.rb +8 -9
  23. data/app/models/drgcms_form_fields/text_autocomplete.rb +17 -11
  24. data/app/renderers/dc_page_renderer.rb +7 -6
  25. data/app/views/cmsedit/_edit_stuff.html.erb +5 -2
  26. data/app/views/cmsedit/edit.html.erb +2 -1
  27. data/app/views/cmsedit/index.html.erb +1 -1
  28. data/app/views/cmsedit/new.html.erb +3 -2
  29. data/config/locales/models_en.yml +2 -0
  30. data/config/locales/models_sl.yml +4 -3
  31. data/drg_cms.gemspec +16 -16
  32. data/lib/drg_cms/version.rb +1 -1
  33. data/lib/drg_cms.rb +44 -4
  34. metadata +29 -29
@@ -67,9 +67,11 @@ def render
67
67
  tables = @parent.tables.inject('') { |r,v| r << "#{v[1]};" } + @yaml['table']
68
68
  ids = @parent.ids.inject('') { |r,v| r << "#{v};" } + @record.id
69
69
  end
70
- opts = { controller: 'cmsedit', action: @yaml['action'],
70
+ # edit enabled embedded form on a readonly form
71
+ readonly = @yaml['readonly'].class == FalseClass ? nil : @readonly
72
+ opts = { controller: 'cmsedit', action: @yaml['action'],
71
73
  ids: ids, table: tables, form_name: @yaml['form_name'],
72
- field_name: @yaml['name'], iframe: "if_#{@yaml['name']}", readonly: @readonly }
74
+ field_name: @yaml['name'], iframe: "if_#{@yaml['name']}", readonly: readonly }
73
75
  # additional parameters if specified
74
76
  @yaml['params'].each { |k,v| opts[k] = @parent.dc_value_for_parameter(v) } if @yaml['params']
75
77
 
@@ -69,14 +69,14 @@ def render
69
69
  @yaml['html']['data-delimiter'] = @yaml.dig('format','delimiter') || I18n.t('number.currency.format.delimiter')
70
70
  @yaml['html']['data-separator'] = @yaml.dig('format','separator') || I18n.t('number.currency.format.separator')
71
71
  # @yaml['html']['data-currency'] = @yaml.dig('format','currency') == 'yes' ? I18n.t('number.currency.format.currency') : @yaml.dig('format','currency')
72
- value = @record[@yaml['name']] || 0
72
+ value = @yaml['html']['value'] || @record[@yaml['name']] || 0
73
73
  @yaml['html']['value'] = @parent.dc_format_number(value, @yaml['html']['data-decimal'], @yaml['html']['data-separator'], @yaml['html']['data-delimiter'] )
74
74
 
75
75
  return ro_standard(@yaml['html']['value']) if @readonly
76
76
 
77
77
  @yaml['html']['autocomplete'] ||= 'off'
78
78
  @html << @parent.hidden_field( record, @yaml['name'], value: value )
79
- @html << @parent.text_field( nil,"record_#{@yaml['name']}_", @yaml['html'])
79
+ @html << @parent.text_field( nil, "record_#{@yaml['name']}_", @yaml['html'])
80
80
  self
81
81
  end
82
82
 
@@ -85,7 +85,8 @@ end
85
85
  ###########################################################################
86
86
  def self.get_data(params, name)
87
87
  return 0 if params['record'][name].blank?
88
- params['record'][name].match('.') ? params['record'][name].to_f : Integer.new(params['record'][name])
88
+
89
+ params['record'][name].match('.') ? params['record'][name].to_f : params['record'][name].to_i
89
90
  end
90
91
 
91
92
  end
@@ -51,29 +51,25 @@ class Readonly < DrgcmsField
51
51
  ###########################################################################
52
52
  # Render readonly field html code
53
53
  ###########################################################################
54
- def render
54
+ def render
55
55
  @html << @parent.hidden_field('record', @yaml['name']) # retain field as hidden field
56
56
  @html << '<div class="dc-readonly">'
57
-
57
+
58
58
  @html << if @yaml['eval']
59
- if @yaml['eval'].match('dc_name4_id')
60
- a = @yaml['eval'].split(',')
61
- if a.size == 3
62
- @parent.dc_name4_id(a[1], a[2], nil, @record[ @yaml['name'] ])
63
- else
64
- @parent.dc_name4_id(a[1], a[2], a[3], @record[ @yaml['name'] ])
65
- end
66
-
67
- # @parent.dc_name4_id(a[1], a[2], @record[ @yaml['name'] ])
68
- else
69
- eval( "#{@yaml['eval']} '#{@record.send(@yaml['name'])}'")
70
- end
71
- else
72
- @parent.dc_format_value(@record.send(@yaml['name']),@yaml['format'])
73
- end
59
+ if @yaml['eval'].match(/dc_name4_id|dc_name_for_id/)
60
+ parms = @parent.dc_eval_to_array(@yaml['eval'])
61
+ parms << nil if parms.size == 3
62
+ @parent.dc_name_for_id(parms[1], parms[2], parms[3], @record[@yaml['name']])
63
+ else
64
+ eval( "#{@yaml['eval']} '#{@record.send(@yaml['name'])}'")
65
+ end
66
+ else
67
+ @parent.dc_format_value(@record.send(@yaml['name']), @yaml['format'])
68
+ end
74
69
  @html << '</div>'
75
70
  self
76
71
  end
72
+
77
73
  end
78
74
 
79
75
  end
@@ -96,7 +96,7 @@ def choices_in_eval(e)
96
96
  if @yaml['depend'].nil?
97
97
  method = e.split(/\ |\(/).first
98
98
  return eval(e) if respond_to?(method) # id method defined here
99
- return eval('@parent.'+e) if @parent.respond_to?(method) # is method defined in helpers
99
+ return eval('@parent.' + e) if @parent.respond_to?(method) # is method defined in helpers
100
100
  # eval whatever it is there
101
101
  eval e
102
102
  else
@@ -120,19 +120,18 @@ end
120
120
  ###########################################################################
121
121
  def get_choices
122
122
  begin
123
- choices = case
124
- when @yaml['choices'] then
125
- @yaml['choices'].match('helpers.') ? choices_in_helper(@yaml['choices']) : @yaml['choices']
123
+ choices = case
126
124
  when @yaml['eval'] then
127
125
  choices_in_eval(@yaml['eval'])
126
+ when @yaml['choices'] then
127
+ @yaml['choices'].match('helpers.') ? choices_in_helper(@yaml['choices']) : @yaml['choices']
128
128
  else
129
129
  choices_in_helper()
130
130
  end
131
- # Convert string to Array
132
- choices.class == String ?
133
- choices.chomp.split(',').inject([]) { |r,v| r << (v.match(':') ? v.split(':') : v ) } :
134
- choices
135
- rescue Exception => e
131
+ return choices unless choices.class == String
132
+
133
+ choices.chomp.split(',').map { |e| e.match(':') ? e.split(':') : e }
134
+ rescue Exception => e
136
135
  Rails.logger.debug "\nError in select eval. #{e.message}\n"
137
136
  Rails.logger.debug(e.backtrace.join($/)) if Rails.env.development?
138
137
  ['error'] # return empty array when error occures
@@ -76,21 +76,27 @@ def render
76
76
  end
77
77
  return ro_standard 'Table or field keyword not defined!' unless (table && ret_name)
78
78
  # TODO check if table exists
79
- t = table.classify.constantize
79
+ model_klass = table.classify.constantize
80
80
  # find record and return value of field
81
81
  value_send_as = 'p_' + @yaml['name']
82
82
  value = if @parent.params[value_send_as]
83
- @parent.params[value_send_as]
84
- elsif @record and @record[@yaml['name']]
85
- @record[@yaml['name']]
86
- end
83
+ @parent.params[value_send_as]
84
+ elsif @record && @record[@yaml['name']]
85
+ @record[@yaml['name']]
86
+ end
87
+ not_id = @parent.dc_dont?(@yaml['is_id'], false)
87
88
  # Found value to be written in field. If field is not found write out value.
88
- if value
89
- record = t.find(value) unless @yaml['not_id'] # don't if it's is not an id
90
- value_displayed = record ? record.send(ret_name) : value
89
+ value_displayed = value
90
+ if value && !not_id
91
+ if BSON::ObjectId.legal?(value)
92
+ record = model_klass.find(value)
93
+ value_displayed = record.send(ret_name) if record
94
+ else
95
+ value_displayed = model_klass.send(ret_name, method, @parent, value)
96
+ end
91
97
  end
92
- # return if readonly
93
98
  return ro_standard(value_displayed) if @readonly
99
+
94
100
  # Add method back, so autocomplete will know that it must search for method inside class
95
101
  ret_name = "#{ret_name}.#{method}" if method
96
102
  @yaml['html'] ||= {}
@@ -108,7 +114,6 @@ def render
108
114
  @html << '</span>' + @parent.hidden_field(record, @yaml['name'], value: value) # actual value will be in hidden field
109
115
  # JS stuff
110
116
  # allow unselected values on is_id: false option
111
- not_id = @parent.dc_dont?(@yaml['is_id'], false)
112
117
  not_id_code = %(
113
118
  if (ui.item == null) {
114
119
  $("##{record}_#{@yaml['name']}").val($("##{record}__#{@yaml['name']}").val() );
@@ -120,7 +125,7 @@ $(document).ready(function() {
120
125
  $("##{record}_#{_name}").autocomplete( {
121
126
  source: function(request, response) {
122
127
  $.ajax({
123
- url: '/dc_common/autocomplete',
128
+ url: "/dc_common/autocomplete",
124
129
  type: "POST",
125
130
  dataType: "json",
126
131
  data: { input: request.term, table: "#{table}", search: "#{ret_name}" #{(',id: "'+@yaml['id'] + '"') if @yaml['id']} },
@@ -154,4 +159,5 @@ def self.get_data(params, name)
154
159
  end
155
160
 
156
161
  end
162
+
157
163
  end
@@ -72,6 +72,7 @@ end
72
72
  #########################################################################
73
73
  def iframe
74
74
  return '' if @page.if_url.blank?
75
+
75
76
  html = "\n<iframe"
76
77
  html << " id=\"#{@page.if_id}\"" unless @page.if_id.blank?
77
78
  html << " class=\"#{@page.if_class}\"" unless @page.if_class.blank?
@@ -79,7 +80,7 @@ def iframe
79
80
  html << " height=\"#{@page.if_height}\"" unless @page.if_height.blank?
80
81
  html << " width=\"#{@page.if_width}\"" unless @page.if_width.blank?
81
82
  html << " scrolling=\"#{@page.if_scroll}\""
82
- # Parameters
83
+ # Parameters
83
84
  parameters = @page.if_url.match(/\?/) ? '' : '?'
84
85
  params = YAML.load(@page.if_params) rescue {}
85
86
  params = {} unless params.class == Hash
@@ -98,20 +99,20 @@ end
98
99
  def default
99
100
  can_view, msg = dc_user_can_view(@parent, @page)
100
101
  return msg unless can_view
101
- #
102
- html = ''
102
+
103
+ html = "<div class=\"#{@page.div_class} #{@opts[:div_class]}\">"
103
104
  html << dc_page_edit_menu() if @opts[:edit_mode] > 1
104
105
  @parent.page_title = @page.title.blank? ? @page.subject : @page.title
105
106
  html << @page.body
106
- # render poll if defined
107
+ # render poll if defined
107
108
  if @page.dc_poll_id
108
109
  @opts.merge!(:poll_id => @page.dc_poll_id, :return_to => @parent.request.url, method: nil)
109
110
  comment = DcPollRenderer.new(@parent, @opts)
110
111
  html << "<div class='wrap row'>#{comment.render_html}</div>"
111
112
  @css << "\n#{comment.render_css}"
112
113
  end
113
- # also add iframe
114
- html << iframe()
114
+ # also add iframe
115
+ html << iframe() << '</div>'
115
116
  end
116
117
 
117
118
  #########################################################################
@@ -38,11 +38,14 @@
38
38
 
39
39
  </div>
40
40
  </div>
41
-
42
- <div class="cmsedit-container">
41
+
42
+ <div id="menu-hamburger"><%= fa_icon('bars') %></div>
43
+
44
+ <div class="cmsedit-container">
43
45
  <div id="menu">
44
46
  <%= dc_choices4_cmsmenu.html_safe %>
45
47
  </div>
48
+
46
49
  <div class="cmsedit-iframe" style="width: 99%;">
47
50
  <iframe id="iframe_cms" name="iframe_cms"></iframe>
48
51
  </div>
@@ -1,7 +1,8 @@
1
1
  <%= dc_head_for_form %>
2
2
  <%= dc_table_title dc_edit_title() %>
3
3
 
4
- <%= form_tag( @parms, method: :put, id: 'cmsform', multipart: @form['form']['multipart'] ) do %>
4
+ <%= form_tag( @parms, method: :put, id: params['form_name'] || params['table'],
5
+ class: 'cmsform', multipart: @form['form']['multipart'] ) do %>
5
6
  <%= render partial: 'form' %>
6
7
  <% end %>
7
8
 
@@ -1,4 +1,4 @@
1
- <div class="dc-form-frame">
1
+ <div id="<%= params['form_name'] || params['table'] %>" class="dc-form-frame">
2
2
  <%= dc_title_for_index @records %>
3
3
 
4
4
  <%= dc_actions_for_index %>
@@ -1,6 +1,7 @@
1
- <%= dc_table_title dc_new_title() %>
1
+ <%= dc_table_title dc_new_title %>
2
2
 
3
- <%= form_tag( @parms, method: :post, id: 'cmsform', multipart: @form['form']['multipart'] ) do %>
3
+ <%= form_tag(@parms, method: :post, id: params['form_name'] || params['table'],
4
+ class: 'cmsform', multipart: @form['form']['multipart']) do %>
4
5
  <%= render partial: 'form' %>
5
6
  <% end %>
6
7
 
@@ -302,6 +302,7 @@ en:
302
302
  if_id: CSS id
303
303
  if_class: CSS class
304
304
  _update_menu: Update menu
305
+ div_class: DIV class
305
306
 
306
307
  dc_seo:
307
308
  seo: SEO
@@ -780,6 +781,7 @@ en:
780
781
  if_id: CSS id of IFrame object
781
782
  if_class: CSS class of IFrame object
782
783
  _update_menu: Update link in selected menu to point to this document
784
+ div_class: Class name given to top level div
783
785
 
784
786
  dc_seo:
785
787
  title: SEO optimised page title
@@ -333,7 +333,8 @@ sl:
333
333
  if_id: CSS id
334
334
  if_class: CSS class
335
335
  _update_menu: Spremeni meni
336
-
336
+ div_class: DIV class
337
+
337
338
  dc_seo:
338
339
  seo: SEO
339
340
  title: Naslov za brskalnik
@@ -779,7 +780,6 @@ sl:
779
780
  subject_link: Povezava (link) do sestavka
780
781
  sub_subject: Povzetek, kratek opis vsebine
781
782
  alt_link: Alternativna povezava do sestavka
782
- picture: Slika v povezavi s stranjo
783
783
  gallery: Dokument vsebuje slikovno galerijo.
784
784
  css: CSS
785
785
  script: Skript
@@ -800,7 +800,7 @@ sl:
800
800
  dc_design_id: Dizajn, mu pripada sestavek
801
801
  dc_site_id: Spletišče. ki mu pripada stran
802
802
  kats: Kategorije, ki jim pripada članek
803
- picture: Slika uporabljena za prikaz sestavka
803
+ picture: Slika uporabljena v zvezi s sestavkom
804
804
  dc_poll_id: Anketa, če sestavek vsebuje tudi anketo
805
805
  if_url: URL naslov od koder bo naložena vsebina IFrame-a
806
806
  if_width: Širina IFrame področja
@@ -811,6 +811,7 @@ sl:
811
811
  if_id: CSS id IFrame objekta
812
812
  if_class: CSS class IFrame objekta
813
813
  _update_menu: Popravi tudi povezavo do dokumenta v menuju
814
+ div_class: Class, ki bo določen na vrhnem razdelku (DIV)
814
815
 
815
816
  dc_seo:
816
817
  title: Naslov, ki se izpiše v gornji vrstici brskalnika. Optimiziraj za SEO.
data/drg_cms.gemspec CHANGED
@@ -1,26 +1,26 @@
1
- # Copyright 2012-2016 Damjan Rems
1
+ # Copyright 2012-2021 Damjan Rems
2
2
 
3
- $:.push File.expand_path("../lib", __FILE__)
3
+ $:.push File.expand_path('../lib', __FILE__)
4
4
 
5
- # Maintain your gem's version:
6
- require "drg_cms/version"
5
+ # Maintain gem's version:
6
+ require 'drg_cms/version'
7
7
 
8
- # Describe your gem and declare its dependencies:
8
+ # Describe gem and declare its dependencies:
9
9
  Gem::Specification.new do |s|
10
- s.name = "drg_cms"
10
+ s.name = 'drg_cms'
11
11
  s.version = DrgCms::VERSION
12
- s.authors = ["Damjan Rems"]
13
- s.email = ["damjan.rems@gmail.com"]
14
- s.homepage = "http://www.drgcms.org"
15
- s.summary = "DRG: Rapid web application development tool and CMS for Ruby, Rails and MongoDB"
16
- s.description = "DRG, development tool for rapid building of in-house (Intranet, private cloud) applications as well as CMS for creating complex, data-entry intensive web sites."
17
- s.license = "MIT"
18
- s.files = Dir["{app,config,db,lib}/**/*"] + ["MIT-LICENSE", "Rakefile", "README.md", "History.log", "drg_cms.gemspec"]
19
- s.test_files = Dir["test/**/*"]
12
+ s.authors = ['Damjan Rems']
13
+ s.email = ['damjan.rems@gmail.com']
14
+ s.homepage = 'https://www.drgcms.org'
15
+ s.summary = 'DRG: Rapid web application development tool and CMS for Ruby, Rails and MongoDB'
16
+ s.description = 'DRG, development tool for rapid building of in-house (Intranet, private cloud) applications as well as CMS for creating complex, data-entry intensive web sites.'
17
+ s.license = 'MIT'
18
+ s.files = Dir['{app,config,db,lib}/**/*'] + %w[MIT-LICENSE Rakefile README.md History.log drg_cms.gemspec]
19
+ s.test_files = Dir['test/**/*']
20
20
 
21
- s.required_ruby_version = '>= 2.5'
21
+ s.required_ruby_version = '>= 2.7'
22
22
 
23
- s.add_dependency 'rails', '~> 6'
23
+ s.add_dependency 'rails', '~> 6.1'
24
24
  s.add_dependency 'jquery-rails'
25
25
  s.add_dependency 'jquery-ui-rails'
26
26
  s.add_dependency 'non-stupid-digest-assets'
@@ -23,5 +23,5 @@
23
23
 
24
24
  # drg_cms gem version
25
25
  module DrgCms #:nodoc:
26
- VERSION = '0.6.1.1.1'.freeze
26
+ VERSION = '0.6.1.4'.freeze
27
27
  end
data/lib/drg_cms.rb CHANGED
@@ -154,6 +154,15 @@ def self.model_check(document, crash = false)
154
154
  msg
155
155
  end
156
156
 
157
+ ########################################################################
158
+ # Determines if redis cache store is active
159
+ #
160
+ # @return [Boolean] : True if redis cache store is active
161
+ ########################################################################
162
+ def self.redis_cache_store?
163
+ (Rails.application.config.cache_store.first == :redis_cache_store) rescue false
164
+ end
165
+
157
166
  ####################################################################
158
167
  # Clear cache. If key is specified only this key will be deleted.
159
168
  #
@@ -162,17 +171,48 @@ end
162
171
  def self.cache_clear(key = nil)
163
172
  return Rails.cache.clear if key.nil?
164
173
 
165
- if ((Rails.application.config.cache_store.first == :redis_cache_store) rescue false)
174
+ if redis_cache_store?
166
175
  Rails.cache.redis.del(key)
167
176
  else
168
177
  Rails.cache.delete_matched("#{key}*")
169
178
  end
170
179
  end
171
180
 
172
- def self.__cache_clear(key = nil)
173
- return Rails.cache.clear if key.nil?
181
+ ####################################################################
182
+ # Read from cache
183
+ #
184
+ # @keys [Array] Array of keys
185
+ #
186
+ # @return [Object] Data returned from cache
187
+ ####################################################################
188
+ def self.cache_read(keys)
189
+ if redis_cache_store?
190
+ keys = keys.dup
191
+ first = keys.shift
192
+ data = Rails.cache.redis.hget(first, keys.join(''))
193
+ data ? Marshal.load(data) : nil
194
+ else
195
+ Rails.cache.read(keys.join(''))
196
+ end
197
+ end
174
198
 
175
- Rails.cache.delete_matched("#{key}*")
199
+ ####################################################################
200
+ # Write data to cache
201
+ #
202
+ # @param [Array] keys : array of keys
203
+ # @param [Object] data : Document object
204
+ #
205
+ # @return [Object] data so dc_cache_write can be used as last statement in method.
206
+ ####################################################################
207
+ def self.cache_write(keys, data)
208
+ if redis_cache_store?
209
+ keys = keys.dup
210
+ first = keys.shift
211
+ Rails.cache.redis.hset(first, keys.join(''), Marshal.dump(data))
212
+ else
213
+ Rails.cache.write(keys.join(''), data)
214
+ end
215
+ data
176
216
  end
177
217
 
178
218
  ###############################################################################
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.6.1.1.1
4
+ version: 0.6.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Damjan Rems
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-11 00:00:00.000000000 Z
11
+ date: 2021-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '6'
19
+ version: '6.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '6'
26
+ version: '6.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: jquery-rails
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -425,7 +425,7 @@ files:
425
425
  - test/dummy/script/rails
426
426
  - test/integration/navigation_test.rb
427
427
  - test/lib/generators/new_drg_form_generator_test.rb
428
- homepage: http://www.drgcms.org
428
+ homepage: https://www.drgcms.org
429
429
  licenses:
430
430
  - MIT
431
431
  metadata: {}
@@ -437,47 +437,47 @@ required_ruby_version: !ruby/object:Gem::Requirement
437
437
  requirements:
438
438
  - - ">="
439
439
  - !ruby/object:Gem::Version
440
- version: '2.5'
440
+ version: '2.7'
441
441
  required_rubygems_version: !ruby/object:Gem::Requirement
442
442
  requirements:
443
443
  - - ">="
444
444
  - !ruby/object:Gem::Version
445
445
  version: '0'
446
446
  requirements: []
447
- rubygems_version: 3.1.2
447
+ rubygems_version: 3.2.22
448
448
  signing_key:
449
449
  specification_version: 4
450
450
  summary: 'DRG: Rapid web application development tool and CMS for Ruby, Rails and
451
451
  MongoDB'
452
452
  test_files:
453
453
  - test/drg_cms_test.rb
454
- - test/integration/navigation_test.rb
455
- - test/lib/generators/new_drg_form_generator_test.rb
456
- - test/dummy/script/rails
457
454
  - test/dummy/README.rdoc
458
- - test/dummy/app/views/layouts/application.html.erb
459
- - test/dummy/app/helpers/application_helper.rb
460
- - test/dummy/app/controllers/application_controller.rb
461
- - test/dummy/app/assets/stylesheets/application.css
462
- - test/dummy/app/assets/javascripts/application.js
463
- - test/dummy/public/422.html
464
- - test/dummy/public/404.html
465
- - test/dummy/public/favicon.ico
466
- - test/dummy/public/500.html
467
455
  - test/dummy/Rakefile
468
- - test/dummy/config.ru
469
- - test/dummy/config/environment.rb
470
- - test/dummy/config/boot.rb
471
- - test/dummy/config/routes.rb
456
+ - test/dummy/app/assets/javascripts/application.js
457
+ - test/dummy/app/assets/stylesheets/application.css
458
+ - test/dummy/app/controllers/application_controller.rb
459
+ - test/dummy/app/helpers/application_helper.rb
460
+ - test/dummy/app/views/layouts/application.html.erb
472
461
  - test/dummy/config/application.rb
462
+ - test/dummy/config/boot.rb
473
463
  - test/dummy/config/database.yml
474
- - test/dummy/config/environments/test.rb
475
- - test/dummy/config/environments/production.rb
464
+ - test/dummy/config/environment.rb
476
465
  - test/dummy/config/environments/development.rb
477
- - test/dummy/config/locales/en.yml
478
- - test/dummy/config/initializers/secret_token.rb
466
+ - test/dummy/config/environments/production.rb
467
+ - test/dummy/config/environments/test.rb
468
+ - test/dummy/config/initializers/backtrace_silencers.rb
479
469
  - test/dummy/config/initializers/inflections.rb
480
470
  - test/dummy/config/initializers/mime_types.rb
481
- - test/dummy/config/initializers/backtrace_silencers.rb
482
- - test/dummy/config/initializers/wrap_parameters.rb
471
+ - test/dummy/config/initializers/secret_token.rb
483
472
  - test/dummy/config/initializers/session_store.rb
473
+ - test/dummy/config/initializers/wrap_parameters.rb
474
+ - test/dummy/config/locales/en.yml
475
+ - test/dummy/config/routes.rb
476
+ - test/dummy/config.ru
477
+ - test/dummy/public/404.html
478
+ - test/dummy/public/422.html
479
+ - test/dummy/public/500.html
480
+ - test/dummy/public/favicon.ico
481
+ - test/dummy/script/rails
482
+ - test/integration/navigation_test.rb
483
+ - test/lib/generators/new_drg_form_generator_test.rb