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.
- checksums.yaml +4 -4
- data/app/controllers/cmsedit_controller.rb +21 -16
- data/app/controllers/dc_application_controller.rb +1 -2
- data/app/forms/all_options.yml +8 -1
- data/app/forms/dc_ad.yml +3 -3
- data/app/forms/dc_big_table.yml +3 -2
- data/app/forms/dc_big_table_locale.yml +2 -2
- data/app/forms/dc_big_table_value.yml +3 -2
- data/app/forms/dc_category.yml +3 -2
- data/app/forms/dc_design.yml +3 -2
- data/app/forms/dc_folder_permission.yml +3 -2
- data/app/forms/dc_ident.yml +3 -1
- data/app/forms/dc_link.yml +3 -2
- data/app/forms/dc_menu.yml +3 -2
- data/app/forms/dc_menu_item.yml +3 -1
- data/app/forms/dc_page.yml +3 -1
- data/app/forms/dc_part.yml +3 -2
- data/app/forms/dc_permission.yml +3 -2
- data/app/forms/dc_piece.yml +3 -2
- data/app/forms/dc_policy.yml +2 -2
- data/app/forms/dc_policy_role.yml +3 -2
- data/app/forms/dc_policy_rule.yml +3 -2
- data/app/forms/dc_policy_rule_nocms.yml +3 -2
- data/app/forms/dc_poll.yml +3 -2
- data/app/forms/dc_poll_item.yml +3 -2
- data/app/forms/dc_simple_menu.yml +3 -1
- data/app/forms/dc_simple_menu_item.yml +3 -2
- data/app/forms/dc_site.yml +8 -2
- data/app/forms/dc_user.yml +3 -2
- data/app/forms/dc_user_role.yml +5 -3
- data/app/helpers/cmsedit_helper.rb +19 -11
- data/app/helpers/dc_application_helper.rb +25 -15
- data/app/helpers/dc_part_renderer.rb +1 -1
- data/app/helpers/dc_simple_menu_renderer.rb +6 -2
- data/app/models/dc_dummy.rb +33 -3
- data/app/models/dc_part.rb +1 -1
- data/app/models/dc_site.rb +2 -1
- data/app/views/cmsedit/login.html.erb +21 -0
- data/config/locales/models_en.yml +4 -2
- data/config/locales/models_sl.yml +3 -1
- data/lib/drg_cms/version.rb +1 -1
- data/lib/generators/new_drg_form/USAGE +8 -0
- data/lib/generators/new_drg_form/new_drg_form_generator.rb +217 -0
- data/test/lib/generators/new_drg_form_generator_test.rb +14 -0
- metadata +7 -6
- data/app/views/__dc_at_the_beginning/create.html.erb +0 -9
- data/app/views/__dc_at_the_beginning/index.html.erb +0 -19
- data/app/views/dc_at_the_beginning/create.html.erb +0 -9
- 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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 31aa0b6c5076624acd107471ba082d927e096cb5
|
4
|
+
data.tar.gz: bf9048314d21555c052cca5394b7723fac605e85
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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
|
264
|
-
|
265
|
-
|
266
|
-
|
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
|
data/app/forms/all_options.yml
CHANGED
@@ -79,7 +79,8 @@ result_set:
|
|
79
79
|
eval: dc_icon4_boolean
|
80
80
|
|
81
81
|
form:
|
82
|
-
|
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:
|
data/app/forms/dc_ad.yml
CHANGED
data/app/forms/dc_big_table.yml
CHANGED
data/app/forms/dc_category.yml
CHANGED
data/app/forms/dc_design.yml
CHANGED
data/app/forms/dc_ident.yml
CHANGED
data/app/forms/dc_link.yml
CHANGED
data/app/forms/dc_menu.yml
CHANGED
data/app/forms/dc_menu_item.yml
CHANGED
data/app/forms/dc_page.yml
CHANGED
data/app/forms/dc_part.yml
CHANGED
data/app/forms/dc_permission.yml
CHANGED
data/app/forms/dc_piece.yml
CHANGED
data/app/forms/dc_policy.yml
CHANGED
data/app/forms/dc_poll.yml
CHANGED
data/app/forms/dc_poll_item.yml
CHANGED
data/app/forms/dc_site.yml
CHANGED
@@ -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
|
data/app/forms/dc_user.yml
CHANGED
data/app/forms/dc_user_role.yml
CHANGED
@@ -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
|
-
|
19
|
+
2:
|
20
20
|
name: valid_from
|
21
21
|
|
22
|
-
|
22
|
+
3:
|
23
23
|
name: valid_to
|
24
24
|
|
25
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
631
|
-
|
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
|
-
|
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 =
|
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 =
|
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" =>
|
448
|
+
"#{table}.dc_site_id" => _origin.site.id
|
439
449
|
}
|
440
|
-
|
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 =>
|
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: "#{
|
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
|
-
|
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
|
-
|
861
|
-
default_policy.dc_policy_rules.to_a.each { |v|
|
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|
|
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
|
880
|
-
if
|
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
|
-
|
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
|
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
|
data/app/models/dc_dummy.rb
CHANGED
@@ -62,9 +62,39 @@ class DcDummy
|
|
62
62
|
include Mongoid::Document
|
63
63
|
|
64
64
|
########################################################################
|
65
|
-
#
|
65
|
+
# Respond_to should always return true.
|
66
66
|
########################################################################
|
67
|
-
|
68
|
-
|
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
|
data/app/models/dc_part.rb
CHANGED
@@ -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.
|
53
|
+
if self.link.blank?
|
54
54
|
self.link = self.name.strip.downcase.gsub(' ','-')
|
55
55
|
end
|
56
56
|
end
|
data/app/models/dc_site.rb
CHANGED
@@ -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: '
|
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:
|
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:
|
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
|
data/lib/drg_cms/version.rb
CHANGED
@@ -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.
|
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-
|
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 %>
|