drg_cms 0.7.0.8 → 0.7.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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