drg_cms 0.5.8 → 0.5.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/drg_cms/drg_cms.js +53 -0
  3. data/app/assets/javascripts/drg_cms/jquery.the-modal.js +260 -0
  4. data/app/assets/javascripts/drg_cms_cms.js +3 -0
  5. data/app/assets/stylesheets/drg_cms/drg_cms.css +68 -33
  6. data/app/assets/stylesheets/drg_cms/the-modal.css +33 -0
  7. data/app/assets/stylesheets/drg_cms_cms.css +1 -0
  8. data/app/controllers/cmsedit_controller.rb +69 -54
  9. data/app/controllers/dc_application_controller.rb +21 -17
  10. data/app/controllers/dc_common_controller.rb +0 -0
  11. data/app/forms/all_options.yml +3 -2
  12. data/app/forms/cms_menu.yml +30 -17
  13. data/app/forms/dc_big_table_value.yml +3 -0
  14. data/app/forms/dc_filter.yml +56 -0
  15. data/app/forms/dc_key_value_store.yml +33 -0
  16. data/app/helpers/cmsedit_helper.rb +32 -82
  17. data/app/models/dc_ad.rb +27 -1
  18. data/app/models/dc_ad_stat.rb +10 -1
  19. data/app/models/dc_big_menu.rb +18 -1
  20. data/app/models/dc_big_table.rb +15 -2
  21. data/app/models/dc_big_table_locale.rb +13 -2
  22. data/app/models/dc_big_table_value.rb +14 -2
  23. data/app/models/dc_category.rb +16 -2
  24. data/app/models/dc_design.rb +17 -1
  25. data/app/models/dc_dummy.rb +5 -1
  26. data/app/models/dc_filter.rb +172 -0
  27. data/app/models/dc_folder_permission.rb +11 -1
  28. data/app/models/dc_ident.rb +9 -1
  29. data/app/models/dc_internals.rb +58 -0
  30. data/app/models/dc_journal.rb +14 -1
  31. data/app/models/dc_key_value_store.rb +8 -2
  32. data/app/models/dc_link.rb +14 -1
  33. data/app/models/dc_menu.rb +16 -1
  34. data/app/models/dc_menu_item.rb +19 -1
  35. data/app/models/dc_page.rb +43 -1
  36. data/app/models/dc_part.rb +28 -1
  37. data/app/models/dc_permission.rb +11 -1
  38. data/app/models/dc_piece.rb +25 -1
  39. data/app/models/dc_policy.rb +14 -1
  40. data/app/models/dc_policy_role.rb +10 -1
  41. data/app/models/dc_policy_rule.rb +9 -1
  42. data/app/models/dc_poll.rb +23 -1
  43. data/app/models/dc_poll_item.rb +16 -1
  44. data/app/models/dc_simple_menu.rb +16 -1
  45. data/app/models/dc_simple_menu_item.rb +17 -1
  46. data/app/models/dc_site.rb +43 -13
  47. data/app/models/dc_stat.rb +14 -3
  48. data/app/models/dc_user.rb +38 -1
  49. data/app/models/dc_user_role.rb +13 -1
  50. data/app/models/dc_visit.rb +11 -1
  51. data/app/models/drgcms_form_fields.rb +20 -4
  52. data/config/locales/drgcms_en.yml +11 -6
  53. data/config/locales/drgcms_sl.yml +8 -4
  54. data/config/locales/models_en.yml +20 -1
  55. data/config/locales/models_sl.yml +18 -0
  56. data/lib/drg_cms/version.rb +1 -1
  57. data/lib/generators/new_drg_form/new_drg_form_generator.rb +1 -1
  58. data/lib/tasks/browse_models.rake +17 -2
  59. metadata +8 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3281dd3aef7554c89150fcf948a4ffdbd253da8d
4
- data.tar.gz: dc53e3cd616e1baf33b15d8b60a30251fa4ecc8d
3
+ metadata.gz: 1bff00bdc426d2a63b7206a17daf68c34e30f5c7
4
+ data.tar.gz: 1f9cb263ff44cdd17051d4579d0229848991804f
5
5
  SHA512:
6
- metadata.gz: e19a6cfa74140520e97be7a23b2e2c3091514f72b7c404c4b1b5af75dffa0f7f1a42fefd6c93998c326456d9730d3d80c74d875c40429d454ee6386494fe72e8
7
- data.tar.gz: 489cc0194a151b6f3f13cea9d3841ae3b4b833f19440e9ca8577f6c95128c0463f1d1ddca2e6fbe1d6ab679e7956a6323ef60e31184a57f741ff9636b15d550a
6
+ metadata.gz: 8dc173b2078147bf66b4e173227999cc72d330b853d70bf4ae66d4195b59a45a54cc7606baa2db0aa2eeac3b9862ac11f4806028d687536e8e1ea94ff7d7c641
7
+ data.tar.gz: 4d0f3ebd3069c6f49b560a3224255619ac8875d3190664eadffc67c67c8644aa7d91c999db697e3f00ccf80b7c5f5ef042abb13384cdf93c419de68beee5813d
@@ -501,7 +501,60 @@ element = $(this).find(':first').attr('id');
501
501
  }
502
502
  });
503
503
 
504
+ $('#1menu-filter').on('click', function(e) {
505
+ var target = e.target;
506
+ // if (e.target.src !== undefined) {
507
+ // target = e.target.parent(); // picture
508
+ // };
509
+ // dumpAttributes(target);
510
+ req = target.getAttribute("data-request");
511
+ $('.menu-filter').toggle(300);
512
+
513
+ });
514
+
515
+ /*******************************************************************
516
+ * This will fire cmsedit index action and pass value enterred into
517
+ * filter field and thus refresh browsed result set.
518
+ *******************************************************************/
519
+ $('#record_filter_field').keydown( function(e) {
520
+ if (e.which == '13' || e.which == '9') {
521
+ url = $(this).parents('span').attr("data-url");
522
+ url = url + "&filter_value=" + this.value;
523
+ location.href = url;
524
+ return false;
525
+ }
526
+ });
504
527
 
528
+ /*******************************************************************
529
+ * Same as above, but when clicked on filter icon. enter and tab don't
530
+ * work on all field types.
531
+ *******************************************************************/
532
+ $('.record_filter_field_icon').on('click', function(e) {
533
+ field = $('#record_filter_field');
534
+ url = $(this).parents('span').attr("data-url");
535
+ url = url + "&filter_value=" + field.val();
536
+ location.href = url;
537
+ });
538
+
539
+ /*******************************************************************
540
+ * Click on show filter form
541
+ *******************************************************************/
542
+ $('#open_drgcms_filter').on('click', function(e) {
543
+ $('#drgcms_filter').modal().open();
544
+ });
545
+
546
+ /*******************************************************************
547
+ *
548
+ *******************************************************************/
549
+ $('.drgcms_popup_submit').on('click', function(e) {
550
+ //e.preventDefault();
551
+ url = $(this).attr( 'data-url' );
552
+ field = $('select#_filter_field').val();
553
+ oper = $('select#_filter_oper').val();
554
+ location.href = url + '&filter_field=' + field + '&filter_oper=' + oper
555
+ // $('#drgcms_filter').modal().close();
556
+ });
557
+
505
558
  });
506
559
 
507
560
  /*******************************************************************
@@ -0,0 +1,260 @@
1
+ /**
2
+ * The Modal jQuery plugin
3
+ *
4
+ * @author Alexander Makarov <sam@rmcreative.ru>
5
+ * @link https://github.com/samdark/the-modal
6
+ * @version 0.0.14
7
+ */
8
+ ;(function($, window, document, undefined) {
9
+ "use strict";
10
+ /*jshint smarttabs:true*/
11
+
12
+ // :focusable expression, needed for tabindexes in modal
13
+ $.extend($.expr[':'],{
14
+ focusable: function(element){
15
+ var map, mapName, img,
16
+ nodeName = element.nodeName.toLowerCase(),
17
+ isTabIndexNotNaN = !isNaN($.attr(element,'tabindex'));
18
+ if ('area' === nodeName) {
19
+ map = element.parentNode;
20
+ mapName = map.name;
21
+ if (!element.href || !mapName || map.nodeName.toLowerCase() !== 'map') {
22
+ return false;
23
+ }
24
+ img = $('img[usemap=#' + mapName + ']')[0];
25
+ return !!img && visible(img);
26
+ }
27
+
28
+ var result = isTabIndexNotNaN;
29
+ if (/input|select|textarea|button|object/.test(nodeName)) {
30
+ result = !element.disabled;
31
+ } else if ('a' === nodeName) {
32
+ result = element.href || isTabIndexNotNaN;
33
+ }
34
+
35
+ return result && visible(element);
36
+
37
+ function visible(element) {
38
+ return $.expr.filters.visible(element) &&
39
+ !$(element).parents().addBack().filter(function() {
40
+ return $.css(this,'visibility') === 'hidden';
41
+ }).length;
42
+ }
43
+ }
44
+ });
45
+
46
+ var pluginNamespace = 'the-modal',
47
+ // global defaults
48
+ defaults = {
49
+ lockClass: 'themodal-lock',
50
+ overlayClass: 'themodal-overlay',
51
+
52
+ closeOnEsc: true,
53
+ closeOnOverlayClick: true,
54
+
55
+ onBeforeClose: null,
56
+ onClose: null,
57
+ onOpen: null,
58
+
59
+ cloning: true
60
+ };
61
+ var oMargin = {};
62
+ var ieBodyTopMargin = 0;
63
+
64
+ function isIE() {
65
+ return ((navigator.appName == 'Microsoft Internet Explorer') ||
66
+ (navigator.userAgent.match(/MSIE\s+\d+\.\d+/)) ||
67
+ (navigator.userAgent.match(/Trident\/\d+\.\d+/)));
68
+ }
69
+
70
+ function lockContainer(options, overlay) {
71
+ var body = $('body');
72
+ var oWidth = body.outerWidth(true);
73
+ body.addClass(options.lockClass);
74
+ var sbWidth = body.outerWidth(true) - oWidth;
75
+ if (isIE()) {
76
+ ieBodyTopMargin = body.css('margin-top');
77
+ body.css('margin-top', 0);
78
+ }
79
+
80
+ if (sbWidth != 0) {
81
+ var tags = $('html, body');
82
+ tags.each(function () {
83
+ var $this = $(this);
84
+ oMargin[$this.prop('tagName').toLowerCase()] = parseInt($this.css('margin-right'));
85
+ });
86
+ $('html').css('margin-right', oMargin['html'] + sbWidth);
87
+ overlay.css('left', 0 - sbWidth);
88
+ }
89
+ }
90
+
91
+ function unlockContainer(options) {
92
+ if (isIE()) {
93
+ $('body').css('margin-top', ieBodyTopMargin);
94
+ }
95
+
96
+ var body = $('body');
97
+ var oWidth = body.outerWidth(true);
98
+ body.removeClass(options.lockClass);
99
+ var sbWidth = body.outerWidth(true) - oWidth;
100
+
101
+ if (sbWidth != 0) {
102
+ $('html, body').each(function () {
103
+ var $this = $(this);
104
+ $this.css('margin-right', oMargin[$this.prop('tagName').toLowerCase()])
105
+ });
106
+ }
107
+ }
108
+
109
+ function init(els, options) {
110
+ var modalOptions = options;
111
+
112
+ if(els.length) {
113
+ els.each(function(){
114
+ $(this).data(pluginNamespace+'.options', modalOptions);
115
+ });
116
+ } else {
117
+ $.extend(defaults, modalOptions);
118
+ }
119
+
120
+ // on Ctrl+A click fire `onSelectAll` event
121
+ $(window).bind('keydown',function(e){
122
+ if (!(e.ctrlKey && e.keyCode == 65)) {
123
+ return true;
124
+ }
125
+
126
+ if ( $('input:focus, textarea:focus').length > 0 ) {
127
+ return true;
128
+ }
129
+
130
+ var selectAllEvent = new $.Event('onSelectAll');
131
+ selectAllEvent.parentEvent = e;
132
+ $(window).trigger(selectAllEvent);
133
+ return true;
134
+ });
135
+
136
+ els.bind('keydown',function(e){
137
+ var modalFocusableElements = $(':focusable',$(this));
138
+ if(modalFocusableElements.filter(':last').is(':focus') && (e.which || e.keyCode) == 9){
139
+ e.preventDefault();
140
+ modalFocusableElements.filter(':first').focus();
141
+ }
142
+ });
143
+
144
+ return {
145
+ open: function(options) {
146
+ var el = els.get(0),
147
+ localOptions = $.extend({}, defaults, $(el).data(pluginNamespace+'.options'), options);
148
+
149
+ // close modal if opened
150
+ if($('.'+localOptions.overlayClass).length) {
151
+ $.modal().close();
152
+ }
153
+
154
+ var overlay = $('<div/>').addClass(localOptions.overlayClass).prependTo('body');
155
+ overlay.data(pluginNamespace+'.options', localOptions);
156
+
157
+ lockContainer(localOptions, overlay);
158
+
159
+ if(el) {
160
+ var openedModalElement = null;
161
+ if (!localOptions.cloning) {
162
+ overlay.data(pluginNamespace+'.el', el);
163
+ $(el).data(pluginNamespace+'.parent', $(el).parent());
164
+ openedModalElement = $(el).appendTo(overlay).show();
165
+ } else {
166
+ openedModalElement = $(el).clone(true).appendTo(overlay).show();
167
+ }
168
+ }
169
+
170
+ if(localOptions.closeOnEsc) {
171
+ $(document).bind('keyup.'+pluginNamespace, function(e){
172
+ if(e.keyCode === 27) {
173
+ $.modal().close(localOptions);
174
+ }
175
+ });
176
+ }
177
+
178
+ if(localOptions.closeOnOverlayClick) {
179
+ overlay.children().on('click.' + pluginNamespace, function(e){
180
+ e.stopPropagation();
181
+ });
182
+ $('.' + localOptions.overlayClass).on('click.' + pluginNamespace, function(e){
183
+ $.modal().close(localOptions);
184
+ });
185
+ }
186
+
187
+ $(document).bind('touchmove.'+pluginNamespace,function(e){
188
+ if(!$(e).parents('.' + localOptions.overlayClass)) {
189
+ e.preventDefault();
190
+ }
191
+ });
192
+
193
+ if(el) {
194
+ $(window).bind('onSelectAll',function(e){
195
+ e.parentEvent.preventDefault();
196
+
197
+ var range = null,
198
+ selection = null,
199
+ selectionElement = openedModalElement.get(0);
200
+ if (document.body.createTextRange) { //ms
201
+ range = document.body.createTextRange();
202
+ range.moveToElementText(selectionElement);
203
+ range.select();
204
+ } else if (window.getSelection) { //all others
205
+ selection = window.getSelection();
206
+ range = document.createRange();
207
+ range.selectNodeContents(selectionElement);
208
+ selection.removeAllRanges();
209
+ selection.addRange(range);
210
+ }
211
+ });
212
+ }
213
+
214
+ if(localOptions.onOpen) {
215
+ localOptions.onOpen(overlay, localOptions);
216
+ }
217
+ },
218
+ close: function(options) {
219
+ var el = els.get(0),
220
+ localOptions = $.extend({}, defaults, $(el).data(pluginNamespace+'.options'), options);
221
+ var overlay = $('.' + localOptions.overlayClass);
222
+
223
+ if ($.isFunction(localOptions.onBeforeClose)) {
224
+ if (localOptions.onBeforeClose(overlay, localOptions) === false) {
225
+ return;
226
+ }
227
+ }
228
+
229
+ if (!localOptions.cloning) {
230
+ if (!el) {
231
+ el = overlay.data(pluginNamespace+'.el');
232
+ }
233
+ $(el).hide().appendTo($(el).data(pluginNamespace+'.parent'));
234
+ }
235
+
236
+ overlay.remove();
237
+ unlockContainer(localOptions);
238
+
239
+ if(localOptions.closeOnEsc) {
240
+ $(document).unbind('keyup.'+pluginNamespace);
241
+ }
242
+
243
+ $(window).unbind('onSelectAll');
244
+
245
+ if(localOptions.onClose) {
246
+ localOptions.onClose(overlay, localOptions);
247
+ }
248
+ }
249
+ };
250
+ }
251
+
252
+ $.modal = function(options){
253
+ return init($(), options);
254
+ };
255
+
256
+ $.fn.modal = function(options) {
257
+ return init(this, options);
258
+ };
259
+
260
+ })(jQuery, window, document);
@@ -26,3 +26,6 @@
26
26
  //= #require drg_cms/elfinder/js/elfinder.min.js
27
27
  //= #require drg_cms/elfinder/js/proxy/elFinderSupportVer1.js
28
28
 
29
+ //= require drg_cms/jquery.the-modal.js
30
+
31
+
@@ -84,20 +84,11 @@ color: #222;
84
84
 
85
85
  textarea, input, select {
86
86
  color: #222;
87
- padding: 4px;
88
- border: solid 1px #aaa;
87
+ padding: 5px 3px;
88
+ border: solid 1px #bbb;
89
89
  border-radius: 2px;
90
90
  }
91
91
 
92
- /*
93
- select#record_select {
94
- padding: 1px;
95
- max-width: 300px;
96
- height: 26px;
97
- background: #fff;
98
- }
99
- */
100
-
101
92
  select {
102
93
  padding: 4px 0px;
103
94
  background: #fff;
@@ -375,10 +366,11 @@ background: transparent linear-gradient(to bottom, #ddd 0%, #FFF 100%) repeat sc
375
366
 
376
367
  .dc-form-table {
377
368
  width: 100%;
378
- border-spacing: 0px;
379
369
  padding: 0px;
370
+ padding-top: 4px;
380
371
  border: 1px solid #ddd;
381
- border-top: 0px;
372
+ border-radius: 2px;
373
+ background-color: #f8f8f8
382
374
  }
383
375
 
384
376
  .dc-form-info {
@@ -448,12 +440,14 @@ background: transparent linear-gradient(to bottom, #ddd 0%, #FFF 100%) repeat sc
448
440
  border-bottom: 1px solid #eee;
449
441
  */
450
442
  }
451
- .dc-readonly { font-weight: normal }
452
443
 
453
444
  .dc-readonly {
454
- margin-left: 2px;
455
- margin-top: 2px;
456
- padding: 2px;
445
+ font-weight: normal;
446
+ padding: 5px 3px;
447
+ border: 1px solid #ccc;
448
+ background-color: #eee;
449
+ border-radius: 2px;
450
+ color: #444;
457
451
  }
458
452
 
459
453
  .dc-color-odd {
@@ -466,10 +460,13 @@ background: transparent linear-gradient(to bottom, #ddd 0%, #FFF 100%) repeat sc
466
460
  }
467
461
 
468
462
  .dc-form-ul {
469
- margin-top: 6px;
470
- /*margin-bottom: 3px;*/
471
463
  padding: 2px;
464
+ margin-top: 6px;
465
+ /*
466
+ margin-bottom: 3px;
472
467
  border-bottom: 1px solid #eee;
468
+ */
469
+
473
470
  }
474
471
 
475
472
  .dc-spinner {
@@ -618,7 +615,7 @@ box-shadow: 2px 2px 4px #ccc;
618
615
  min-width:300px;
619
616
  }
620
617
 
621
- .cmsedit-menu ul li ul a { color: white; }
618
+ /*.cmsedit-menu ul li ul a { color: white; }*/
622
619
 
623
620
  .cmsedit-menu ul li:hover > ul {
624
621
  display:block;
@@ -630,7 +627,7 @@ float:none;
630
627
  }
631
628
 
632
629
  #result {
633
- background-color: #eee;
630
+ /*background-color: #eee;*/
634
631
  }
635
632
 
636
633
  /*********************/
@@ -753,10 +750,12 @@ overflow-x:hidden;
753
750
  .clear-both { clear: both;}
754
751
 
755
752
  /******************* action-menu *********************/
753
+
756
754
  #dc-action-menu {
757
755
  padding: 2px 0px 2px 0px;
758
756
  font-weight: bold;
759
757
  color: #888;
758
+ display: flex;
760
759
  }
761
760
 
762
761
  #dc-action-menu ul {
@@ -767,7 +766,6 @@ margin: 6px 2px 4px 2px;
767
766
 
768
767
  .dc-action-menu {
769
768
  list-style:none;
770
- /*font-size: 12px;*/
771
769
  }
772
770
 
773
771
  .dc-action-menu li {
@@ -776,7 +774,6 @@ position:relative;
776
774
  list-style:none;
777
775
  padding: 5px 8px;
778
776
  margin-right: 4px;
779
- max-width: 200px;
780
777
  background: #eee;
781
778
  border-radius:5px;
782
779
  z-index: 1;
@@ -785,11 +782,11 @@ background: transparent linear-gradient(to bottom, #FFF 0%, #F2F2F2 100%) repeat
785
782
  border: 1px solid #ddd;
786
783
  }
787
784
 
785
+
788
786
  .dc-action-menu li:hover {
789
787
  border: 1px solid #aaa;
790
788
  color: #222;
791
789
  transition: 0.3s;
792
- /*background: linear-gradient(#fff 5%, #eee 100%); */
793
790
  }
794
791
 
795
792
  .dc-action-menu li:hover a {
@@ -801,19 +798,20 @@ margin-top: 1px;
801
798
  background:#fff;
802
799
  position:absolute;
803
800
  left:-9999px;
804
-
805
- /*box-shadow: 2px 2px 4px #aaa;*/
806
-
801
+ border-radius: 4px;
807
802
  }
808
803
 
809
804
  .dc-action-menu ul li {
810
- display:block;
811
- float:none;
805
+ display: block;
806
+ float: none;
812
807
  padding: 4px 10px;
813
- border-radius: 0px;
808
+
814
809
  margin-right: 0px;
815
- white-space:nowrap;
816
- background: transparent linear-gradient(to bottom, #FFF 0%, #F2F2F2 100%) repeat scroll 0% 0%;
810
+ white-space: nowrap;
811
+ background: #FFF;
812
+ border: 0px;
813
+ color: #888;
814
+ /*background: transparent linear-gradient(to bottom, #FFF 0%, #F2F2F2 100%) repeat scroll 0% 0%;*/
817
815
  }
818
816
 
819
817
  .dc-action-menu ul a {
@@ -824,14 +822,38 @@ white-space:nowrap;
824
822
  left:0;
825
823
  margin-top:3px;
826
824
  background-color: #fff;
825
+ border: 1px solid #aaa;
826
+ box-shadow: 1px 1px 2px #ccc;
827
827
  }
828
828
 
829
829
  .dc-action-menu li:hover ul li a {
830
- color: #888;
830
+ /*color: #eee;*/
831
831
  }
832
832
 
833
833
  .dc-action-menu li:hover ul li a:hover {
834
834
  color: #222;
835
+ }
836
+ .dc-action-menu li:hover ul li:hover {
837
+ border: 0px;
838
+ background: #ddd;
839
+ border-radius: 0px;
840
+ }
841
+
842
+ .menu-filter {
843
+ min-width: 200px;
844
+ max-width: 400px;
845
+ }
846
+
847
+ .menu-filter a {
848
+ color: #888 !important;
849
+ }
850
+ .menu-filter a:hover {
851
+ color: #222 !important;
852
+ }
853
+
854
+ .menu-filter hr {margin: 0px;}
855
+ .filter_field {
856
+
835
857
  }
836
858
 
837
859
  /************************** info popup *************************/
@@ -855,3 +877,16 @@ background-color: #f8f8f8;
855
877
  border: 1px solid #ddd;
856
878
  border-radius: 2px;
857
879
  }
880
+
881
+ /************************** info popup *************************/
882
+ #drgcms_filter {
883
+ z-index:100;
884
+ position:fixed;
885
+ top: 50px;
886
+ left: 200px;
887
+ width: 500px;
888
+ background: #fff;
889
+ display: none;
890
+ padding: 20px;
891
+ border: 2px solid #222;
892
+ }