drg_cms 0.5.0 → 0.5.1

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 (49) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/cmsedit_controller.rb +21 -16
  3. data/app/controllers/dc_application_controller.rb +1 -2
  4. data/app/forms/all_options.yml +8 -1
  5. data/app/forms/dc_ad.yml +3 -3
  6. data/app/forms/dc_big_table.yml +3 -2
  7. data/app/forms/dc_big_table_locale.yml +2 -2
  8. data/app/forms/dc_big_table_value.yml +3 -2
  9. data/app/forms/dc_category.yml +3 -2
  10. data/app/forms/dc_design.yml +3 -2
  11. data/app/forms/dc_folder_permission.yml +3 -2
  12. data/app/forms/dc_ident.yml +3 -1
  13. data/app/forms/dc_link.yml +3 -2
  14. data/app/forms/dc_menu.yml +3 -2
  15. data/app/forms/dc_menu_item.yml +3 -1
  16. data/app/forms/dc_page.yml +3 -1
  17. data/app/forms/dc_part.yml +3 -2
  18. data/app/forms/dc_permission.yml +3 -2
  19. data/app/forms/dc_piece.yml +3 -2
  20. data/app/forms/dc_policy.yml +2 -2
  21. data/app/forms/dc_policy_role.yml +3 -2
  22. data/app/forms/dc_policy_rule.yml +3 -2
  23. data/app/forms/dc_policy_rule_nocms.yml +3 -2
  24. data/app/forms/dc_poll.yml +3 -2
  25. data/app/forms/dc_poll_item.yml +3 -2
  26. data/app/forms/dc_simple_menu.yml +3 -1
  27. data/app/forms/dc_simple_menu_item.yml +3 -2
  28. data/app/forms/dc_site.yml +8 -2
  29. data/app/forms/dc_user.yml +3 -2
  30. data/app/forms/dc_user_role.yml +5 -3
  31. data/app/helpers/cmsedit_helper.rb +19 -11
  32. data/app/helpers/dc_application_helper.rb +25 -15
  33. data/app/helpers/dc_part_renderer.rb +1 -1
  34. data/app/helpers/dc_simple_menu_renderer.rb +6 -2
  35. data/app/models/dc_dummy.rb +33 -3
  36. data/app/models/dc_part.rb +1 -1
  37. data/app/models/dc_site.rb +2 -1
  38. data/app/views/cmsedit/login.html.erb +21 -0
  39. data/config/locales/models_en.yml +4 -2
  40. data/config/locales/models_sl.yml +3 -1
  41. data/lib/drg_cms/version.rb +1 -1
  42. data/lib/generators/new_drg_form/USAGE +8 -0
  43. data/lib/generators/new_drg_form/new_drg_form_generator.rb +217 -0
  44. data/test/lib/generators/new_drg_form_generator_test.rb +14 -0
  45. metadata +7 -6
  46. data/app/views/__dc_at_the_beginning/create.html.erb +0 -9
  47. data/app/views/__dc_at_the_beginning/index.html.erb +0 -19
  48. data/app/views/dc_at_the_beginning/create.html.erb +0 -9
  49. data/app/views/dc_at_the_beginning/index.html.erb +0 -19
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cd0544d2cf8584b8b6081d9303dc5eafed7c61f2
4
- data.tar.gz: 03ff0ee749f6ec797edd6b185fc7775fe56df7e6
3
+ metadata.gz: 31aa0b6c5076624acd107471ba082d927e096cb5
4
+ data.tar.gz: bf9048314d21555c052cca5394b7723fac605e85
5
5
  SHA512:
6
- metadata.gz: 37f38a5123df485097ea0838d1d8c44fe22ead095961b6d5ee6f8f5d0f0a41ab42c6bc9227cd620231a77a454b1c895b71ff38df0a8cb204b4d252b81e5ae358
7
- data.tar.gz: 4d4a60ea1524ed9feecfe25f1c1fc86dee7c8a43c077ad9846de6143355a763351c2f6ca156b6c8551725166867f66bfb3e03af8a42305b916878f8b5314c738
6
+ metadata.gz: 6e1df8ad23c73f14ad9094a7dc132dea6ceecebb2aadb89ec800a909007ff859b16d5b7f3f6b652b8dfc0b0c97623e69552f8dc107bae18d79485cff833aa9b4
7
+ data.tar.gz: d6dc1617e911aa3924f0f8e00a546b4e9eb45c0a49e3352bd8d40523550feabf80b61858ec2e85a5ac5751e796e139b7789224de3a2b35153516c7f52e4d482c
@@ -76,7 +76,7 @@
76
76
  # If filter method returns false user will be presented with flash error.
77
77
  ########################################################################
78
78
  class CmseditController < DcApplicationController
79
- before_action :check_authorization, :except => [:login]
79
+ before_action :check_authorization, :except => [:login, :logout]
80
80
  before_filter :dc_reload_patches if Rails.env.development?
81
81
 
82
82
  layout 'cms'
@@ -242,29 +242,34 @@ def filter
242
242
  end
243
243
 
244
244
  ########################################################################
245
- # Show is (ab)used for direct login and logout into cmsedit controller. Login
246
- # and logout actions can be directly performed by calling http://site.com/cmsedit/login
245
+ # Show displays record in readonly mode.
247
246
  ########################################################################
248
247
  def show
249
- =begin
250
- case
251
- when params[:id].in?(%w(login logout)) then # show login menu
252
- session[:edit_mode] = 0
253
- render action: 'show'#, layout: 'cms'
254
- end
255
- =end
256
248
  find_record
257
249
  render action: 'edit', layout: 'cms'
258
250
  end
259
251
 
260
252
  ########################################################################
261
- # Login action. Used to login direct to CMS.
253
+ # Login action. Used to login direct to CMS. It is mostly used when first time
254
+ # creating site and when something goes so wrong, that traditional login procedure
255
+ # is not available.
256
+ #
257
+ # Login can be called directly with url http://site.com/cmsedit/login
258
+ ########################################################################
259
+ def login
260
+ session[:edit_mode] = 0 unless params[:ok]
261
+ render action: 'login', layout: 'cms'
262
+ end
263
+
264
+ ########################################################################
265
+ # Logout action. Used to logout direct from CMS.
266
+ #
267
+ # Logout can be called directly with url http://site.com/cmsedit/logout
262
268
  ########################################################################
263
- def login #:nodoc:
264
- # session[:edit_mode] = 0 if params[:id].in? %w(login logout) # show login menu
265
- # dc_collect_menu_forms
266
- session[:edit_mode] = 0
267
- render action: 'show', layout: 'cms'
269
+ def logout
270
+ session[:edit_mode] = 0
271
+ session[:user_id] = nil
272
+ render action: 'login', layout: 'cms'
268
273
  end
269
274
 
270
275
  ########################################################################
@@ -285,9 +285,7 @@ def dc_process_default_request()
285
285
  return dc_render_404('Design!') unless @design
286
286
  end
287
287
  # Add edit menu
288
- layout = 'content'
289
288
  if session[:edit_mode] > 0
290
- # layout = 'cms'
291
289
  session[:site_id] = @site.id
292
290
  session[:site_page_table] = @site.page_table
293
291
  session[:page_id] = @page.id
@@ -296,6 +294,7 @@ def dc_process_default_request()
296
294
  dc_log_visit()
297
295
  end
298
296
  @page_title = @page.subject.empty? ? @site.page_title : @page.subject
297
+ layout = @site.site_layout.to_s.size > 2 ? @site.site_layout : 'content'
299
298
  # render view. inline if defined in design
300
299
  view_filename = ''
301
300
  view_filename = @design.rails_view.to_s if @design
@@ -79,7 +79,8 @@ result_set:
79
79
  eval: dc_icon4_boolean
80
80
 
81
81
  form:
82
- edit_title: description
82
+ title:
83
+ field: description
83
84
  height: 600
84
85
  title:
85
86
  edit: Title for edit
@@ -99,6 +100,12 @@ form:
99
100
  type: script
100
101
  caption: Cancle
101
102
  js: parent.reload();
103
+ 7:
104
+ type: submit
105
+ caption: Send
106
+ params:
107
+ before-save: send_mail
108
+ after-save: return_to parent.reload
102
109
 
103
110
  tabs:
104
111
  tab1:
@@ -29,9 +29,9 @@ result_set:
29
29
  name: active
30
30
  eval: dc_icon4_boolean
31
31
 
32
- edit_title: description
33
-
34
- form:
32
+ form:
33
+ title:
34
+ field: description
35
35
  actions: standard
36
36
 
37
37
  fields:
@@ -26,9 +26,10 @@ result_set:
26
26
  name: active
27
27
  eval: dc_icon4_boolean
28
28
 
29
- edit_title: name
30
-
31
29
  form:
30
+ title:
31
+ field: name
32
+
32
33
  actions:
33
34
  standard: yes
34
35
 
@@ -23,9 +23,9 @@ result_set:
23
23
  2:
24
24
  name: description
25
25
 
26
- edit_title: locale
27
-
28
26
  form:
27
+ title:
28
+ field: locale
29
29
  actions: standard
30
30
 
31
31
  fields:
@@ -23,9 +23,10 @@ result_set:
23
23
  2:
24
24
  name: description
25
25
 
26
- edit_title: value
27
-
28
26
  form:
27
+ title:
28
+ field: value
29
+
29
30
  actions: standard
30
31
 
31
32
  fields:
@@ -20,9 +20,10 @@ result_set:
20
20
  name: active
21
21
  eval: dc_icon4_boolean
22
22
 
23
- edit_title: name
24
-
25
23
  form:
24
+ title:
25
+ field: name
26
+
26
27
  actions:
27
28
  standard: yes
28
29
 
@@ -25,9 +25,10 @@ result_set:
25
25
  2:
26
26
  name: description
27
27
 
28
- edit_title: name
29
-
30
28
  form:
29
+ title:
30
+ field: name
31
+
31
32
  actions:
32
33
  standard: yes
33
34
 
@@ -23,9 +23,10 @@ result_set:
23
23
  name: active
24
24
  eval: dc_icon4_boolean
25
25
 
26
- edit_title: folder_name
27
-
28
26
  form:
27
+ title:
28
+ field: folder_name
29
+
29
30
  actions: standard
30
31
 
31
32
  fields:
@@ -19,7 +19,9 @@ result_set:
19
19
  style: "text-align: left;"
20
20
 
21
21
  form:
22
- edit_title: caption
22
+ title:
23
+ field: caption
24
+
23
25
  actions: standard
24
26
 
25
27
  fields:
@@ -21,9 +21,10 @@ result_set:
21
21
  name: params
22
22
  style: "text-align: left;"
23
23
 
24
- edit_title: name
25
-
26
24
  form:
25
+ title:
26
+ field: name
27
+
27
28
  actions: standard
28
29
 
29
30
  fields:
@@ -22,9 +22,10 @@ result_set:
22
22
  name: description
23
23
  style: "text-align: left;"
24
24
 
25
- edit_title: name
26
-
27
25
  form:
26
+ title:
27
+ field: name
28
+
28
29
  actions: standard
29
30
  tabs:
30
31
  tab1:
@@ -25,7 +25,9 @@ result_set:
25
25
 
26
26
 
27
27
  form:
28
- edit_title: caption
28
+ title:
29
+ field: caption
30
+
29
31
  actions: standard
30
32
 
31
33
  tabs:
@@ -24,8 +24,10 @@ result_set:
24
24
  4:
25
25
  name: updated_at
26
26
 
27
- edit_title: subject
28
27
  form:
28
+ title:
29
+ field: subject
30
+
29
31
  actions: standard
30
32
  tabs:
31
33
  1base:
@@ -23,9 +23,10 @@ result_set:
23
23
  4:
24
24
  name: updated_at
25
25
 
26
- edit_title: subject
27
-
28
26
  form:
27
+ title:
28
+ field: subject
29
+
29
30
  actions: standard
30
31
  tabs:
31
32
  1base:
@@ -23,9 +23,10 @@ result_set:
23
23
  name: active
24
24
  eval: dc_icon4_boolean
25
25
 
26
- edit_title: name
27
-
28
26
  form:
27
+ title:
28
+ field: name
29
+
29
30
  actions: standard
30
31
 
31
32
  fields:
@@ -24,9 +24,10 @@ result_set:
24
24
  4:
25
25
  name: updated_at
26
26
 
27
- edit_title: subject
28
-
29
27
  form:
28
+ title:
29
+ field: subject
30
+
30
31
  actions: standard
31
32
 
32
33
  tabs:
@@ -18,9 +18,9 @@ result_set:
18
18
  name: description
19
19
  style: "text-align: left;"
20
20
 
21
- edit_title: name
22
-
23
21
  form:
22
+ title:
23
+ field: name
24
24
 
25
25
  fields:
26
26
  10:
@@ -20,9 +20,10 @@ result_set:
20
20
  name: active
21
21
  eval: dc_icon4_boolean
22
22
 
23
- edit_title: name
24
-
25
23
  form:
24
+ title:
25
+ field: name
26
+
26
27
  actions: standard
27
28
 
28
29
  fields:
@@ -20,9 +20,10 @@ result_set:
20
20
  name: permission
21
21
  eval: DcPolicyRule.permission_name_for_value
22
22
 
23
- edit_title: name
24
-
25
23
  form:
24
+ title:
25
+ field: name
26
+
26
27
  actions: standard
27
28
 
28
29
  fields:
@@ -20,9 +20,10 @@ result_set:
20
20
  name: permission
21
21
  eval: DcPolicyRule.permission_name_for_value
22
22
 
23
- edit_title: name
24
-
25
23
  form:
24
+ title:
25
+ field: name
26
+
26
27
  actions: standard
27
28
 
28
29
  fields:
@@ -25,9 +25,10 @@ result_set:
25
25
  4:
26
26
  name: valid_to
27
27
 
28
- edit_title: description
29
-
30
28
  form:
29
+ title:
30
+ field: description
31
+
31
32
  actions: standard
32
33
 
33
34
  tabs:
@@ -23,9 +23,10 @@ result_set:
23
23
  name: order
24
24
  style: "text-align: right;"
25
25
 
26
- edit_title: text
27
-
28
26
  form:
27
+ title:
28
+ field: text
29
+
29
30
  actions: standard
30
31
 
31
32
  fields:
@@ -22,8 +22,10 @@ result_set:
22
22
  name: description
23
23
  style: "text-align: left;"
24
24
 
25
- edit_title: name
26
25
  form:
26
+ title:
27
+ field: name
28
+
27
29
  actions: standard
28
30
 
29
31
  tabs:
@@ -26,9 +26,10 @@ result_set:
26
26
  name: order
27
27
  style: "text-align: right;"
28
28
 
29
- edit_title: caption
30
-
31
29
  form:
30
+ title:
31
+ field: caption
32
+
32
33
  actions: standard
33
34
 
34
35
  fields:
@@ -21,9 +21,10 @@ result_set:
21
21
  2:
22
22
  name: description
23
23
 
24
- edit_title: name
25
-
26
24
  form:
25
+ title:
26
+ field: name
27
+
27
28
  actions: standard
28
29
 
29
30
  tabs:
@@ -89,6 +90,11 @@ form:
89
90
  type: text_field
90
91
  html:
91
92
  size: 10
93
+ 25:
94
+ name: site_layout
95
+ type: text_field
96
+ html:
97
+ size: 20
92
98
  30:
93
99
  name: page_table
94
100
  type: text_field
@@ -22,9 +22,10 @@ result_set:
22
22
  4:
23
23
  name: last_visit
24
24
 
25
- edit_title: user
26
-
27
25
  form:
26
+ title:
27
+ field: user
28
+
28
29
  actions: standard
29
30
 
30
31
  fields:
@@ -16,13 +16,15 @@ result_set:
16
16
  name: dc_policy_role_id
17
17
  eval: dc_name4_id,dc_policy_role,name
18
18
 
19
- 3:
19
+ 2:
20
20
  name: valid_from
21
21
 
22
- 4:
22
+ 3:
23
23
  name: valid_to
24
24
 
25
- edit_title: Policy rule
25
+ 4:
26
+ name: active
27
+ eval: dc_icon4_boolean
26
28
 
27
29
  form:
28
30
  actions: standard
@@ -59,7 +59,7 @@ EOT
59
59
  yaml = v.class == String ? {'type' => v} : v # if single definition simulate type parameter
60
60
  action = yaml['type'].to_s.downcase
61
61
  if action == 'url'
62
- p "action: url will be deprecated. Use action: link in index: actions"
62
+ dc_deprecate "action: url will be deprecated. Use action: link in index: actions"
63
63
  action = 'link'
64
64
  end
65
65
  # if return_to is present link directly to URL
@@ -114,16 +114,19 @@ EOT
114
114
  end
115
115
 
116
116
  ############################################################################
117
- # Subroutine of dc_div_filter
117
+ # Will return field form definition. Subroutine of dc_div_filter
118
118
  ############################################################################
119
119
  def _get_field_def(name) #:nodoc:
120
- @form['form'].each do |tab|
121
- next if tab.first.match('actions')
120
+ @form['form']['tabs'].each do |tab|
122
121
  tab.each do |field|
123
- next if field.class == String
122
+ next if field.class == String # tab name
124
123
  field.each {|k,v| return v if v['name'] == name }
125
124
  end
126
- end
125
+ end if @form['form']['tabs'] # I know. But nice.
126
+ #
127
+ @form['form']['fields'].each do |field|
128
+ field.last.each {|k,v| return v if v['name'] == name }
129
+ end if @form['form']['fields']
127
130
  nil
128
131
  end
129
132
 
@@ -131,12 +134,12 @@ end
131
134
  # Finds field definition on form and use it for filter input. Subroutine of dc_div_filter.
132
135
  ############################################################################
133
136
  def _get_field_div(name) #:nodoc:
134
- # field not defined on form. Must be defined: name as form_field_type
135
137
  filter = nil
138
+ # old filter saved to session
136
139
  if session[@form['table']] and session[@form['table']][:filter]
137
140
  filter, operation, value = session[@form['table']][:filter].split("\t")
138
141
  end
139
- #
142
+ # field not defined on form. Must be defined: name as form_field_type
140
143
  if name.match(' as ')
141
144
  name, dummy, type = name.split(' ')
142
145
  field = {"name" => name, "type" => type, "html"=>{"size"=>20}}
@@ -229,7 +232,7 @@ def dc_link_or_ajax(yaml, parms) #:nodoc:
229
232
 
230
233
  # method = yaml['method'] || yaml['request'] || 'get'
231
234
  # caption = yaml['caption'] || yaml['text']
232
- p "Form: result_set:action:text directive will be deprecated. Use caption instead of text." if yaml['text']
235
+ dc_deprecate "Form: result_set:action:text directive will be deprecated. Use caption instead of text." if yaml['text']
233
236
  #
234
237
  =begin
235
238
  if yaml['type'] == 'link'
@@ -627,8 +630,13 @@ def dc_fields_for_tab(fields) #:nodoc:
627
630
  next
628
631
  end
629
632
  # label
630
- options['text'] ||= options['name'].capitalize.gsub('_',' ')
631
- text = options['text'].match('helpers.') ? t(options['text']) : t_name(options['name'], options['text'])
633
+ text = if options['text']
634
+ t(options['text'], options['text'])
635
+ else
636
+ t_name(options['name'], options['name'].capitalize.gsub('_',' ') )
637
+ end
638
+ # options['text'] ||= options['name'].capitalize.gsub('_',' ')
639
+ # text = options['text'].match('helpers.') ? t(options['text']) : t_name(options['name'], options['text'])
632
640
  # help text can be defined in form or in translations starting with helpers. or as helpers.help.collection.field
633
641
  help = if options['help']
634
642
  options['help'].match('helpers.') ? t(options['help']) : options['help']
@@ -56,6 +56,14 @@ def _origin #:nodoc:
56
56
  @parent ? @parent : self
57
57
  end
58
58
 
59
+ ############################################################################
60
+ # Writes out deprication msg. It also adds site_name to message, so it is easier to
61
+ # find where the message is comming from.
62
+ ############################################################################
63
+ def dc_deprecate(msg)
64
+ p "#{dc_get_site.name}: #{msg}"
65
+ end
66
+
59
67
  ############################################################################
60
68
  # This is main method used for render parts of design into final HTML document.
61
69
  #
@@ -103,6 +111,7 @@ end
103
111
  ########################################################################
104
112
  def dc_replace_in_design(opts={})
105
113
  design = opts[:piece] ? DcPiece.find(name: opts[:piece]).script : dc_get_site.design
114
+ layout = opts[:layout] || (dc_get_site.site_layout.size > 2 ? dc_get_site.site_layout : nil)
106
115
  if opts[:replace]
107
116
  # replace more than one part of code
108
117
  if opts[:replace].class == Array
@@ -118,7 +127,7 @@ end
118
127
  # Old method name.
119
128
  ########################################################################
120
129
  def dc_render_design(opts={}) #:nodoc:
121
- p "dc_render_design will be deprecated. Use dc_replace_in_design instead."
130
+ dc_deprecate "dc_render_design will be deprecated. Use dc_replace_in_design instead."
122
131
  dc_replace_in_design(opts)
123
132
  end
124
133
 
@@ -160,8 +169,9 @@ def dc_edit_title()
160
169
  c = (@form['readonly'] ? t('drgcms.show') : t('drgcms.edit')) + " : "
161
170
  c << (@form['title'] ? t( @form['title'], @form['title'] ) : t_tablename(@form['table'])) + ' : '
162
171
  title = (title and title['field']) ? title['field'] : @form['form']['edit_title']
172
+ dc_deprecate('form:edit_title will be deprecated. Use form:title:field instead.') if @form['form']['edit_title']
163
173
  c << "#{@record[ title ]} : " if title and @record.respond_to?(title)
164
- c << @record._id
174
+ c << @record._id #if @record._id
165
175
  end
166
176
  end
167
177
 
@@ -404,7 +414,7 @@ end
404
414
  ####################################################################
405
415
  def dc_link_for_edit1(opts, link_text) #:nodoc:
406
416
  icon = opts.delete('icon')
407
- url = @parent.url_for(opts)
417
+ url = _origin.url_for(opts)
408
418
  "<li><div class='drgcms_popmenu_item' style='cursor: pointer;' data-url='#{url}'>
409
419
  #{_origin.fa_icon(icon)} #{link_text}</div></li>\n"
410
420
  end
@@ -430,18 +440,18 @@ end
430
440
  def dc_page_edit_menu(opts=@opts)
431
441
  return '' if opts[:edit_mode] < 2
432
442
  # save some data to cookie. This can not go to session.
433
- table = @parent.site.page_table
443
+ table = _origin.site.page_table
434
444
  kukis = { "#{table}.dc_design_id" => @page.dc_design_id,
435
445
  "#{table}.menu_id" => @page.menu_id,
436
446
  "#{table}.kats" => @page.kats,
437
447
  "#{table}.page_id" => @page.id,
438
- "#{table}.dc_site_id" => @parent.site.id
448
+ "#{table}.dc_site_id" => _origin.site.id
439
449
  }
440
- @parent.cookies[:record] = Marshal.dump(kukis)
450
+ _origin.cookies[:record] = Marshal.dump(kukis)
441
451
  title = "#{t('drgcms.edit')}: #{@page.subject}"
442
452
  dc_link_menu_tag(title) do |html|
443
453
  opts[:editparams].merge!( controller: 'cmsedit', action: 'edit', 'icon' => 'edit' )
444
- opts[:editparams].merge!( :id => @page.id, :table => @parent.site.page_table, formname: nil, edit_only: 'body' )
454
+ opts[:editparams].merge!( :id => @page.id, :table => _origin.site.page_table, formname: nil, edit_only: 'body' )
445
455
  html << dc_link_for_edit1( opts[:editparams], t('drgcms.edit_content') )
446
456
 
447
457
  # opts[:editparams][:edit_only] = nil
@@ -453,7 +463,7 @@ def dc_page_edit_menu(opts=@opts)
453
463
  html << dc_link_for_edit1( opts[:editparams], t('drgcms.edit_new_page') )
454
464
 
455
465
  opts[:editparams].merge!(ids: @page.id, formname: 'dc_part', 'icon' => 'plus-square-o',
456
- table: "#{@parent.site.page_table};dc_part" )
466
+ table: "#{_origin.site.page_table};dc_part" )
457
467
  html << dc_link_for_edit1( opts[:editparams], t('drgcms.edit_new_part') )
458
468
  end
459
469
  end
@@ -624,7 +634,7 @@ end
624
634
  #
625
635
  ####################################################################
626
636
  def dc_date_time(value, format) #:nodoc:
627
- p 'dc_date_time will be deprecated! Use dc_format_date_time instead.'
637
+ dc_deprecate 'dc_date_time will be deprecated! Use dc_format_date_time instead.'
628
638
  dc_format_date_time(value, format)
629
639
  end
630
640
 
@@ -857,16 +867,15 @@ def dc_user_can_view(ctrl, policy_id)
857
867
  default_policy = policies.find_by(is_default: true)
858
868
  return false, 'Default accsess policy not found for the site!' unless default_policy
859
869
  #
860
- h = {}
861
- default_policy.dc_policy_rules.to_a.each { |v| h[v.dc_policy_role_id] = v.permission }
870
+ permissions = {}
871
+ default_policy.dc_policy_rules.to_a.each { |v| permissions[v.dc_policy_role_id] = v.permission }
862
872
  # update permissions with defined policy
863
873
  part_policy = nil
864
874
  if policy_id
865
875
  part_policy = policies.find(policy_id)
866
876
  return false, 'Access policy not found for part!' unless part_policy
867
- part_policy.dc_policy_rules.to_a.each { |v| h[v.dc_policy_role_id] = v.permission }
877
+ part_policy.dc_policy_rules.to_a.each { |v| permissions[v.dc_policy_role_id] = v.permission }
868
878
  end
869
- # p h
870
879
  # apply guest role if user has no roles defined
871
880
  if ctrl.session[:user_roles].nil?
872
881
  role = DcPolicyRole.find_by(system_name: 'guest', active: true)
@@ -874,10 +883,11 @@ def dc_user_can_view(ctrl, policy_id)
874
883
  ctrl.session[:user_roles] = [role.id]
875
884
  end
876
885
  # Check if user has any role that allows him to view part
886
+ # p h, ctrl.session[:user_roles]
877
887
  can_view, msg = false,''
878
888
  ctrl.session[:user_roles].each do |role|
879
- next unless h[role] # role not yet defined. Will die in next line.
880
- if h[role] > 0
889
+ next unless permissions[role] # role not yet defined. Will die in next line.
890
+ if permissions[role] > 0
881
891
  can_view = true
882
892
  break
883
893
  end
@@ -121,7 +121,7 @@ def default
121
121
  html = ''
122
122
  # Load all parts only once per call
123
123
  load_parts if @parent.parts.nil?
124
- p 'DcPart: Parameter location will be deprecated! Please use position keyword.' if @opts['location']
124
+ dc_deprecate 'DcPart: Parameter location will be deprecated! Please use position keyword.' if @opts['location']
125
125
 
126
126
  @opts[:position] ||= @opts['position'] # symbols are not strings. Ensure that it works.
127
127
  # Select parts
@@ -62,14 +62,17 @@ def link_4edit() #:nodoc:
62
62
  return html unless @opts[:edit_mode] > 1
63
63
  #
64
64
  @opts[:editparams].merge!( { table: 'dc_simple_menu', controller: 'cmsedit', action: 'edit' } )
65
- title = "#{t('drgcms.edit')}: "
66
65
  if @menu # edit, when menu exists
66
+ title = "#{t('drgcms.edit')}: "
67
67
  @opts[:editparams].merge!( { id: @menu.id, title: "#{title}#{@menu.name}" } )
68
+ html << dc_link_for_edit( @opts[:editparams] )
68
69
  else # list available menus when menu does not yet exist
70
+ title = "#{t('drgcms.new')}: "
69
71
  title << t('helpers.label.dc_simple_menu.tabletitle')
70
72
  @opts[:editparams].merge!( { action: 'index', title: title })
73
+ html << dc_link_for_create( @opts[:editparams] )
71
74
  end
72
- html << dc_link_for_edit( @opts[:editparams] )
75
+ html
73
76
  end
74
77
 
75
78
  ########################################################################
@@ -144,6 +147,7 @@ def as_responsive
144
147
  items.each do |item|
145
148
  # menu can be hidden from user
146
149
  can_view, msg = dc_user_can_view(@parent, item)
150
+ p msg unless can_view
147
151
  next unless can_view
148
152
  html << "<li class=\"#{klas}#{(item.id == @selected.id) ? 'selected' : 'item'}\">#{ link_4menu(item) }</li>" #
149
153
  end
@@ -62,9 +62,39 @@ class DcDummy
62
62
  include Mongoid::Document
63
63
 
64
64
  ########################################################################
65
- # Ignore errors.
65
+ # Respond_to should always return true.
66
66
  ########################################################################
67
- def method_missing(m, *args, &block) #:nodoc:
68
- nil
67
+ def respond_to?(m)
68
+ # p "respond_to #{m}"
69
+ true
70
+ end
71
+
72
+ ########################################################################
73
+ # Redefine send method. Send is used to assign value by cmsedit controller.
74
+ ########################################################################
75
+ def send(field,value)
76
+ # p "send #{field} #{value}"
77
+ if field.to_s.match('=')
78
+ field.chomp!('=')
79
+ @internals ||= {}
80
+ @internals[field] = value
69
81
  end
70
82
  end
83
+
84
+ ########################################################################
85
+ # Method missing will return value if value defined by m parameter is saved to
86
+ # @internals array or will assign new value to @internals hash if m matches '='.
87
+ ########################################################################
88
+ def method_missing(m, *args, &block) #:nodoc:
89
+ # p "#{m},#{args},#{block}"
90
+ @internals ||= {}
91
+ m = m.to_s
92
+ if m.match('=')
93
+ m.chomp!('=')
94
+ @internals[m] = args.first
95
+ else
96
+ @internals[m]
97
+ end
98
+ end
99
+
100
+ end
@@ -50,7 +50,7 @@ class DcPart
50
50
  # Implementation of before_save callback.
51
51
  ######################################################################
52
52
  def do_before_save
53
- if self.link.empty?
53
+ if self.link.blank?
54
54
  self.link = self.name.strip.downcase.gsub(' ','-')
55
55
  end
56
56
  end
@@ -36,11 +36,12 @@ included do
36
36
  field :error_link, type: String
37
37
  field :header, type: String, default: ''
38
38
  field :css, type: String, default: ''
39
- field :route_name, type: String, default: 'page'
39
+ field :route_name, type: String, default: ''
40
40
  field :page_title, type: String
41
41
  field :document_extension, type: String
42
42
  field :page_table, type: String
43
43
  field :page_class, type: String, default: 'DcPage'
44
+ field :site_layout, type: String, default: 'content'
44
45
  field :menu_class, type: String, default: 'DcSimpleMenu'
45
46
  field :files_directory, type: String
46
47
  field :logo, type: String
@@ -0,0 +1,21 @@
1
+ <% if session[:edit_mode] and session[:edit_mode] > 0 %>
2
+ <%= render partial: 'edit_stuff' %>
3
+ <%= render partial: 'edit_stuff', formats: ['js'] %>
4
+ <% else %>
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 %>
21
+ <% end %>
@@ -42,13 +42,14 @@ en:
42
42
  error_link: Error link
43
43
  css: CSS
44
44
  header: Header
45
- route_name: Route name
45
+ route_name: Default route name
46
46
  page_title: Page title
47
47
  logo: Logo picture
48
48
  document_extension: Document extension
49
49
  page_table: Page table
50
50
  page_class: Page class
51
51
  menu_class: Menu class
52
+ site_layout: Rails layout
52
53
  files_directory: Files directory
53
54
  active: Active
54
55
  dc_policies: Access policies
@@ -482,12 +483,13 @@ en:
482
483
  error_link: Link to error page
483
484
  css: Site wide CSS
484
485
  header: Additional data used in page html header
485
- route_name: Route name used when creating page link. Defaults to page.
486
+ route_name: Default route name for creating page link. ex. page. Leave blank if not used.
486
487
  page_title: Default page title displayed in browser's top menu when title can not be extracted from document
487
488
  document_extension: Default document extension eg. html
488
489
  page_table: Name of table holding data for pages
489
490
  page_class: Rails model class name which defines table holding pages data usually DcPage
490
491
  menu_class: Rails model class name which defines table holding menu data usually DcMenu
492
+ site_layout: Rails layout used to draw response. This is by default application.
491
493
  files_directory: Directory name where uploaded files are located
492
494
  logo: Logotype picture for the site
493
495
  dc_policies: Access policies defined for the site
@@ -46,7 +46,8 @@ sl:
46
46
  document_extension: Podaljšek
47
47
  page_table: Tabela strani
48
48
  page_class: Razred strani
49
- menu_class: Razred menija
49
+ menu_class: Razred menija
50
+ site_layout: Rails layout
50
51
  files_directory: Mapa z datotekami
51
52
  logo: Logotip
52
53
  dc_policies: Politike za dostop
@@ -494,6 +495,7 @@ sl:
494
495
  page_table: Ime tabele (mongo collection), ki vsebuje podatke o straneh
495
496
  page_class: Ime Rails razreda modela, ki določa tabelo s podatki o straneh. Običajno DcPage.
496
497
  menu_class: Ime Rails razreda modela, ki določa tabelo s podatki o meniju. Običajno DcMenu.
498
+ site_layout: Rails layout, ki se bo uporabil za izris strani. Privzet je application.
497
499
  files_directory: Ime direktorija, kjer se nahajajo dokumenti, slike, priponke
498
500
  logo: Slika logotip podjetja
499
501
  dc_policies: Privzete politike za dostop do podatkov spletišča
@@ -1,4 +1,4 @@
1
1
  module DrgCms #:nodoc:
2
2
  # drg_cms gem version
3
- VERSION = "0.5.0"
3
+ VERSION = "0.5.1"
4
4
  end
@@ -0,0 +1,8 @@
1
+ Description:
2
+ new_drg_form_generator will create DRG form from model description.
3
+
4
+ Example:
5
+ rails generate new_drg_form model_name
6
+
7
+ This will create:
8
+ forms/model_name.yml
@@ -0,0 +1,217 @@
1
+ class NewDrgFormGenerator < Rails::Generators::NamedBase
2
+
3
+ source_root File.expand_path('../templates', __FILE__)
4
+ #desc "This generator creates form for model at app/forms"
5
+ #argument :formname, :type => :string, :default => ''
6
+ class_option :tabs, :type => :boolean, :default => false, :description => "Create form with tabulators"
7
+
8
+ ###########################################################################
9
+ # Will create output and save it to form filename.
10
+ ###########################################################################
11
+ def create_form_file
12
+ #:TODO: find out how to prevent error when model class is not defined
13
+ @file_name = file_name
14
+ formname = file_name #if formname.size == 0
15
+ @model = file_name.classify.constantize rescue nil
16
+ return (p "Model #{file_name.classify} not found! Aborting.") if @model.nil?
17
+ #
18
+ yml = top_level_options + index_options + result_set_options + form_top_options + form_fields_options
19
+ create_file "app/forms/#{formname}.yml", yml
20
+ end
21
+
22
+ private
23
+ ###########################################################################
24
+ #
25
+ ###########################################################################
26
+ def top_level_options
27
+ <<EOT
28
+ # Form for #{file_name}
29
+ table: #{file_name}
30
+ #title: Alternative title
31
+ #extend: extend
32
+ #controls: controls_file
33
+ #readonly: 1
34
+ #permissions:
35
+ # can_view: role_name
36
+
37
+ EOT
38
+ end
39
+
40
+ ###########################################################################
41
+ #
42
+ ###########################################################################
43
+ def index_options
44
+ <<EOT
45
+ index:
46
+ filter: id as text_field
47
+ actions: standard
48
+
49
+ # actions:
50
+ # 3:
51
+ # type: link
52
+ # controller: controller_name
53
+ # action: action_name
54
+ # table: table_name
55
+ # formname: form_name
56
+
57
+ EOT
58
+ end
59
+
60
+ ###########################################################################
61
+ #
62
+ ###########################################################################
63
+ def result_set_options
64
+ <<EOT
65
+ result_set:
66
+ # filter: controls_flter
67
+ # actions_width: 100
68
+ # per_page: 10
69
+
70
+ actions: standard
71
+
72
+ # actions:
73
+ # 1:
74
+ # type: link
75
+ # controller: controller_name
76
+ # action: action_name
77
+ # table: table_name
78
+ # formname: form_name
79
+ # target: target
80
+ # method: (get),put,post
81
+ #
82
+ # Choose from
83
+ # #{@model.attribute_names.join(',')}
84
+ columns:
85
+ 1:
86
+ name: #{@model.attribute_names[1]}
87
+ style: 'align: left; width: 100px'
88
+ 2:
89
+ name: #{@model.attribute_names[2]}
90
+ 3:
91
+ name: created_at
92
+ format: '%d.%m.%Y'
93
+ 4:
94
+ name: active
95
+ eval: dc_icon4_boolean
96
+
97
+ EOT
98
+ end
99
+
100
+ ###########################################################################
101
+ #
102
+ ###########################################################################
103
+ def form_top_options
104
+ <<EOT
105
+ form:
106
+ # height: 600
107
+ # title:
108
+ # field: name
109
+ # edit: Title for edit
110
+ # show: Title for show
111
+
112
+ actions: standard
113
+ #
114
+ # actions:
115
+ # 1:
116
+ # type: ajax
117
+ # controller: ppk
118
+ # action: prepare_document
119
+ # method: (get),put,post
120
+ # caption: Prepare document
121
+ # 2:
122
+ # type: script
123
+ # caption: Cancle
124
+ # js: parent.reload();
125
+ # 3:
126
+ # type: submit
127
+ # caption: Send
128
+ # params:
129
+ # before-save: send_mail
130
+ # after-save: return_to parent.reload
131
+
132
+ EOT
133
+ end
134
+
135
+ ###########################################################################
136
+ #
137
+ ###########################################################################
138
+ def form_field(field, index, offset)
139
+ helper = I18n.t("helpers.label.#{@file_name}.choices4_#{field}")
140
+ type, eval = 'select',''
141
+ if helper.class == Hash or helper.match( 'translation missing' )
142
+ if field[-3,3] == '_id'
143
+ eval = "eval: dc_choices4('#{field[0,field.size-3]}','change_to_description_field_name','_id')\n"
144
+ else
145
+ type = 'text_field'
146
+ end
147
+ end
148
+ #
149
+ yml = ' '*offset
150
+ yml << "#{index}:\n"
151
+ offset += 2
152
+ #
153
+ yml << ' '*offset + "name: #{field}\n"
154
+ yml << ' '*offset + "type: #{type}\n"
155
+ yml << ' '*offset + eval if eval.size > 0
156
+ yml << ' '*offset + "html:\n"
157
+ offset += 2
158
+ if type == 'text_field'
159
+ yml << ' '*offset + "size: 50\n"
160
+ else
161
+ yml << ' '*offset + "include_blank: true\n"
162
+ end
163
+ yml
164
+ end
165
+
166
+ ###########################################################################
167
+ #
168
+ ###########################################################################
169
+ def embedded_form_field(offset)
170
+ yml = ''
171
+ field_index = 10
172
+ @model.embedded_relations.keys.each do |embedded_name|
173
+ yml << ' '*offset + "#{field_index}:\n"
174
+ yml << ' '*(offset+2) + "name: #{embedded_name}\n"
175
+ yml << ' '*(offset+2) + "type: embedded\n"
176
+ yml << ' '*(offset+2) + "formname: #{embedded_name[0,embedded_name.size - 1]}\n"
177
+ yml << '#' + ' '*(offset+2) + "html:\n"
178
+ yml << '#' + ' '*(offset+4) + "height: 500\n"
179
+ field_index += 10
180
+ end
181
+ yml
182
+ end
183
+
184
+ ###########################################################################
185
+ #
186
+ ###########################################################################
187
+ def form_fields_options
188
+ forbidden = ['_id','created_by','updated_by','created_at','updated_at']
189
+ tab_index = 1
190
+ field_index = 0
191
+ if options.tabs?
192
+ yml = " tabs:\n"
193
+ @model.attribute_names.each do |attr_name|
194
+ next if forbidden.include?(attr_name)
195
+ if field_index%100 == 0
196
+ yml << " tab#{tab_index}:\n"
197
+ field_index = 0
198
+ tab_index += 1
199
+ end
200
+ field_index += 10
201
+ yml << form_field(attr_name, field_index, 6)
202
+ end
203
+ yml << " tab#{tab_index}:\n"
204
+ yml << embedded_form_field(6)
205
+ else
206
+ yml = " fields:\n"
207
+ @model.attribute_names.each do |attr_name|
208
+ next if forbidden.include?(attr_name)
209
+ field_index += 10
210
+ yml << form_field(attr_name, field_index, 4)
211
+ end
212
+ yml << embedded_form_field(4)
213
+ end
214
+ yml
215
+ end
216
+
217
+ end
@@ -0,0 +1,14 @@
1
+ require 'test_helper'
2
+ require 'generators/new_drg_form/new_drg_form_generator'
3
+
4
+ class NewDrgFormGeneratorTest < Rails::Generators::TestCase
5
+ tests NewDrgFormGenerator
6
+ destination Rails.root.join('tmp/generators')
7
+ setup :prepare_destination
8
+
9
+ # test "generator runs without errors" do
10
+ # assert_nothing_raised do
11
+ # run_generator ["arguments"]
12
+ # end
13
+ # end
14
+ 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.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Damjan Rems
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-10 00:00:00.000000000 Z
11
+ date: 2015-05-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -249,8 +249,6 @@ files:
249
249
  - app/models/dc_user_role.rb
250
250
  - app/models/dc_visit.rb
251
251
  - app/models/drgcms_form_fields.rb
252
- - app/views/__dc_at_the_beginning/create.html.erb
253
- - app/views/__dc_at_the_beginning/index.html.erb
254
252
  - app/views/cmsedit/_edit_stuff.html.erb
255
253
  - app/views/cmsedit/_edit_stuff.js.erb
256
254
  - app/views/cmsedit/_form.html.erb
@@ -258,10 +256,9 @@ files:
258
256
  - app/views/cmsedit/edit.html.erb
259
257
  - app/views/cmsedit/error.html.erb
260
258
  - app/views/cmsedit/index.html.erb
259
+ - app/views/cmsedit/login.html.erb
261
260
  - app/views/cmsedit/new.html.erb
262
261
  - app/views/cmsedit/show.html.erb
263
- - app/views/dc_at_the_beginning/create.html.erb
264
- - app/views/dc_at_the_beginning/index.html.erb
265
262
  - app/views/dc_common/_iframe_edit.html.erb
266
263
  - app/views/dc_common/paste_clipboard.html.erb
267
264
  - app/views/dc_mail/subscribe.html.erb
@@ -284,6 +281,8 @@ files:
284
281
  - lib/drg_cms.rb
285
282
  - lib/drg_cms/engine.rb
286
283
  - lib/drg_cms/version.rb
284
+ - lib/generators/new_drg_form/USAGE
285
+ - lib/generators/new_drg_form/new_drg_form_generator.rb
287
286
  - lib/tasks/at_the_beginning.yml
288
287
  - lib/tasks/dc_at_the_beginning.rake
289
288
  - lib/tasks/dc_cleanup.rake
@@ -321,6 +320,7 @@ files:
321
320
  - test/dummy/public/favicon.ico
322
321
  - test/dummy/script/rails
323
322
  - test/integration/navigation_test.rb
323
+ - test/lib/generators/new_drg_form_generator_test.rb
324
324
  - test/test_helper.rb
325
325
  homepage: http://www.drgcms.org
326
326
  licenses:
@@ -348,6 +348,7 @@ specification_version: 4
348
348
  summary: 'DRG CMS: Content management system for Ruby, Rails and MongoDB'
349
349
  test_files:
350
350
  - test/test_helper.rb
351
+ - test/lib/generators/new_drg_form_generator_test.rb
351
352
  - test/drg_cms_test.rb
352
353
  - test/integration/navigation_test.rb
353
354
  - test/dummy/README.rdoc
@@ -1,9 +0,0 @@
1
-
2
- <h2>Superadmin account created</h2>
3
- Please write down username:<%= params[:username] %>
4
- <br>password:<%= params[:password1] %>
5
- <br>
6
- <!-- <%= link_to('Start editing', controller: 'poll', poll_id: 'login', return_to: '/cmsedit/show') %> -->
7
-
8
- <%= link_to('Start editing', controller: 'cmsedit', action: 'show') %>
9
-
@@ -1,19 +0,0 @@
1
-
2
- <h2>At the beginning GOD created superadmin</h2>
3
- <%= "<div style='color: red;'>#{flash[:error]}</div>".html_safe if flash[:error] %>
4
- <%= form_tag action: 'create', method: :put do %>
5
- <table>
6
- <tr>
7
- <td>Superadmin username:</td>
8
- <td><%= text_field(nil, 'username') %>
9
- </tr><tr>
10
- <td>Superadmin password:</td>
11
- <td><%= password_field(nil, 'password1') %>
12
- </tr><tr>
13
- <td>Repeat password:</td>
14
- <td><%= password_field(nil, 'password2') %>
15
- </tr><tr>
16
- <td><%= submit_tag %></td>
17
- </tr>
18
- </table>
19
- <% end %>
@@ -1,9 +0,0 @@
1
-
2
- <h2>Superadmin account created</h2>
3
- Please write down username:<%= params[:username] %>
4
- <br>password:<%= params[:password1] %>
5
- <br>
6
- <!-- <%= link_to('Start editing', controller: 'poll', poll_id: 'login', return_to: '/cmsedit/show') %> -->
7
-
8
- <%= link_to('Start editing', controller: 'cmsedit', action: 'show') %>
9
-
@@ -1,19 +0,0 @@
1
-
2
- <h2>At the beginning GOD created superadmin</h2>
3
- <%= "<div style='color: red;'>#{flash[:error]}</div>".html_safe if flash[:error] %>
4
- <%= form_tag action: 'create', method: :put do %>
5
- <table>
6
- <tr>
7
- <td>Superadmin username:</td>
8
- <td><%= text_field(nil, 'username') %>
9
- </tr><tr>
10
- <td>Superadmin password:</td>
11
- <td><%= password_field(nil, 'password1') %>
12
- </tr><tr>
13
- <td>Repeat password:</td>
14
- <td><%= password_field(nil, 'password2') %>
15
- </tr><tr>
16
- <td><%= submit_tag %></td>
17
- </tr>
18
- </table>
19
- <% end %>