drg_cms 0.6.1.5 → 0.6.1.6

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
  SHA256:
3
- metadata.gz: be7dfed0ede6cbd81a93dbefbd517a2cb3d31151339a1bd3598ebde7e76993e9
4
- data.tar.gz: d028640f11c1877e4f6eb4efe44f8fdd9306047678b9d731daeab3e56fb32749
3
+ metadata.gz: 36ffde8dc003d78a30e69a2a1f45530841829c5b66d247e7bcece0d3c94a1a15
4
+ data.tar.gz: 3e1c6a0762f22cce3500de3c4ee0e2258c25f6f39a2aa3dc82f3febd15535449
5
5
  SHA512:
6
- metadata.gz: 2f5617503a1c85ce1b5bf2a9d3460a33525ba96e20a82a84b85e7adc6f370a576f97b2e76aa57ff424243958046b396e0c4c2a3529a8ba0f763ef43cbe92f450
7
- data.tar.gz: 9e716e8fca1ae6330bd74139512fb952d88600ca42d8cd4c5690e8271fb9a50b3e624e72fbcdc7df5ee820a4cd466fc8c6c2b1f5c58b5b9261afb1d076905237
6
+ metadata.gz: 562e2196260eefc0999249e1c0e871cda94b7fd2d303482d39314ec2eb6ae5ae4b32545b8a85c4434a28042d9c2c8b9f2c9dc0a1b1be3a0ec49d20cddece7aef
7
+ data.tar.gz: 03d0849a4040d4b99cf4b8c3b682e77b6c333ad562453700703b49a18d408d2e88555777051cf0b8f61d059ce4bf7e9f1670104f3e3ad786ea226c69c7217c08
@@ -207,7 +207,7 @@ process_json_result = function(json) {
207
207
  // select field
208
208
  } else if (field.is('select')) {
209
209
  // options for select field
210
- if (value && value.isArray) {
210
+ if (Array.isArray(value)) {
211
211
  field.empty();
212
212
  $.each(value, function(index, v) {
213
213
  field.append( new Option(v[0], v[1]) );
@@ -334,10 +334,12 @@ function dc_reload_window() {
334
334
  /*******************************************************************
335
335
  * Will open popup window
336
336
  *******************************************************************/
337
- function popup_window(url, window_name, win, w, h) {
338
- let y = win.top.outerHeight / 2 + win.top.screenY - ( h / 2);
339
- let x = win.top.outerWidth / 2 + win.top.screenX - ( w / 2);
340
- return win.open(url, window_name, `toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=${w}, height=${h}, top=${y}, left=${x}`);
337
+ function popup_window(url, title, parent_win, w, h) {
338
+ let y = parent_win.top.outerHeight / 2 + parent_win.top.screenY - (h / 2);
339
+ let x = parent_win.top.outerWidth / 2 + parent_win.top.screenX - (w / 2);
340
+ let win = parent_win.open(url, 'dc_popup', `toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=${w}, height=${h}, top=${y}, left=${x}`);
341
+ win.document.title = title;
342
+ return win;
341
343
  }
342
344
 
343
345
  /*******************************************************************
@@ -401,6 +403,15 @@ dc_toggle_div = function(div) {
401
403
  }
402
404
  };
403
405
 
406
+ /*****************************************************************
407
+ * Return value of the input field on a form
408
+ ******************************************************************/
409
+ function dc_get_field_value(field_name) {
410
+ field_name = field_name.replace('record_', '');
411
+ let field = $('[name="record[' + field_name + ']"]');
412
+ return field.val();
413
+ }
414
+
404
415
  /*******************************************************************
405
416
  *
406
417
  *******************************************************************/
@@ -642,6 +653,10 @@ $(document).ready( function() {
642
653
  success: function(data) {
643
654
  process_json_result(data);
644
655
  $('.dc-spinner').hide();
656
+ },
657
+ error: function (request, status, error) {
658
+ $('.dc-spinner').css('color','red');
659
+ alert(request.responseText);
645
660
  }
646
661
  });
647
662
  });
@@ -665,24 +680,35 @@ $(document).ready( function() {
665
680
  form.setAttribute('action', url);
666
681
  form.setAttribute('method', "post");
667
682
  form.submit();
668
- });
669
-
683
+ });
684
+
670
685
  /*******************************************************************
671
- will open a new window with URL specified.
686
+ Will open a new window with URL specified.
672
687
  ********************************************************************/
673
- $('.dc-window-open').on('click', function(e) {
674
- // confirmation if required
675
- if (confirmation_is_cancled(this)) {return false;}
676
-
677
- var url = this.getAttribute("data-url");
678
- var title = this.getAttribute("title");
679
- var w = 1000;
680
- var h = 800;
681
- var left = (screen.width/2)-(w/2);
682
- var top = (screen.height/2)-(h/2);
683
- var win = window.open(url, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=no, copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left);
684
- win.focus();
685
- });
688
+ $('.dc-window-open').on('click', function(e) {
689
+ // confirmation if required
690
+ if (confirmation_is_cancled(this)) { return false; }
691
+
692
+ let url = this.getAttribute("data-url");
693
+ let title = this.getAttribute("title");
694
+ let w = this.getAttribute("data-x") || 1000;
695
+ let h = this.getAttribute("data-y") || 800;
696
+ // add fields values from current formto url
697
+ let fields = this.getAttribute("data-fields");
698
+ if (fields) {
699
+ let form_parms = '?';
700
+ // ? separator already in url
701
+ if (url.match(/\?/)) { form_parms = ''; }
702
+ fields.split(',').forEach( function(field) {
703
+ let value = dc_get_field_value(field);
704
+ if (value) {form_parms += '&' + field + '=' + value;}
705
+ });
706
+ url += form_parms;
707
+ }
708
+
709
+ let win = popup_window(url, title, window, w, h);
710
+ win.focus();
711
+ });
686
712
 
687
713
  /*******************************************************************
688
714
  * Animate button on click
@@ -738,15 +764,27 @@ $(document).ready( function() {
738
764
 
739
765
  $('.dc-link-submit').on('click', function(e) {
740
766
  $('.dc-spinner').show();
741
- });
767
+ });
768
+
769
+ /*******************************************************************
770
+ * Hide spinner when validation error occured
771
+ *******************************************************************/
772
+ $(':input').on("invalid", function(event) {
773
+ $('.dc-spinner').hide();
774
+ });
742
775
 
743
776
  /*******************************************************************
744
777
  * Add button clicked while in edit. Create window dialog for adding new record
745
778
  * into required table. This is helper scenario, when user is selecting
746
779
  * data from with text_autocomplete and data doesn't exist in belongs_to table.
747
780
  *******************************************************************/
748
- $('.in-edit-add').on('click', function(e) {
749
- let url = '/cmsedit/new?window_close=0&table=' + this.getAttribute("data-table");
781
+ $('.in-edit-add').on('click', function(e) {
782
+ let id = this.getAttribute("data-id");
783
+ let table = this.getAttribute("data-table");
784
+ let url = '/cmsedit/new?window_close=0&table=' + table;
785
+ if (id) {
786
+ url = '/cmsedit/' + id + '/edit?window_close=0&table=' + table;
787
+ }
750
788
  let w = popup_window(url, '', window, 1000, 800);
751
789
  w.focus();
752
790
  });
@@ -23,7 +23,43 @@
23
23
  #++
24
24
  */
25
25
 
26
- @import url('https://fonts.googleapis.com/css2?family=Exo:wght@100;200;300;400;500;600;700;800;900&display=swap" rel="stylesheet"');
26
+ @font-face {
27
+ font-family: DrgSans;
28
+ font-style: normal;
29
+ font-weight: 300;
30
+ src: url('ibm-plex-sans-300.woff2') format('woff2')
31
+ }
32
+ @font-face {
33
+ font-family: DrgSans;
34
+ font-style: normal;
35
+ font-weight: 400;
36
+ src: url('ibm-plex-sans-400.woff2') format('woff2')
37
+ }
38
+ @font-face {
39
+ font-family: DrgSans;
40
+ font-style: normal;
41
+ font-weight: 500;
42
+ src: url('ibm-plex-sans-500.woff2') format('woff2')
43
+ }
44
+ @font-face {
45
+ font-family: DrgSans;
46
+ font-style: normal;
47
+ font-weight: 600;
48
+ src: url('ibm-plex-sans-600.woff2') format('woff2')
49
+ }
50
+ @font-face {
51
+ font-family: DrgSans;
52
+ font-style: normal;
53
+ font-weight: 700;
54
+ src: url('ibm-plex-sans-700.woff2') format('woff2')
55
+ }
56
+
57
+ @font-face {
58
+ font-family: DrgSans;
59
+ font-style: italic;
60
+ font-weight: 400;
61
+ src: url('ibm-plex-sans-italic.woff2') format('woff2')
62
+ }
27
63
 
28
64
  /* Web reset. Countributed by
29
65
  /* http://meyerweb.com/eric/tools/css/reset/
@@ -78,8 +114,8 @@ table {
78
114
  /* END */
79
115
 
80
116
  body {
81
- font-family: Exo,arial,sans-serif;
82
- font-size: 14px;
117
+ font-family: DrgSans,arial,sans-serif;
118
+ font-size: 15px;
83
119
  margin: 0;
84
120
  vertical-align: middle;
85
121
  color: #000;
@@ -87,7 +123,7 @@ font-weight: 400;
87
123
  }
88
124
 
89
125
  button {
90
- font-family: Exo,arial,sans-serif;
126
+ font-family: DrgSans,arial,sans-serif;
91
127
  }
92
128
 
93
129
 
@@ -97,7 +133,7 @@ padding: 6px 4px;
97
133
  margin-left: 1px;
98
134
  border: 1px dashed #888;;
99
135
  border-radius: 2px;
100
- font: 14px Exo,arial,sans-serif;
136
+ font: 15px DrgSans,arial,sans-serif;
101
137
  max-width: 100%;
102
138
  vertical-align: middle;
103
139
  }
@@ -204,7 +240,7 @@ border-radius: 1px;
204
240
 
205
241
  .dc-result i {
206
242
  padding: 2px;
207
- font-size: 14px;
243
+ font-size: 15px;
208
244
  vertical-align: initial;
209
245
  }
210
246
 
@@ -515,7 +551,7 @@ border: solid 1px #ccc;;
515
551
  border-radius: 0;
516
552
  background: transparent;
517
553
  line-height: 30px;
518
- font-size: 14px;
554
+ font-size: 15px;
519
555
  }
520
556
 
521
557
  .dc-submit:hover {
@@ -702,7 +738,7 @@ color: #aaa;
702
738
 
703
739
  .dc-readonly {
704
740
  display: inline-block;
705
- font-size: 14px;
741
+ font-size: 15px;
706
742
  font-weight: normal;
707
743
  color: #222;
708
744
  padding: 6px 4px;
@@ -736,7 +772,7 @@ margin-bottom: -3px;
736
772
 
737
773
  .dc-spinner {
738
774
  float:left;
739
- padding: 6px 0;
775
+ padding: 0.8em 2px 0;
740
776
  display: none;
741
777
  }
742
778
 
@@ -754,7 +790,7 @@ margin-bottom: -3px;
754
790
  margin: 0 1px 0 0;
755
791
  border-left: 1px solid #ddd;
756
792
  border-right: 1px solid #ddd;
757
- border-radius: 4px 4px 0 0;
793
+ border-radius: 4px 4px 0 0;
758
794
  }
759
795
 
760
796
  .dc-form-li:hover, .dc-form-li-selected {
@@ -809,7 +845,7 @@ display: flex;
809
845
  color: #fff;
810
846
  background-color: #000;
811
847
  font-weight: bold;
812
- font-size: 14px;
848
+ font-size: 15px;
813
849
  box-shadow: 2px 2px 6px #666;
814
850
  border-radius: 3px;
815
851
  }
@@ -843,7 +879,7 @@ display: flex;
843
879
  }
844
880
 
845
881
  #cmsedit-div {
846
- font-family: Exo,Arial, sans-serif;
882
+ font-family: DrgSans,Arial, sans-serif;
847
883
  font-size: 13px;
848
884
  line-height: 13px;
849
885
  }
@@ -893,20 +929,17 @@ font-size: 1.2em;
893
929
  }
894
930
 
895
931
  .cmsedit-container #menu {
896
- min-width: 20%;
932
+ display: inline-block;
933
+ min-width: 20%;
897
934
  height: 100%;
935
+ font-size: 15px;
936
+ font-weight: 600;
937
+ color: #222;
898
938
  background-color: #fcfcfc;
899
- border: 1px solid #eee;
900
- border-radius: 1px;
901
- }
902
-
903
- .cmsedit-container #menu {
904
- display: inline-block;
905
939
  padding: 4px 0;
906
940
  margin: 4px;
907
- font-size: 14px;
908
- color: #222;
909
- font-weight: 600;
941
+ border: 1px solid #eee;
942
+ border-radius: 1px;
910
943
  }
911
944
 
912
945
  .cmsedit-container .fa {
@@ -1439,7 +1472,7 @@ color: #669;
1439
1472
 
1440
1473
  /****** MOBILE DEVICE *****/
1441
1474
  @media only screen and (max-device-width: 600px) {
1442
- body, .body {font-size: 11px !important;}
1475
+ #body-cms {font-size: 11px;}
1443
1476
  #site-top div:nth-of-type(2) {padding-top: 0 !important;}
1444
1477
 
1445
1478
  .dc-form {
@@ -1461,16 +1494,29 @@ color: #669;
1461
1494
  white-space: nowrap;
1462
1495
  }
1463
1496
  .dc-form-label label {
1464
- font-size: 14px;
1497
+ font-size: 15px;
1465
1498
  }
1466
1499
 
1467
1500
  .app-menu li {margin-bottom: 4px;}
1468
1501
 
1502
+ .dc-menu { padding: 0;}
1503
+
1469
1504
  .dc-submit {
1470
- padding: 1px 0 0;
1471
- line-height: 26px;
1505
+ line-height: 20px;
1472
1506
  font-size: 11px;
1473
1507
  }
1508
+ .dc-link div, .dc-link-no {
1509
+ padding: 4px 8px;
1510
+ }
1511
+
1512
+ .dc-animate a:link, .dc-animate a:active, .dc-animate a:visited,
1513
+ .dc-result a:link, .dc-result a:active, .dc-result a:visited {
1514
+ padding: 4px 7px;
1515
+ }
1516
+ .dc-action-menu li {padding: 4px 6px;}
1517
+ .dc-action-menu li.dc-link.plus-link {padding: 4px 0;}
1518
+ .dc-title .dc-paginate {float: left;}
1519
+
1474
1520
  #result {width: 200%;}
1475
1521
 
1476
1522
  .dc-separator {
@@ -1496,8 +1542,15 @@ color: #669;
1496
1542
  font-size: 2em;
1497
1543
  }
1498
1544
 
1545
+ .cmsedit-container {display: block;}
1499
1546
  .cmsedit-container #menu {display: none;}
1500
- .cmsedit-container #menu.visible {display: initial; width: 150%;}
1547
+ .cmsedit-container #menu.visible {
1548
+ display: initial;
1549
+ width: 200%;
1550
+ font-weight: 500;
1551
+ border: none;
1552
+ margin: 0;
1553
+ }
1501
1554
  .cmsedit-iframe {padding-left: 2px;}
1502
1555
  }
1503
1556
 
@@ -783,9 +783,10 @@ end
783
783
  def process_return_to(return_to)
784
784
  script = case
785
785
  when return_to == 'index' then return index
786
+ when return_to.match(/eval=/i) then return_to.sub('eval=', '')
786
787
  when return_to.match(/parent\.reload/i) then 'parent.location.href=parent.location.href;'
787
788
  when return_to.match(/reload/i) then 'location.href=location.href;'
788
- when return_to.match(/close/i) then 'window.close();'
789
+ when return_to.match(/window.close/i) then 'window.close();'
789
790
  when return_to.match(/none/i) then return
790
791
  else "location.href='#{return_to}'"
791
792
  end
@@ -829,6 +830,7 @@ def save_data
829
830
  value = DrgcmsFormFields.const_get(v['type'].camelize).get_data(params, v['name'])
830
831
  @record.send("#{v['name']}=", value)
831
832
  end
833
+
832
834
  # before_save callback
833
835
  if (m = callback_method('before_save') )
834
836
  ret = call_callback_method(m)
@@ -257,7 +257,7 @@ def dc_set_options(parameters)
257
257
  return if parameters.to_s.size < 3
258
258
  # parameters are set as YAML. This should be default in future.
259
259
  parms = YAML.load(parameters) rescue {}
260
- @options.merge!(parms)
260
+ @options = @options.deep_merge(parms)
261
261
  end
262
262
 
263
263
  ##########################################################################
@@ -58,7 +58,7 @@ def get_settings()
58
58
  # Check fild name
59
59
  begin
60
60
  document = model.find(params[:id])
61
- params[:field_name] ||= (params[:location] == 'dc_site' ? 'options' : 'params')
61
+ params[:field_name] ||= (params[:location] == 'dc_site' ? 'settings' : 'params')
62
62
  # field not defined on document
63
63
  raise unless document.respond_to?(params[:field_name])
64
64
  yaml = document[params[:field_name]] || ''
@@ -51,6 +51,14 @@ index:
51
51
  eval: ModulClassName.menu_for(self)
52
52
  caption: Some caption
53
53
 
54
+ # result_set method
55
+ result_set:
56
+ type: method
57
+ eval: my_helper_method
58
+ # or
59
+ view: path_to/_partial
60
+
61
+ # result_set default
54
62
  result_set:
55
63
  filter: custom_filter
56
64
  footer: custom_footer
@@ -140,8 +148,15 @@ form:
140
148
  method: (get),put,post
141
149
  caption: ajax_call
142
150
  control: control_name.method_to_call
143
- when_new: false
144
- show: default always readonly
151
+ show: default || always || readonly
152
+
153
+ active: not_new_record
154
+ active: new_record
155
+ active: SomeClass.is_active_method
156
+ or
157
+ active:
158
+ method: SomeClass.is_active_method
159
+
145
160
  5:
146
161
  type: window
147
162
  controller: cmsedit
@@ -150,15 +165,17 @@ form:
150
165
  action: edit
151
166
  method: (get),put,post
152
167
  caption: Edit linked document
153
- when_new: false
154
168
  params:
155
169
  id:
156
170
  object: record (can be omitted)
157
171
  method: page_id
158
172
  user:
159
173
  object: session
160
- method: user_id
161
-
174
+ method: user_id
175
+ html:
176
+ data-x: 800
177
+ data-y: 400
178
+ data-fields: field1,field2,...
162
179
  6:
163
180
  type: script
164
181
  caption: Cancle
@@ -166,7 +183,6 @@ form:
166
183
  7:
167
184
  type: submit
168
185
  caption: Send
169
- when_new: false
170
186
  params:
171
187
  before-save: send_mail
172
188
  after-save: return_to parent.reload
@@ -84,12 +84,8 @@ form:
84
84
  name: document_extension
85
85
  type: text_field
86
86
  size: 10
87
- 25:
88
- name: site_layout
89
- type: text_field
90
- size: 20
91
87
  30:
92
- name: page_table
88
+ name: site_layout
93
89
  type: text_field
94
90
  size: 20
95
91
  40:
@@ -152,3 +148,4 @@ form:
152
148
  caption: false
153
149
  type: embedded
154
150
  form_name: dc_part
151
+ load: delay
@@ -358,7 +358,7 @@ def dc_header_for_result
358
358
  label = t(label) if label.match(/\./)
359
359
  # no sorting when embedded documents or custom filter is active
360
360
  #sort_ok = @form['result_set'].nil? || (@form['result_set'] && @form['result_set']['filter'].nil?)
361
- sort_ok = true
361
+ sort_ok = !dc_dont?(@form['result_set']['sort'], false)
362
362
  sort_ok = sort_ok || (@form['index'] && @form['index']['sort'])
363
363
  sort_ok = sort_ok && !dc_dont?(v['sort'], false)
364
364
  if @tables.size == 1 and sort_ok
@@ -606,11 +606,15 @@ end
606
606
  # When result set is to be drawn by Rails helper method.
607
607
  ############################################################################
608
608
  def dc_process_result_set_method
609
- method = @form['result_set']['eval']
610
- if respond_to?(method)
611
- send method
609
+ if @form['result_set']['view']
610
+ render partial: @form['result_set']['view']
612
611
  else
613
- I18n.t('drgcms.no_method', method: method)
612
+ method = @form['result_set']['eval'] || 'result_set_eval_misssing'
613
+ if respond_to?(method)
614
+ send method
615
+ else
616
+ I18n.t('drgcms.no_method', method: method)
617
+ end
614
618
  end
615
619
  end
616
620
 
@@ -40,7 +40,6 @@ field :css, type: String, default: ''
40
40
  field :route_name, type: String, default: ''
41
41
  field :page_title, type: String
42
42
  field :document_extension, type: String
43
- field :page_table, type: String
44
43
  field :page_class, type: String, default: 'DcPage'
45
44
  field :site_layout, type: String, default: 'content'
46
45
  field :menu_class, type: String, default: 'DcSimpleMenu'
@@ -87,10 +86,17 @@ def params(what=nil)
87
86
  end
88
87
 
89
88
  ########################################################################
90
- # Returns class object of collection name
89
+ # Returns class object of page collection
91
90
  ########################################################################
92
91
  def page_klass
93
- (self.page_table.blank? ? self.page_class : self.page_table).classify.constantize
92
+ page_class.classify.constantize
93
+ end
94
+
95
+ ########################################################################
96
+ # Returns collection name for page collection
97
+ ########################################################################
98
+ def page_table
99
+ page_class.underscore
94
100
  end
95
101
 
96
102
  ########################################################################
@@ -38,7 +38,6 @@
38
38
  # route_name String Default route name for creating page link. ex. page. Leave blank if not used.
39
39
  # page_title String Default page title displayed in browser's top menu when title can not be extracted from document
40
40
  # document_extension String Default document extension eg. html
41
- # page_table String Name of table holding data for pages
42
41
  # page_class String Rails model class name which defines table holding pages data usually DcPage
43
42
  # site_layout String Rails layout used to draw response. This is by default content layout.
44
43
  # menu_class String Rails model class name which defines table holding menu data usually DcMenu
@@ -191,9 +191,8 @@ def render
191
191
  # separate options and html part
192
192
  html_part = {}
193
193
  @yaml['html'].symbolize_keys!
194
- %i(class id style required).each { |sym| html_part[sym] = @yaml['html'].delete(sym) if html_part[sym]}
194
+ %i(class id style required).each { |sym| html_part[sym] = @yaml['html'].delete(sym) if @yaml['html'][sym] }
195
195
  html_part[:multiple] = true if @yaml['multiple']
196
-
197
196
  record = record_text_for(@yaml['name'])
198
197
  if html_part[:multiple]
199
198
  @html << @parent.select(record, @yaml['name'], get_choices, @yaml['html'], html_part)
@@ -222,4 +221,5 @@ def self.get_data(params, name)
222
221
  end
223
222
 
224
223
  end
224
+
225
225
  end
@@ -29,7 +29,8 @@ module DrgcmsFormFields
29
29
  # * +name:+ field name (required)
30
30
  # * +type:+ text_autocomplete (required)
31
31
  # * +table+ Collection (table) name. When defined search must contain field name
32
- # * +with_new+ Will add an icon for shortcut to add new document to collection
32
+ # * +with_new+ Will add an icon for shortcut to add new document to related collection
33
+ # * +with_edit+ Will add an icon for shortcut to edit (view) related document
33
34
  # * +is_id+ Field value represent value as id. If false, field will use entered value and not value selected with autocomplete. Default is true.
34
35
  # * +search:+ Search may consist of three parameters from which are separated either by dot (.)
35
36
  # * search_field_name; when table option is defined search must define field name which will be used for search query
@@ -43,8 +44,9 @@ module DrgcmsFormFields
43
44
  # type: text_autocomplete
44
45
  # search: dc_user.name
45
46
  # is_id: false
46
- # html:
47
- # size: 30
47
+ # size: 30
48
+ # with_new: user
49
+ # with_edit: user
48
50
  ###########################################################################
49
51
  class TextAutocomplete < DrgcmsField
50
52
 
@@ -58,8 +60,8 @@ def render
58
60
  table = @yaml['search']['table']
59
61
  ret_name = @yaml['search']['field']
60
62
  method = @yaml['search']['method']
61
- elsif @yaml['search'].match(/\./)
62
- table, ret_name, method = @yaml['search'].split(/\.|\,/).map(&:strip)
63
+ elsif @yaml['search'].match(/\.|\,| /)
64
+ table, ret_name, method = @yaml['search'].split(/\.|\,| /).map(&:strip)
63
65
  else
64
66
  ret_name = @yaml['search']
65
67
  end
@@ -102,16 +104,22 @@ def render
102
104
  @yaml['html'] ||= {}
103
105
  @yaml['html']['value'] = value_displayed
104
106
  @yaml['html']['placeholder'] ||= t('drgcms.search_placeholder') || nil
105
- #
107
+
106
108
  _name = '_' + @yaml['name']
107
109
  record = record_text_for(@yaml['name'])
108
110
  @html << '<span class="dc-text-autocomplete">' + @parent.text_field(record, _name, @yaml['html']) + '<span></span>'
111
+ # with new icon
109
112
  if @yaml['with_new']
110
- @html << ' ' +
111
- @parent.fa_icon('plus-square lg', class: 'in-edit-add', title: t('drgcms.new'),
112
- style: "vertical-align: top;", 'data-table' => @yaml['with_new'] )
113
+ @html << ' ' + @parent.fa_icon('plus-square lg', class: 'in-edit-add', title: t('drgcms.new'),
114
+ style: "vertical-align: top;", 'data-table' => @yaml['with_new'] )
115
+ end
116
+ # with edit icon
117
+ if @yaml['with_edit'] && @record[@yaml['name']].present?
118
+ @html << ' ' + @parent.fa_icon('edit lg', class: 'in-edit-add', title: t('drgcms.edit'),
119
+ style: "vertical-align: top;", 'data-table' => @yaml['with_edit'], 'data-id' => @record[@yaml['name']] )
113
120
  end
114
- @html << '</span>' + @parent.hidden_field(record, @yaml['name'], value: value) # actual value will be in hidden field
121
+ @html << '</span>' + @parent.hidden_field(record, @yaml['name'], value: value) # actual value will be in hidden field
122
+
115
123
  # JS stuff
116
124
  # allow unselected values on is_id: false option
117
125
  not_id_code = %(
@@ -119,7 +127,7 @@ if (ui.item == null) {
119
127
  $("##{record}_#{@yaml['name']}").val($("##{record}__#{@yaml['name']}").val() );
120
128
  return;
121
129
  } ) if not_id
122
- #
130
+
123
131
  @js << <<EOJS
124
132
  $(document).ready(function() {
125
133
  $("##{record}_#{_name}").autocomplete( {
@@ -3,15 +3,13 @@
3
3
  <head>
4
4
  <title><%= @page_title %></title>
5
5
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+
6
8
  <%= stylesheet_link_tag "cms", media: 'all' %>
7
- <% if false %> not require in cms mode
8
- <style type="text/css" media="all"><%= "#{@site.css if @site}#{@design.css if @design}\n#{@page.css if @page}".html_safe %></style>
9
- <%= @site.header.html_safe if @site %>
10
- <% end %>
11
9
  <%= javascript_include_tag "cms" %>
12
10
  <%= csrf_meta_tags %>
13
11
  </head>
14
- <body>
12
+ <body id="body-cms">
15
13
 
16
14
  <%= yield %>
17
15
 
@@ -23,5 +23,5 @@
23
23
 
24
24
  # drg_cms gem version
25
25
  module DrgCms #:nodoc:
26
- VERSION = '0.6.1.5'.freeze
26
+ VERSION = '0.6.1.6'.freeze
27
27
  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.6.1.5
4
+ version: 0.6.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Damjan Rems
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-05 00:00:00.000000000 Z
11
+ date: 2022-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -163,6 +163,12 @@ files:
163
163
  - MIT-LICENSE
164
164
  - README.md
165
165
  - Rakefile
166
+ - app/assets/fonts/ibm-plex-sans-300.woff2
167
+ - app/assets/fonts/ibm-plex-sans-400.woff2
168
+ - app/assets/fonts/ibm-plex-sans-500.woff2
169
+ - app/assets/fonts/ibm-plex-sans-600.woff2
170
+ - app/assets/fonts/ibm-plex-sans-700.woff2
171
+ - app/assets/fonts/ibm-plex-sans-italic.woff2
166
172
  - app/assets/images/32px.png
167
173
  - app/assets/images/drg_cms/32px.png
168
174
  - app/assets/images/drg_cms/40px.png