drg_cms 0.7.0.2 → 0.7.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/drg_cms/drg_cms.js +63 -18
  3. data/app/assets/javascripts/drg_cms/jquery.bpopup.js +372 -0
  4. data/app/assets/javascripts/drg_cms_application.js +1 -1
  5. data/app/assets/javascripts/drg_cms_cms.js +1 -1
  6. data/app/assets/stylesheets/drg_cms/drg_cms.css +37 -5
  7. data/app/assets/stylesheets/drg_cms/select-multiple.css +2 -2
  8. data/app/controllers/cmsedit_controller.rb +22 -24
  9. data/app/controllers/dc_application_controller.rb +8 -8
  10. data/app/controllers/dc_common_controller.rb +9 -6
  11. data/app/controllers/dc_main_controller.rb +0 -1
  12. data/app/controls/{dc_category_control.rb → dc_gallery_control.rb} +15 -30
  13. data/app/controls/dc_image_control.rb +180 -0
  14. data/app/controls/dc_page_control.rb +3 -3
  15. data/app/controls/dc_poll_result_control.rb +7 -8
  16. data/app/controls/dc_report.rb +9 -4
  17. data/app/controls/design_element_settings_control.rb +88 -37
  18. data/app/forms/all_options.yml +18 -7
  19. data/app/forms/cms_menu.yml +7 -2
  20. data/app/forms/dc_gallery.yml +1 -1
  21. data/app/forms/dc_image.yml +122 -0
  22. data/app/forms/dc_image_search.yml +72 -0
  23. data/app/forms/dc_page.yml +11 -8
  24. data/app/forms/dc_steps_template.yml +2 -1
  25. data/app/helpers/cms_common_helper.rb +24 -16
  26. data/app/helpers/cms_edit_helper.rb +26 -33
  27. data/app/helpers/cms_helper.rb +21 -5
  28. data/app/helpers/cms_index_helper.rb +53 -38
  29. data/app/helpers/dc_application_helper.rb +64 -72
  30. data/app/helpers/dc_image_helper.rb +127 -0
  31. data/app/models/concerns/dc_policy_rule_concern.rb +1 -1
  32. data/app/models/concerns/dc_user_concern.rb +12 -4
  33. data/app/models/dc_category.rb +12 -0
  34. data/app/models/dc_design.rb +5 -4
  35. data/app/models/dc_filter.rb +19 -18
  36. data/app/models/dc_image.rb +237 -0
  37. data/app/models/dc_internals.rb +5 -9
  38. data/app/models/dc_policy_role.rb +8 -8
  39. data/app/models/drgcms_form_fields/drgcms_field.rb +9 -26
  40. data/app/models/drgcms_form_fields/embedded.rb +11 -8
  41. data/app/models/drgcms_form_fields/journal_diff.rb +2 -2
  42. data/app/models/drgcms_form_fields/multitext_autocomplete.rb +51 -47
  43. data/app/models/drgcms_form_fields/select.rb +20 -14
  44. data/app/models/drgcms_form_fields/text_with_select.rb +5 -9
  45. data/app/renderers/dc_gallery_renderer.rb +10 -4
  46. data/app/renderers/dc_page_renderer.rb +7 -7
  47. data/app/renderers/dc_poll_renderer.rb +13 -12
  48. data/app/views/cmsedit/_edit_stuff.html.erb +1 -1
  49. data/app/views/cmsedit/edit.html.erb +1 -1
  50. data/app/views/cmsedit/index.html.erb +1 -1
  51. data/app/views/cmsedit/new.html.erb +1 -0
  52. data/config/locales/drgcms_en.yml +14 -2
  53. data/config/locales/drgcms_sl.yml +13 -2
  54. data/config/locales/models_en.yml +33 -0
  55. data/config/locales/models_sl.yml +44 -1
  56. data/drg_cms.gemspec +1 -1
  57. data/lib/drg_cms/version.rb +1 -1
  58. data/lib/drg_cms.rb +19 -5
  59. data/lib/generators/convert_to_ar/USAGE +8 -0
  60. data/lib/generators/convert_to_ar/convert_to_ar_generator.rb +158 -0
  61. metadata +16 -10
  62. data/app/assets/javascripts/drg_cms/jquery.bpopup.min.js +0 -7
  63. data/app/views/layouts/__cmsedit.html.erb +0 -16
@@ -78,15 +78,18 @@ def render
78
78
  @html << "<iframe class='iframe_embedded' id='if_#{@yaml['name']}' name='if_#{@yaml['name']}' #{html}></iframe>"
79
79
  unless @record.new_record?
80
80
  url = @parent.url_for(opts)
81
- data = if @yaml['load'].nil? || @yaml['load'].match('default')
82
- "src"
83
- else
84
- "data-src-#{@yaml['load']}"
85
- end
86
- @js << %Q[
81
+ attributes = case
82
+ when @yaml['load'].nil? || @yaml['load'].match('default')
83
+ "'src', '#{url}'"
84
+ when @yaml['load'].match('delay')
85
+ "'data-src-#{@yaml['load']}', '#{url}'"
86
+ when @yaml['load'].match('always')
87
+ "{'data-src-#{@yaml['load']}': '#{url}', src: '#{url}'}"
88
+ end
89
+ @js << %(
87
90
  $(document).ready( function() {
88
- $('#if_#{@yaml['name']}').attr('#{data}', '#{url}');
89
- });]
91
+ $('#if_#{@yaml['name']}').attr(#{attributes});
92
+ });)
90
93
  end
91
94
  self
92
95
  end
@@ -49,8 +49,8 @@ def render
49
49
  old_value = v.class == Array ? v[0] : v
50
50
  new_value = v.class == Array ? v[1] : v
51
51
  @html << "<div style='background-color: #eee;'>#{@parent.check_box('select', k)} #{k}</div>
52
- <div style='background-color: #fcc;'>-<br>#{old_value}</div>
53
- <div style='background-color: #cfc;'>+<br>#{new_value}</div><br>"
52
+ <div style='background-color: #fcc;'>-<br>#{old_value.to_s.gsub("\n", '<br>')}</div>
53
+ <div style='background-color: #cfc;'>+<br>#{new_value.to_s.gsub("\n", '<br>')}</div><br>"
54
54
  end
55
55
  @html << '</div>'
56
56
  self
@@ -24,12 +24,12 @@ module DrgcmsFormFields
24
24
 
25
25
  ###########################################################################
26
26
  # Implementation of multitext_autocomplete DRG Form field.
27
- #
27
+ #
28
28
  # multitext_autocomplete field is complex data entry field which uses autocomplete
29
29
  # function when selecting multiple values for MongoDB Array field. Array typically holds
30
- # id's of selected documents and control typically displays value of the field name
30
+ # id's of selected documents and control typically displays value of the field name
31
31
  # defined by search options.
32
- #
32
+ #
33
33
  # ===Form options:
34
34
  # * +name:+ field name (required)
35
35
  # * +type:+ multitext_autocomplete (required)
@@ -40,12 +40,12 @@ module DrgcmsFormFields
40
40
  # * collection_name.search_field_name.method_name; When searching is more complex custom search
41
41
  # method may be defined in CollectionName model which will provide result set for search.
42
42
  # * +with_new+ Will add an icon for shortcut to add new document to collection
43
- #
43
+ #
44
44
  # Form example:
45
45
  # 90:
46
46
  # name: kats
47
47
  # type: multitext_autocomplete
48
- # search: dc_category.name
48
+ # search: dc_category.name
49
49
  # with_new: model_name
50
50
  # size: 30
51
51
  ###########################################################################
@@ -55,10 +55,11 @@ class MultitextAutocomplete < DrgcmsField
55
55
  # Returns value for readonly field
56
56
  ###########################################################################
57
57
  def ro_standard(table, search)
58
- result = ''
59
- table = table.classify.constantize
60
58
  return self if @record[@yaml['name']].nil?
61
- # when field name and method are defined together
59
+
60
+ result = ''
61
+ table = table.classify.constantize
62
+ # when field name and method are defined together
62
63
  search = search.split('.').first if search.match('.')
63
64
  @record[@yaml['name']].each do |element|
64
65
  result << table.find(element)[search] + '<br>'
@@ -69,8 +70,8 @@ end
69
70
  ###########################################################################
70
71
  # Render multitext_autocomplete field html code
71
72
  ###########################################################################
72
- def render
73
- # search field name
73
+ def render
74
+ # get field name
74
75
  if @yaml['search'].class == Hash
75
76
  table = @yaml['search']['table']
76
77
  field_name = @yaml['search']['field']
@@ -82,27 +83,28 @@ def render
82
83
  else # search and table name are separated
83
84
  search = field_name = @yaml['search']
84
85
  end
85
- # determine table name
86
+ # get table name
86
87
  if @yaml['table']
87
88
  table = if @yaml['table'].class == String
88
- @yaml['table']
89
- # eval(how_to_get_my_table_name)
90
- elsif @yaml['table']['eval']
91
- eval @yaml['table']['eval']
92
- else
93
- @parent.logger.error "Field #{@yaml['name']}: Invalid table parameter!"
94
- nil
95
- end
89
+ @yaml['table']
90
+ # eval(how_to_get_my_table_name)
91
+ elsif @yaml['table']['eval']
92
+ eval @yaml['table']['eval']
93
+ else
94
+ Rails.logger.error "Field #{@yaml['name']}: Invalid table parameter!"
95
+ nil
96
+ end
96
97
  end
97
- unless (table and search)
98
- @html << 'Table or search field not defined!'
98
+
99
+ if table.blank? || search.blank?
100
+ @html << 'Table or search field not defined!'
99
101
  return self
100
102
  end
101
- #
102
- # TODO check if table exists
103
+
104
+ # TODO check if table exists
103
105
  collection = table.classify.constantize
104
106
  unless @record.respond_to?(@yaml['name'])
105
- @html << "Invalid field name: #{@yaml['name']}"
107
+ @html << "Invalid field name: #{@yaml['name']}"
106
108
  return self
107
109
  end
108
110
  # put field to enter search data on form
@@ -117,44 +119,44 @@ def render
117
119
  # text field for autocomplete
118
120
  @html << '<span class="dc-text-autocomplete">' << @parent.text_field(record, _name, @yaml['html']) << '<span></span></span>'
119
121
  # direct link for adding new documents to collection
120
- if @yaml['with_new'] and !@readonly
121
- @html << ' ' +
122
+ if @yaml['with_new'] && !@readonly
123
+ @html << ' ' +
122
124
  @parent.fa_icon('plus-square-o', class: 'in-edit-add', title: t('drgcms.new'),
123
- style: "vertical-align: top;", 'data-table' => @yaml['with_new'] )
125
+ style: "vertical-align: top;", 'data-table' => @yaml['with_new'] )
124
126
  end
125
127
  # div to list active selections
126
128
  @html << "<div id =\"#{record}#{@yaml['name']}\">"
127
- # find value for each field inside categories
129
+ # find value for each field inside categories
128
130
  unless @record[@yaml['name']].nil?
129
131
  @record[@yaml['name']].each do |element|
130
- # this is quick and dirty trick. We have model dc_big_table which can be used for retrive
131
- # more complicated options
132
+ # this is quick and dirty trick. We have model dc_big_table which can be used for retrive
133
+ # more complicated options
132
134
  # TODO retrieve choices from big_table
133
135
  rec = if table == 'dc_big_table'
134
136
  collection.find(@yaml['name'], @parent.session)
135
137
  else
136
138
  collection.find(element)
137
139
  end
138
- # Related data is missing. It happends.
140
+ # Related data is missing. It happends.
139
141
  @html << if rec
140
142
  link = @parent.link_to(@parent.fa_icon('remove_circle', class: 'dc-red'), '#',
141
- onclick: "$('##{rec.id}').hide(); var v = $('##{record}_#{@yaml['name']}_#{rec.id}'); v.val(\"-\" + v.val());return false;")
143
+ onclick: %($('##{rec.id}').hide(); var v = $('##{record}_#{@yaml['name']}_#{rec.id}'); v.val("-" + v.val());return false;))
142
144
  link = @parent.fa_icon('check', class: 'dc-green') if @readonly
143
145
  field = @parent.hidden_field(record, "#{@yaml['name']}_#{rec.id}", value: element)
144
- "<div id=\"#{rec.id}\" style=\"padding:4px;\">#{link} #{rec.send(field_name)}<br>#{field}</div>"
146
+ %(<div id="#{rec.id}" style="padding:4px;">#{link} #{rec.send(field_name)}<br>#{field}</div>)
145
147
  else
146
148
  '** error **'
147
149
  end
148
150
  end
149
151
  end
150
152
  @html << "</div></div>"
151
- # Create text for div to be added when new category is selected
153
+ # Create text for div to be added when new category is selected
152
154
  link = @parent.link_to(@parent.fa_icon('remove_circle', class: 'dc-red'), '#',
153
155
  onclick: "$('#rec_id').hide(); var v = $('##{record}_#{@yaml['name']}_rec_id'); v.val(\"-\" + v.val());return false;")
154
156
  field = @parent.hidden_field(record, "#{@yaml['name']}_rec_id", value: 'rec_id')
155
157
  one_div = "<div id=\"rec_id\" style=\"padding:4px;\">#{link} rec_search<br>#{field}</div>"
156
-
157
- # JS stuff
158
+
159
+ # JS stuff
158
160
  @js << <<EOJS
159
161
  $(document).ready(function() {
160
162
  $("##{record}_#{_name}").autocomplete( {
@@ -173,10 +175,12 @@ $(document).ready(function() {
173
175
  },
174
176
  change: function (event, ui) {
175
177
  var div = '#{one_div}';
176
- div = div.replace(/rec_id/g, ui.item.id)
177
- div = div.replace('rec_search', ui.item.value)
178
- $("##{record}#{@yaml['name']}").append(div);
179
- $("##{record}_#{_name}").val('');
178
+ if (ui.item != null) {
179
+ div = div.replace(/rec_id/g, ui.item.id)
180
+ div = div.replace('rec_search', ui.item.value)
181
+ $("##{record}#{@yaml['name']}").append(div);
182
+ $("##{record}_#{_name}").val('');
183
+ }
180
184
  $("##{record}_#{_name}").focus();
181
185
  },
182
186
  minLength: 2
@@ -184,20 +188,20 @@ $(document).ready(function() {
184
188
  });
185
189
  EOJS
186
190
 
187
- self
191
+ self
188
192
  end
189
193
 
190
194
  ###########################################################################
191
- # Class method for retrieving data from multitext_autocomplete form field.
195
+ # Class method for retrieving data from multitext_autocomplete form field. Values are sabed
196
+ # in parameters as name_id => id
192
197
  ###########################################################################
193
198
  def self.get_data(params, name)
194
199
  r = []
195
- params['record'].each do |k,v|
196
- # if it starts with - then it was removed
197
- r << BSON::ObjectId.from_string(v) if k.match("#{name}_") and v[0,1] != '-'
200
+ params['record'].each do |k, v|
201
+ # if it starts with - then it was removed
202
+ r << BSON::ObjectId.from_string(v) if k.starts_with?("#{name}_") && v[0] != '-'
198
203
  end
199
- r.uniq!
200
- r
204
+ r.uniq
201
205
  end
202
206
 
203
207
  end
@@ -80,9 +80,9 @@ class Select < DrgcmsField
80
80
  def choices_in_helper(helper = nil)
81
81
  helper ||= "helpers.label.#{@form['table']}.choices4_#{@yaml['name']}"
82
82
  c = t(helper)
83
- if c.match( 'translation missing' )
83
+ if c.match(/translation missing/i)
84
84
  helper = "choices_for_#{@form['table']}_#{@yaml['name']}"
85
- return "Error. #{helper} not defined" if c.match( 'translation missing' )
85
+ return "Error. #{helper} not defined" if c.match(/translation missing/i)
86
86
  end
87
87
  c
88
88
  end
@@ -95,21 +95,27 @@ def choices_in_eval(e)
95
95
  e.strip!
96
96
  if @yaml['depend'].nil?
97
97
  method = e.split(/\ |\(/).first
98
- return eval(e) if respond_to?(method) # id method defined here
99
- return eval('@parent.' + e) if @parent.respond_to?(method) # is method defined in helpers
98
+ return eval(e) if respond_to?(method) # is method defined here
99
+ return eval('@parent.' + e) if @parent.respond_to?(method) # is method defined in helper methods
100
100
  # eval whatever it is there
101
101
  eval e
102
102
  else
103
- # add event listener to depend field
104
- @js << %(
105
- $(document).ready(function() {
106
- $('#record_#{@yaml['depend']}').change( function(e) { update_select_depend('record_#{@yaml['name']}', 'record_#{@yaml['depend']}','#{e}');});
107
- $('#_record_#{@yaml['depend']}').change( function(e) { update_select_depend('record_#{@yaml['name']}', '_record_#{@yaml['depend']}','#{e}');});
108
- });
103
+ # add event listener to depend field(s)
104
+ depend_value = ''
105
+ @js << "\n$(document).ready(function() {\n"
106
+ @yaml['depend'].split(',') do |depend|
107
+ depend.strip!
108
+ depend_value << ',' if depend_value.present?
109
+ # depend field might be virtual field. It's value should be set in params
110
+ depend_value << (depend[0] == '_' ? @parent.params["p_#{depend}"] : @record[depend]).to_s
111
+ next if depend == @yaml['name'] # self may be sent, but don't listen to change event
112
+
113
+ @js << %(
114
+ $('#record_#{depend}').change( function(e) { update_select_depend('record_#{@yaml['name']}', '#{@yaml['depend']}', '#{e}');});
115
+ $('#_record_#{depend}').change( function(e) { update_select_depend('record_#{@yaml['name']}', '#{@yaml['depend']}', '#{e}');});
109
116
  )
110
- # depend field might be virtual field. It's value should be set in params
111
- depend_value = @yaml['depend'][0] == '_' ? @parent.params["p_#{@yaml['depend']}"] : @record[@yaml['depend']]
112
-
117
+ end
118
+ @js << + "});\n"
113
119
  e << " '#{depend_value}'"
114
120
  eval e
115
121
  end
@@ -132,7 +138,7 @@ def get_choices
132
138
 
133
139
  choices.chomp.split(',').map { |e| e.match(':') ? e.split(':') : e }
134
140
  rescue Exception => e
135
- Rails.logger.debug "\nError in select eval. #{e.message}\n"
141
+ Rails.logger.error "\nError in select eval. #{e.message}\n"
136
142
  Rails.logger.debug(e.backtrace.join($/)) if Rails.env.development?
137
143
  ['error'] # return empty array when error occures
138
144
  end
@@ -65,9 +65,7 @@ class TextWithSelect < Select
65
65
  # Render text_with_select field html code
66
66
  ###########################################################################
67
67
  def render
68
- #return ro_standard if @readonly
69
- set_initial_value('html','value')
70
-
68
+ set_initial_value
71
69
  record = record_text_for(@yaml['name'])
72
70
  @html << @parent.text_field( record, @yaml['name'], @yaml['html'])
73
71
  @yaml['html']['class'] ||= ''
@@ -80,13 +78,11 @@ def render
80
78
  # javascript to update text field if new value is selected in select field
81
79
  @js =<<EOJS
82
80
  $(document).ready(function() {
83
- $('##{@yaml['name']}_').change( function() {
84
- if ($(this).val().toString().length > 0) {
85
- $('##{record}_#{@yaml['name']}').val( $(this).val() );
81
+ $('##{@yaml['name']}_').on("click", function() {
82
+ $('##{record}_#{@yaml['name']}').val( $(this).val().toString() );
86
83
  $('##{record}_#{@yaml['name']}').trigger("change");
87
- }
88
- $('##{record}_#{@yaml['name']}').focus();
89
- });
84
+ $('##{record}_#{@yaml['name']}').focus();
85
+ });
90
86
  });
91
87
  EOJS
92
88
  self
@@ -52,14 +52,20 @@ end
52
52
  def default
53
53
  can_view, msg = dc_user_can_view(@parent, @page)
54
54
  return msg unless can_view
55
- #
55
+
56
56
  html = '<div class="picture-gallery"><ul>'
57
57
  DcGallery.where(doc_id: @opts[:doc_id], active: true).order_by(order: 1).each do |picture|
58
58
  html << '<li>'
59
- html << edit_menu(picture) if @opts[:edit_mode] > 1
59
+ if @opts[:edit_mode] > 1
60
+ html << edit_menu(picture)
61
+ html << %(
62
+ <span class="dc-inline-link dc-link-ajax" data-url="/cmsedit/run?control=DcGalleryControl.picture_remove;id=#{picture.id};table=DcGallery"
63
+ data-confirm="#{t('drgcms.confirm_delete')}" title="#{t('drgcms.delete')}">
64
+ <i class="mi-o mi-delete"></i>
65
+ </span>)
66
+ end
60
67
  html << "#{@parent.link_to(i@parent.mage_tag(picture.thumbnail, title: picture.title), picture.picture)}<li>"
61
68
  end
62
- #
63
69
  html << '</ul></div>'
64
70
  end
65
71
 
@@ -88,7 +94,7 @@ def edit_menu(picture)
88
94
  opts[:id] = picture.id
89
95
  opts[:table] = 'dc_gallery'
90
96
 
91
- '<li>'+dc_link_for_edit(opts)+'</li>'
97
+ '<li>' + dc_link_for_edit(opts) + '</li>'
92
98
  end
93
99
 
94
100
 
@@ -41,7 +41,7 @@ include CmsCommonHelper
41
41
  ########################################################################
42
42
  # Object initialization.
43
43
  ########################################################################
44
- def initialize( parent, opts={} ) #:nodoc:
44
+ def initialize( parent, opts = {} ) #:nodoc:
45
45
  @parent = parent
46
46
  @opts = opts
47
47
  @page = @parent.page
@@ -74,11 +74,11 @@ def iframe
74
74
  return '' if @page.if_url.blank?
75
75
 
76
76
  html = "\n<iframe"
77
- html << " id=\"#{@page.if_id}\"" unless @page.if_id.blank?
78
- html << " class=\"#{@page.if_class}\"" unless @page.if_class.blank?
77
+ html << " id=\"#{@page.if_id}\"" if @page.if_id.present?
78
+ html << " class=\"#{@page.if_class}\"" if @page.if_class.present?
79
79
  html << " border=\"#{@page.if_border}\""
80
- html << " height=\"#{@page.if_height}\"" unless @page.if_height.blank?
81
- html << " width=\"#{@page.if_width}\"" unless @page.if_width.blank?
80
+ html << " height=\"#{@page.if_height}\"" if @page.if_height.present?
81
+ html << " width=\"#{@page.if_width}\"" if @page.if_width.blank?
82
82
  html << " scrolling=\"#{@page.if_scroll}\""
83
83
  # Parameters
84
84
  parameters = @page.if_url.match(/\?/) ? '' : '?'
@@ -88,7 +88,7 @@ def iframe
88
88
  val = @parent.dc_internal_var(value['object'], value['method'])
89
89
  parameters << "&#{key}=#{val}" if val # only when not nil
90
90
  end
91
- url = @page.if_url + (parameters.size > 1 ? parameters : '')
91
+ url = @page.if_url + (parameters.blank? ? '' : parameters)
92
92
  html << "src=\"#{url}\" ></iframe>\n"
93
93
  html
94
94
  end
@@ -106,7 +106,7 @@ def default
106
106
  html << @page.body
107
107
  # render poll if defined
108
108
  if @page.dc_poll_id
109
- @opts.merge!(:poll_id => @page.dc_poll_id, :return_to => @parent.request.url, method: nil)
109
+ @opts.merge!(poll_id: @page.dc_poll_id, return_to: @parent.request.url, method: nil)
110
110
  comment = DcPollRenderer.new(@parent, @opts)
111
111
  html << "<div class='wrap row'>#{comment.render_html}</div>"
112
112
  @css << "\n#{comment.render_css}"
@@ -110,7 +110,7 @@ def do_one_item(poll, yaml)
110
110
  if !@end_of_data
111
111
  html << (poll.display == 'lr' ? "</div><br>\n" : "</div>\n")
112
112
  # captcha
113
- if poll.captcha_type.to_s.size > 1
113
+ if poll.captcha_type.present?
114
114
  @opts.merge!(:captcha_type => poll.captcha_type)
115
115
  captcha = DcCaptchaRenderer.new(@parent, @opts)
116
116
  html << captcha.render_html
@@ -157,7 +157,7 @@ end
157
157
  ########################################################################
158
158
  def default
159
159
  # poll_id may be defined in params or opts
160
- poll_id = @opts[:poll_id] || @parent.params[:poll_id]
160
+ poll_id = @opts[:id] || @opts[:poll_id] || @parent.params[:poll_id]
161
161
  return '<br>Poll id is not defined?<br>' if poll_id.nil?
162
162
 
163
163
  poll = DcPoll.find(poll_id)
@@ -191,18 +191,19 @@ def default
191
191
  html << %(<div class="poll-div">\n)
192
192
  # edit link
193
193
  if @opts[:edit_mode] > 1
194
- @opts[:editparams].merge!( controller: 'cmsedit', action: 'edit', id: poll._id, table: 'dc_poll', form_name: 'dc_poll' )
194
+ @opts[:editparams].merge!( controller: :cmsedit, action: :edit, id: poll._id, table: :dc_poll, form_name: :dc_poll )
195
195
  @opts[:editparams].merge!(title: "#{t('drgcms.edit')}: #{poll.name}")
196
196
  @opts[:editparams].delete(:ids) # this is from page, but it gets in a way
197
197
  html << dc_link_for_edit( @opts[:editparams] )
198
198
  end
199
199
 
200
200
  html << case
201
- when poll.operation == 'poll_submit' then
202
- @parent.form_tag(action: poll.operation, method: :put)
203
- when poll.operation == 'link' then
204
- @parent.form_tag( poll.parameters, method: :put)
205
- end
201
+ when poll.operation == 'poll_submit'
202
+ @parent.form_tag(action: poll.operation, method: :put, return_to: params[:return_to])
203
+ when poll.operation == 'link'
204
+ poll.parameters << "?return_to=#{params[:return_to]}" if params[:return_to]
205
+ @parent.form_tag( poll.parameters, method: :put)
206
+ end
206
207
  # header, - on first position will not display title
207
208
  html << %(<div class="poll-title">#{poll.title}</div>) unless poll.title[0] == '-'
208
209
  html << %(<div class="poll-text">#{poll.sub_text}</div>)
@@ -212,10 +213,10 @@ def default
212
213
  %(<div class="poll-data-div">\n)
213
214
  end
214
215
  # items. Convert each item to yaml
215
- @end_od_data = false
216
+ @end_of_data = false
216
217
  if poll.form.to_s.size < 10
217
218
  items = poll.dc_poll_items
218
- items.sort! { |a,b| a.order <=> b.order }
219
+ items.sort! { |a, b| a.order <=> b.order }
219
220
  items.each do |item|
220
221
  next unless item.active # disabled items
221
222
  # convert options to yaml
@@ -232,12 +233,12 @@ def default
232
233
  html << do_one_item(poll, yaml)
233
234
  end
234
235
  else
235
- yaml = YAML.load(poll.form.gsub('&nbsp;',' ')) # very annoying. They come with copy&paste ;-)
236
+ yaml = YAML.load(poll.form.gsub('&nbsp;', ' ')) # very annoying. They come with copy&paste ;-)
236
237
  # if entered without numbering yaml is returned as Hash otherwise as Array
237
238
  yaml.each { |i| html << do_one_item(poll, (i.class == Hash ? i : i.last)) } #
238
239
  end
239
240
  # hide some fields usefull as parameters
240
- html << @parent.hidden_field_tag('return_to', @opts[:return_to] || @parent.params[:return_to] || @parent.request.url)
241
+ html << @parent.hidden_field_tag('return_to', @opts[:return_to] || @parent.params[:return_to])
241
242
  html << @parent.hidden_field_tag('return_to_error', @parent.request.url )
242
243
  html << @parent.hidden_field_tag('poll_id', poll_id )
243
244
  html << @parent.hidden_field_tag('page_id', @parent.page.id )
@@ -43,7 +43,7 @@
43
43
 
44
44
  <div class="cmsedit-container">
45
45
  <div id="cms-menu">
46
- <%= dc_choices4_cmsmenu.html_safe %>
46
+ <%= dc_cms_menu %>
47
47
  </div>
48
48
 
49
49
  <div class="cmsedit-iframe" style="width: 99%;">
@@ -1,6 +1,6 @@
1
1
  <% dc_form_update %>
2
2
 
3
- <div <%= dc_form_id %>>
3
+ <div <%= dc_form_id %> <%= dc_form_class %> >
4
4
  <%= dc_head_for_form %>
5
5
  <%= dc_table_title dc_edit_title() %>
6
6
 
@@ -1,6 +1,6 @@
1
1
  <% dc_form_update %>
2
2
 
3
- <div <%= dc_form_id %> class="dc-form-frame">
3
+ <div <%= dc_form_id %> <%= dc_form_class('dc-form-frame') %> >
4
4
  <%= dc_title_for_index @records %>
5
5
 
6
6
  <%= dc_actions_for_index %>
@@ -1,6 +1,7 @@
1
1
  <% dc_form_update %>
2
2
 
3
3
  <div <%= dc_form_id %>>
4
+ <%= dc_head_for_form %>
4
5
  <%= dc_table_title dc_new_title %>
5
6
 
6
7
  <%= form_tag(@form_params, method: :post, id: CmsHelper.form_param(params) || CmsHelper.table_param(params),
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2012-2013 Damjan Rems
2
+ # Copyright (c) 2012+ Damjan Rems
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -65,7 +65,8 @@ en:
65
65
  no_class: Class [%{class}] not defined!
66
66
  no_method: Method (helper) [%{method}] not defined!
67
67
  img_alt_not_present: All images in body must have alternative text entered
68
-
68
+ not_valid: Value is not valid!
69
+
69
70
  toggle_cms: Toggle CMS edit/view mode
70
71
  edit: Edit
71
72
  show: Show
@@ -87,6 +88,7 @@ en:
87
88
  save: Save
88
89
  save&back: Save & back
89
90
  save&close: Save & close
91
+ search: Search
90
92
  filter_on: Filter ON
91
93
  filter_off: Filter OFF
92
94
  filter_set: Set filter
@@ -141,3 +143,13 @@ en:
141
143
  1basic: Basic
142
144
  2index: Index
143
145
  3form: Form
146
+
147
+ dc_image:
148
+ wrong_type: Image type not allowed! Types allowed are (jpg jpeg png gif svg webp).
149
+ no_file: Original image file not present. Try to upload image file again.
150
+ invoke: Invoke images manager.
151
+ search: Search and select image
152
+ select: Click to select
153
+ preview: Click to view image
154
+ available: Available image sizes
155
+ offset_error: Enter either X or Y offset.
@@ -64,7 +64,8 @@ sl:
64
64
  img_large: Klik za večjo sliko
65
65
  no_class: Razred (class) [%{class}] ni definiran!
66
66
  no_method: Metoda (helper) [%{method}] ne obstaja!
67
- img_alt_not_present: Vse slike v vsebini morajo imeti vpisano nadomestno besedilo
67
+ img_alt_not_present: Vse slike v vsebini morajo imeti vpisano nadomestno besedilo
68
+ not_valid: Nedovoljena vrednost!
68
69
 
69
70
  toggle_cms: Preklopi med CMS urejanjem in prikazom
70
71
  edit: Urejanje
@@ -87,6 +88,7 @@ sl:
87
88
  save: Shrani
88
89
  save&back: Shrani in nazaj
89
90
  save&close: Shrani in zapri
91
+ search: Išči
90
92
  filter_on: Vklopi filter
91
93
  filter_off: Izklopi filter
92
94
  filter_set: Nastavi filter
@@ -139,4 +141,13 @@ sl:
139
141
  2index: Index
140
142
  3form: Forma
141
143
 
142
-
144
+ dc_image:
145
+ wrong_type: Nedovoljena vrsta slike. Dovoljene so vrste (jpg jpeg png gif svg webp).
146
+ no_file: Nisem našel originalne slike. Predlagam, da sliko ponovno naložite.
147
+ invoke: Zagon iskalnika slik.
148
+ search: Poiščite in izberite sliko
149
+ select: Kliknite za izbiro
150
+ preview: Kliknite za ogled slike
151
+ image: Slika
152
+ available: Velikosti na voljo
153
+ offset_error: Vpišite samo X ali Y zamik.
@@ -570,6 +570,26 @@ en:
570
570
  dc_json_lds: Schema sub element
571
571
  active: Active
572
572
 
573
+ dc_image:
574
+ tabletitle: Images manager
575
+
576
+ upload_file: Upload
577
+ name: File name
578
+ short: Short description
579
+ text: Description text
580
+ keep_original: Keep original
581
+ size_o: Original dimension
582
+ size_l: Large dimension
583
+ size_m: Medium dimension
584
+ size_s: Small dimension
585
+ size_ls: Large dimension
586
+ size_ms: Medium dimension
587
+ size_ss: Small dimension
588
+ categories: Categories
589
+ cats_input: Categories
590
+ categories_line: Categories
591
+ created_by: Uploaded by
592
+
573
593
  # help for forms #####################################################
574
594
 
575
595
  help:
@@ -973,3 +993,16 @@ en:
973
993
  active: Document is active
974
994
  add_schema: Add new schema
975
995
  add_error: Schema element %{schema} already exists!
996
+
997
+ dc_image:
998
+ upload_file: Select file to upload
999
+ name: Original file name
1000
+ short: Short image description
1001
+ text: Longer image description text
1002
+ keep_original: Keep original image
1003
+ size_o: Dimension of original image
1004
+ size_l: Dimension for large image
1005
+ size_m: Dimension form medium size image
1006
+ size_s: Dimension for small size image
1007
+ categories: Categories for later searching of image
1008
+ created_by: Image was uploaded by