drg_cms 0.7.0.8 → 0.7.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/drg_cms/drg_cms.js +50 -20
  3. data/app/assets/stylesheets/drg_cms/drg_cms.css +89 -31
  4. data/app/assets/stylesheets/drg_cms/select-multiple.css +5 -6
  5. data/app/controllers/cmsedit_controller.rb +57 -24
  6. data/app/controllers/dc_application_controller.rb +18 -21
  7. data/app/controls/dc_poll_result_control.rb +36 -36
  8. data/app/controls/dc_setup_control.rb +53 -0
  9. data/app/forms/all_options.yml +3 -3
  10. data/app/forms/cms_menu.yml +7 -0
  11. data/app/forms/dc_image_search.yml +2 -2
  12. data/app/forms/dc_poll.yml +2 -1
  13. data/app/forms/dc_poll_result.yml +10 -7
  14. data/app/forms/dc_setup.yml +45 -0
  15. data/app/forms/dc_steps_template.yml +4 -1
  16. data/app/helpers/cms_common_helper.rb +14 -10
  17. data/app/helpers/cms_helper.rb +8 -7
  18. data/app/helpers/cms_index_helper.rb +56 -42
  19. data/app/helpers/dc_application_helper.rb +46 -16
  20. data/app/helpers/dc_image_helper.rb +2 -2
  21. data/app/models/concerns/dc_user_concern.rb +1 -1
  22. data/app/models/dc_big_table.rb +1 -1
  23. data/app/models/dc_filter.rb +5 -9
  24. data/app/models/dc_image.rb +1 -1
  25. data/app/models/dc_memory.rb +2 -2
  26. data/app/models/dc_setup.rb +111 -0
  27. data/app/models/drgcms_form_fields/datetime_picker.rb +1 -1
  28. data/app/models/drgcms_form_fields/embedded.rb +17 -9
  29. data/app/models/drgcms_form_fields/multitext_autocomplete.rb +44 -36
  30. data/app/models/drgcms_form_fields/select.rb +21 -5
  31. data/app/renderers/dc_big_menu_renderer.rb +18 -20
  32. data/app/renderers/dc_menu_renderer.rb +21 -58
  33. data/app/renderers/dc_simple_menu_renderer.rb +1 -1
  34. data/app/views/cmsedit/_edit_stuff.html.erb +3 -0
  35. data/config/locales/drgcms_en.yml +8 -0
  36. data/config/locales/drgcms_sl.yml +12 -4
  37. data/config/locales/models_en.yml +17 -1
  38. data/config/locales/models_sl.yml +17 -1
  39. data/lib/drg_cms/version.rb +1 -1
  40. data/lib/drg_cms.rb +22 -23
  41. data/lib/generators/new_drg_form/new_drg_form_generator.rb +32 -14
  42. metadata +5 -2
@@ -1,4 +1,3 @@
1
- #coding: utf-8
2
1
  #--
3
2
  # Copyright (c) 2013+ Damjan Rems
4
3
  #
@@ -51,9 +50,7 @@ def find_selected #:nodoc:
51
50
  while ret and ret.parent != nil
52
51
  ret = DcBigMenu.find( ret.parent )
53
52
  end
54
- # return first if not found (something is wrong)
55
- # p ret
56
- ret ||= DcBigMenu.where(dc_site_id: @site._id, parent: nil, active: true).limit(1).first
53
+ ret || DcBigMenu.where(dc_site_id: @site._id, parent: nil, active: true).limit(1).first
57
54
  end
58
55
 
59
56
  ########################################################################
@@ -78,7 +75,7 @@ def link_4menu(item) #:nodoc:
78
75
  html = ''
79
76
  link = item.link
80
77
  link = "/#{@site.route_name}/#{item.page_id}" #if link.blank?
81
- #
78
+
82
79
  html << @parent.link_to(item.picture, link) unless item.picture.blank?
83
80
  html << if !item.caption.blank?
84
81
  # TODO Translation
@@ -91,23 +88,23 @@ end
91
88
  ########################################################################
92
89
  def left_menu
93
90
  html = ''
94
- m = DcBigMenu.find( @parent.page.menu_id )
95
- # Show menu on same level if selected has no children
91
+ menu = DcBigMenu.find( @parent.page.menu_id )
92
+ # Show menu on same level if selected has no children
96
93
  if DcBigMenu.where( parent: @parent.page.menu_id ).limit(1).to_a.size == 0
97
- m = DcBigMenu.find( m.parent )
94
+ menu = DcBigMenu.find( m.parent )
98
95
  end
99
- #
100
- html << "<div class='menu-left-item-top'>#{m.caption}</div>"
101
- DcBigMenu.where( parent: m._id ).sort(order: 1).each do |item|
96
+
97
+ html << "<div class='menu-left-item-top'>#{menu.caption}</div>"
98
+ DcBigMenu.where( parent: menu.id ).order(order: 1).each do |item|
102
99
  html << (item._id == @parent.page.menu_id ? '<div class="menu-left-item-selected">' : '<div class="menu-left-item">')
103
100
  html << link_4menu(item)
104
101
  html << '</div>'
105
102
  end
106
- #
103
+
107
104
  html << "<div class='menu-left-item-bottom'>"
108
- if m.parent
109
- p = DcBigMenu.find( m.parent )
110
- html << "&#9650; #{link_4menu(p)}"
105
+ if menu.parent
106
+ parent = DcBigMenu.find( menu.parent )
107
+ html << "&#9650; #{link_4menu(parent)}"
111
108
  end
112
109
  html << '&nbsp;</div>'
113
110
  end
@@ -124,14 +121,14 @@ def path
124
121
  m = DcBigMenu.find( m.parent )
125
122
  a << m
126
123
  end
127
- #
124
+
128
125
  (a.size - 1).downto(0) do |i|
129
126
  html << "<span id=menu-path-#{a.size - 1 - i}>"
130
127
  html << link_4menu(a[i])
131
128
  html << (i > 0 ? ' &raquo; ' : '') #&rsaquo;&#10132;
132
129
  html << '</span>'
133
130
  end
134
- # Save level to parents params object
131
+ # Save level to parents params object
135
132
  @parent.params[:menu_level] = a.size
136
133
  html
137
134
  end
@@ -144,20 +141,21 @@ def default
144
141
  @selected = find_selected
145
142
  level_0 = DcBigMenu.where(dc_site_id: @site._id, parent: nil, active: true).sort(order: 1).to_a
146
143
  level_0.each do |item|
147
- # menu can be hidden from user
144
+ # menu can be hidden from user
148
145
  can_view, msg = dc_user_can_view(@parent, item)
149
146
  next unless can_view
147
+
150
148
  klas = item.id == @selected.id ? "menu0-selected" : "menu0-item"
151
149
  html << "<li class='#{klas}'>#{ link_4menu(item) }</li>\n"
152
150
  end
153
151
  html << "</ul></div>"
154
- # submenu
152
+ # submenu
155
153
  level_1 = DcBigMenu.where(dc_site_id: @site._id, parent: @selected.id, active: true).sort(order: 1).to_a
156
154
  html << "<div class='menu1-div'><ul>\n"
157
155
  level_1.each do |item1|
158
- # menu can be hidden from user
159
156
  can_view, msg = dc_user_can_view(@parent, item1)
160
157
  next unless can_view
158
+
161
159
  html << " <li class='menu1-item'>#{link_4menu(item1)}</li>\n"
162
160
  end
163
161
  html << '</ul></div>'
@@ -55,7 +55,7 @@ def find_selected
55
55
  top_menu_id = @parent.page.menu_id.split(';')[1] if @parent.page.menu_id.match(';')
56
56
  ret = @menu.dc_menu_items.find(top_menu_id)
57
57
  end
58
- # return first if not found (something is wrong)
58
+ # return first if not found (something is wrong)
59
59
  ret ||= @menu.dc_menu_items[0]
60
60
  end
61
61
 
@@ -64,50 +64,11 @@ end
64
64
  ########################################################################
65
65
  def link_4edit(opts) #:nodoc:
66
66
  html = ''
67
- # return html unless @opts[:edit_mode] > 1
68
-
69
67
  opts.merge!( { controller: 'cmsedit', action: 'edit' } )
70
68
  title = "#{t('drgcms.edit')}: "
71
69
  opts[:title] = "#{title} #{opts[:title]}"
72
70
 
73
- html << '<li>'+dc_link_for_edit(opts)+'</li>'
74
- end
75
-
76
- ########################################################################
77
- # Returns html code required to create single link in a menu. Subroutine of do_menu_level.
78
- ########################################################################
79
- def link_4menu(item)
80
- # prepand to link
81
- link = if !item.link_prepend.blank?
82
- item.link_prepend
83
- elsif !@menu.link_prepend.blank?
84
- @menu.link_prepend
85
- else
86
- ''
87
- end
88
-
89
- if item.link.match('http')
90
- link = item.link
91
- else
92
- link += (item.link[0] == '/' ? '' : '/') + item.link
93
- link = '/' + link unless link[0] == '/' # link should start with '/'
94
- end
95
-
96
- target = item.target.blank? ? nil : item.target
97
- # - in first place won't write caption text
98
- caption = item.caption[0] == '-' ? '' : item.caption.to_s
99
- img_title = item.caption.to_s.sub('-','')
100
- # add picture if picture is not blank
101
- html = ''
102
- if !item.picture.blank?
103
- if item.picture[0,3] == 'fa-'
104
- caption << @parent.fa_icon(item.picture[3,20])
105
- else
106
- html = @parent.link_to( @parent.image_tag(item.picture), link, {title: img_title, target: target} ) rescue ''
107
- end
108
- end
109
- html << @parent.link_to(caption.html_safe, link, {target: target}) unless caption.blank?
110
- html
71
+ html << "<li>#{dc_link_for_edit(opts)}</li>"
111
72
  end
112
73
 
113
74
  ########################################################################
@@ -117,9 +78,9 @@ end
117
78
  # [item] MenuItem.
118
79
  ########################################################################
119
80
  def link_4menu(item)
120
- # just horizontal line
81
+ # just horizontal line
121
82
  return item.caption if item.caption == '<hr>'
122
- # prepand to link
83
+ # prepand to link
123
84
  link = if !item.link_prepend.blank?
124
85
  item.link_prepend
125
86
  elsif !@menu.link_prepend.blank?
@@ -160,27 +121,29 @@ end
160
121
  ########################################################################
161
122
  # Creates HTML code required for submenu on single level. Subroutine of default.
162
123
  ########################################################################
163
- def do_menu_level(menu, options={})
124
+ def do_menu_level(menu, options = {})
164
125
  html = "<ul>"
165
126
  if @opts[:edit_mode] > 1
166
127
  options[:title] = menu.respond_to?('name') ? menu.name : menu.caption # 1. level or submenus
167
- options[:id] = menu._id
128
+ options[:id] = menu._id
168
129
  html << link_4edit(options)
169
130
  end
170
- # sort items acording to :order
131
+ # sort items according to :order
171
132
  menu.dc_menu_items.order_by(order: 1).each do |item|
172
133
  next unless item.active
173
- # menu can be hidden from user
134
+ # menu can be hidden from user
174
135
  can_view, msg = dc_user_can_view(@parent, item)
175
136
  next unless can_view
176
-
177
- html << if item.id == @selected.id
178
- "<li class=\"menu-selected\">#{ link_4menu(item) }"
179
- else
180
- "<li>#{ link_4menu(item) }"
181
- end
182
- # do submenu
183
- if (sub = item.dc_menu_items).size > 0
137
+
138
+ html << if @opts[:path]&.include?(item.link)
139
+ %(<li class="menu-selected">#{ link_4menu(item) })
140
+ elsif item.id == @selected.id
141
+ %(<li class="menu-selected">#{ link_4menu(item) })
142
+ else
143
+ "<li>#{ link_4menu(item) }"
144
+ end
145
+ # do submenu
146
+ if item.dc_menu_items.size > 0
184
147
  if @opts[:edit_mode] > 1
185
148
  opts = options.clone
186
149
  opts['ids'] = (opts['ids'] ? "#{opts['ids']};" : '') + menu._id.to_s
@@ -199,12 +162,12 @@ end
199
162
  ########################################################################
200
163
  def default
201
164
  return "(#{@opts[:name]}) menu not found!" if @menu.nil?
202
- #
165
+
203
166
  @selected = find_selected
204
167
  html = ''
205
- html << "<div id='#{@menu.div_name}'>" unless @menu.div_name.blank?
168
+ html << "<div id='#{@menu.div_name}'>" if @menu.div_name.present?
206
169
  html << do_menu_level(@menu, table: 'dc_menu')
207
- html << "</div>" unless @menu.div_name.blank?
170
+ html << "</div>" if @menu.div_name.present?
208
171
  html
209
172
  end
210
173
 
@@ -162,8 +162,8 @@ def as_responsive
162
162
  items.each do |item|
163
163
  # menu can be hidden from user
164
164
  can_view, msg = dc_user_can_view(@parent, item)
165
- p msg unless can_view
166
165
  next unless can_view
166
+
167
167
  html << "<li class=\"#{klas}#{(item.id == @selected.id) ? 'selected' : 'item'}\">#{ link_4menu(item) }</li>" #
168
168
  end
169
169
  html
@@ -35,6 +35,9 @@
35
35
  {controller: 'dc_common', action: 'paste_clipboard'}, target: 'iframe_cms') %>
36
36
 
37
37
  <%= DrgcmsFormFields::Elfinder.file_manager_url(self) %>
38
+ <span>|</span>
39
+
40
+ <%= link_to(session[:user_name], '/cms/logout', { title: t('drgcms.logout') }) %>
38
41
 
39
42
  </div>
40
43
  </div>
@@ -40,6 +40,7 @@ en:
40
40
  doc_paste_update: Update existing document if document._id exists
41
41
  doc_no_delete: Document can not be deleted!
42
42
  doc_no_update: Document can not be updated!
43
+ doc_no_edit: Document can not be edited!
43
44
  edit_content: Edit content
44
45
  edit_advanced: Advanced edit
45
46
  edit_new_page: Create new page
@@ -53,11 +54,13 @@ en:
53
54
  menu_plus: Show alternative menu
54
55
  not_email: is not valid e-mail address!
55
56
  updated_by_other: Document was updated by other user. Please reenter your data.
57
+ dfs: Double submit error! Returning back in history is prohibited.
56
58
  not_id: Value entered is not ID!
57
59
  cms_main: CMS main tables
58
60
  cms_advanced: CMS advanced
59
61
  search_placeholder: Start typing to search
60
62
  login: Login into CMS
63
+ logout: Logout
61
64
  username: User name
62
65
  password: Password
63
66
  form_error: Error loading form %{form_name}
@@ -99,6 +102,9 @@ en:
99
102
  errors_no: 'No. of errors:'
100
103
  runtime_error: Runtime error!
101
104
  two_chars: type in at least two chars
105
+ print: Print
106
+ export: Export
107
+ result: Result
102
108
 
103
109
  created_by: Created by
104
110
  updated_by: Updated by
@@ -118,6 +124,8 @@ en:
118
124
  category_has_subs: Category can't be deleted, because it contains sub-elements.
119
125
  category_as_tree: Edit in treeview
120
126
 
127
+ iframe_save_to_view: Data must be saved in order to view content
128
+
121
129
  dc_journal:
122
130
  zero_selected: No data selected!
123
131
  restored: Data has been restored.
@@ -32,17 +32,18 @@ sl:
32
32
  not_authorized: Uporabnik nima pravic za to operacijo!
33
33
  doc_disabled: Dokument onemogočen!
34
34
  doc_enabled: Dokument omogočen!
35
- doc_saved: Dokument zapisan!
36
- doc_info: Info
37
- doc_copy_clipboard: Kopija vsebine dokumenta v novem oknu.
38
- doc_paste_clipboard: Obdelaj podatke
35
+ doc_paste_clipboard: Obdelaj podatke
39
36
  doc_paste_title: Ustvari (spremeni) dokumente iz JSON zapisa
40
37
  doc_paste_update: Spremeni obstoječ dokument, če dokument._id obstaja
41
38
  doc_no_delete: Dokumenta ni možno izbrisati!
42
39
  doc_no_update: Dokumenta ni možno spremeniti!
40
+ doc_no_edit: Dokumenta ni možno urejati!
43
41
  edit_content: Urejanje vsebine
44
42
  edit_advanced: Napredno urejanje
45
43
  edit_new_page: Ustvarite novo stran
44
+ doc_saved: Dokument zapisan!
45
+ doc_info: Info
46
+ doc_copy_clipboard: Kopija vsebine dokumenta v novem oknu.
46
47
  edit_new_part: Ustvarite nov element na strani
47
48
  edit_design: 'Uredi: Dizajn'
48
49
  edit_site: 'Uredi: Spletišče'
@@ -53,11 +54,13 @@ sl:
53
54
  menu_plus: Malo drugačen menu
54
55
  not_email: ni veljaven e-naslov!
55
56
  updated_by_other: Dokument je spremenil drug uporabnik. Prosimo ponovite vpis podatkov.
57
+ dfs: Dvojno shranjevanje. Vračanje v zgodovino brskalnika ni dovoljeno.
56
58
  not_id: Vsebina polja ni ključ ID!
57
59
  cms_main: CMS tabele
58
60
  cms_advanced: CMS napredne opcije
59
61
  search_placeholder: Vpišite pojem za iskanje
60
62
  login: Prijava v CMS
63
+ logout: Odjava
61
64
  username: Uporabnik
62
65
  password: Geslo
63
66
  form_error: Napaka pri branju forme %{form_name}
@@ -99,6 +102,9 @@ sl:
99
102
  errors_no: 'Število napak:'
100
103
  runtime_error: Napaka med izvajanjem programa!
101
104
  two_chars: vpišite vsaj dva znaka
105
+ print: Tiskanje
106
+ export: Izvoz
107
+ result: Rezultat
102
108
 
103
109
  created_by: Ustvaril
104
110
  updated_by: Spremenil
@@ -118,6 +124,8 @@ sl:
118
124
  category_has_subs: Kategorije ni mogoče izbrisati, ker vsebuje podrejene elemente.
119
125
  category_as_tree: Uredi v drevesnem pogledu
120
126
 
127
+ iframe_save_to_view: Za prikaz vsebine je potrebno predhodno shraniti podatke.
128
+
121
129
  dc_journal:
122
130
  zero_selected: Ni izbranih podatkov!
123
131
  restored: Podatki so restavrirani.
@@ -590,7 +590,17 @@ en:
590
590
  categories_line: Categories
591
591
  created_by: Uploaded by
592
592
 
593
- # help for forms #####################################################
593
+ dc_setup:
594
+ tabletitle: Applications settings
595
+ tab0: Options
596
+ tab00: Form
597
+
598
+ name: Setup name
599
+ form: Form
600
+ data: Data
601
+ editors: Editors
602
+
603
+ # help for forms ##############################################################################################
594
604
 
595
605
  help:
596
606
  dc_site:
@@ -1006,3 +1016,9 @@ en:
1006
1016
  size_s: Dimension for small size image
1007
1017
  categories: Categories for later searching of image
1008
1018
  created_by: Image was uploaded by
1019
+
1020
+ dc_setup:
1021
+ name: Setup name (typically application or module name)
1022
+ form: Form definition for entering settings. Edit fields must be defined on tabs
1023
+ data: Actual data saved
1024
+ editors: List of users, which can edit this setup beside administrators
@@ -604,6 +604,16 @@ sl:
604
604
  categories_line: Kategorije
605
605
  created_by: Naložil
606
606
 
607
+ dc_setup:
608
+ tabletitle: Tabela nastavitev aplikacij
609
+ tab0: Nastavitve
610
+ tab00: Form
611
+
612
+ name: Naziv nastavitev
613
+ form: Obrazec za zajem
614
+ data: Vsebina
615
+ editors: Urejevalci
616
+
607
617
  # help pomoč na obrazcih ####################################################
608
618
 
609
619
  help:
@@ -1027,4 +1037,10 @@ sl:
1027
1037
  size_s: Dimenzije male slike
1028
1038
  categories: Kategorije za poznejše lažje iskanje slike
1029
1039
  created_by: Uporabnik, ki je naložil sliko
1030
- offset: Offset image before resizing. Offset origin is the top left corner.
1040
+ offset: Offset image before resizing. Offset origin is the top left corner.
1041
+
1042
+ dc_setup:
1043
+ name: Naziv nastavitev (tipično ime aplikacije, modula)
1044
+ form: Definicija posamezne nastavitve in obrazec za zajem
1045
+ data: Vsebina nastavitev (kot je shranjena v bazi podatkov)
1046
+ editors: Seznam zaposlenih, ki lahko poleg administratorjev urejajo zapis
@@ -23,5 +23,5 @@
23
23
 
24
24
  # drg_cms gem version
25
25
  module DrgCms #:nodoc:
26
- VERSION = '0.7.0.8'.freeze
26
+ VERSION = '0.7.1.1'.freeze
27
27
  end
data/lib/drg_cms.rb CHANGED
@@ -27,7 +27,7 @@ end
27
27
 
28
28
  ###############################################################################
29
29
  # When new plugin with its own DRG forms is added to application, path to
30
- # forms directory must be send to DrgCms module. Paths are saved into @@paths hash variable.
30
+ # forms directory must be send to DrgCms module. Paths are saved into internal @@paths variable.
31
31
  #
32
32
  # Adding path is best done in plugin module initialization code.
33
33
  #
@@ -40,17 +40,14 @@ end
40
40
  # module MyPlugin
41
41
  # end
42
42
  #
43
- # DrgCms.add_forms_path File.expand_path("../../app/forms", __FILE__)
43
+ # DrgCms.add_forms_path(Rails.root.join('app/forms'), Rails.root.join('app/reports/forms'))
44
44
  ###############################################################################
45
- def self.add_forms_path(path)
45
+ def self.add_forms_path(*paths)
46
46
  if @@paths[:forms].nil?
47
- @@paths[:forms] = []
48
- # default application forms path
49
- # @@paths[:forms] << Rails.root.join('app/forms')
50
- # DrgCms forms path
51
- @@paths[:forms] << File.expand_path("../../app/forms", __FILE__)
47
+ # DrgCms own forms path by default
48
+ @@paths[:forms] = [File.expand_path("../../app/forms", __FILE__)]
52
49
  end
53
- @@paths[:forms] << path
50
+ @@paths[:forms] += paths
54
51
  end
55
52
 
56
53
  ###############################################################################
@@ -77,8 +74,6 @@ end
77
74
  ###############################################################################
78
75
  def self.add_patches_path(path)
79
76
  self.add_path(:patches, path)
80
- # Dir["#{path}/**/*.rb"].each { |path| p path; require_dependency path }
81
- # Dir["#{path}/**/*.rb"].each { |file| p file; require file }
82
77
  end
83
78
 
84
79
  ###############################################################################
@@ -183,14 +178,18 @@ end
183
178
  # @return [Object] Data returned from cache
184
179
  ####################################################################
185
180
  def self.cache_read(keys)
186
- if redis_cache_store?
187
- keys = keys.dup
188
- first = keys.shift
189
- data = Rails.cache.redis.hget(first, keys.join(''))
190
- data ? Marshal.load(data) : nil
191
- else
192
- Rails.cache.read(keys.join(''))
193
- end
181
+ data = if redis_cache_store?
182
+ tmp_keys = keys.dup
183
+ first_key = tmp_keys.shift
184
+ cached = Rails.cache.redis.hget(first_key, tmp_keys.join(''))
185
+ cached ? Marshal.load(cached) : nil
186
+ else
187
+ Rails.cache.read(keys.join(''))
188
+ end
189
+ return data if data
190
+ return nil unless block_given?
191
+
192
+ self.cache_write(keys, yield)
194
193
  end
195
194
 
196
195
  ####################################################################
@@ -203,9 +202,9 @@ end
203
202
  ####################################################################
204
203
  def self.cache_write(keys, data)
205
204
  if redis_cache_store?
206
- keys = keys.dup
207
- first = keys.shift
208
- Rails.cache.redis.hset(first, keys.join(''), Marshal.dump(data))
205
+ tmp_keys = keys.dup
206
+ first_key = tmp_keys.shift
207
+ Rails.cache.redis.hset(first_key, tmp_keys.join(''), Marshal.dump(data))
209
208
  else
210
209
  Rails.cache.write(keys.join(''), data)
211
210
  end
@@ -222,7 +221,7 @@ end
222
221
  # @return [Object] data document.
223
222
  ####################################################################
224
223
  def self.cached(model, id)
225
- Mongoid::QueryCache.cache { model.find(id) }
224
+ id ? Mongo::QueryCache.cache { model.find(id) } : nil
226
225
  end
227
226
 
228
227
  ###############################################################################
@@ -147,22 +147,24 @@ end
147
147
  ###########################################################################
148
148
  #
149
149
  ###########################################################################
150
- def form_field(field, index, offset)
151
- helper = I18n.t("helpers.label.#{@file_name}.choices4_#{field}")
150
+ def form_field(field_name, index, offset, field_type)
151
+ helper = I18n.t("helpers.label.#{@file_name}.choices4_#{field_name}")
152
152
  type, eval = 'select',''
153
- if helper.class == Hash or helper.match( 'translation missing' )
154
- if field[-3,3] == '_id'
155
- eval = "eval: dc_choices4('#{field[0,field.size-3]}','change_to_description_field_name','_id')\n"
153
+ if helper.class == Hash || helper.match( 'Translation missing' )
154
+ if field_name[-3, 3] == '_id'
155
+ eval = "eval: dc_choices4('#{field_name[0, field_name.size - 3]}', 'description_field_name', 'id')\n"
156
+ elsif field_type.match('Boolean')
157
+ type = 'check_box'
156
158
  else
157
159
  type = 'text_field'
158
160
  end
159
161
  end
160
- #
162
+
161
163
  yml = ' '*offset
162
164
  yml << "#{index}:\n"
163
165
  offset += 2
164
- #
165
- yml << ' '*offset + "name: #{field}\n"
166
+
167
+ yml << ' '*offset + "name: #{field_name}\n"
166
168
  yml << ' '*offset + "type: #{type}\n"
167
169
  yml << ' '*offset + eval if eval.size > 0
168
170
  yml << ' '*offset + "size: 50\n" if type == 'text_field'
@@ -196,40 +198,56 @@ end
196
198
  #
197
199
  ###########################################################################
198
200
  def form_fields_options
199
- forbidden = ['_id','created_by','updated_by','created_at','updated_at']
201
+ forbidden = %w[_id created_by updated_by created_at updated_at]
200
202
  tab_index = 1
201
203
  field_index = 0
202
204
  if options.tabs?
203
205
  yml = " tabs:\n"
204
- @model.attribute_names.each do |attr_name|
206
+ @model.fields.each do |attr_name, field|
205
207
  next if forbidden.include?(attr_name)
208
+
206
209
  if field_index%100 == 0
207
210
  yml << " tab#{tab_index}:\n"
208
211
  field_index = 0
209
212
  tab_index += 1
210
213
  end
211
214
  field_index += 10
212
- yml << form_field(attr_name, field_index, 6)
215
+ yml << form_field(attr_name, field_index, 6, field.options[:type].to_s)
213
216
  end
214
217
  yml << " tab#{tab_index}:\n"
215
218
  yml << embedded_form_field(6)
219
+
216
220
  else
217
221
  yml = " fields:\n"
218
- @model.attribute_names.each do |attr_name|
222
+ @model.fields.each do |attr_name, field|
219
223
  next if forbidden.include?(attr_name)
224
+
220
225
  field_index += 10
221
- yml << form_field(attr_name, field_index, 4)
226
+ yml << form_field(attr_name, field_index, 4, field.options[:type].to_s)
222
227
  end
223
228
  yml << embedded_form_field(4)
224
229
  end
225
230
  yml
226
231
  end
227
232
 
233
+ ###########################################################################
234
+ #
235
+ ###########################################################################
236
+ def xform_fields_options
237
+ forbidden = %w[_id created_by updated_by created_at updated_at]
238
+ tab_index = 1
239
+ field_index = 0
240
+ @model.fields.each do |name, field|
241
+ pp [name, field.options[:type].to_s]
242
+ #pp [name, type]
243
+ end
244
+ end
245
+
228
246
  ###########################################################################
229
247
  #
230
248
  ###########################################################################
231
249
  def localize_options
232
- forbidden = ['_id','created_by','updated_by','created_at','updated_at']
250
+ forbidden = %w[_id created_by updated_by created_at updated_at]
233
251
  yml =<<EOT
234
252
 
235
253
  #################################################################
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.7.0.8
4
+ version: 0.7.1.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: 2023-07-02 00:00:00.000000000 Z
11
+ date: 2024-03-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -223,6 +223,7 @@ files:
223
223
  - app/controls/dc_page_control.rb
224
224
  - app/controls/dc_poll_result_control.rb
225
225
  - app/controls/dc_report.rb
226
+ - app/controls/dc_setup_control.rb
226
227
  - app/controls/design_element_settings_control.rb
227
228
  - app/forms/all_options.yml
228
229
  - app/forms/cms_forms.yml
@@ -264,6 +265,7 @@ files:
264
265
  - app/forms/dc_poll_result_export.yml
265
266
  - app/forms/dc_removed_url.yml
266
267
  - app/forms/dc_seo.yml
268
+ - app/forms/dc_setup.yml
267
269
  - app/forms/dc_simple_menu.yml
268
270
  - app/forms/dc_simple_menu_item.yml
269
271
  - app/forms/dc_site.yml
@@ -320,6 +322,7 @@ files:
320
322
  - app/models/dc_poll_item.rb
321
323
  - app/models/dc_poll_result.rb
322
324
  - app/models/dc_removed_url.rb
325
+ - app/models/dc_setup.rb
323
326
  - app/models/dc_simple_menu.rb
324
327
  - app/models/dc_simple_menu_item.rb
325
328
  - app/models/dc_site.rb