redmineup 1.1.3 → 1.1.11

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 (41) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.gitlab-ci.yml +7 -17
  4. data/README.md +74 -153
  5. data/app/assets/javascripts/consumer.js +37 -60
  6. data/app/assets/javascripts/consumer_worker.js +199 -0
  7. data/app/assets/javascripts/jquery.colorPicker.min.js +26 -0
  8. data/app/assets/javascripts/select2_helpers.js +10 -0
  9. data/app/assets/stylesheets/redmineup.css +509 -0
  10. data/app/views/redmineup/_additional_assets.html.erb +1 -0
  11. data/config/locales/en.yml +1 -0
  12. data/config/locales/ru.yml +1 -0
  13. data/config/routes.rb +4 -0
  14. data/doc/CHANGELOG +72 -25
  15. data/doc/active-record-mixins.md +156 -0
  16. data/doc/assets-money-and-utilities.md +71 -0
  17. data/doc/tagging-and-select2.md +108 -0
  18. data/lib/action_cable/connection/rup_connection.rb +17 -0
  19. data/lib/action_cable/server/rup_server.rb +4 -0
  20. data/lib/redmineup/acts_as_taggable/tag.rb +13 -3
  21. data/lib/redmineup/acts_as_taggable/up_acts_as_taggable.rb +9 -6
  22. data/lib/redmineup/acts_as_viewed/up_acts_as_viewed.rb +1 -1
  23. data/lib/redmineup/engine.rb +12 -2
  24. data/lib/redmineup/helpers/datetime_helper.rb +23 -0
  25. data/lib/redmineup/helpers/external_assets_helper.rb +14 -6
  26. data/lib/redmineup/helpers/form_tag_helper.rb +43 -0
  27. data/lib/redmineup/helpers/tags_helper.rb +41 -0
  28. data/lib/redmineup/hooks/views_layouts_hook.rb +1 -5
  29. data/lib/redmineup/money_helper.rb +10 -2
  30. data/lib/redmineup/patches/action_cable_base_patch.rb +9 -2
  31. data/lib/redmineup/patches/action_cable_patch.rb +2 -4
  32. data/lib/redmineup/patches/auto_completes_controller_patch.rb +19 -0
  33. data/lib/redmineup/patches/compatibility/sprite_patch.rb +1 -1
  34. data/lib/redmineup/patches/compatibility/user_patch.rb +3 -3
  35. data/lib/redmineup/version.rb +1 -1
  36. data/lib/redmineup.rb +16 -35
  37. data/test/acts_as_taggable/tag_test.rb +12 -9
  38. data/test/schema.rb +1 -1
  39. data/test/tags_helper_view_test.rb +41 -0
  40. data/test/test_helper.rb +2 -1
  41. metadata +14 -2
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Really Simple Color Picker in jQuery
3
+ *
4
+ * Licensed under the MIT (MIT-LICENSE.txt) licenses.
5
+ *
6
+ * Copyright (c) 2008-2012
7
+ * Lakshan Perera (www.laktek.com) & Daniel Lacy (daniellacy.com)
8
+ *
9
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
10
+ * of this software and associated documentation files (the "Software"), to
11
+ * deal in the Software without restriction, including without limitation the
12
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
13
+ * sell copies of the Software, and to permit persons to whom the Software is
14
+ * furnished to do so, subject to the following conditions:
15
+ *
16
+ * The above copyright notice and this permission notice shall be included in
17
+ * all copies or substantial portions of the Software.
18
+ *
19
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
25
+ * IN THE SOFTWARE.
26
+ */(function(a){var b,c,d=0,e={control:a('<div class="colorPicker-picker">&nbsp;</div>'),palette:a('<div id="colorPicker_palette" class="colorPicker-palette" />'),swatch:a('<div class="colorPicker-swatch">&nbsp;</div>'),hexLabel:a('<label for="colorPicker_hex">Hex</label>'),hexField:a('<input type="text" id="colorPicker_hex" />')},f="transparent",g;a.fn.colorPicker=function(b){return this.each(function(){var c=a(this),g=a.extend({},a.fn.colorPicker.defaults,b),h=a.fn.colorPicker.toHex(c.val().length>0?c.val():g.pickerDefault),i=e.control.clone(),j=e.palette.clone().attr("id","colorPicker_palette-"+d),k=e.hexLabel.clone(),l=e.hexField.clone(),m=j[0].id,n,o;a.each(g.colors,function(b){n=e.swatch.clone(),g.colors[b]===f?(n.addClass(f).text("X"),a.fn.colorPicker.bindPalette(l,n,f)):(n.css("background-color","#"+this),a.fn.colorPicker.bindPalette(l,n)),n.appendTo(j)}),k.attr("for","colorPicker_hex-"+d),l.attr({id:"colorPicker_hex-"+d,value:h}),l.bind("keydown",function(b){if(b.keyCode===13){var d=a.fn.colorPicker.toHex(a(this).val());a.fn.colorPicker.changeColor(d?d:c.val())}b.keyCode===27&&a.fn.colorPicker.hidePalette()}),l.bind("keyup",function(b){var d=a.fn.colorPicker.toHex(a(b.target).val());a.fn.colorPicker.previewColor(d?d:c.val())}),a('<div class="colorPicker_hexWrap" />').append(k).appendTo(j),j.find(".colorPicker_hexWrap").append(l),g.showHexField===!1&&(l.hide(),k.hide()),a("body").append(j),j.hide(),i.css("background-color",h),i.bind("click",function(){c.is(":not(:disabled)")&&a.fn.colorPicker.togglePalette(a("#"+m),a(this))}),b&&b.onColorChange?i.data("onColorChange",b.onColorChange):i.data("onColorChange",function(){}),(o=c.data("text"))&&i.html(o),c.after(i),c.bind("change",function(){c.next(".colorPicker-picker").css("background-color",a.fn.colorPicker.toHex(a(this).val()))}),c.val(h);if(c[0].tagName.toLowerCase()==="input")try{c.attr("type","hidden")}catch(p){c.css("visibility","hidden").css("position","absolute")}else c.hide();d++})},a.extend(!0,a.fn.colorPicker,{toHex:function(a){if(a.match(/[0-9A-F]{6}|[0-9A-F]{3}$/i))return a.charAt(0)==="#"?a:"#"+a;if(!a.match(/^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/))return!1;var b=[parseInt(RegExp.$1,10),parseInt(RegExp.$2,10),parseInt(RegExp.$3,10)],c=function(a){if(a.length<2)for(var b=0,c=2-a.length;b<c;b++)a="0"+a;return a};if(b.length===3){var d=c(b[0].toString(16)),e=c(b[1].toString(16)),f=c(b[2].toString(16));return"#"+d+e+f}},checkMouse:function(d,e){var f=c,g=a(d.target).parents("#"+f.attr("id")).length;if(d.target===a(f)[0]||d.target===b[0]||g>0)return;a.fn.colorPicker.hidePalette()},hidePalette:function(){a(document).unbind("mousedown",a.fn.colorPicker.checkMouse),a(".colorPicker-palette").hide()},showPalette:function(c){var d=b.prev("input").val();c.css({top:b.offset().top+b.outerHeight(),left:b.offset().left}),a("#color_value").val(d),c.show(),a(document).bind("mousedown",a.fn.colorPicker.checkMouse)},togglePalette:function(d,e){e&&(b=e),c=d,c.is(":visible")?a.fn.colorPicker.hidePalette():a.fn.colorPicker.showPalette(d)},changeColor:function(c){b.css("background-color",c),b.prev("input").val(c).change(),a.fn.colorPicker.hidePalette(),b.data("onColorChange").call(b,a(b).prev("input").attr("id"),c)},previewColor:function(a){b.css("background-color",a)},bindPalette:function(c,d,e){e=e?e:a.fn.colorPicker.toHex(d.css("background-color")),d.bind({click:function(b){g=e,a.fn.colorPicker.changeColor(e)},mouseover:function(b){g=c.val(),a(this).css("border-color","#598FEF"),c.val(e),a.fn.colorPicker.previewColor(e)},mouseout:function(d){a(this).css("border-color","#000"),c.val(b.css("background-color")),c.val(g),a.fn.colorPicker.previewColor(g)}})}}),a.fn.colorPicker.defaults={pickerDefault:"FFFFFF",colors:["000000","993300","333300","000080","333399","333333","800000","FF6600","808000","008000","008080","0000FF","666699","808080","FF0000","FF9900","99CC00","339966","33CCCC","3366FF","800080","999999","FF00FF","FFCC00","FFFF00","00FF00","00FFFF","00CCFF","993366","C0C0C0","FF99CC","FFCC99","FFFF99","CCFFFF","99CCFF","FFFFFF"],addColors:[],showHexField:!0}})(jQuery);
@@ -123,6 +123,7 @@ function select2Tag(id, options) {
123
123
  $(function () {
124
124
  var selectField = $('select#' + id);
125
125
  selectField.select2(buildSelect2Options(options));
126
+ bindSelectHandler(selectField, options);
126
127
 
127
128
  var select2Instance = selectField.data('select2');
128
129
  select2Instance.on('results:message', function(params){
@@ -133,6 +134,15 @@ function select2Tag(id, options) {
133
134
  };
134
135
 
135
136
 
137
+ function bindSelectHandler(selectField, options) {
138
+ var callbackName = options['on_select'];
139
+ if (!callbackName) { return; }
140
+ if (typeof window[callbackName] !== 'function') { return; }
141
+
142
+ selectField.on('select2:select', window[callbackName]);
143
+ }
144
+
145
+
136
146
  function buildSelect2Options(options) {
137
147
  result = {
138
148
  placeholder: options['placeholder'] || '',
@@ -0,0 +1,509 @@
1
+ /* ============================================================
2
+ SELECT2 (from select2.css)
3
+ ============================================================ */
4
+ .select2-container {
5
+ box-sizing: border-box;
6
+ display: inline-block;
7
+ margin: 0;
8
+ position: relative;
9
+ vertical-align: middle;
10
+ }
11
+ .select2-container .select2-selection--single {
12
+ box-sizing: border-box;
13
+ cursor: pointer;
14
+ display: block;
15
+ height: 28px;
16
+ user-select: none;
17
+ -webkit-user-select: none;
18
+ }
19
+ .select2-container .select2-selection--single .select2-selection__rendered {
20
+ display: block;
21
+ padding-left: 8px;
22
+ padding-right: 20px;
23
+ overflow: hidden;
24
+ text-overflow: ellipsis;
25
+ white-space: nowrap;
26
+ }
27
+ .select2-container .select2-selection--single .select2-selection__clear {
28
+ position: relative;
29
+ }
30
+ .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered {
31
+ padding-right: 8px;
32
+ padding-left: 20px;
33
+ }
34
+ .select2-container .select2-selection--multiple {
35
+ box-sizing: border-box;
36
+ cursor: pointer;
37
+ display: block;
38
+ min-height: 24px;
39
+ user-select: none;
40
+ -webkit-user-select: none;
41
+ }
42
+ .select2-container .select2-selection--multiple .select2-selection__rendered {
43
+ /*display: inline-block;*/
44
+ overflow: hidden;
45
+ padding-left: 8px;
46
+ text-overflow: ellipsis;
47
+ white-space: nowrap;
48
+ }
49
+ .select2-container .select2-search--inline {
50
+ float: left;
51
+ }
52
+ .select2-container .select2-search--inline .select2-search__field {
53
+ box-sizing: border-box;
54
+ border: none;
55
+ font-size: 100%;
56
+ margin-top: 2px;
57
+ padding: 0;
58
+ }
59
+ .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button {
60
+ -webkit-appearance: none;
61
+ }
62
+
63
+ .select2-dropdown {
64
+ background-color: white;
65
+ border: 1px solid #aaa;
66
+ border-radius: 4px;
67
+ box-sizing: border-box;
68
+ display: block;
69
+ position: absolute;
70
+ left: -100000px;
71
+ width: 100%;
72
+ z-index: 1051;
73
+ }
74
+
75
+ .select2-results {
76
+ display: block;
77
+ }
78
+
79
+ .select2-results__options {
80
+ list-style: none;
81
+ margin: 0;
82
+ padding: 0;
83
+ }
84
+
85
+ .select2-results__option {
86
+ padding: 6px;
87
+ user-select: none;
88
+ -webkit-user-select: none;
89
+ }
90
+ .select2-results__option[aria-selected] {
91
+ cursor: pointer;
92
+ }
93
+
94
+ .select2-container--open .select2-dropdown {
95
+ left: 0;
96
+ }
97
+
98
+ .select2-container--open .select2-dropdown--above {
99
+ border-bottom: none;
100
+ border-bottom-left-radius: 0;
101
+ border-bottom-right-radius: 0;
102
+ }
103
+
104
+ .select2-container--open .select2-dropdown--below {
105
+ border-top: none;
106
+ border-top-left-radius: 0;
107
+ border-top-right-radius: 0;
108
+ }
109
+
110
+ .select2-search--dropdown {
111
+ display: block;
112
+ padding: 4px;
113
+ }
114
+ .select2-search--dropdown .select2-search__field {
115
+ padding: 4px;
116
+ width: 100%;
117
+ box-sizing: border-box;
118
+ }
119
+ .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {
120
+ -webkit-appearance: none;
121
+ }
122
+ .select2-search--dropdown.select2-search--hide {
123
+ display: none;
124
+ }
125
+
126
+ .select2-close-mask {
127
+ border: 0;
128
+ margin: 0;
129
+ padding: 0;
130
+ display: block;
131
+ position: fixed;
132
+ left: 0;
133
+ top: 0;
134
+ min-height: 100%;
135
+ min-width: 100%;
136
+ height: auto;
137
+ width: auto;
138
+ opacity: 0;
139
+ z-index: 99;
140
+ background-color: #fff;
141
+ filter: alpha(opacity=0);
142
+ }
143
+
144
+ .select2-hidden-accessible {
145
+ border: 0 !important;
146
+ clip: rect(0 0 0 0) !important;
147
+ height: 1px !important;
148
+ margin: -1px !important;
149
+ overflow: hidden !important;
150
+ padding: 0 !important;
151
+ position: absolute !important;
152
+ width: 1px !important;
153
+ }
154
+
155
+ .select2-container--default .select2-selection--single {
156
+ background-color: #fff;
157
+ height: 24px;
158
+ border: 1px solid #ccc;
159
+ border-radius: 3px;
160
+ }
161
+
162
+ .select2-container--default .select2-selection--single.icon {
163
+ background-position-x: 3px;
164
+ }
165
+
166
+ .select2-container--default .select2-selection--single .select2-selection__rendered {
167
+ line-height: 21px;
168
+ font-size: 11px;
169
+ }
170
+
171
+ .select2-container--default .select2-selection--single.icon .select2-selection__rendered {
172
+ padding-left: 2px
173
+ }
174
+
175
+ .select2-container--default .select2-selection--single .select2-selection__clear {
176
+ cursor: pointer;
177
+ float: right;
178
+ font-weight: normal;
179
+ color: #888;
180
+ }
181
+ .select2-container--default .select2-selection--single .select2-selection__placeholder {
182
+ color: #999;
183
+ }
184
+ .select2-container--default .select2-selection--single .select2-selection__arrow {
185
+ height: 24px;
186
+ position: absolute;
187
+ top: 0px;
188
+ right: 1px;
189
+ width: 20px;
190
+ }
191
+ .select2-container--default .select2-selection--single .select2-selection__arrow b {
192
+ border-color: #888 transparent transparent transparent;
193
+ border-style: solid;
194
+ border-width: 5px 4px 0 4px;
195
+ height: 0;
196
+ left: 50%;
197
+ margin-left: -4px;
198
+ margin-top: -2px;
199
+ position: absolute;
200
+ top: 50%;
201
+ width: 0;
202
+ }
203
+ .select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear {
204
+ float: left;
205
+ }
206
+ .select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow {
207
+ left: 1px;
208
+ right: auto;
209
+ }
210
+ .select2-container--default.select2-container--disabled .select2-selection--single {
211
+ background-color: #eee;
212
+ cursor: default;
213
+ }
214
+ .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear {
215
+ display: none;
216
+ }
217
+ .select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {
218
+ border-color: transparent transparent #888 transparent;
219
+ border-width: 0 4px 5px 4px;
220
+ }
221
+ .select2-container--default .select2-selection--multiple {
222
+ background-color: white;
223
+ border: 1px solid #ccc;
224
+ border-radius: 3px;
225
+ cursor: text;
226
+ }
227
+
228
+ #sidebar .select2-container--default .select2-selection--multiple .select2-selection__rendered,
229
+ .select2-container--default .select2-selection--multiple .select2-selection__rendered {
230
+ box-sizing: border-box;
231
+ list-style: none;
232
+ margin: 0;
233
+ padding: 0 2px 1px 2px;
234
+ width: 100%;
235
+ }
236
+ .select2-container--default .select2-selection--multiple .select2-selection__rendered li {
237
+ list-style: none;
238
+ }
239
+ .select2-container--default .select2-selection--multiple .select2-selection__placeholder {
240
+ color: #999;
241
+ margin-top: 5px;
242
+ float: left;
243
+ }
244
+ .select2-container--default .select2-selection--multiple .select2-selection__clear {
245
+ cursor: pointer;
246
+ float: right;
247
+ font-weight: bold;
248
+ margin-top: 2px;
249
+ margin-right: 2px;
250
+ }
251
+
252
+ #sidebar .select2-container--default .select2-selection--multiple .select2-selection__choice,
253
+ .select2-container--default .select2-selection--multiple .select2-selection__choice {
254
+ background-color: #efefef;
255
+ border-radius: 2px;
256
+ cursor: default;
257
+ float: left;
258
+ margin-right: 2px;
259
+ margin-top: 2px;
260
+ padding: 0 3px;
261
+ }
262
+ .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
263
+ color: #aaa;
264
+ cursor: pointer;
265
+ display: inline-block;
266
+ font-weight: normal;
267
+ margin-right: 2px;
268
+ }
269
+ .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
270
+ color: #333;
271
+ }
272
+ .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline {
273
+ float: right;
274
+ }
275
+ .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
276
+ margin-left: 5px;
277
+ margin-right: auto;
278
+ }
279
+ .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
280
+ margin-left: 2px;
281
+ margin-right: auto;
282
+ }
283
+ .select2-container--default.select2-container--focus .select2-selection--multiple {
284
+ border: 1px solid #5ad;
285
+ outline: none;
286
+ }
287
+ .select2-container--default.select2-container--disabled .select2-selection--multiple {
288
+ background-color: #eee;
289
+ cursor: default;
290
+ }
291
+ .select2-container--default.select2-container--disabled .select2-selection__choice__remove {
292
+ display: none;
293
+ }
294
+ .select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple {
295
+ border-top-left-radius: 0;
296
+ border-top-right-radius: 0;
297
+ }
298
+ .select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple {
299
+ border-bottom-left-radius: 0;
300
+ border-bottom-right-radius: 0;
301
+ }
302
+ .select2-container--default .select2-search--dropdown .select2-search__field {
303
+ border: 1px solid #aaa;
304
+ }
305
+ .select2-container--default .select2-search--inline .select2-search__field {
306
+ background: transparent;
307
+ border: none;
308
+ outline: 0;
309
+ box-shadow: none;
310
+ -webkit-appearance: textfield;
311
+ height: 18px;
312
+ }
313
+ .select2-container--default .select2-results > .select2-results__options {
314
+ max-height: 200px;
315
+ overflow-y: auto;
316
+ }
317
+ .select2-container--default .select2-results__option[role=group] {
318
+ padding: 0;
319
+ }
320
+ .select2-container--default .select2-results__option[aria-disabled=true] {
321
+ color: #999;
322
+ }
323
+ .select2-container--default .select2-results__option[aria-selected=true] {
324
+ background-color: #eee;
325
+ }
326
+ .select2-container--default .select2-results__option .select2-results__option {
327
+ padding-left: 1em;
328
+ }
329
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__group {
330
+ padding-left: 0;
331
+ }
332
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option {
333
+ margin-left: -1em;
334
+ padding-left: 2em;
335
+ }
336
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
337
+ margin-left: -2em;
338
+ padding-left: 3em;
339
+ }
340
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
341
+ margin-left: -3em;
342
+ padding-left: 4em;
343
+ }
344
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
345
+ margin-left: -4em;
346
+ padding-left: 5em;
347
+ }
348
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
349
+ margin-left: -5em;
350
+ padding-left: 6em;
351
+ }
352
+ .select2-container--default .select2-results__option--highlighted[aria-selected] {
353
+ background-color: #eef5fd;
354
+ }
355
+ .select2-container--default .select2-results__group {
356
+ cursor: default;
357
+ display: block;
358
+ padding: 6px;
359
+ }
360
+
361
+ .filter .select2 {
362
+ margin: 1px;
363
+ min-width: 130px;
364
+ }
365
+
366
+ .filter .select2-selection--multiple .select2-search--inline .select2-search__field {
367
+ border: 0px !important;
368
+ height: inherit !important;
369
+ padding: 0px !important;
370
+ }
371
+
372
+ .filter .select2-container--default .select2-selection--multiple .select2-selection__choice {
373
+ outline: none;
374
+ border: 0px;
375
+ padding: 3px 5px;
376
+ }
377
+
378
+ /* ============================================================
379
+ TAGS
380
+ ============================================================ */
381
+
382
+ #sidebar ul.tags-cloud { list-style: none; padding: 0; }
383
+ #sidebar ul.tags-cloud li { margin: .25em 0; }
384
+
385
+ div.tags-cloud { text-align: center; }
386
+
387
+ .tag-label-color {
388
+ border: 1px solid rgba(0, 0, 0, 0.2);
389
+ border-radius: 3px;
390
+ padding: 2px 4px;
391
+ display: inline-block;
392
+ font-size: 10px;
393
+ margin: 0 0 5px 2px;
394
+ color: white;
395
+ }
396
+
397
+ table.list tr.issue .tag-label-color a,
398
+ .tag-label-color a { color: white; text-decoration: none; font-weight: normal; }
399
+
400
+ .tag-label-color:hover { filter: brightness(0.85); }
401
+
402
+ .tag_list { margin-top: 5px; display: inline-block; }
403
+
404
+ span.tag-label,
405
+ span.tag-input { display: inline-block; }
406
+
407
+ tr.issue td.tags,
408
+ table.list tr td.tags { text-align: left; white-space: normal; }
409
+
410
+ div.tags-cloud .tag-nube-1 { font-size: .8em; }
411
+ div.tags-cloud .tag-nube-2 { font-size: .9em; }
412
+ div.tags-cloud .tag-nube-3 { font-size: 1em; }
413
+ div.tags-cloud .tag-nube-4 { font-size: 1.1em; }
414
+ div.tags-cloud .tag-nube-5 { font-size: 1.2em; }
415
+ div.tags-cloud .tag-nube-6 { font-size: 1.3em; }
416
+ div.tags-cloud .tag-nube-7 { font-size: 1.4em; }
417
+ div.tags-cloud .tag-nube-8 { font-size: 1.5em; }
418
+
419
+ .tag-label .tag-count,
420
+ .tag-label-color .tag-count { font-size: .75em; margin-left: .5em; }
421
+
422
+ /* ===== Calendars ===== */
423
+ table.cal {width: 100%; margin: 0 0 6px 0; border: 1px solid #c0c0c0; border-spacing: 0; border-radius: 3px;}
424
+ table.cal thead th {width: 14%; background-color:#EEEEEE; padding: 4px; }
425
+ table.cal thead th.week-number {width: auto;}
426
+ table.cal tbody tr {height: 100px;}
427
+ table.cal td .icon {padding-top: 2px; padding-bottom: 3px;}
428
+ table.cal td {border: 1px solid #d7d7d7; vertical-align: top; font-size: 0.9em; border-bottom: 0; border-right: 0;}
429
+ table.cal td.week-number { background-color:#EEEEEE; padding: 4px; border:none; font-size: 1em;}
430
+ table.cal td p.day-num {font-size: 1.1em; text-align:right;}
431
+ table.cal td.odd p.day-num {color: #bbb;}
432
+ table.cal td.today {background:#ffffdd;}
433
+ table.cal td.today p.day-num {font-weight: bold;}
434
+ table.cal td.nwday:not(.odd) {background-color:#f1f1f1;}
435
+ table.cal .starting a.issue, p.cal.legend .starting {background: url(../../../images/bullet_go.png) no-repeat -1px -2px; padding-left:16px;}
436
+ table.cal .ending a.issue, p.cal.legend .ending {background: url(../../../images/bullet_end.png) no-repeat -1px -2px; padding-left:16px;}
437
+ table.cal .starting.ending a.issue, p.cal.legend .starting.ending {background: url(../../../images/bullet_diamond.png) no-repeat -1px -2px; padding-left:16px;}
438
+
439
+ #admin-menu a.icon-redmineup-money:not(:has(svg)) {
440
+ background-image: url(../images/money.png);
441
+ }
442
+
443
+ ul.cal {
444
+ list-style: none;
445
+ width: 100%;
446
+ padding: 0;
447
+ display: grid;
448
+ grid-template-columns: 2rem repeat(7, 1fr);
449
+ margin: 0;
450
+ border: 1px solid #c0c0c0;
451
+ border-spacing: 0;
452
+ border-radius: 3px;
453
+ }
454
+ .cal .calhead { background-color:#eee; text-align: center; font-weight: bold; padding: 4px }
455
+ .cal .week-number { background-color:#eee; border:none; font-size: 1em; padding: 4px; text-align: center; }
456
+ .cal .week-number .label-week { display: none; }
457
+ .cal .calbody { border: 1px solid #d7d7d7; vertical-align: top; font-size: 0.9em; border-bottom: 0; border-right: 0; line-height: 1.2; min-height: calc(1.2em * 6); padding: 2px; }
458
+ .cal .calbody p.day-num {font-size: 1.1em; text-align:right;}
459
+ .cal .calbody .abbr-day {display:none}
460
+ .cal .calbody.odd p.day-num {color: #bbb;}
461
+ .cal .calbody.today {background:#ffd;}
462
+ .cal .calbody.today p.day-num {font-weight: bold;}
463
+ .cal .calbody .icon {padding-top: 2px; padding-bottom: 3px;}
464
+ .cal .calbody.nwday:not(.odd) {background-color:#f1f1f1;}
465
+ .cal .starting a.issue, p.cal.legend .starting {background: url(../images/bullet_go.png) no-repeat -1px -2px; padding-left:16px;}
466
+ .cal .ending a.issue, p.cal.legend .ending {background: url(../images/bullet_end.png) no-repeat -1px -2px; padding-left:16px;}
467
+ .cal .starting.ending a.issue, p.cal.legend .starting.ending {background: url(../images/bullet_diamond.png) no-repeat -1px -2px; padding-left:16px;}
468
+ @media screen and (max-width: 899px) {
469
+ ul.cal { display: block }
470
+ .cal .calhead { display: none }
471
+ .cal .calbody { min-height: calc(1.2em * 3); }
472
+ .cal .calbody .abbr-day { display: inline; }
473
+ .cal .week-number { border: 1px solid #c0c0c0; text-align: left; font-weight: bold; background-color: #def; }
474
+ .cal .week-number .label-week { display: inline; }
475
+ .cal .calbody p.day-num { font-size: 1.1em; text-align: left; }
476
+ }
477
+
478
+ /* Color picker */
479
+
480
+ div.colorPicker-picker {
481
+ height: 16px;
482
+ width: 16px;
483
+ padding: 0 !important;
484
+ border: 1px solid #ccc;
485
+ cursor: pointer;
486
+ line-height: 16px;
487
+ }
488
+
489
+ div.colorPicker-palette {
490
+ width: 200px;
491
+ position: absolute;
492
+ background-color: #fff;
493
+ border: 1px solid #ccc;
494
+ padding: 5px;
495
+ z-index: 9999;
496
+ }
497
+ div.colorPicker_hexWrap {width: 100%; float:left; padding: 5px;}
498
+ div.colorPicker_hexWrap label {font-size: 95%; color: #2F2F2F; margin: 5px 2px; width: 25%}
499
+ div.colorPicker_hexWrap input {font-size: 95%; width: 65%; }
500
+
501
+ div.colorPicker-swatch {
502
+ height: 16px;
503
+ width: 16px;
504
+ border: 1px solid #000;
505
+ margin: 2px;
506
+ float: left;
507
+ cursor: pointer;
508
+ line-height: 12px;
509
+ }
@@ -0,0 +1 @@
1
+ <%= redmineup_assets %>
@@ -11,3 +11,4 @@ en:
11
11
  label_redmineup_major_currencies: Major currencies
12
12
  label_redmineup_thousands_delimiter: Thousands delimiter
13
13
  label_redmineup_decimal_separator: Decimal separator
14
+ lable_redmineup_add_tag: add tag
@@ -11,3 +11,4 @@ ru:
11
11
  label_redmineup_major_currencies: Основные валюты
12
12
  label_redmineup_thousands_delimiter: Разделитель разрядов
13
13
  label_redmineup_decimal_separator: Десятичный разделитель
14
+ lable_redmineup_add_tag: добавить тег
data/config/routes.rb CHANGED
@@ -2,4 +2,8 @@
2
2
 
3
3
  Rails.application.routes.draw do
4
4
  match 'redmineup/settings/:id', to: 'redmineup#settings', as: 'redmineup_settings', via: [:get, :post]
5
+ match 'auto_completes/taggable_tags' => 'auto_completes#taggable_tags',
6
+ via: :get, as: 'auto_complete_taggable_tags'
7
+
8
+ mount ActionCable.rup_server => '/rup_cable', as: 'rup_cable' if Redmineup.cable_available?
5
9
  end