drg_cms 0.5.8.2 → 0.5.9

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.
@@ -93,6 +93,8 @@ form:
93
93
  title:
94
94
  edit: Title for edit
95
95
  show: Title for show
96
+ labels_pos: top
97
+
96
98
 
97
99
  actions: standard
98
100
  actions: none
@@ -117,11 +119,15 @@ form:
117
119
 
118
120
  tabs:
119
121
  tab1:
122
+ columns: 3
123
+
120
124
  10:
121
125
  name: name
122
126
  type: text_field
123
127
  type: hidden_field
124
128
  type: readonly
129
+ colspan: 2
130
+ size: 50 or
125
131
  html:
126
132
  size: 50
127
133
  40:
@@ -135,6 +141,8 @@ form:
135
141
  40:
136
142
  name: operation
137
143
  type: select
144
+ bottom-line: 1
145
+ top-line: 1
138
146
 
139
147
  30:
140
148
  name: sub_text
@@ -181,3 +189,12 @@ form:
181
189
  20:
182
190
  name: odhod
183
191
  type: datetime_picker
192
+ 40:
193
+ name: customer_id
194
+ type: text_autocomplete
195
+ search:
196
+ table: customer
197
+ field: custumer_name
198
+ method: search
199
+ with_new: customer
200
+ size: 50
@@ -29,26 +29,26 @@ form:
29
29
 
30
30
  fields:
31
31
 
32
- 0:
32
+ 10:
33
33
  name: name
34
34
  type: text_field
35
35
  html:
36
36
  size: 30
37
- 1:
37
+ 20:
38
38
  name: description
39
39
  type: text_field
40
40
  html:
41
41
  size: 100
42
- 2:
42
+ 30:
43
43
  name: ctype
44
44
  type: select
45
45
 
46
- 3:
46
+ 40:
47
47
  name: order
48
48
  type: text_field
49
49
  html:
50
50
  size: 5
51
- 4:
51
+ 50:
52
52
  name: parent
53
53
  type: select
54
54
  eval: DcCategory.values_for_parent
@@ -13,7 +13,6 @@ result_set:
13
13
  10:
14
14
  type: duplicate
15
15
  dup_fields: name
16
-
17
16
 
18
17
  columns:
19
18
  1:
@@ -32,121 +31,100 @@ form:
32
31
  10:
33
32
  name: name
34
33
  type: text_field
35
- html:
36
- size: 50
34
+ size: 50
37
35
 
38
36
  20:
39
37
  name: description
40
38
  type: text_field
41
- html:
42
- size: 50
39
+ size: 50
43
40
 
44
41
  30:
45
42
  name: alias_for
46
43
  type: text_field
47
- html:
48
- size: 50
44
+ size: 50
49
45
 
50
46
  40:
51
47
  name: page_title
52
48
  type: text_field
53
- html:
54
- size: 50
49
+ size: 50
55
50
 
56
51
  50:
57
52
  name: homepage_link
58
53
  type: text_field
59
- html:
60
- size: 50
54
+ size: 50
61
55
  60:
62
56
  name: error_link
63
57
  type: text_field
64
- html:
65
- size: 50
58
+ size: 50
66
59
  70:
67
60
  name: files_directory
68
61
  type: text_field
69
- html:
70
- size: 50
62
+ size: 50
71
63
  80:
72
64
  name: logo
73
65
  type: file_select
74
- html:
75
- size: 50
66
+ size: 50
76
67
  90:
77
68
  name: active
78
69
  type: check_box
79
- html:
80
- size: 50
70
+ size: 50
81
71
 
82
72
  2parameters:
83
73
  10:
84
74
  name: route_name
85
75
  type: text_field
86
- html:
87
- size: 20
76
+ size: 20
88
77
  20:
89
78
  name: document_extension
90
79
  type: text_field
91
- html:
92
- size: 10
80
+ size: 10
93
81
  25:
94
82
  name: site_layout
95
83
  type: text_field
96
- html:
97
- size: 20
84
+ size: 20
98
85
  30:
99
86
  name: page_table
100
87
  type: text_field
101
- html:
102
- size: 20
88
+ size: 20
103
89
  40:
104
90
  name: page_class
105
91
  type: text_field
106
- html:
107
- size: 20
92
+ size: 20
108
93
  50:
109
94
  name: menu_class
110
95
  type: text_field
111
- html:
112
- size: 20
96
+ size: 20
113
97
  60:
114
98
  name: menu_name
115
99
  type: text_with_select
116
100
  eval: dc_choices4(@record.menu_class,'description','name')
117
- html:
118
- size: 30
101
+ size: 30
119
102
  90:
120
103
  name: settings
121
104
  type: text_area
122
- html:
123
- size: 100x20
105
+ size: 100x20
124
106
 
125
107
  3advanced:
126
108
  10:
127
109
  name: header
128
110
  type: text_area
129
- html:
130
- size: 100x10
111
+ size: 100x10
131
112
 
132
113
  20:
133
114
  name: css
134
115
  type: text_area
135
- html:
136
- size: 100x40
116
+ size: 100x40
137
117
 
138
118
  4design:
139
119
  10:
140
120
  name: rails_view
141
121
  type: text_field
142
- html:
143
- size: 50
122
+ size: 50
144
123
 
145
124
  20:
146
125
  name: design
147
126
  type: text_area
148
- html:
149
- size: 130x40
127
+ size: 130x40
150
128
 
151
129
  5permissions:
152
130
 
@@ -93,9 +93,12 @@ EOT
93
93
  when action == 'filter' then
94
94
  caption = t('drgcms.filter')
95
95
  caption << '&nbsp;' + fa_icon('caret-down lg') + DcFilter.menu_filter(self)
96
- # add check image, so user will know that filter is active
96
+ # add filter OFF link
97
97
  s = session[@form['table']]
98
- caption << ('&nbsp;' << fa_icon('check')) if s and s[:filter]
98
+ if s and s[:filter]
99
+ caption << '&nbsp;&nbsp;' + dc_link_to(nil,'remove lg', controller: 'cmsedit',
100
+ filter: 'off', table: @form['table'], title: 'drgcms.filter_off')
101
+ end
99
102
  caption
100
103
  # new
101
104
  when action == 'new' then
@@ -141,8 +144,9 @@ def dc_div_filter()
141
144
  url = url_for(:table => @form['table'], filter: :on, filter_input: 1, action: :index, controller: :cmsedit)
142
145
  html =<<EOT
143
146
  <div id="drgcms_filter" class="div-hidden">
147
+ <h1>#{t('drgcms.filter_set')}</h1>
144
148
  <table class="dc-menu"><td>
145
- #{ select(nil, 'filter_field', options_for_select(choices, field_name), { include_blank: true }) }
149
+ #{ select(nil, 'filter_field1', options_for_select(choices, field_name), { include_blank: true }) }
146
150
  #{ select(nil, 'filter_oper', options_for_select(choices4_operators, operators_value)) }
147
151
 
148
152
  </td>
@@ -592,50 +596,57 @@ end
592
596
  ############################################################################
593
597
  # Creates top or bottom horizontal line on form.
594
598
  ############################################################################
595
- def top_bottom_line(yaml)
599
+ def top_bottom_line(yaml, columns=2)
596
600
  if yaml.class == Hash
597
601
  clas = yaml['class']
598
602
  style = yaml['style']
599
603
  end
600
604
  clas ||= 'dc-separator'
601
- "<tr><td colspan=\"4\" class=\"#{clas}\" style=\"#{style}\"></td></tr>"
605
+ "<tr><td colspan=\"#{columns*2}\" class=\"#{clas}\" style=\"#{style}\"></td></tr>"
602
606
  end
603
607
 
604
608
  ############################################################################
605
- # Creates input field for one tab. Subroutine of dc_fields_for_form.
609
+ # Creates input fields for one tab. Subroutine of dc_fields_for_form.
606
610
  ############################################################################
607
611
  def dc_fields_for_tab(fields) #:nodoc:
608
- @js ||= ''
609
- double_field = 0
610
- html = '<table class="dc-form-table">'
612
+ @js ||= ''
613
+ html = '<table class="dc-form-table">'
611
614
  labels_pos = dc_check_and_default(@form['form']['labels_pos'], 'right', ['top','left','right'])
615
+ current_column = 0
616
+ hidden_fields = ''
617
+ odd_even = nil
612
618
  reset_cycle()
613
- # sort fields by name
614
- fields.to_a.sort.each do |element|
619
+ # options and fields must be separated before sorting
620
+ form_options = fields.select {|field| field.class != Fixnum }
621
+ columns = form_options.try(:[],'columns') || 1
622
+ # Select form fields and sort them by key
623
+ form_fields = fields.select {|field| field.class == Fixnum }
624
+ form_fields.to_a.sort.each do |element|
615
625
  options = element.last
616
626
  session[:form_processing] = "form:fields: #{element.first}=#{options}"
617
627
  # ignore if edit_only singe field is required
618
628
  next if params[:edit_only] and params[:edit_only] != options['name']
619
- # hidden_fields. Ignore description text, otherwise it will be seen on screen
629
+ # hidden_fields. Add them at the end
620
630
  if options['type'] == 'hidden_field'
621
- html << DrgcmsFormFields::HiddenField.new(self, @record, options).render
631
+ hidden_fields << DrgcmsFormFields::HiddenField.new(self, @record, options).render
622
632
  next
623
633
  end
634
+ # initialize when column is 0
635
+ if current_column == 0
636
+ odd_even = cycle('odd','even')
637
+ current_column = columns
638
+ end
624
639
  # label
625
640
  text = if options['text']
626
641
  t(options['text'], options['text'])
627
- else
642
+ else
628
643
  t_name(options['name'], options['name'].capitalize.gsub('_',' ') )
629
644
  end
630
- # options['text'] ||= options['name'].capitalize.gsub('_',' ')
631
- # text = options['text'].match('helpers.') ? t(options['text']) : t_name(options['name'], options['text'])
632
645
  # help text can be defined in form or in translations starting with helpers. or as helpers.help.collection.field
633
646
  help = if options['help']
634
647
  options['help'].match('helpers.') ? t(options['help']) : options['help']
635
648
  end
636
649
  help ||= t('helpers.help.' + @form['table'] + '.' + options['name'],' ')
637
- odd_even = cycle('odd','even')
638
- odd_even = cycle('odd','even') if double_field == 2 # it should be same style as first
639
650
  # create field object from class and call its render method
640
651
  klas_string = options['type'].camelize
641
652
  field_html = if DrgcmsFormFields.const_defined?(klas_string) # check if field type is defined
@@ -646,30 +657,29 @@ def dc_fields_for_tab(fields) #:nodoc:
646
657
  else # litle error string
647
658
  "Error: Code for field type #{options['type']} not defined!"
648
659
  end
649
- # Separator
650
- html << top_bottom_line(options['top-line']) if options['top-line']
651
- # Double entry fields in one row
652
- double_field = 1 if options['double']
653
- html << '<tr>' if double_field < 2
660
+ # Line separator
661
+ html << top_bottom_line(options['top-line'], columns) if options['top-line']
662
+ html << '<tr>' if current_column == columns
663
+ colspan = options['colspan'] || 1
654
664
  #
655
- html << if labels_pos == 'top'
656
- %Q[<td class="dc-form-label dc-color-#{odd_even} dc-align-left" title="#{help}"
657
- #{double_field == 0 ? 'colspan="2"' : 'style="width:50%;"'}>
665
+ html << if labels_pos == 'top'
666
+ %Q[<td class="dc-form-label-top dc-color-#{odd_even} dc-align-left"
667
+ title="#{help}" colspan="#{colspan*2}">
658
668
  <div><label for="record_#{options['name']}">#{text} </label></div>
659
- <div id="td_record_#{options['name']}">#{field_html}</div></td>]
669
+ <div id="td_record_#{options['name']}">#{field_html}</div></td> ]
660
670
  else
661
671
  %Q[<td class="dc-form-label dc-color-#{odd_even} dc-align-#{labels_pos}" title="#{help}">
662
672
  <label for="record_#{options['name']}">#{text} </label></td>
663
- <td id=\"td_record_#{options['name']}\" class=\"dc-form-field dc-color-#{odd_even}\" #{'colspan="3"' if double_field == 0 }>#{field_html}
664
- </td>
665
- ]
673
+ <td id="td_record_#{options['name']}" class="dc-form-field dc-color-#{odd_even}"
674
+ colspan="#{colspan*2 - 1}">#{field_html}
675
+ </td> ]
666
676
  end
667
- html << '</tr>' if double_field != 1
668
- double_field = 0 if double_field == 2
669
- double_field = 2 if double_field == 1
670
- html << top_bottom_line(options['bottom-line']) if options['bottom-line']
677
+ # check if must go to next line
678
+ current_column -= colspan
679
+ html << '</tr>' if current_column == 0
680
+ html << top_bottom_line(options['bottom-line'], columns) if options['bottom-line']
671
681
  end
672
- html << '</table></table>'
682
+ html << '</table>' << hidden_fields
673
683
  end
674
684
 
675
685
  ############################################################################
@@ -745,34 +745,6 @@ def forms_merge(hash1, hash2) #:nodoc:
745
745
  target.delete_if{ |k,v| v.nil? }
746
746
  end
747
747
 
748
- ##########################################################################
749
- # Returns choices for creating collection edit select field on CMS top menu.
750
- ##########################################################################
751
- def dc_choices4_cmsmenu()
752
- menus = {}
753
- DrgCms.paths(:forms).reverse.each do |path|
754
- filename = "#{path}/cms_menu.yml"
755
- next unless File.exist?(filename)
756
- menu = YAML.load_file(filename) rescue nil # load menu
757
- next if menu.nil? or !menu['menu'] # not menu or error
758
- menus = forms_merge(menu['menu'], menus) # ignore top level part
759
- end
760
- #
761
- choices = []
762
- menus.to_a.sort.each do |one_menu| # sort menus, result is array of sorted hashes
763
- menu = one_menu[1] # value is the second (1) element of array
764
- next unless menu['caption']
765
- choices << ["--- #{ t(menu['caption'], menu['caption']) } ---",'#']
766
- menu['items'].to_a.sort.each do |item| # as above. sort items first
767
- key, value = item[0], item[1]
768
- opts = { controller: value['controller'], action: value['action'] }
769
- value['params'].each {|k,v| opts.merge!(k => v) } # add parameters to options
770
- choices << [ t(value['caption'], value['caption']), url_for( opts ) ]
771
- end
772
- end
773
- choices
774
- end
775
-
776
748
  ##########################################################################
777
749
  # Returns choices for creating collection edit select field on CMS top menu.
778
750
  ##########################################################################
@@ -1057,28 +1029,6 @@ def dc_big_table(key)
1057
1029
  ret
1058
1030
  end
1059
1031
 
1060
- ########################################################################
1061
- ########################################################################
1062
- def iframe_edit1() #:nodoc
1063
- # default_table = params[:table] if default_table.nil?
1064
- # p params
1065
- parms = {}
1066
- ret = if params.size > 2 #and default_table # controller, action, path is minimum
1067
- parms[:controller] = 'cmsedit'
1068
- parms[:action] = params[:oper] ? params[:oper] : 'index'
1069
- parms[:table] = params[:table]
1070
- parms[:formname] = params[:formname] || params[:table]
1071
- parms[:id] = params[:idp]
1072
- p '**************', url_for(parms)
1073
- "<iframe id='iframe_edit' name='iframe_edit' src='#{url_for parms}'></iframe>"
1074
- else
1075
- "<iframe id='iframe_edit' name='iframe_edit'></iframe>"
1076
- end
1077
- #bla
1078
- p ret
1079
- ret.html_safe
1080
- end
1081
-
1082
1032
  ########################################################################
1083
1033
  # Will return html code required for load DRG form into iframe. If parameters
1084
1034
  # are passed to method iframe url will have initial value and thus enabling automatic form
@@ -69,15 +69,13 @@ class DcDummy
69
69
  # Respond_to should always return true.
70
70
  ########################################################################
71
71
  def respond_to?(m)
72
- # p "respond_to #{m}"
73
72
  true
74
73
  end
75
74
 
76
75
  ########################################################################
77
76
  # Redefine send method. Send is used to assign value by cmsedit controller.
78
77
  ########################################################################
79
- def send(field,value)
80
- # p "send #{field} #{value}"
78
+ def send(field,value=nil)
81
79
  if field.to_s.match('=')
82
80
  field.chomp!('=')
83
81
  @internals ||= {}
@@ -90,7 +88,6 @@ end
90
88
  # @internals array or will assign new value to @internals hash if m matches '='.
91
89
  ########################################################################
92
90
  def method_missing(m, *args, &block) #:nodoc:
93
- # p "#{m},#{args},#{block}"
94
91
  @internals ||= {}
95
92
  m = m.to_s
96
93
  if m.match('=')