drg_cms 0.5.8 → 0.5.8.2

Sign up to get free protection for your applications and to get access to all the features.
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
+ }