drg_cms 0.5.52.2 → 0.5.52.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -5
  3. data/app/assets/stylesheets/drg_cms/drg_cms.css +15 -19
  4. data/app/controllers/cmsedit_controller.rb +7 -5
  5. data/app/controllers/dc_application_controller.rb +7 -1
  6. data/app/controllers/dc_page_control.rb +5 -3
  7. data/app/controllers/design_element_settings_control.rb +3 -8
  8. data/app/forms/all_options.yml +3 -3
  9. data/app/forms/cms_menu.yml +1 -1
  10. data/app/forms/dc_big_table.yml +1 -1
  11. data/app/forms/dc_big_table_value.yml +1 -1
  12. data/app/forms/dc_browse_models.yml +1 -1
  13. data/app/forms/dc_design.yml +1 -1
  14. data/app/forms/dc_folder_permission.yml +1 -1
  15. data/app/forms/dc_menu.yml +1 -1
  16. data/app/forms/dc_menu_item.yml +1 -1
  17. data/app/forms/dc_page.yml +4 -5
  18. data/app/forms/dc_permission.yml +1 -1
  19. data/app/forms/dc_policy.yml +1 -1
  20. data/app/forms/dc_poll.yml +1 -1
  21. data/app/forms/dc_simple_menu.yml +1 -1
  22. data/app/forms/dc_site.yml +6 -2
  23. data/app/forms/dc_user.yml +1 -1
  24. data/app/helpers/cmsedit_helper.rb +9 -8
  25. data/app/helpers/dc_application_helper.rb +31 -21
  26. data/app/helpers/dc_menu_renderer.rb +1 -1
  27. data/app/helpers/dc_part_renderer.rb +3 -3
  28. data/app/helpers/dc_piece_renderer.rb +1 -1
  29. data/app/helpers/dc_poll_renderer.rb +1 -1
  30. data/app/models/concerns/dc_page_concern.rb +2 -2
  31. data/app/models/concerns/dc_site_concern.rb +17 -1
  32. data/app/models/dc_ad.rb +1 -1
  33. data/app/models/dc_big_menu.rb +1 -1
  34. data/app/models/dc_filter.rb +2 -2
  35. data/app/models/dc_link.rb +1 -1
  36. data/app/models/dc_menu.rb +6 -6
  37. data/app/models/dc_simple_menu.rb +1 -1
  38. data/app/models/dc_site.rb +1 -0
  39. data/app/models/drgcms_form_fields.rb +5 -5
  40. data/app/views/cmsedit/_edit_stuff.html.erb +2 -16
  41. data/app/views/cmsedit/login.html.erb +13 -16
  42. data/config/locales/drgcms_en.yml +3 -0
  43. data/config/locales/drgcms_sl.yml +4 -0
  44. data/config/locales/models_en.yml +4 -2
  45. data/config/locales/models_sl.yml +3 -1
  46. data/drg_cms.gemspec +2 -2
  47. data/lib/drg_cms.rb +7 -0
  48. data/lib/drg_cms/version.rb +1 -1
  49. data/test/fixtures/drg_cms_test_data.rb +87 -0
  50. metadata +10 -8
  51. data/test/test_helper.rb +0 -17
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ac624231414ec0d8f5dfcb2f87623189fa9558d3
4
- data.tar.gz: 4da97b7be20ae7ba6641127a8fa9e1de2f03d84d
3
+ metadata.gz: 6cd8a24b6fe78291f0381645570f80c9f37f02a2
4
+ data.tar.gz: ae23416b365aad2e19b2a7d06db7d474f6522359
5
5
  SHA512:
6
- metadata.gz: 075acb47b95998834a156fa11543c0ed7a9f4dc4292257c144c99e932fac779552a3b8063daf9649797a064f000d6ca001c08362d7bde740c3c316fc96c916fe
7
- data.tar.gz: ef960025a10da97bd10cd942793567d313c1cdbcfe30c50fa02479c70cd058c52f4401dd4e5e60fb0a62b01634cbbfe1587f21b25b35904cc96cb1a894171301
6
+ metadata.gz: 3be8e8ecade1f23a24678a1fb06cf0591407b4108435c4e559fefed4d1524f2a134f10c86db5c34744fe8cf9750927b0e05ab115d25a75b9a48dd7562730e868
7
+ data.tar.gz: 62e72cfd6235f0965eca6936114a9a706d870aaf59ad59e79d33ac5addfab728c18041cfa7edd7771ebe74a5fb6a294dacbf4c26b8264ee303bc89d3d9a89384
data/README.md CHANGED
@@ -1,12 +1,12 @@
1
1
  # DrgCms
2
2
 
3
- DRG CMS is alternative way of programming application for Ruby on Rails. Instead of creating controllers and views for each collection (table) model, DRG CMS introduces single Cmsedit controller which uses DRG Forms to control CRUD database operations.
3
+ DRG CMS is advanced way of programming application for Ruby on Rails. Instead of creating controllers and views for each collection (table) model, DRG CMS introduces single Cmsedit controller which uses DRG Forms to control CRUD database operations.
4
4
 
5
5
  DRG CMS uses Mongo DB, leading NO-SQL document database, as database back-end with a help of mongoid gem. Mongoid's flexible document model defines all document fields, indexes, dependencies, validations in single model file with no Rails migrations required.
6
6
 
7
7
  DRG CMS can be used for rapid development of complex, data-entry intensive web sites as well as building your private, in-house, Intranet applications.
8
8
 
9
- DRG CMS has built-in user friendly role based access system and it can be easly extended with help of Ruby on Rails plugin system.
9
+ DRG CMS has built-in user friendly role based database access system and can be easly extended with help of Ruby on Rails plugin system.
10
10
 
11
11
  Project Tracking
12
12
  ----------------
@@ -16,9 +16,9 @@ Project Tracking
16
16
  Compatibility
17
17
  -------------
18
18
 
19
- DRG CMS is tested against Ruby 2.2 and higher, Rails 5.0 and higher, Mongoid 6, MongoDB 3.0, 3.2
19
+ DRG CMS is tested against Ruby 2.2 and higher, Rails 5.0 and higher, Mongoid 6, MongoDB 3.0, 3.2, 3.4
20
20
 
21
- Version from 0.5.51 and higher require Ruby 2.3 and Rails 5.1
21
+ Version from 0.5.51 and higher requires Ruby 2.4.x and Rails 5.1.x
22
22
 
23
23
  Documentation
24
24
  -------------
@@ -29,7 +29,7 @@ Please see the DRG CMS website for up-to-date documentation:
29
29
  License (MIT LICENCE)
30
30
  ---------------------
31
31
 
32
- Copyright (c) 2012-2017 Damjan Rems
32
+ Copyright (c) 2012-2018 Damjan Rems
33
33
 
34
34
  Permission is hereby granted, free of charge, to any person obtaining
35
35
  a copy of this software and associated documentation files (the
@@ -707,25 +707,21 @@ background-color: lightyellow;
707
707
  }
708
708
 
709
709
  #dc-login {
710
- /*
711
- position: relative;
712
- text-align: left;
713
- bottom: 0px;
714
- right: 0px;
715
- */
716
- display: inline-block;
717
- position: fixed;
718
- top: 0;
719
- bottom: 0;
720
- left: 0;
721
- right: 0;
722
- width: 250px;
723
- height: 100px;
724
- padding: 10px;
725
- margin: auto;
726
- background-color: #fff;
727
- border: 1px solid #888;
728
- box-shadow: 1px 1px 4px #888;
710
+ position: fixed;
711
+ top: 50%;
712
+ left: 50%;
713
+ transform: translate(-50%, -50%);
714
+ font-size: 1.2em;
715
+ padding: 0 5em 1em 1em;
716
+ border: 1px solid #669;
717
+ box-shadow: 0px 0px 5px #666;
718
+ }
719
+ #dc-login h2 {
720
+ font-weight: bold;
721
+ font-size: 1.4em;
722
+ }
723
+ #dc-login .label {
724
+ padding: 5px 0px;
729
725
  }
730
726
 
731
727
  .div-hidden {
@@ -584,8 +584,9 @@ def read_drg_cms_form
584
584
  ids = params[:ids].to_s.strip.downcase
585
585
  @ids = ids.split(';').inject([]) { |r,v| r << v }
586
586
  # formname defaults to last table specified
587
- formname = params[:formname] || @tables.last[1]
588
- @form = YAML.load_file( dc_find_form_file(formname) )
587
+ dc_deprecate("Parameter :formname will be deprecated in future. Use :form_name instead") if params[:formname]
588
+ form_name = params[:formname] || params[:form_name] || @tables.last[1]
589
+ @form = YAML.load_file( dc_find_form_file(form_name) )
589
590
  # when form extends another form file.
590
591
  if @form['extend']
591
592
  form = YAML.load_file( dc_find_form_file(@form['extend']) )
@@ -599,7 +600,7 @@ def read_drg_cms_form
599
600
  # add readonly key to form if readonly parameter is passed in url
600
601
  @form['readonly'] = 1 if params['readonly'] #and %w(1 yes true).include?(params['readonly'].to_s.downcase.strip)
601
602
  # !!!!!! Always use strings for key names since @parms['table'] != @parms[:table]
602
- @parms = { 'table' => table_name, 'ids' => params[:ids], 'formname' => formname,
603
+ @parms = { 'table' => table_name, 'ids' => params[:ids], 'form_name' => form_name,
603
604
  'return_to' => params['return_to'], 'edit_only' => params['edit_only'],
604
605
  'readonly' => params['readonly']
605
606
  }
@@ -610,7 +611,7 @@ end
610
611
  # load DRG form.
611
612
  ############################################################################
612
613
  def check_authorization
613
- params[:table] ||= params[:formname]
614
+ params[:table] ||= params[:formname] || params[:form_name]
614
615
  # Just show menu
615
616
  # return show if params[:action] == 'show'
616
617
  return login if params[:id].in?(%w(login logout))
@@ -796,7 +797,8 @@ def save_data
796
797
  (params[:edit_only] and params[:edit_only] != v['name']) or # otherwise other fields would be wiped
797
798
  v['readonly'] or # fields with readonly option don't return value and would be wiped
798
799
  !@record.respond_to?(v['name']) # there can be temporary fields on the form
799
- # return value from form field definition
800
+ # good to know how to get type of field @record.fields[v['name']].type
801
+ # return value from form field definition
800
802
  value = DrgcmsFormFields.const_get(v['type'].camelize).get_data(params, v['name'])
801
803
  @record.send("#{v['name']}=", value)
802
804
  end
@@ -564,6 +564,12 @@ def dc_reload_patches
564
564
  end
565
565
  end
566
566
 
567
-
567
+ ############################################################################
568
+ # Writes out deprication msg. It also adds site_name to message, so it is easier to
569
+ # find where the message is comming from.
570
+ ############################################################################
571
+ def dc_deprecate(msg)
572
+ ActiveSupport::Deprecation.warn("#{dc_get_site.name}: #{msg}")
573
+ end
568
574
 
569
575
  end
@@ -41,11 +41,13 @@ def dc_new_record()
41
41
  end
42
42
 
43
43
  ######################################################################
44
- # Caled just after record is saved to DB.
44
+ # Called just after record is saved to DB.
45
45
  ######################################################################
46
46
  def dc_after_save()
47
- menu_class = dc_get_site.menu_class.classify.constantize
48
- menu_class.update_menu_item_link(@record.menu_id, @record.subject_link)
47
+ if params[:_record][:_update_menu] == '1'
48
+ menu_class = dc_get_site.menu_class.classify.constantize
49
+ menu_class.update_menu_item_link(@record)
50
+ end
49
51
  end
50
52
 
51
53
  end
@@ -52,21 +52,16 @@ def get_settings()
52
52
  begin
53
53
  model = params[:location].classify.constantize
54
54
  rescue
55
- flash[:error] = 'Invalid or undefined model name!'
55
+ flash[:error] = "Invalid or undefined model name! #{params[:location]}"
56
56
  return false
57
57
  end
58
58
  # Check fild name
59
59
  begin
60
60
  document = model.find(params[:id])
61
- params[:field_name] = case
62
- when params[:location] == 'dc_page' then 'params'
63
- when params[:location] == 'dc_site' then 'options'
64
- otherwise params[:field_name]
65
- end
61
+ params[:field_name] ||= (params[:location] == 'dc_site' ? 'options' : 'params')
66
62
  # field not defined on document
67
63
  raise unless document.respond_to?(params[:field_name])
68
- yaml = document[params[:field_name]]
69
- yaml = '' if yaml.blank?
64
+ yaml = document[params[:field_name]] || ''
70
65
  rescue
71
66
  flash[:error] = 'Invalid or undefined field name!'
72
67
  return false
@@ -33,7 +33,7 @@ index:
33
33
  controller: controller_name
34
34
  action: action_name
35
35
  table: table_name
36
- formname: form_name
36
+ form_name: form_name
37
37
  4:
38
38
  type: menu
39
39
  eval: ModulClassName.menu_for(self)
@@ -69,7 +69,7 @@ result_set:
69
69
  controller: controller_name
70
70
  action: action_name
71
71
  table: table_name
72
- formname: form_name
72
+ form_name: form_name
73
73
  target: target
74
74
  method: (get),put,post
75
75
 
@@ -188,7 +188,7 @@ form:
188
188
  20:
189
189
  name: dc_poll_items
190
190
  type: embedded
191
- formname: dc_poll_item
191
+ form_name: dc_poll_item
192
192
  html:
193
193
  height: 800
194
194
  20:
@@ -129,4 +129,4 @@ menu:
129
129
  controller: cmsedit
130
130
  icon: table lg
131
131
  table: dc_memory
132
- formname: dc_browse_models
132
+ form_name: dc_browse_models
@@ -57,6 +57,6 @@ form:
57
57
  40:
58
58
  name: dc_big_table_values
59
59
  type: embedded
60
- formname: dc_big_table_value
60
+ form_name: dc_big_table_value
61
61
  html:
62
62
  height: 600
@@ -46,6 +46,6 @@ form:
46
46
  30:
47
47
  name: dc_big_table_locales
48
48
  type: embedded
49
- formname: dc_big_table_locale
49
+ form_name: dc_big_table_locale
50
50
  html:
51
51
  height: 300
@@ -12,7 +12,7 @@ result_set:
12
12
  dblclick:
13
13
  type: link
14
14
  table: dc_memory
15
- formname: dc_browse_fields
15
+ form_name: dc_browse_fields
16
16
  action: index
17
17
 
18
18
  columns:
@@ -73,6 +73,6 @@ form:
73
73
  10:
74
74
  name: dc_parts
75
75
  type: embedded
76
- formname: dc_part
76
+ form_name: dc_part
77
77
  html:
78
78
  height: 1000
@@ -45,6 +45,6 @@ form:
45
45
  name: dc_policy_rules
46
46
  type: embedded
47
47
  table: dc_policy_rule
48
- formname: dc_policy_rule_nocms
48
+ form_name: dc_policy_rule_nocms
49
49
  html:
50
50
  height: 400
@@ -62,7 +62,7 @@ form:
62
62
  10:
63
63
  name: dc_menu_items
64
64
  type: embedded
65
- formname: dc_menu_item
65
+ form_name: dc_menu_item
66
66
  html:
67
67
  height: 1000
68
68
 
@@ -74,7 +74,7 @@ form:
74
74
  10:
75
75
  name: dc_menu_items
76
76
  type: embedded
77
- formname: dc_menu_item
77
+ form_name: dc_menu_item
78
78
  html:
79
79
  height: 1000
80
80
 
@@ -109,10 +109,9 @@ form:
109
109
  eval: '@parent.dc_menu_class.choices4_menu_as_tree(@record.dc_site_id)'
110
110
  style: 'max-height: 300px'
111
111
 
112
- # 20:
113
- # name: menu_id
114
- # type: select
115
- # eval: dc_choices4_menu
112
+ 25:
113
+ name: _update_menu
114
+ type: check_box
116
115
 
117
116
  30:
118
117
  name: params
@@ -152,7 +151,7 @@ form:
152
151
  10:
153
152
  name: dc_parts
154
153
  type: embedded
155
- formname: dc_part
154
+ form_name: dc_part
156
155
  html:
157
156
  height: 600
158
157
 
@@ -46,6 +46,6 @@ form:
46
46
  name: dc_policy_rules
47
47
  type: embedded
48
48
  table: dc_policy_rule
49
- formname: dc_policy_rule_nocms
49
+ form_name: dc_policy_rule_nocms
50
50
  html:
51
51
  height: 400
@@ -50,7 +50,7 @@ form:
50
50
  60:
51
51
  name: dc_policy_rules
52
52
  type: embedded
53
- formname: dc_policy_rule
53
+ form_name: dc_policy_rule
54
54
  html:
55
55
  height: 400
56
56
 
@@ -108,6 +108,6 @@ form:
108
108
  20:
109
109
  name: dc_poll_items
110
110
  type: embedded
111
- formname: dc_poll_item
111
+ form_name: dc_poll_item
112
112
  html:
113
113
  height: 800
@@ -63,7 +63,7 @@ form:
63
63
  10:
64
64
  name: dc_simple_menu_items
65
65
  type: embedded
66
- formname: dc_simple_menu_item
66
+ form_name: dc_simple_menu_item
67
67
  html:
68
68
  height: 800
69
69
 
@@ -103,6 +103,10 @@ form:
103
103
  type: text_with_select
104
104
  eval: dc_choices4(@record.menu_class,'description','name')
105
105
  size: 30
106
+ 70:
107
+ name: menu_id
108
+ type: select
109
+ eval: dc_choices4(@record.menu_class,'description','_id')
106
110
  90:
107
111
  name: settings
108
112
  type: text_area
@@ -141,14 +145,14 @@ form:
141
145
  20:
142
146
  name: dc_policies
143
147
  type: embedded
144
- formname: dc_policy
148
+ form_name: dc_policy
145
149
  html:
146
150
  height: 800
147
151
  6parts:
148
152
  10:
149
153
  name: dc_parts
150
154
  type: embedded
151
- formname: dc_part
155
+ form_name: dc_part
152
156
  html:
153
157
  height: 1000
154
158
 
@@ -128,7 +128,7 @@ form:
128
128
  170:
129
129
  name: dc_user_roles
130
130
  type: embedded
131
- formname: dc_user_role
131
+ form_name: dc_user_role
132
132
  html:
133
133
  size: 20
134
134
 
@@ -73,7 +73,8 @@ EOT
73
73
  url['controller'] = yaml['controller'] if yaml['controller']
74
74
  url['action'] = yaml['action'] || action
75
75
  url['table'] = yaml['table'] if yaml['table']
76
- url['formname'] = yaml['formname'] if yaml['formname']
76
+ url['form_name'] = yaml['form_name'] if yaml['form_name']
77
+ url['form_name'] = yaml['formname'] if yaml['formname']
77
78
  end
78
79
  # html link options
79
80
  yhtml = yaml['html'] || {}
@@ -161,7 +162,7 @@ def dc_div_filter()
161
162
 
162
163
  </td>
163
164
  <td class="dc-link dc-animate drgcms_popup_submit" data-url="#{url}">#{fa_icon('check-square-o')} #{t('drgcms.filter_on')}</td>
164
- <td class="dc-link dc-animate">#{dc_link_to('drgcms.filter_off','close', {action: :index, filter: 'off', table: @form['table'], formname: params['formname']}) }</td>
165
+ <td class="dc-link dc-animate">#{dc_link_to('drgcms.filter_off','close', {action: :index, filter: 'off', table: @form['table'], form_name: params['form_name']}) }</td>
165
166
  </table>
166
167
  </div>
167
168
  EOT
@@ -252,7 +253,8 @@ def dc_actions_for_result(document)
252
253
  parms['controller'] = yaml['controller'] if yaml['controller']
253
254
  parms['action'] = yaml['action'] if yaml['action']
254
255
  parms['table'] = yaml['table'] if yaml['table']
255
- parms['formname'] = yaml['formname'] if yaml['formname']
256
+ parms['form_name'] = yaml['form_name'] if yaml['form_name']
257
+ parms['form_name'] = yaml['formname'] if yaml['formname']
256
258
  parms['target'] = yaml['target'] if yaml['target']
257
259
  dc_link_or_ajax(yaml, parms)
258
260
  else # error.
@@ -290,7 +292,7 @@ def dc_header_for_result()
290
292
  if v['name'] == sort_field
291
293
  icon = sort_direction == '1' ? 'sort-alpha-asc lg' : 'sort-alpha-desc lg'
292
294
  end
293
- th << ">#{dc_link_to(caption, icon, sort: v['name'], table: params[:table], formname: params[:formname], action: :index )}</th>"
295
+ th << ">#{dc_link_to(caption, icon, sort: v['name'], table: params[:table], form_name: params[:form_name], action: :index )}</th>"
294
296
  else
295
297
  th << ">#{caption}</th>"
296
298
  end
@@ -311,7 +313,7 @@ def dc_clicks_for_result(document)
311
313
  opts[:controller] = yaml['controller'] || 'cmsedit'
312
314
  opts[:action] = yaml['action']
313
315
  opts[:table] = yaml['table']
314
- opts[:formname] = yaml['formname']
316
+ opts[:form_name] = yaml['form_name'] || yaml['formname']
315
317
  opts[:method] = yaml['method'] || 'get'
316
318
  opts[:id] = document['id']
317
319
  html << ' data-dblclick=' + url_for(opts)
@@ -319,7 +321,7 @@ def dc_clicks_for_result(document)
319
321
  html << (' data-dblclick=' +
320
322
  url_for(action: 'show', controller: 'cmsedit', id: document,
321
323
  readonly: (params[:readonly] ? 2 : 1), table: params[:table],
322
- formname: params[:formname], ids: params[:ids]) ) if @form['form']
324
+ form_name: params[:form_name], ids: params[:ids]) ) if @form['form']
323
325
  end
324
326
  html
325
327
  end
@@ -549,7 +551,7 @@ def dc_actions_for_form()
549
551
  parms['controller'] = v['controller']
550
552
  parms['action'] = v['action']
551
553
  parms['table'] = v['table']
552
- parms['formname'] = v['formname']
554
+ parms['form_name'] = v['form_name'] || v['formname']
553
555
  parms['id'] = @record.id
554
556
  # additional parameters
555
557
  v['params'].each { |k,v| parms[k] = v } if v['params']
@@ -561,7 +563,6 @@ def dc_actions_for_form()
561
563
  v['caption'] ||= v['text']
562
564
  caption = t("#{v['caption'].downcase}", v['caption'])
563
565
  url = url_for(parms)
564
- p url
565
566
  request = v['request'] || v['method'] || 'get'
566
567
  icon = v['icon'] ? "#{fa_icon(v['icon'])} " : ''
567
568
  if v['type'] == 'ajax' # ajax button
@@ -35,6 +35,10 @@ attr_reader :page
35
35
  attr_reader :design
36
36
  # site document
37
37
  attr_reader :site
38
+ # menu document
39
+ attr_reader :menu
40
+ # selected menu_item document
41
+ attr_reader :menu_item
38
42
  # tables url parameter
39
43
  attr_reader :tables
40
44
  # ids url parameter
@@ -65,7 +69,7 @@ end
65
69
  # find where the message is comming from.
66
70
  ############################################################################
67
71
  def dc_deprecate(msg)
68
- logger.info "#{dc_get_site.name}: #{msg}"
72
+ ActiveSupport::Deprecation.warn("#{dc_get_site.name}: #{msg}")
69
73
  end
70
74
 
71
75
  ############################################################################
@@ -460,12 +464,12 @@ end
460
464
  # Will create HTML code required to create new document.
461
465
  #
462
466
  # Parameters:
463
- # [opts] Hash. Optional parameters for url_for helper. These options must provide at least table and formname
467
+ # [opts] Hash. Optional parameters for url_for helper. These options must provide at least table and form_name
464
468
  # parameters.
465
469
  #
466
470
  # Example:
467
471
  # if @opts[:edit_mode] > 1
468
- # opts = {table: 'dc_page;dc_part', formname: 'dc_part', ids: @doc.id }
472
+ # opts = {table: 'dc_page;dc_part', form_name: 'dc_part', ids: @doc.id }
469
473
  # html << dc_link_for_create( opts.merge!({title: 'Add new part', 'dc_part.name' => 'initial name', 'dc_part.order' => 10}) )
470
474
  # end
471
475
  #
@@ -477,7 +481,7 @@ def dc_link_for_create(opts)
477
481
  title = opts.delete('title') #
478
482
  title = t(title, title) if title
479
483
  target = opts.delete('target') || 'iframe_cms'
480
- opts['formname'] ||= opts['table'].split(';').last
484
+ opts['form_name'] ||= opts['formname'] || opts['table'].to_s.split(';').last
481
485
  opts['action'] = 'new'
482
486
  opts['controller'] ||= 'cmsedit'
483
487
  js = "$('##{target}').attr('src', '#{_origin.url_for(opts)}'); return false;"
@@ -490,7 +494,7 @@ end
490
494
  #
491
495
  # Parameters:
492
496
  # [opts] Hash. Optional parameters for url_for helper. These options must provide
493
- # at least table, formname and id parameters. Optional title, target and icon parameters
497
+ # at least table, form_name and id parameters. Optional title, target and icon parameters
494
498
  # can be set.
495
499
  #
496
500
  # Example:
@@ -507,7 +511,7 @@ def dc_link_for_edit(opts)
507
511
  icon = opts.delete('icon') || 'edit lg'
508
512
  opts['controller'] ||= 'cmsedit'
509
513
  opts['action'] ||= 'edit'
510
- opts['formname'] ||= opts['table'].to_s.split(';').last
514
+ opts['form_name'] ||= opts['formname'] || opts['table'].to_s.split(';').last
511
515
  js = "$('##{target}').attr('src', '#{_origin.url_for(opts)}'); return false;"
512
516
  dc_link_to(nil, _origin.fa_icon(icon, class: 'dc-inline-link'), '#',
513
517
  { onclick: js, title: title, alt: 'Edit'})
@@ -547,7 +551,7 @@ end
547
551
  # * New part. Will create new part of document.
548
552
  #
549
553
  # Parameters:
550
- # [opts] Hash. Optional parameters for url_for helper. These options must provide at least table and formname
554
+ # [opts] Hash. Optional parameters for url_for helper. These options must provide at least table and form_name
551
555
  # and id parameters.
552
556
  #
553
557
  # Example:
@@ -563,7 +567,7 @@ def dc_page_edit_menu(opts=@opts)
563
567
  page = opts[:page] || @page
564
568
  table = _origin.site.page_table
565
569
  kukis = { "#{table}.dc_design_id" => page.dc_design_id,
566
- "#{table}.menu_id" => page.menu_id,
570
+ # "#{table}.menu_id" => page.menu_id,
567
571
  "#{table}.kats" => page.kats,
568
572
  "#{table}.page_id" => page.id,
569
573
  "#{table}.dc_site_id" => _origin.site.id
@@ -573,7 +577,7 @@ def dc_page_edit_menu(opts=@opts)
573
577
  opts[:editparams] ||= {}
574
578
  dc_link_menu_tag(title) do |html|
575
579
  opts[:editparams].merge!( controller: 'cmsedit', action: 'edit', 'icon' => 'edit' )
576
- opts[:editparams].merge!( :id => page.id, :table => _origin.site.page_table, formname: opts[:formname], edit_only: 'body' )
580
+ opts[:editparams].merge!( :id => page.id, :table => _origin.site.page_table, form_name: opts[:form_name], edit_only: 'body' )
577
581
  html << dc_link_for_edit1( opts[:editparams], t('drgcms.edit_content') )
578
582
 
579
583
  # opts[:editparams][:edit_only] = nil
@@ -584,7 +588,7 @@ def dc_page_edit_menu(opts=@opts)
584
588
  opts[:editparams].merge!( action: 'new', 'icon' => 'plus' )
585
589
  html << dc_link_for_edit1( opts[:editparams], t('drgcms.edit_new_page') )
586
590
 
587
- opts[:editparams].merge!(ids: page.id, formname: 'dc_part', 'icon' => 'plus-square-o',
591
+ opts[:editparams].merge!(ids: page.id, form_name: 'dc_part', 'icon' => 'plus-square-o',
588
592
  table: "#{_origin.site.page_table};dc_part" )
589
593
  html << dc_link_for_edit1( opts[:editparams], t('drgcms.edit_new_part') )
590
594
  end.html_safe
@@ -919,13 +923,19 @@ def dc_choices4_cmsmenu()
919
923
  html << "<li class=\"cmsedit-top-level-menu\">#{fa_icon(menu['icon'])}#{t(menu['caption'])}<ul>"
920
924
  menu['items'].to_a.sort.each do |item| # as above. sort items first
921
925
  value = item[1]
922
- opts = { controller: value['controller'],
923
- action: value['action'],
924
- table: value['table'],
925
- formname: value['formname'] || value['table'],
926
- target: value['target'] || 'iframe_cms'
927
- }
928
- html << "<li>#{dc_link_to(t(value['caption']), value['icon'] || '', opts)}</li>"
926
+ html << if value['link']
927
+ opts = { target: value['target'] || 'iframe_cms' }
928
+ "<li>#{dc_link_to(t(value['caption']), value['icon'] || '', value['link'], opts)}</li>"
929
+ else
930
+ opts =
931
+ { controller: value['controller'],
932
+ action: value['action'],
933
+ table: value['table'],
934
+ form_name: value['form_name'] || value['formname'] || value['table'],
935
+ target: value['target'] || 'iframe_cms',
936
+ }
937
+ "<li>#{dc_link_to(t(value['caption']), value['icon'] || '', opts)}</li>"
938
+ end
929
939
  end
930
940
  html << '</ul></li>'
931
941
  end
@@ -1196,15 +1206,15 @@ end
1196
1206
  # Parameters:
1197
1207
  # [table] String: Collection (table) name used to load initial form.
1198
1208
  # [opts] Hash: Optional parameters which define url for loading DRG form.
1199
- # These parameters are :action, :oper, :table, :formname, :id, :readonly
1209
+ # These parameters are :action, :oper, :table, :form_name, :id, :readonly
1200
1210
  #
1201
1211
  # Example:
1202
1212
  # # just iframe code
1203
1213
  # <%= dc_iframe_edit(nil) %>
1204
1214
  # # load note form for note collection
1205
1215
  # <%= dc_iframe_edit('note') %>
1206
- # # on register collection use reg_adresses formname to display data with id @register.id
1207
- # <%= dc_iframe_edit('register', action: :show, formname: 'reg_adresses', readonly: 1, id: @register.id ) %>
1216
+ # # on register collection use reg_adresses form_name to display data with id @register.id
1217
+ # <%= dc_iframe_edit('register', action: :show, form_name: 'reg_adresses', readonly: 1, id: @register.id ) %>
1208
1218
  #
1209
1219
  # Returns:
1210
1220
  # Html code for edit iframe
@@ -1215,7 +1225,7 @@ def dc_iframe_edit(table, opts={})
1215
1225
  params[:action] = (params[:oper] and (params[:oper] == 'edit')) ? 'edit' : 'index'
1216
1226
  params[:action] = opts[:action] unless params[:oper]
1217
1227
  params[:table] ||= table
1218
- params[:formname] ||= opts[:formname] || table
1228
+ params[:form_name] ||= opts[:form_name] || opts[:formname] || table
1219
1229
  params[:id] ||= params[:idp] || opts[:id]
1220
1230
  params[:readonly] ||= opts[:readonly]
1221
1231
  params[:path] = nil
@@ -132,7 +132,7 @@ def do_menu_level(menu, options={})
132
132
  opts = options.clone
133
133
  opts['ids'] = (opts['ids'] ? "#{opts['ids']};" : '') + menu._id.to_s
134
134
  opts['table'] = (opts['table'] ? "#{opts['table']};" : '') + 'dc_menu_item'
135
- opts['formname'] = nil # must be
135
+ opts['form_name'] = nil # must be
136
136
  end
137
137
  html << do_menu_level(item, opts)
138
138
  end
@@ -141,7 +141,7 @@ def default
141
141
  parts.sort! {|a,b| a[0].order <=> b[0].order }
142
142
 
143
143
  parts.each do |part|
144
- @opts[:editparams].merge!( id: part[0], ids: "#{part[1]}", formname: part[2], table: part[3] )
144
+ @opts[:editparams].merge!( id: part[0], ids: "#{part[1]}", form_name: part[2], table: part[3] )
145
145
  html << render_particle(part[0], @opts)
146
146
  end
147
147
  end
@@ -174,7 +174,7 @@ def in_page
174
174
  return "Error DcPart: Page not found!" if page.nil?
175
175
  #
176
176
  if part = page.dc_parts.find_by(name: @opts[:name])
177
- @opts[:editparams].merge!(id: part, ids: page._id, formname: 'dc_part', table: "#{@parent.site.page_table};dc_part" )
177
+ @opts[:editparams].merge!(id: part, ids: page._id, form_name: 'dc_part', table: "#{@parent.site.page_table};dc_part" )
178
178
  render_particle(part, @opts)
179
179
  else
180
180
  "Part with name #{@opts[:name]} not found in page!"
@@ -195,7 +195,7 @@ def single_sitedoc
195
195
  # part not found. Render error message.
196
196
  return "Part #{@opts[:div_id]} not found!" if part.nil?
197
197
  # prepare edit parameters
198
- @opts[:editparams].merge!(id: part, ids: @parent.site._id, formname: 'dc_part',
198
+ @opts[:editparams].merge!(id: part, ids: @parent.site._id, form_name: 'dc_part',
199
199
  table: "dc_site;dc_part", record_div_id: 'document' )
200
200
  render_particle(part, @opts)
201
201
  end
@@ -58,7 +58,7 @@ def link_4edit()
58
58
  html = ''
59
59
  return html if @opts[:edit_mode] < 2
60
60
  @opts[:editparams].merge!( { table: 'dc_piece',
61
- formname: 'dc_piece',
61
+ form_name: 'dc_piece',
62
62
  controller: 'cmsedit',
63
63
  action: 'edit',
64
64
  id: @piece.id,
@@ -162,7 +162,7 @@ def default
162
162
  html << "<div class=\"poll-div\">\n"
163
163
  # edit link
164
164
  if @opts[:edit_mode] > 1
165
- @opts[:editparams].merge!( controller: 'cmsedit', action: 'edit', id: poll._id, table: 'dc_poll', formname: 'dc_poll' )
165
+ @opts[:editparams].merge!( controller: 'cmsedit', action: 'edit', id: poll._id, table: 'dc_poll', form_name: 'dc_poll' )
166
166
  @opts[:editparams].merge!(title: "#{t('drgcms.edit')}: #{poll.name}")
167
167
  @opts[:editparams].delete(:ids) # this is from page, but it gets in a way
168
168
  html << dc_link_for_edit( @opts[:editparams] )
@@ -70,8 +70,8 @@ field :policy_id, type: BSON::ObjectId
70
70
 
71
71
  embeds_many :dc_parts
72
72
 
73
- belongs_to :dc_site #, optional: true
74
- belongs_to :dc_design #, optional: true
73
+ belongs_to :dc_site, optional: true
74
+ belongs_to :dc_design, optional: true
75
75
 
76
76
  index ({ dc_site_id: 1, subject_link: 1 })
77
77
  index kats: 1
@@ -50,6 +50,7 @@ included do
50
50
  field :created_by, type: BSON::ObjectId
51
51
  field :updated_by, type: BSON::ObjectId
52
52
  field :menu_name, type: String
53
+ field :menu_id, type: BSON::ObjectId
53
54
  field :settings, type: String
54
55
  field :alias_for, type: String
55
56
  field :rails_view, type: String, default: ''
@@ -74,11 +75,26 @@ def params(what=nil)
74
75
  what.nil? ? @params : @params[what.to_s]
75
76
  end
76
77
 
78
+ ########################################################################
79
+ # Returns class object of collection name
80
+ ########################################################################
81
+ def page_klass()
82
+ (self.page_table.blank? ? self.page_class : self.page_table).classify.constantize
83
+ end
84
+
85
+ ########################################################################
86
+ # Returns class object of menu collection name
87
+ ########################################################################
88
+ def menu_klass()
89
+ (self.menu_class.blank? ? 'DcMenu' : self.menu_class).classify.constantize
90
+ end
91
+
77
92
  ########################################################################
78
93
  # Return choices for select for site_id
79
94
  ########################################################################
80
95
  def self.choices4_site
81
- all.inject([]) { |r,site| r << [ (site.active ? '' : t('drgcms.disabled') ) + site.name, site._id] }
96
+ result = all.inject([]) { |r,site| r << [ (site.active ? '' : t('drgcms.disabled') ) + site.name, site._id] }
97
+ result.sort {|a,b| a[0] <=> b[0]}
82
98
  end
83
99
 
84
100
  ########################################################################
@@ -81,7 +81,7 @@ class DcAd
81
81
  field :created_by, type: BSON::ObjectId
82
82
  field :updated_by, type: BSON::ObjectId
83
83
 
84
- belongs_to :dc_site #, optional: true
84
+ belongs_to :dc_site, optional: true
85
85
 
86
86
  index( { dc_site: 1, position: 1 } )
87
87
 
@@ -62,7 +62,7 @@ class DcBigMenu
62
62
  field :created_by, type: BSON::ObjectId
63
63
  field :updated_by, type: BSON::ObjectId
64
64
 
65
- belongs_to :dc_site #, optional: true
65
+ belongs_to :dc_site, optional: true
66
66
 
67
67
  index( { dc_site_id: 1, parent: 1 } )
68
68
  index( { page_id: 1 } )
@@ -132,7 +132,7 @@ def self.get_filter_field(parent)
132
132
  # url for filter ON action
133
133
  field['html']['data-url'] = parent.url_for(
134
134
  controller: 'cmsedit',action: :index, filter: 'on',
135
- table: parent.form['table'], formname: parent.form['formname'])
135
+ table: parent.form['table'], form_name: parent.form['form_name'])
136
136
  url = field['html']['data-url']
137
137
  # create input field object
138
138
  klas_string = field['type'].camelize
@@ -165,7 +165,7 @@ def self.menu_filter(parent)
165
165
  filters = [filters] if filters.class == Hash
166
166
  filters.each do |filter|
167
167
  url = parent.dc_link_to(filter['title'], nil,controller: :cmsedit, action: :index, table: table,
168
- formname: parent.params[:formname],
168
+ form_name: parent.params[:form_name],
169
169
  filter_field: filter['field'],
170
170
  filter_oper: filter['operation'],
171
171
  filter_value: filter['value'],
@@ -51,7 +51,7 @@ class DcLink
51
51
  field :created_by, type: BSON::ObjectId
52
52
  field :updated_by, type: BSON::ObjectId
53
53
 
54
- belongs_to :dc_site #, optional: true
54
+ belongs_to :dc_site, optional: true
55
55
 
56
56
  index({ site_id: 1, name: 1 }, { unique: true })
57
57
 
@@ -136,20 +136,20 @@ end
136
136
  # Will update link value of selected menu_item
137
137
  #
138
138
  # Parameters:
139
- # [path] String. String path to MenuItem document, separated by ;
140
- # [link] String. New value of the link field
139
+ # [record] Array. Data of saved document.
141
140
  #######################################################################
142
- def self.update_menu_item_link(path, link)
143
- return unless path and link
141
+ def self.update_menu_item_link(record)
142
+ return unless record
144
143
  #
145
- ar = path.split(';')
144
+ ar = record.menu_id.split(';')
146
145
  menu = find(ar.shift)
147
146
  while (item = ar.shift) do
148
147
  menu = menu.dc_menu_items.find(item)
149
148
  end
150
149
  return unless menu.respond_to?(:link) # top level selected
151
150
  #
152
- menu.link = link
151
+ menu.page_id = record.id if menu.respond_to?(:page_id)
152
+ menu.link = record.subject_link if record.respond_to?(:subject_link)
153
153
  menu.save
154
154
  end
155
155
 
@@ -58,7 +58,7 @@ class DcSimpleMenu
58
58
  index( { name: 1 }, { unique: true } )
59
59
 
60
60
  embeds_many :dc_simple_menu_items
61
- belongs_to :dc_site #, optional: true
61
+ belongs_to :dc_site, optional: true
62
62
 
63
63
  validates_length_of :description, minimum: 10
64
64
 
@@ -48,6 +48,7 @@
48
48
  # created_by BSON::ObjectId created_by
49
49
  # updated_by BSON::ObjectId updated_by
50
50
  # menu_name String Menu name for this site
51
+ # menu_id BSON::ObjectId Menu id. Menu name will be deprecated.
51
52
  # settings String Various site settings
52
53
  # alias_for String Is alias name for entered site name
53
54
  # rails_view String Rails view filename used as standard design
@@ -318,7 +318,7 @@ end
318
318
  # ===Form options:
319
319
  # * +name:+ field name (required)
320
320
  # * +type:+ embedded (required)
321
- # * +formname:+ name of form which will be used for editing
321
+ # * +form_name:+ name of form which will be used for editing
322
322
  # * +html:+ html options (optional)
323
323
  # * +height:+ height of embedded object in pixels (1000)
324
324
  # * +width:+ width of embedded object in pixels (500)
@@ -327,7 +327,7 @@ end
327
327
  # 10:
328
328
  # name: dc_parts
329
329
  # type: embedded
330
- # formname: dc_part
330
+ # form_name: dc_part
331
331
  # html:
332
332
  # height: 1000
333
333
  ###########################################################################
@@ -342,15 +342,15 @@ def render
342
342
  @yaml['html']['height'] ||= 300
343
343
  @yaml['html']['width'] ||= '99%'
344
344
  # defaults both way
345
- @yaml['table'] ||= @yaml['formname'] if @yaml['formname']
346
- @yaml['formname'] ||= @yaml['table'] if @yaml['table']
345
+ @yaml['table'] ||= @yaml['form_name'] if @yaml['form_name']
346
+ @yaml['form_name'] ||= @yaml['table'] if @yaml['table']
347
347
  #
348
348
  html = ''
349
349
  @yaml['html'].each {|k,v| html << "#{k}=\"#{v}\" "}
350
350
  #
351
351
  tables = @parent.tables.inject('') { |r,v| r << "#{v[1]};" } + @yaml['table']
352
352
  ids = @parent.ids.inject('') { |r,v| r << "#{v};" } + @record._id
353
- opts = { controller: 'cmsedit', action: 'index', ids: ids, table: tables, formname: @yaml['formname'],
353
+ opts = { controller: 'cmsedit', action: 'index', ids: ids, table: tables, form_name: @yaml['form_name'] || @yaml['form_name'],
354
354
  field_name: @yaml['name'], iframe: "if_#{@yaml['name']}", readonly: @readonly }
355
355
  @html << "<iframe class='iframe_embedded' id='if_#{@yaml['name']}' name='if_#{@yaml['name']}' #{html}></iframe>"
356
356
  @js = <<EOJS
@@ -5,22 +5,8 @@
5
5
  <div class="cmsedit-table cmsedit-top">
6
6
  <div id="menu">
7
7
 
8
- <% if false %>
9
- <%= link_to(image_tag('drg_cms/view_tile.png', class: 'dc-link-img', title: t('drgcms.menu_plus')), '#',
10
- onclick: "$('#cmsedit-menu-plus').toggleClass('div-hidden');") %>
11
- <% end %>
12
-
13
- <% if false %>
14
- <ul><li>
15
- <%= fa_icon('bars lg') %>
16
- <ul>
17
- <%= dc_choices4_cmsmenu.html_safe %>
18
- </ul>
19
- </li>
20
-
21
- </ul>
22
- <% end %>
23
-
8
+ <%= link_to( fa_icon('user lg',class: "dc-animate", title: "#{t('drgcms.login')}"), '/cms/login' ) %>
9
+
24
10
  <% if @page %>
25
11
  <%= link_to( fa_icon('file-text-o lg', class: "dc-animate", title: "#{t('drgcms.edit_page')}"),
26
12
  {controller: 'cmsedit', action: 'edit', table: @site.page_table, id: @page._id}, target: 'iframe_cms') %>
@@ -2,21 +2,18 @@
2
2
  <%= render partial: 'edit_stuff' %>
3
3
  <% else %>
4
4
  <div id="dc-login">
5
- <h2>CMS login</h2>
6
- <%= dc_flash_messages %>
7
- <%= form_tag controller: 'dc_common', action: 'process_login', return_to: '/cmsedit/login?ok=1', method: :put do %>
8
- <table>
9
- <tr>
10
- <td>Username:</td>
11
- <td><%= text_field('record', 'username') %>
12
- </tr><tr>
13
- <td>Password:</td>
14
- <td><%= password_field('record', 'password') %>
15
- </tr><tr>
16
- <td><%= submit_tag 'Login' %></td>
17
- </tr>
18
- </table>
19
- <%= hidden_field_tag('return_to_error', request.url ) %>
20
- <% end %>
5
+ <h2><%= t('drgcms.login') %></h2>
6
+ <%= dc_flash_messages %>
7
+ <%= form_tag controller: 'dc_common', action: 'process_login', return_to: '/cmsedit/login?ok=1', method: :put do %>
8
+ <div class="label"><%= t('drgcms.username') %></div>
9
+ <div class="input"><%= text_field('record', 'username') %></div>
10
+
11
+ <div class="label"><%= t('drgcms.password') %></div>
12
+ <div class="input"><%= password_field('record', 'password') %></div>
13
+
14
+ <div class="label"></div>
15
+ <div class="input"><%= submit_tag t('drgcms.login'), class: 'dc-animate-button' %></div>
16
+ <%= hidden_field_tag('return_to_error', request.url ) %>
17
+ <% end %>
21
18
  </div>
22
19
  <% end %>
@@ -55,6 +55,9 @@ en:
55
55
  cms_main: CMS main tables
56
56
  cms_advanced: CMS advanced
57
57
  search_placeholder: Start typing to search
58
+ login: Login into CMS
59
+ username: User name
60
+ password: Password
58
61
 
59
62
  edit: Edit
60
63
  show: Prikaz
@@ -55,6 +55,10 @@ sl:
55
55
  cms_main: CMS tabele
56
56
  cms_advanced: CMS napredne opcije
57
57
  search_placeholder: Vpišite pojem za iskanje
58
+ login: Prijava v CMS
59
+ username: Uporabnik
60
+ password: Geslo
61
+
58
62
 
59
63
  edit: Urejanje
60
64
  show: Prikaz
@@ -288,7 +288,9 @@ en:
288
288
  if_border: Border
289
289
  if_params: Parameters
290
290
  if_id: CSS id
291
- if_class: CSS class
291
+ if_class: CSS class
292
+ _update_menu: Update menu
293
+
292
294
 
293
295
  dc_part:
294
296
  tabletitle: Parts of page
@@ -721,7 +723,7 @@ en:
721
723
  if_params: Parameters added to URL address
722
724
  if_id: CSS id of IFrame object
723
725
  if_class: CSS class of IFrame object
724
-
726
+ _update_menu: Update link in selected menu to point to this document
725
727
 
726
728
  dc_part:
727
729
  name: Parts can be searched by name or by id
@@ -320,7 +320,8 @@ sl:
320
320
  if_border: Okvir
321
321
  if_params: Parametri
322
322
  if_id: CSS id
323
- if_class: CSS class
323
+ if_class: CSS class
324
+ _update_menu: Spremeni meni
324
325
 
325
326
  dc_part:
326
327
  tabletitle: Elementi strani
@@ -752,6 +753,7 @@ sl:
752
753
  if_params: Pramateri posredovani v URL naslovu
753
754
  if_id: CSS id IFrame objekta
754
755
  if_class: CSS class IFrame objekta
756
+ _update_menu: Popravi tudi povezavo do dokumenta v menuju
755
757
 
756
758
  dc_part:
757
759
  name: Naziv elementa
@@ -12,8 +12,8 @@ Gem::Specification.new do |s|
12
12
  s.authors = ["Damjan Rems"]
13
13
  s.email = ["damjan.rems@gmail.com"]
14
14
  s.homepage = "http://www.drgcms.org"
15
- s.summary = "DRG CMS: Rapid web application development tool for Ruby, Rails and MongoDB"
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."
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
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/**/*"]
@@ -111,6 +111,13 @@ def self.paths(key)
111
111
  @@paths[key]
112
112
  end
113
113
 
114
+ ###############################################################################
115
+ # Will return name of file relative to drg_cms gem root
116
+ ###############################################################################
117
+ def self.from_root(file=nil)
118
+ File.expand_path("../../#{file}", __FILE__).to_s
119
+ end
120
+
114
121
  ###############################################################################
115
122
  # All Routes required by DrgCms.
116
123
  #
@@ -1,4 +1,4 @@
1
1
  module DrgCms #:nodoc:
2
2
  # drg_cms gem version
3
- VERSION = "0.5.52.2"
3
+ VERSION = "0.5.52.3"
4
4
  end
@@ -0,0 +1,87 @@
1
+ ##################################################################
2
+ # Fill database with test data
3
+ ##################################################################
4
+ def drg_cms_test_data_fill
5
+ # Roles
6
+ sa_role = DcPolicyRole.create!(name: 'superadmin', system_name: 'superadmin')
7
+ guest_role = DcPolicyRole.create!(name: 'guest', system_name: 'guest')
8
+ admin_role = DcPolicyRole.create!(name: 'Administrators', system_name: 'admin')
9
+
10
+ # collection Permissions
11
+ default_permission = DcPermission.create!(table_name: 'Default permission',is_default: true)
12
+ rule1 = DcPolicyRule.new(dc_policy_role: sa_role, permission: 128)
13
+ rule2 = DcPolicyRule.new(dc_policy_role: guest_role, permission: 0)
14
+ rule3 = DcPolicyRule.new(dc_policy_role: admin_role, permission: 64)
15
+ default_permission.dc_policy_rules << rule1
16
+ default_permission.dc_policy_rules << rule2
17
+ default_permission.dc_policy_rules << rule3
18
+ # dc_memory
19
+ dc_memory_permission = DcPermission.create!(table_name: 'dc_memory')
20
+ rule1 = DcPolicyRule.new(dc_policy_role: guest_role, permission: 8)
21
+ dc_memory_permission.dc_policy_rules << rule1
22
+
23
+ # SITE
24
+ site = DcSite.create!(
25
+ name: 'www.mysite.com',
26
+ homepage_link: "home",
27
+ menu_class: "DcSimpleMenu",
28
+ menu_name: "site-menu",
29
+ page_class: "DcPage",
30
+ page_table: "dc_page",
31
+ files_directory: "files",
32
+ settings: "ckeditor:
33
+ config_file: /files/ck_config.js
34
+ css_file: /files/ck_css.css",
35
+ site_layout: "content")
36
+
37
+ default_policy = DcPolicy.new(
38
+ description: 'Default policy',
39
+ is_default: true,
40
+ message: 'Access denied.',
41
+ name: 'Default policy')
42
+ site.dc_policies << default_policy
43
+
44
+ rule2 = DcPolicyRule.new(dc_policy_role: admin_role, permission: 2)
45
+ rule3 = DcPolicyRule.new(dc_policy_role: guest_role, permission: 1)
46
+ default_policy.dc_policy_rules << rule2
47
+ default_policy.dc_policy_rules << rule3
48
+
49
+ site.save
50
+
51
+ # TEST site
52
+ testsite = DcSite.create!(name: 'test', alias_for: "www.mysite.com")
53
+
54
+ # Users
55
+ rems = DcUser.new(
56
+ username: 'admin',
57
+ name: 'Admin User',
58
+ password_digest: '$2a$10$ifVfdEeCCetvUDl1n2JgCuTPdyyLyl6tXjEX5YlKJjzWErN4lzBkC')
59
+ rems.save
60
+ role1 = DcUserRole.new(dc_policy_role: admin_role, active: true)
61
+ rems.dc_user_roles << role1
62
+
63
+ guest = DcUser.new(
64
+ username: 'guest',
65
+ name: 'Guest User',
66
+ password_digest: '$2a$10$ifVfdEeCCetvUDl1n2JgCuTPdyyLyl6tXjEX5YlKJjzWErN4lzBkC')
67
+ guest.save
68
+ end
69
+
70
+ ##################################################################
71
+ # Delete test data
72
+ ##################################################################
73
+ def drg_cms_test_data_delete
74
+ DcUser.all.delete
75
+ DcSite.all.delete
76
+ DcPermission.all.delete
77
+ DcPolicyRole.all.delete
78
+ end
79
+
80
+ ##################################################################
81
+ # Load test data
82
+ ##################################################################
83
+ def drg_cms_test_data_load
84
+ p 'load'
85
+ drg_cms_test_data_delete
86
+ drg_cms_test_data_fill
87
+ end
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.52.2
4
+ version: 0.5.52.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Damjan Rems
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-07 00:00:00.000000000 Z
11
+ date: 2018-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -150,8 +150,9 @@ dependencies:
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
- description: DRG CMS can be used for rapid building of complex, data-entry intensive
154
- web sites as well as building your in-house private cloud applications.
153
+ description: DRG, development tool for rapid building of in-house (Intranet, private
154
+ cloud) applications as well as CMS for creating complex, data-entry intensive web
155
+ sites.
155
156
  email:
156
157
  - damjan.rems@gmail.com
157
158
  executables: []
@@ -372,9 +373,9 @@ files:
372
373
  - test/dummy/public/500.html
373
374
  - test/dummy/public/favicon.ico
374
375
  - test/dummy/script/rails
376
+ - test/fixtures/drg_cms_test_data.rb
375
377
  - test/integration/navigation_test.rb
376
378
  - test/lib/generators/new_drg_form_generator_test.rb
377
- - test/test_helper.rb
378
379
  homepage: http://www.drgcms.org
379
380
  licenses:
380
381
  - MIT
@@ -395,15 +396,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
395
396
  version: '0'
396
397
  requirements: []
397
398
  rubyforge_project:
398
- rubygems_version: 2.6.13
399
+ rubygems_version: 2.6.14
399
400
  signing_key:
400
401
  specification_version: 4
401
- summary: 'DRG CMS: Rapid web application development tool for Ruby, Rails and MongoDB'
402
+ summary: 'DRG: Rapid web application development tool and CMS for Ruby, Rails and
403
+ MongoDB'
402
404
  test_files:
403
- - test/test_helper.rb
404
405
  - test/lib/generators/new_drg_form_generator_test.rb
405
406
  - test/drg_cms_test.rb
406
407
  - test/integration/navigation_test.rb
408
+ - test/fixtures/drg_cms_test_data.rb
407
409
  - test/dummy/README.rdoc
408
410
  - test/dummy/config/locales/en.yml
409
411
  - test/dummy/config/initializers/secret_token.rb
@@ -1,17 +0,0 @@
1
- # Copyright 2012-2016 Damjan Rems
2
- # Configure Rails Environment
3
-
4
- ENV["RAILS_ENV"] = "test"
5
-
6
- require File.expand_path("../dummy/config/environment.rb", __FILE__)
7
- require "rails/test_help"
8
-
9
- Rails.backtrace_cleaner.remove_silencers!
10
-
11
- # Load support files
12
- Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
13
-
14
- # Load fixtures from the engine
15
- if ActiveSupport::TestCase.method_defined?(:fixture_path=)
16
- ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
17
- end