drg_cms 0.5.51.1 → 0.5.52

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 28c4645b1f1f465ae3f3678fd8b154a657769533
4
- data.tar.gz: 8d994123e909afe602059a65c266ff8843384fa8
3
+ metadata.gz: a614de80487c062c05877045536c7cb2c5eec76c
4
+ data.tar.gz: ad4b065e2b97c8c16f1a5024bb7d23b745553071
5
5
  SHA512:
6
- metadata.gz: 7718848e9cbe9b01f9c01313032ee1bb697e7939d6daf35afac702008fdfc146aee0d33f446e8530f30767909613ed0e812c5561ff038a479b8cb382f0852faa
7
- data.tar.gz: 67583a0e7c488d72a08c87f7fec10f62e3051647caf27b3cb9f42c1e8002af22293b640d5eef57b181463800666c0d5aceda4b3221d64eb45591f506fd2068f4
6
+ metadata.gz: 97e1cef3db8fd9b1afdf629aa7c24b273522064ed9368c7016f7a6525ca067048fdc2781b4ac403bc86ecf1514591dba01ce9f2460f9ac0bb3837701e256e400
7
+ data.tar.gz: b5131f8e268aa68f7450e8f50379cce65e3b4938dc95d71bf4ac06febe44fad27f603822b4fab9e4323426a2312ba66afd2a64a95c7df12fc4a3ebb5111f7315
@@ -96,61 +96,69 @@ $(function() {
96
96
  * render json: {'record_name' => "Damjan", 'record_surname' => 'Rems'}.to_json
97
97
  * will replace values of two fields on the form.
98
98
  *******************************************************************/
99
+
99
100
  process_json_result = function(json) {
100
- var c = '';
101
+ var i,operation,what, selector;
101
102
  $.each(json, function(key, val) {
102
103
  i = key.search('_');
103
104
  if (i > 1) {
104
- oper = key.substring(0,i);
105
+ operation = key.substring(0,i);
105
106
  what = key.substring(i+1,100);
106
- switch (oper) {
107
- /* update field */
108
- case 'record':
109
- $('#'+key).val(val);
110
- break;
111
- /* display message */
112
- case 'msg':
113
- selector = 'dc-form-' + what;
114
- if ($('.'+selector).length == 0) {
115
- val = '<div class="' + selector + '">' + val + '</div>';
116
- $('.dc-title').after(val);
117
- } else
118
- $('.'+selector).html(val);
119
- break;
120
- /* update div */
121
- case '#div+':
122
- $('#'+what).append(val);
123
- break;
124
- case '#+div':
125
- $('#'+what).prepend(val);
126
- break;
127
- case '#div':
128
- $('#'+what).html(val);
129
- break;
130
- case '.div+':
131
- $('.'+what).append(val);
132
- break;
133
- case '.+div':
134
- $('.'+what).prepend(val);
135
- break;
136
- case '.div':
137
- $('.'+what).html(val);
138
- break;
139
- /* goto url */
140
- case 'url':
141
- window.location.href = val;
142
- break;
143
- case 'alert':
144
- alert(val);
145
- break;
146
- case 'window':
147
- w = window.open(val, what);
148
- w.focus();
149
- break;
150
- case 'reload':
151
- location.reload();
152
- break;
107
+ } else {
108
+ operation = key;
109
+ what = '';
110
+ }
111
+ //
112
+ switch (operation) {
113
+ // update field
114
+ case 'record':
115
+ $('#'+key).val(val);
116
+ break;
117
+ // display message
118
+ case 'msg':
119
+ selector = 'dc-form-' + what;
120
+ if ( $('.'+selector).length == 0 ) {
121
+ val = '<div class="' + selector + '">' + val + '</div>';
122
+ $('.dc-title').after(val);
123
+ } else {
124
+ $('.'+selector).html(val);
153
125
  }
126
+ break;
127
+ // update div
128
+ case '#div+':
129
+ $('#'+what).append(val);
130
+ break;
131
+ case '#+div':
132
+ $('#'+what).prepend(val);
133
+ break;
134
+ case '#div':
135
+ $('#'+what).html(val);
136
+ break;
137
+ case '.div+':
138
+ $('.'+what).append(val);
139
+ break;
140
+ case '.+div':
141
+ $('.'+what).prepend(val);
142
+ break;
143
+ case '.div':
144
+ $('.'+what).html(val);
145
+ break;
146
+ // goto url
147
+ case 'url':
148
+ window.location.href = val;
149
+ break;
150
+ case 'alert':
151
+ alert(val);
152
+ break;
153
+ case 'window':
154
+ w = window.open(val, what);
155
+ w.focus();
156
+ break;
157
+ case 'reload':
158
+ location.reload();
159
+ break;
160
+ default:
161
+ console.log("DRGCMS: Invalid ajax result operation: " + operation);
154
162
  }
155
163
  });
156
164
  };
@@ -771,11 +771,11 @@ end
771
771
  def fields_on_form() #:nodoc:
772
772
  fields = []
773
773
  if @form['form']['fields']
774
- # read only field elements (key is Fixnum)
775
- @form['form']['fields'].each {|key,options| fields << options if key.class == Fixnum }
774
+ # read only field elements (key is Integer)
775
+ @form['form']['fields'].each {|key,options| fields << options if key.class == Integer }
776
776
  else
777
777
  @form['form']['tabs'].keys.each do |tab|
778
- @form['form']['tabs'][tab].each {|key,options| fields << options if key.class == Fixnum }
778
+ @form['form']['tabs'][tab].each {|key,options| fields << options if key.class == Integer }
779
779
  end
780
780
  end
781
781
  fields
@@ -327,6 +327,7 @@ def dc_process_default_request()
327
327
  params[:path] = @site.homepage_link if params[:id].nil? and params[:path].nil?
328
328
  # some other process request. It shoud fail if not defined
329
329
  return eval(@site.request_processor) if !@site.request_processor.blank?
330
+
330
331
  # Search for page
331
332
  pageclass = @site.page_table.classify.constantize
332
333
  if params[:id]
@@ -365,20 +366,6 @@ def dc_process_default_request()
365
366
  dc_log_visit()
366
367
  end
367
368
  @page_title = @page.title.blank? ? "#{@site.page_title}-#{@page.subject}" : @page.title
368
- # define design
369
- =begin
370
- design = @design ? @design.body : @site.design
371
- # render view. inline if defined in design
372
- view_filename = @design ? @design.rails_view.to_s : ''
373
- view_filename = @site.rails_view.to_s if view_filename.blank?
374
- if view_filename.size < 5
375
- design = "<%= render partial: 'cmsedit/edit_stuff' %>\n" + design if session[:edit_mode] > 0
376
- design << '<style type="text/css"><%= @css.html_safe %></style><%= javascript_tag @js %>'
377
- render(inline: design, layout: layout)
378
- else
379
- render view_filename, layout: layout
380
- end
381
- =end
382
369
  get_design_and_render @design
383
370
  end
384
371
 
@@ -412,16 +399,6 @@ def dc_single_sitedoc_request
412
399
  #
413
400
  @page_title = "#{@site.page_title} #{@part.name}"
414
401
  @js, @css = '', ''
415
- =begin
416
- layout = @site.site_layout.blank? ? 'content' : @site.site_layout
417
- if @site.rails_view.blank?
418
- design = @site.design + '<style type="text/css"><%= @css.html_safe %></style><%= javascript_tag @js %>'
419
- design = "<%= render partial: 'cmsedit/edit_stuff' %>\n" + design if session[:edit_mode] > 0
420
- render(inline: design, layout: layout)
421
- else
422
- render @site.rails_view, layout: layout
423
- end
424
- =end
425
402
  get_design_and_render nil
426
403
  end
427
404
 
@@ -71,7 +71,7 @@ end
71
71
  # Register and record click when ad link is clicked.
72
72
  ########################################################################
73
73
  def ad_click
74
- if (ad = DcAd.find(params[:id]))
74
+ if params[:id] and (ad = DcAd.find(params[:id]))
75
75
  ad.clicked += 1
76
76
  ad.save
77
77
  DcAdStat.create!(dc_ad_id: params[:id], ip: request.ip, type: 2 )
@@ -79,7 +79,7 @@ def ad_click
79
79
  logger.error "ERROR ADS: Invalid ad id=#{params[:id]} ip=#{request.ip}."
80
80
  end
81
81
 
82
- render :nothing => true
82
+ render body: nil
83
83
  end
84
84
 
85
85
  ##########################################################################
@@ -119,10 +119,14 @@ def dc_before_save()
119
119
  v['readonly'] # fields with readonly option don't return value and would be wiped
120
120
  # return value from form field definition
121
121
  value = DrgcmsFormFields.const_get(v['type'].camelize).get_data(params, v['name'])
122
+ # set to nil if blank
123
+ value = nil if value.blank?
122
124
  data['settings'] ||= {}
123
125
  data['settings'][ params[:element] ] ||= {}
124
126
  data['settings'][ params[:element] ][ v['name'] ] = value
125
127
  end
128
+ # remove nil elements
129
+ data['settings'][ params[:element] ].compact!
126
130
  # save data to document field
127
131
  document.send("#{params[:field_name]}=", data.to_yaml)
128
132
  document.save
@@ -3,7 +3,7 @@
3
3
  table: dc_page
4
4
 
5
5
  index:
6
- filter: subject, sub_subject as text_field, subject_link, author_name, dc_site_id, body as text_field
6
+ filter: subject, sub_subject as text_field, subject_link, alt_link, author_name, dc_site_id, body as text_field
7
7
  actions: standard
8
8
 
9
9
  result_set:
@@ -34,23 +34,19 @@ form:
34
34
  10:
35
35
  name: subject
36
36
  type: text_field
37
- html:
38
- size: 50
37
+ size: 50
39
38
  20:
40
39
  name: subject_link
41
40
  type: text_field
42
- html:
43
- size: 50
41
+ size: 50
44
42
  30:
45
43
  name: title
46
44
  type: text_field
47
- html:
48
- size: 50
45
+ size: 50
49
46
  40:
50
47
  name: alt_link
51
48
  type: text_field
52
- html:
53
- size: 50
49
+ size: 50
54
50
  text: Alternative link
55
51
  50:
56
52
  name: sub_subject
@@ -60,8 +56,7 @@ form:
60
56
  60:
61
57
  name: author_name
62
58
  type: text_field
63
- html:
64
- size: 30
59
+ size: 30
65
60
 
66
61
  70:
67
62
  name: publish_date
@@ -70,13 +65,11 @@ form:
70
65
  80:
71
66
  name: picture
72
67
  type: file_select
73
- html:
74
- size: 50
68
+ size: 50
75
69
  90:
76
70
  name: gallery
77
71
  type: text_field
78
- html:
79
- size: 20
72
+ size: 20
80
73
  100:
81
74
  name: valid_from
82
75
  type: datetime_select
@@ -100,7 +93,7 @@ form:
100
93
  type: tree_select
101
94
  eval: "DcCategory.choices4_categories(@parent.dc_get_site)"
102
95
  style: 'max-height: 300px'
103
-
96
+ multiple: true
104
97
 
105
98
  2advanced:
106
99
  10:
@@ -115,7 +108,6 @@ form:
115
108
  type: tree_select
116
109
  eval: '@parent.dc_menu_class.choices4_menu_as_tree(@record.dc_site_id)'
117
110
  style: 'max-height: 300px'
118
- single: true
119
111
 
120
112
  # 20:
121
113
  # name: menu_id
@@ -125,8 +117,7 @@ form:
125
117
  30:
126
118
  name: params
127
119
  type: text_area
128
- html:
129
- size: 100x10
120
+ size: 100x10
130
121
  40:
131
122
  name: dc_site_id
132
123
  type: select
@@ -155,8 +146,8 @@ form:
155
146
  20:
156
147
  name: css
157
148
  type: text_area
158
- html:
159
- size: 100x20
149
+ size: 100x20
150
+
160
151
  4parts:
161
152
  10:
162
153
  name: dc_parts
@@ -164,4 +155,37 @@ form:
164
155
  formname: dc_part
165
156
  html:
166
157
  height: 1000
158
+
159
+ 5iframe:
160
+ 10:
161
+ name: if_url
162
+ type: text_field
163
+ size: 80
164
+ 20:
165
+ name: if_border
166
+ type: text_field
167
+ size: 2
168
+ 30:
169
+ name: if_width
170
+ type: text_field
171
+ size: 5
172
+ 40:
173
+ name: if_height
174
+ type: text_field
175
+ size: 5
176
+ 50:
177
+ name: if_scroll
178
+ type: select
179
+ 60:
180
+ name: if_id
181
+ type: text_field
182
+ size: 10
183
+ 70:
184
+ name: if_class
185
+ type: text_field
186
+ size: 10
187
+ 80:
188
+ name: if_params
189
+ type: text_area
190
+ size: 80x10
167
191
 
@@ -53,7 +53,7 @@ def dc_actions_for_index()
53
53
  EOT
54
54
  # Remove actions settings and sort
55
55
  only_actions = []
56
- actions.each { |key, value| only_actions << [key, value] if key.class == Fixnum }
56
+ actions.each { |key, value| only_actions << [key, value] if key.class == Integer }
57
57
  only_actions.sort_by!(&:first)
58
58
  only_actions.each do |element|
59
59
  k,v = element
@@ -649,10 +649,10 @@ def dc_fields_for_tab(fields) #:nodoc:
649
649
  odd_even = nil
650
650
  reset_cycle()
651
651
  # options and fields must be separated before sorting
652
- form_options = fields.select {|field| field.class != Fixnum }
652
+ form_options = fields.select {|field| field.class != Integer }
653
653
  columns = form_options.try(:[],'columns') || 1
654
654
  # Select form fields and sort them by key
655
- form_fields = fields.select {|field| field.class == Fixnum }
655
+ form_fields = fields.select {|field| field.class == Integer }
656
656
  form_fields.to_a.sort.each do |element|
657
657
  options = element.last
658
658
  session[:form_processing] = "form:fields: #{element.first}=#{options}"
@@ -671,14 +671,14 @@ def dc_fields_for_tab(fields) #:nodoc:
671
671
  # label
672
672
  text = if options['text']
673
673
  t(options['text'], options['text'])
674
- else
674
+ elsif options['name']
675
675
  t_name(options['name'], options['name'].capitalize.gsub('_',' ') )
676
676
  end
677
677
  # help text can be defined in form or in translations starting with helpers. or as helpers.help.collection.field
678
678
  help = if options['help']
679
679
  options['help'].match('helpers.') ? t(options['help']) : options['help']
680
680
  end
681
- help ||= t('helpers.help.' + @form['table'] + '.' + options['name'],' ')
681
+ help ||= t('helpers.help.' + @form['table'] + '.' + options['name'],' ') if options['name']
682
682
  # create field object from class and call its render method
683
683
  klas_string = options['type'].camelize
684
684
  field_html = if DrgcmsFormFields.const_defined?(klas_string) # check if field type is defined
@@ -735,7 +735,7 @@ def dc_fields_for_form()
735
735
  next unless is_on_tab
736
736
  end
737
737
  # first div is displayed all other are hidden
738
- tdata << "<div id='data_#{tabname}'"
738
+ tdata << "<div id='data_#{tabname.delete("\s\n")}'"
739
739
  tdata << ' class="div-hidden"' unless first
740
740
  tdata << " style=\"height: #{@form['form']['height']}px;\"" if @form['form']['height']
741
741
  tdata << ">#{dc_fields_for_tab(@form['form']['tabs'][tabname])}</div>"
@@ -746,7 +746,7 @@ def dc_fields_for_form()
746
746
  html << '<ul class="dc-form-ul" >'
747
747
  first = true # first tab must be selected
748
748
  tabs.each do |tab|
749
- html << "<li id='li_#{tab}' data-div='#{tab}' class='dc-form-li #{'dc-form-li-selected' if first }'>#{t_name(tab, tab)}</li>"
749
+ html << "<li id='li_#{tab}' data-div='#{tab.delete("\s\n")}' class='dc-form-li #{'dc-form-li-selected' if first }'>#{t_name(tab, tab)}</li>"
750
750
  first = false
751
751
  end
752
752
  html << '</ul>'
@@ -170,8 +170,9 @@ end
170
170
  # This helper is replacement dc_render_from_site method which will soon be deprecated.
171
171
  ########################################################################
172
172
  def dc_render_design_part(part)
173
+
173
174
  case
174
- when part.nil? then ''
175
+ when part.nil? then logger.error('ERROR dc_render_design_part! part is NIL !'); ''
175
176
  # Send as array. Part may be defined with options on page. First element has
176
177
  # name of element which defines what to do. If not defined default behaviour is
177
178
  # called. That is what is defined in second part of array.
@@ -506,7 +507,7 @@ def dc_link_for_edit(opts)
506
507
  icon = opts.delete('icon') || 'edit lg'
507
508
  opts['controller'] ||= 'cmsedit'
508
509
  opts['action'] ||= 'edit'
509
- opts['formname'] ||= opts['table'].split(';').last
510
+ opts['formname'] ||= opts['table'].to_s.split(';').last
510
511
  js = "$('##{target}').attr('src', '#{_origin.url_for(opts)}'); return false;"
511
512
  dc_link_to(nil, _origin.fa_icon(icon, class: 'dc-inline-link'), '#',
512
513
  { onclick: js, title: title, alt: 'Edit'})
@@ -1226,4 +1227,37 @@ def dc_iframe_edit(table, opts={})
1226
1227
  ret.html_safe
1227
1228
  end
1228
1229
 
1230
+ ########################################################################
1231
+ # Will return value from internal DRG variables.
1232
+ # This objects can be params, session, ...
1233
+ #
1234
+ # Parameters:
1235
+ # [object] String: Internal object holding variable. Current values can be session, params, site, page
1236
+ # [var_name] String[symbol]: Variable name (:user_name, 'user_id', ...)
1237
+ #
1238
+ # Example:
1239
+ # # called when constructiong iframe for display
1240
+ # dc_internal_var(session, :user_id)
1241
+ # dc_internal_var(params, :some_external_parameter)
1242
+ # dc_internal_var(site, :name)
1243
+ #
1244
+ # Returns:
1245
+ # Value of variable or nil when not found
1246
+ ########################################################################
1247
+ def dc_internal_var(object, var_name)
1248
+ begin
1249
+ case
1250
+ when object == 'session' then _origin.session[var_name]
1251
+ when object == 'params' then _origin.params[var_name]
1252
+ when object == 'site' then _origin.dc_get_site.send(var_name)
1253
+ when object == 'page' then _origin.page.send(var_name)
1254
+ else
1255
+ 'VARIABLE: UNKNOWN OBJECT'
1256
+ end
1257
+ rescue Exception => e
1258
+ Rails.logger.debug "Method dc_internal var. Runtime error. #{e.message}"
1259
+ 'VARIABLE: ERROR'
1260
+ end
1261
+ end
1262
+
1229
1263
  end
@@ -47,17 +47,53 @@ def initialize( parent, opts={} ) #:nodoc:
47
47
  @css = ''
48
48
  end
49
49
 
50
+ #########################################################################
51
+ # Render IFrame part if defined on page
52
+ #########################################################################
53
+ def iframe
54
+ return '' if @page.if_url.blank?
55
+ html = "\n<iframe"
56
+ html << " id=\"#{@page.if_id}\"" unless @page.if_id.blank?
57
+ html << " class=\"#{@page.if_class}\"" unless @page.if_class.blank?
58
+ html << " border=\"#{@page.if_border}\""
59
+ html << " height=\"#{@page.if_height}\"" unless @page.if_height.blank?
60
+ html << " width=\"#{@page.if_width}\"" unless @page.if_width.blank?
61
+ html << " scrolling=\"#{@page.if_scroll}\""
62
+ # Parameters
63
+ parameters = @page.if_url.match(/\?/) ? '' : '?'
64
+ params = YAML.load(@page.if_params) rescue {}
65
+ params = {} unless params.class == Hash
66
+ params.each do |key, value|
67
+ val = @parent.dc_internal_var(value['object'], value['variable'])
68
+ parameters << "&#{key}=#{val}" if val # only when not nil
69
+ end
70
+ url = @page.if_url + (parameters.size > 1 ? parameters : '')
71
+ html << "src=\"#{url}\" ></iframe>\n"
72
+ html
73
+ end
74
+
50
75
  #########################################################################
51
76
  # Default DcPage render method
52
77
  #########################################################################
53
78
  def default
54
79
  can_view, msg = dc_user_can_view(@parent, @page)
55
80
  return msg unless can_view
56
- #
81
+ #
57
82
  html = ''
58
83
  html << dc_page_edit_menu() if @opts[:edit_mode] > 1
59
84
  @parent.page_title = @page.title.blank? ? @page.subject : @page.title
60
85
  html << @page.body
86
+ # render poll if defined
87
+ if @page.dc_poll_id
88
+ @opts.merge!(:poll_id => @page.dc_poll_id, :return_to => @parent.request.url, method: nil)
89
+ comment = DcPollRenderer.new(@parent, @opts)
90
+ html << "<div class='wrap row'>#{comment.render_html}</div>"
91
+ @css << "\n#{comment.render_css}"
92
+ end
93
+ # also add iframe
94
+ html << iframe()
95
+ html
96
+
61
97
  end
62
98
 
63
99
  #########################################################################
@@ -67,6 +67,7 @@ def render_particle(particle, opts)
67
67
  html << dc_link_for_edit( opts[:editparams] )
68
68
  end
69
69
  #
70
+ =begin
70
71
  if particle.piece_id
71
72
  opts[:id] = particle.piece_id
72
73
  piece = DcPieceRenderer.new(@parent, opts)
@@ -76,7 +77,9 @@ def render_particle(particle, opts)
76
77
  html << particle.body
77
78
  @part_css << particle.css.to_s
78
79
  end
79
- html
80
+ =end
81
+ @part_css << particle.css.to_s
82
+ html << particle.body
80
83
  end
81
84
 
82
85
  ########################################################################
@@ -58,6 +58,7 @@ def link_4edit()
58
58
  html = ''
59
59
  return html if @opts[:edit_mode] < 2
60
60
  @opts[:editparams].merge!( { table: 'dc_piece',
61
+ formname: 'dc_piece',
61
62
  controller: 'cmsedit',
62
63
  action: 'edit',
63
64
  id: @piece.id,
@@ -100,12 +100,14 @@ def link_4menu(item)
100
100
 
101
101
  caption = ''
102
102
  unless item.picture.blank?
103
- caption = if item.picture.match(/\./)
104
- @parent.image_tag(item.picture)
105
- elsif item.picture.match('<i')
106
- item.picture
107
- else
108
- @parent.fa_icon(item.picture)
103
+ caption = case
104
+ when item.picture[0] == '@' then # call method
105
+ method = item.picture.sub('@','')
106
+ return eval(method) rescue 'ERROR!'
107
+ when item.picture.match(/\./) then @parent.image_tag(item.picture)
108
+ when item.picture.match('<i') then item.picture
109
+ else
110
+ @parent.fa_icon(item.picture)
109
111
  end
110
112
  caption << ' '
111
113
  end
@@ -57,6 +57,15 @@ field :created_by, type: BSON::ObjectId
57
57
  field :updated_by, type: BSON::ObjectId
58
58
  field :kats, type: Array # Categories
59
59
 
60
+ field :if_url, type: String
61
+ field :if_border, type: Integer, default: 0
62
+ field :if_width, type: Integer
63
+ field :if_height, type: Integer
64
+ field :if_scroll, type: String
65
+ field :if_id, type: String
66
+ field :if_class, type: String
67
+ field :if_params, type: String
68
+
60
69
  field :policy_id, type: BSON::ObjectId
61
70
 
62
71
  embeds_many :dc_parts
@@ -89,11 +89,11 @@ def self.get_field_form_definition(name, parent) #:nodoc:
89
89
  form['form']['tabs'].each do |tab|
90
90
  # Array with 2 elements. First is tabname, second is data
91
91
  fields = tab.last
92
- fields.each {|k,v| return v if (k.class == Fixnum and v['name'] == name) }
92
+ fields.each {|k,v| return v if (k.class == Integer and v['name'] == name) }
93
93
  end if form['form']['tabs'] # I know. But nice.
94
94
  #
95
95
  form['form']['fields'].each do |field|
96
- next unless field.first.class == Fixnum # options
96
+ next unless field.first.class == Integer # options
97
97
  return field.last if field.last['name'] == name
98
98
  end if form['form']['fields']
99
99
  nil
@@ -445,7 +445,12 @@ end
445
445
  ###########################################################################
446
446
  def render
447
447
  # search field name
448
- if @yaml['search'].to_s.match(/\./)
448
+ if @yaml['search'].class == Hash
449
+ table = @yaml['search']['table']
450
+ field_name = @yaml['search']['field']
451
+ method = @yaml['search']['method']
452
+ search = method.nil? ? field_name : "#{field_name}.#{method}"
453
+ elsif @yaml['search'].to_s.match(/\./)
449
454
  table, field_name, method = @yaml['search'].split(/\.|\,/)
450
455
  search = method.nil? ? field_name : "#{field_name}.#{method}"
451
456
  else # search and table name are separated
@@ -765,7 +770,7 @@ class Comment < DrgcmsField
765
770
  # Render comment field html code
766
771
  ###########################################################################
767
772
  def render
768
- @html << t(@yaml['text'], @yaml['text'])
773
+ @html << t(@yaml['comment'], @yaml['comment'])
769
774
  self
770
775
  end
771
776
  end
@@ -1124,7 +1129,7 @@ end
1124
1129
  # * +name:+ field name (required)
1125
1130
  # * +type:+ text_autocomplete (required)
1126
1131
  # * +table+ Collection (table) name. When defined search must contain field name
1127
- # * +search:+ Search may consist of three parameters from which are separated either by dot (.) or comma(,)
1132
+ # * +search:+ Search may consist of three parameters from which are separated either by dot (.)
1128
1133
  # * search_field_name; when table option is defined search must define field name which will be used for search query
1129
1134
  # * collection_name.search_field_name; Same as above except that table options must be ommited.
1130
1135
  # * collection_name.search_field_name.method_name; When searching is more complex custom search
@@ -1479,7 +1484,8 @@ def render
1479
1484
  $(function(){
1480
1485
  $("##{@yaml['name']}").jstree( {
1481
1486
  "checkbox" : {"three_state" : false},
1482
- "core" : { "themes" : { "icons": false } },
1487
+ "core" : { "themes" : { "icons": false },
1488
+ "multiple" : #{@yaml['multiple'] ? 'true' : 'false'} },
1483
1489
  "plugins" : ["checkbox"]
1484
1490
  });
1485
1491
  });
@@ -248,10 +248,12 @@ en:
248
248
  dc_page:
249
249
  tabletitle: Pages
250
250
  choices4_comments: 'Allowed:1,Not allowed:0'
251
+ choices4_if_scroll: 'Auto,Yes,No'
251
252
  1base: Base
252
253
  2advanced: Advanced
253
254
  3content: Content
254
255
  4parts: Parts
256
+ 5iframe: IFrame
255
257
 
256
258
  subject: Subject
257
259
  subject_link: Subject link
@@ -279,6 +281,14 @@ en:
279
281
  kats: Categories
280
282
  gallery: Gallery name
281
283
  updated_at: Updated
284
+ if_url: URL
285
+ if_width: Width
286
+ if_height: Height
287
+ if_scroll: Scrolling
288
+ if_border: Border
289
+ if_params: Parameters
290
+ if_id: CSS id
291
+ if_class: CSS class
282
292
 
283
293
  dc_part:
284
294
  tabletitle: Parts of page
@@ -703,6 +713,15 @@ en:
703
713
  kats: Categories for this article
704
714
  gallery: Gallery pictures are defined in parts of page. Value defines name of parts which hold data about pictures in gallary.
705
715
  body: Content of this page
716
+ if_url: URL adress of page which will be loaded into IFrame
717
+ if_width: IFrame area width
718
+ if_height: IFrame area height
719
+ if_scroll: Scroll bars visibility
720
+ if_border: Thickness of border around IFrame area. When 0, no border is shown.
721
+ if_params: Parameters added to URL address
722
+ if_id: CSS id of IFrame object
723
+ if_class: CSS class of IFrame object
724
+
706
725
 
707
726
  dc_part:
708
727
  name: Parts can be searched by name or by id
@@ -276,10 +276,12 @@ sl:
276
276
  dc_page:
277
277
  tabletitle: Strani
278
278
  choices4_comments: 'Dovoljeno:1,Ni dovoljeno:0'
279
+ choices4_if_scroll: 'Avto:Auto,Da:Yes,Ne:No'
279
280
  1base: Osnovno
280
281
  2advanced: Napredno
281
282
  3content: Vsebina
282
283
  4parts: Elementi
284
+ 5iframe: IFrame
283
285
 
284
286
  subject: Zadeva
285
287
  subject_link: Povezava
@@ -311,7 +313,15 @@ sl:
311
313
  updated_at: Spremenjeno
312
314
  picture: Slika
313
315
  dc_poll_id: Anketa
314
-
316
+ if_url: URL naslov
317
+ if_width: Širina
318
+ if_height: Višina
319
+ if_scroll: Pomikanje
320
+ if_border: Okvir
321
+ if_params: Parametri
322
+ if_id: CSS id
323
+ if_class: CSS class
324
+
315
325
  dc_part:
316
326
  tabletitle: Elementi strani
317
327
  1base: Osnovno
@@ -734,7 +744,14 @@ sl:
734
744
  gallery: Posamezne slike so definirane v elementih strani. Podatek določa ime elementov, ki pripadajo galeriji.
735
745
  picture: Slika uporabljena za prikaz sestavka
736
746
  dc_poll_id: Anketa, če sestavek vsebuje tudi anketo
737
-
747
+ if_url: URL naslov od koder bo naložena vsebina IFrame-a
748
+ if_width: Širina IFrame področja
749
+ if_height: Višina IFrame področja
750
+ if_scroll: Prikaz drsnikov za pomikanje okna
751
+ if_border: Debelina okvira IFrame okna. 0 je brez okvirja.
752
+ if_params: Pramateri posredovani v URL naslovu
753
+ if_id: CSS id IFrame objekta
754
+ if_class: CSS class IFrame objekta
738
755
 
739
756
  dc_part:
740
757
  name: Naziv elementa
@@ -878,4 +895,3 @@ sl:
878
895
  filter: Vsebina filtra
879
896
  public: Filter je na voljo vsem uporabnikom
880
897
  sort: Privzeto sortiranje ob izbiri filtra
881
-
@@ -18,7 +18,9 @@ Gem::Specification.new do |s|
18
18
  s.files = Dir["{app,config,db,lib}/**/*"] + ["MIT-LICENSE", "Rakefile", "README.md", "History.log", "drg_cms.gemspec"]
19
19
  s.test_files = Dir["test/**/*"]
20
20
 
21
- s.add_dependency 'rails'#, '~> 4'
21
+ s.required_ruby_version = '>= 2.4'
22
+
23
+ s.add_dependency 'rails', '>= 5'
22
24
  s.add_dependency 'jquery-rails'
23
25
  s.add_dependency 'jquery-ui-rails'
24
26
  s.add_dependency 'non-stupid-digest-assets'
@@ -128,7 +128,7 @@ def self.routes
128
128
  get 'dc_common/logout' => :logout
129
129
  get 'dc_common/login' => :login
130
130
  get 'dc_common/copy_clipboard' => :copy_clipboard
131
- post 'dc_common/paste_clipboard' => :paste_clipboard
131
+ match 'dc_common/paste_clipboard' => :paste_clipboard, via: [:get, :post]
132
132
  put 'dc_common/restore_from_journal' => :restore_from_journal
133
133
  end
134
134
  match 'elfinder' => 'dc_elfinder#connector', via: [:get, :post]
@@ -1,4 +1,4 @@
1
1
  module DrgCms #:nodoc:
2
2
  # drg_cms gem version
3
- VERSION = "0.5.51.1"
3
+ VERSION = "0.5.52"
4
4
  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.51.1
4
+ version: 0.5.52
5
5
  platform: ruby
6
6
  authors:
7
7
  - Damjan Rems
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-11 00:00:00.000000000 Z
11
+ date: 2017-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '5'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '5'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: jquery-rails
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -387,7 +387,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
387
387
  requirements:
388
388
  - - ">="
389
389
  - !ruby/object:Gem::Version
390
- version: '0'
390
+ version: '2.4'
391
391
  required_rubygems_version: !ruby/object:Gem::Requirement
392
392
  requirements:
393
393
  - - ">="
@@ -395,7 +395,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
395
395
  version: '0'
396
396
  requirements: []
397
397
  rubyforge_project:
398
- rubygems_version: 2.5.1
398
+ rubygems_version: 2.6.13
399
399
  signing_key:
400
400
  specification_version: 4
401
401
  summary: 'DRG CMS: Rapid web application development tool for Ruby, Rails and MongoDB'