drg_cms 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
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 %>