spiderfw 0.6.30 → 0.6.31

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 (109) hide show
  1. checksums.yaml +15 -7
  2. data/CHANGELOG +11 -0
  3. data/VERSION +1 -1
  4. data/apps/app_server/config/options.rb +1 -1
  5. data/apps/core/auth/controllers/login_controller.rb +3 -0
  6. data/apps/core/components/assets.rb +61 -3
  7. data/apps/core/components/public/bootstrap_3/img/glyphicons-halflings-regular.eot +0 -0
  8. data/apps/core/components/public/bootstrap_3/img/glyphicons-halflings-regular.svg +229 -0
  9. data/apps/core/components/public/bootstrap_3/img/glyphicons-halflings-regular.ttf +0 -0
  10. data/apps/core/components/public/bootstrap_3/img/glyphicons-halflings-regular.woff +0 -0
  11. data/apps/core/components/public/bootstrap_3/js/affix.js +140 -0
  12. data/apps/core/components/public/bootstrap_3/js/alert.js +92 -0
  13. data/apps/core/components/public/bootstrap_3/js/button.js +110 -0
  14. data/apps/core/components/public/bootstrap_3/js/carousel.js +210 -0
  15. data/apps/core/components/public/bootstrap_3/js/collapse.js +180 -0
  16. data/apps/core/components/public/bootstrap_3/js/dropdown.js +151 -0
  17. data/apps/core/components/public/bootstrap_3/js/modal.js +277 -0
  18. data/apps/core/components/public/bootstrap_3/js/popover.js +113 -0
  19. data/apps/core/components/public/bootstrap_3/js/scrollspy.js +158 -0
  20. data/apps/core/components/public/bootstrap_3/js/tab.js +128 -0
  21. data/apps/core/components/public/bootstrap_3/js/tooltip.js +456 -0
  22. data/apps/core/components/public/bootstrap_3/js/transition.js +48 -0
  23. data/apps/core/components/public/bootstrap_3/scss/_alerts.scss +67 -0
  24. data/apps/core/components/public/bootstrap_3/scss/_badges.scss +57 -0
  25. data/apps/core/components/public/bootstrap_3/scss/_breadcrumbs.scss +26 -0
  26. data/apps/core/components/public/bootstrap_3/scss/_button-groups.scss +240 -0
  27. data/apps/core/components/public/bootstrap_3/scss/_buttons.scss +159 -0
  28. data/apps/core/components/public/bootstrap_3/scss/_carousel.scss +243 -0
  29. data/apps/core/components/public/bootstrap_3/scss/_close.scss +35 -0
  30. data/apps/core/components/public/bootstrap_3/scss/_code.scss +62 -0
  31. data/apps/core/components/public/bootstrap_3/scss/_component-animations.scss +35 -0
  32. data/apps/core/components/public/bootstrap_3/scss/_dropdowns.scss +214 -0
  33. data/apps/core/components/public/bootstrap_3/scss/_forms.scss +489 -0
  34. data/apps/core/components/public/bootstrap_3/scss/_glyphicons.scss +237 -0
  35. data/apps/core/components/public/bootstrap_3/scss/_grid.scss +84 -0
  36. data/apps/core/components/public/bootstrap_3/scss/_input-groups.scss +166 -0
  37. data/apps/core/components/public/bootstrap_3/scss/_jumbotron.scss +48 -0
  38. data/apps/core/components/public/bootstrap_3/scss/_labels.scss +66 -0
  39. data/apps/core/components/public/bootstrap_3/scss/_list-group.scss +129 -0
  40. data/apps/core/components/public/bootstrap_3/scss/_media.scss +56 -0
  41. data/apps/core/components/public/bootstrap_3/scss/_mixins.scss +39 -0
  42. data/apps/core/components/public/bootstrap_3/scss/_modals.scss +147 -0
  43. data/apps/core/components/public/bootstrap_3/scss/_navbar.scss +658 -0
  44. data/apps/core/components/public/bootstrap_3/scss/_navs.scss +242 -0
  45. data/apps/core/components/public/bootstrap_3/scss/_normalize.scss +425 -0
  46. data/apps/core/components/public/bootstrap_3/scss/_pager.scss +55 -0
  47. data/apps/core/components/public/bootstrap_3/scss/_pagination.scss +88 -0
  48. data/apps/core/components/public/bootstrap_3/scss/_panels.scss +240 -0
  49. data/apps/core/components/public/bootstrap_3/scss/_popovers.scss +133 -0
  50. data/apps/core/components/public/bootstrap_3/scss/_print.scss +101 -0
  51. data/apps/core/components/public/bootstrap_3/scss/_progress-bars.scss +89 -0
  52. data/apps/core/components/public/bootstrap_3/scss/_responsive-embed.scss +34 -0
  53. data/apps/core/components/public/bootstrap_3/scss/_responsive-utilities.scss +174 -0
  54. data/apps/core/components/public/bootstrap_3/scss/_scaffolding.scss +150 -0
  55. data/apps/core/components/public/bootstrap_3/scss/_tables.scss +233 -0
  56. data/apps/core/components/public/bootstrap_3/scss/_theme.scss +247 -0
  57. data/apps/core/components/public/bootstrap_3/scss/_thumbnails.scss +38 -0
  58. data/apps/core/components/public/bootstrap_3/scss/_tooltip.scss +95 -0
  59. data/apps/core/components/public/bootstrap_3/scss/_type.scss +298 -0
  60. data/apps/core/components/public/bootstrap_3/scss/_utilities.scss +56 -0
  61. data/apps/core/components/public/bootstrap_3/scss/_variables.scss +853 -0
  62. data/apps/core/components/public/bootstrap_3/scss/_wells.scss +29 -0
  63. data/apps/core/components/public/bootstrap_3/scss/bootstrap.scss +50 -0
  64. data/apps/core/components/public/bootstrap_3/scss/mixins/_alerts.scss +14 -0
  65. data/apps/core/components/public/bootstrap_3/scss/mixins/_background-variant.scss +11 -0
  66. data/apps/core/components/public/bootstrap_3/scss/mixins/_border-radius.scss +18 -0
  67. data/apps/core/components/public/bootstrap_3/scss/mixins/_buttons.scss +50 -0
  68. data/apps/core/components/public/bootstrap_3/scss/mixins/_center-block.scss +7 -0
  69. data/apps/core/components/public/bootstrap_3/scss/mixins/_clearfix.scss +22 -0
  70. data/apps/core/components/public/bootstrap_3/scss/mixins/_forms.scss +84 -0
  71. data/apps/core/components/public/bootstrap_3/scss/mixins/_gradients.scss +58 -0
  72. data/apps/core/components/public/bootstrap_3/scss/mixins/_grid-framework.scss +87 -0
  73. data/apps/core/components/public/bootstrap_3/scss/mixins/_grid.scss +122 -0
  74. data/apps/core/components/public/bootstrap_3/scss/mixins/_hide-text.scss +21 -0
  75. data/apps/core/components/public/bootstrap_3/scss/mixins/_image.scss +33 -0
  76. data/apps/core/components/public/bootstrap_3/scss/mixins/_labels.scss +12 -0
  77. data/apps/core/components/public/bootstrap_3/scss/mixins/_list-group.scss +31 -0
  78. data/apps/core/components/public/bootstrap_3/scss/mixins/_nav-divider.scss +10 -0
  79. data/apps/core/components/public/bootstrap_3/scss/mixins/_nav-vertical-align.scss +9 -0
  80. data/apps/core/components/public/bootstrap_3/scss/mixins/_opacity.scss +8 -0
  81. data/apps/core/components/public/bootstrap_3/scss/mixins/_pagination.scss +23 -0
  82. data/apps/core/components/public/bootstrap_3/scss/mixins/_panels.scss +20 -0
  83. data/apps/core/components/public/bootstrap_3/scss/mixins/_progress-bar.scss +8 -0
  84. data/apps/core/components/public/bootstrap_3/scss/mixins/_reset-filter.scss +8 -0
  85. data/apps/core/components/public/bootstrap_3/scss/mixins/_resize.scss +6 -0
  86. data/apps/core/components/public/bootstrap_3/scss/mixins/_responsive-visibility.scss +21 -0
  87. data/apps/core/components/public/bootstrap_3/scss/mixins/_size.scss +10 -0
  88. data/apps/core/components/public/bootstrap_3/scss/mixins/_tab-focus.scss +9 -0
  89. data/apps/core/components/public/bootstrap_3/scss/mixins/_table-row.scss +28 -0
  90. data/apps/core/components/public/bootstrap_3/scss/mixins/_text-emphasis.scss +11 -0
  91. data/apps/core/components/public/bootstrap_3/scss/mixins/_text-overflow.scss +8 -0
  92. data/apps/core/components/public/bootstrap_3/scss/mixins/_vendor-prefixes.scss +224 -0
  93. data/apps/core/components/public/js/jquery/plugins/bsmselect/js/jquery.bsmselect.js +1 -1
  94. data/apps/core/components/widgets/month_calendar/month_calendar.shtml +3 -3
  95. data/apps/core/components/widgets/table/table.rb +6 -2
  96. data/apps/core/components/widgets/table/table.shtml +4 -4
  97. data/apps/core/forms/widgets/form/form.rb +1 -1
  98. data/apps/core/forms/widgets/inputs/select/select.rb +13 -2
  99. data/apps/messenger/lib/backends/mobyt.rb +6 -2
  100. data/apps/messenger/lib/backends/skebby.rb +1 -1
  101. data/apps/webdav/controllers/webdav_controller.rb +16 -7
  102. data/lib/spiderfw/controller/http_controller.rb +4 -1
  103. data/lib/spiderfw/env.rb +0 -1
  104. data/lib/spiderfw/http/adapters/rack.rb +3 -1
  105. data/lib/spiderfw/model/base_model.rb +7 -3
  106. data/lib/spiderfw/model/storage/connection_pool.rb +6 -2
  107. data/lib/spiderfw/model/storage/db/db_storage.rb +25 -9
  108. data/lib/spiderfw/site.rb +1 -1
  109. metadata +308 -149
@@ -0,0 +1,8 @@
1
+ // Opacity
2
+
3
+ @mixin opacity($opacity) {
4
+ opacity: $opacity;
5
+ // IE8 filter
6
+ $opacity-ie: ($opacity * 100);
7
+ filter: #{alpha(opacity=$opacity-ie)};
8
+ }
@@ -0,0 +1,23 @@
1
+ // Pagination
2
+
3
+ @mixin pagination-size($padding-vertical, $padding-horizontal, $font-size, $border-radius) {
4
+ > li {
5
+ > a,
6
+ > span {
7
+ padding: $padding-vertical $padding-horizontal;
8
+ font-size: $font-size;
9
+ }
10
+ &:first-child {
11
+ > a,
12
+ > span {
13
+ @include border-left-radius($border-radius);
14
+ }
15
+ }
16
+ &:last-child {
17
+ > a,
18
+ > span {
19
+ @include border-right-radius($border-radius);
20
+ }
21
+ }
22
+ }
23
+ }
@@ -0,0 +1,20 @@
1
+ // Panels
2
+
3
+ @mixin panel-variant($border, $heading-text-color, $heading-bg-color, $heading-border) {
4
+ border-color: $border;
5
+
6
+ & > .panel-heading {
7
+ color: $heading-text-color;
8
+ background-color: $heading-bg-color;
9
+ border-color: $heading-border;
10
+
11
+ + .panel-collapse > .panel-body {
12
+ border-top-color: $border;
13
+ }
14
+ }
15
+ & > .panel-footer {
16
+ + .panel-collapse > .panel-body {
17
+ border-bottom-color: $border;
18
+ }
19
+ }
20
+ }
@@ -0,0 +1,8 @@
1
+ // Progress bars
2
+
3
+ @mixin progress-bar-variant($color) {
4
+ background-color: $color;
5
+ .progress-striped & {
6
+ @include gradient-striped();
7
+ }
8
+ }
@@ -0,0 +1,8 @@
1
+ // Reset filters for IE
2
+ //
3
+ // When you need to remove a gradient background, do not forget to use this to reset
4
+ // the IE filter for IE9 and below.
5
+
6
+ @mixin reset-filter() {
7
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
8
+ }
@@ -0,0 +1,6 @@
1
+ // Resize anything
2
+
3
+ @mixin resizable($direction) {
4
+ resize: $direction; // Options: horizontal, vertical, both
5
+ overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`
6
+ }
@@ -0,0 +1,21 @@
1
+ // Responsive utilities
2
+
3
+ //
4
+ // More easily include all the states for responsive-utilities.less.
5
+ // [converter] $parent hack
6
+ @mixin responsive-visibility($parent) {
7
+ #{$parent} {
8
+ display: block !important;
9
+ }
10
+ table#{$parent} { display: table; }
11
+ tr#{$parent} { display: table-row !important; }
12
+ th#{$parent},
13
+ td#{$parent} { display: table-cell !important; }
14
+ }
15
+
16
+ // [converter] $parent hack
17
+ @mixin responsive-invisibility($parent) {
18
+ #{$parent} {
19
+ display: none !important;
20
+ }
21
+ }
@@ -0,0 +1,10 @@
1
+ // Sizing shortcuts
2
+
3
+ @mixin size($width, $height) {
4
+ width: $width;
5
+ height: $height;
6
+ }
7
+
8
+ @mixin square($size) {
9
+ @include size($size, $size);
10
+ }
@@ -0,0 +1,9 @@
1
+ // WebKit-style focus
2
+
3
+ @mixin tab-focus() {
4
+ // Default
5
+ outline: thin dotted;
6
+ // WebKit
7
+ outline: 5px auto -webkit-focus-ring-color;
8
+ outline-offset: -2px;
9
+ }
@@ -0,0 +1,28 @@
1
+ // Tables
2
+
3
+ @mixin table-row-variant($state, $background) {
4
+ // Exact selectors below required to override `.table-striped` and prevent
5
+ // inheritance to nested tables.
6
+ .table > thead > tr,
7
+ .table > tbody > tr,
8
+ .table > tfoot > tr {
9
+ > td.#{$state},
10
+ > th.#{$state},
11
+ &.#{$state} > td,
12
+ &.#{$state} > th {
13
+ background-color: $background;
14
+ }
15
+ }
16
+
17
+ // Hover states for `.table-hover`
18
+ // Note: this is not available for cells or rows within `thead` or `tfoot`.
19
+ .table-hover > tbody > tr {
20
+ > td.#{$state}:hover,
21
+ > th.#{$state}:hover,
22
+ &.#{$state}:hover > td,
23
+ &:hover > .#{$state},
24
+ &.#{$state}:hover > th {
25
+ background-color: darken($background, 5%);
26
+ }
27
+ }
28
+ }
@@ -0,0 +1,11 @@
1
+ // Typography
2
+
3
+ // [converter] $parent hack
4
+ @mixin text-emphasis-variant($parent, $color) {
5
+ #{$parent} {
6
+ color: $color;
7
+ }
8
+ a#{$parent}:hover {
9
+ color: darken($color, 10%);
10
+ }
11
+ }
@@ -0,0 +1,8 @@
1
+ // Text overflow
2
+ // Requires inline-block or block for proper styling
3
+
4
+ @mixin text-overflow() {
5
+ overflow: hidden;
6
+ text-overflow: ellipsis;
7
+ white-space: nowrap;
8
+ }
@@ -0,0 +1,224 @@
1
+ // Vendor Prefixes
2
+ //
3
+ // All vendor mixins are deprecated as of v3.2 due to the introduction of
4
+ // Autoprefixer in our Gruntfile. They will be removed in v4.
5
+
6
+ // - Animations
7
+ // - Backface visibility
8
+ // - Box shadow
9
+ // - Box sizing
10
+ // - Content columns
11
+ // - Hyphens
12
+ // - Placeholder text
13
+ // - Transformations
14
+ // - Transitions
15
+ // - User Select
16
+
17
+
18
+ // Animations
19
+ @mixin animation($animation) {
20
+ -webkit-animation: $animation;
21
+ -o-animation: $animation;
22
+ animation: $animation;
23
+ }
24
+ @mixin animation-name($name) {
25
+ -webkit-animation-name: $name;
26
+ animation-name: $name;
27
+ }
28
+ @mixin animation-duration($duration) {
29
+ -webkit-animation-duration: $duration;
30
+ animation-duration: $duration;
31
+ }
32
+ @mixin animation-timing-function($timing-function) {
33
+ -webkit-animation-timing-function: $timing-function;
34
+ animation-timing-function: $timing-function;
35
+ }
36
+ @mixin animation-delay($delay) {
37
+ -webkit-animation-delay: $delay;
38
+ animation-delay: $delay;
39
+ }
40
+ @mixin animation-iteration-count($iteration-count) {
41
+ -webkit-animation-iteration-count: $iteration-count;
42
+ animation-iteration-count: $iteration-count;
43
+ }
44
+ @mixin animation-direction($direction) {
45
+ -webkit-animation-direction: $direction;
46
+ animation-direction: $direction;
47
+ }
48
+ @mixin animation-fill-mode($fill-mode) {
49
+ -webkit-animation-fill-mode: $fill-mode;
50
+ animation-fill-mode: $fill-mode;
51
+ }
52
+
53
+ // Backface visibility
54
+ // Prevent browsers from flickering when using CSS 3D transforms.
55
+ // Default value is `visible`, but can be changed to `hidden`
56
+
57
+ @mixin backface-visibility($visibility){
58
+ -webkit-backface-visibility: $visibility;
59
+ -moz-backface-visibility: $visibility;
60
+ backface-visibility: $visibility;
61
+ }
62
+
63
+ // Drop shadows
64
+ //
65
+ // Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's
66
+ // supported browsers that have box shadow capabilities now support it.
67
+
68
+ @mixin box-shadow($shadow...) {
69
+ -webkit-box-shadow: $shadow; // iOS <4.3 & Android <4.1
70
+ box-shadow: $shadow;
71
+ }
72
+
73
+ // Box sizing
74
+ @mixin box-sizing($boxmodel) {
75
+ -webkit-box-sizing: $boxmodel;
76
+ -moz-box-sizing: $boxmodel;
77
+ box-sizing: $boxmodel;
78
+ }
79
+
80
+ // CSS3 Content Columns
81
+ @mixin content-columns($column-count, $column-gap: $grid-gutter-width) {
82
+ -webkit-column-count: $column-count;
83
+ -moz-column-count: $column-count;
84
+ column-count: $column-count;
85
+ -webkit-column-gap: $column-gap;
86
+ -moz-column-gap: $column-gap;
87
+ column-gap: $column-gap;
88
+ }
89
+
90
+ // Optional hyphenation
91
+ @mixin hyphens($mode: auto) {
92
+ word-wrap: break-word;
93
+ -webkit-hyphens: $mode;
94
+ -moz-hyphens: $mode;
95
+ -ms-hyphens: $mode; // IE10+
96
+ -o-hyphens: $mode;
97
+ hyphens: $mode;
98
+ }
99
+
100
+ // Placeholder text
101
+ @mixin placeholder($color: $input-color-placeholder) {
102
+ &::-moz-placeholder { color: $color; // Firefox
103
+ opacity: 1; } // See https://github.com/twbs/bootstrap/pull/11526
104
+ &:-ms-input-placeholder { color: $color; } // Internet Explorer 10+
105
+ &::-webkit-input-placeholder { color: $color; } // Safari and Chrome
106
+ }
107
+
108
+ // Transformations
109
+ @mixin scale($ratio...) {
110
+ -webkit-transform: scale($ratio);
111
+ -ms-transform: scale($ratio); // IE9 only
112
+ -o-transform: scale($ratio);
113
+ transform: scale($ratio);
114
+ }
115
+ @mixin scale($ratioX, $ratioY...) {
116
+ -webkit-transform: scale($ratioX, $ratioY);
117
+ -ms-transform: scale($ratioX, $ratioY); // IE9 only
118
+ -o-transform: scale($ratioX, $ratioY);
119
+ transform: scale($ratioX, $ratioY);
120
+ }
121
+ @mixin scaleX($ratio) {
122
+ -webkit-transform: scaleX($ratio);
123
+ -ms-transform: scaleX($ratio); // IE9 only
124
+ -o-transform: scaleX($ratio);
125
+ transform: scaleX($ratio);
126
+ }
127
+ @mixin scaleY($ratio) {
128
+ -webkit-transform: scaleY($ratio);
129
+ -ms-transform: scaleY($ratio); // IE9 only
130
+ -o-transform: scaleY($ratio);
131
+ transform: scaleY($ratio);
132
+ }
133
+ @mixin skew($x, $y) {
134
+ -webkit-transform: skew($x, $y);
135
+ -ms-transform: skewX($x) skewY($y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+
136
+ -o-transform: skew($x, $y);
137
+ transform: skew($x, $y);
138
+ }
139
+ @mixin translate($x, $y) {
140
+ -webkit-transform: translate($x, $y);
141
+ -ms-transform: translate($x, $y); // IE9 only
142
+ -o-transform: translate($x, $y);
143
+ transform: translate($x, $y);
144
+ }
145
+ @mixin translate3d($x, $y, $z) {
146
+ -webkit-transform: translate3d($x, $y, $z);
147
+ transform: translate3d($x, $y, $z);
148
+ }
149
+ @mixin rotate($degrees) {
150
+ -webkit-transform: rotate($degrees);
151
+ -ms-transform: rotate($degrees); // IE9 only
152
+ -o-transform: rotate($degrees);
153
+ transform: rotate($degrees);
154
+ }
155
+ @mixin rotateX($degrees) {
156
+ -webkit-transform: rotateX($degrees);
157
+ -ms-transform: rotateX($degrees); // IE9 only
158
+ -o-transform: rotateX($degrees);
159
+ transform: rotateX($degrees);
160
+ }
161
+ @mixin rotateY($degrees) {
162
+ -webkit-transform: rotateY($degrees);
163
+ -ms-transform: rotateY($degrees); // IE9 only
164
+ -o-transform: rotateY($degrees);
165
+ transform: rotateY($degrees);
166
+ }
167
+ @mixin perspective($perspective) {
168
+ -webkit-perspective: $perspective;
169
+ -moz-perspective: $perspective;
170
+ perspective: $perspective;
171
+ }
172
+ @mixin perspective-origin($perspective) {
173
+ -webkit-perspective-origin: $perspective;
174
+ -moz-perspective-origin: $perspective;
175
+ perspective-origin: $perspective;
176
+ }
177
+ @mixin transform-origin($origin) {
178
+ -webkit-transform-origin: $origin;
179
+ -moz-transform-origin: $origin;
180
+ -ms-transform-origin: $origin; // IE9 only
181
+ transform-origin: $origin;
182
+ }
183
+
184
+
185
+ // Transitions
186
+
187
+ @mixin transition($transition...) {
188
+ -webkit-transition: $transition;
189
+ -o-transition: $transition;
190
+ transition: $transition;
191
+ }
192
+ @mixin transition-property($transition-property...) {
193
+ -webkit-transition-property: $transition-property;
194
+ transition-property: $transition-property;
195
+ }
196
+ @mixin transition-delay($transition-delay) {
197
+ -webkit-transition-delay: $transition-delay;
198
+ transition-delay: $transition-delay;
199
+ }
200
+ @mixin transition-duration($transition-duration...) {
201
+ -webkit-transition-duration: $transition-duration;
202
+ transition-duration: $transition-duration;
203
+ }
204
+ @mixin transition-timing-function($timing-function) {
205
+ -webkit-transition-timing-function: $timing-function;
206
+ transition-timing-function: $timing-function;
207
+ }
208
+ @mixin transition-transform($transition...) {
209
+ -webkit-transition: -webkit-transform $transition;
210
+ -moz-transition: -moz-transform $transition;
211
+ -o-transition: -o-transform $transition;
212
+ transition: transform $transition;
213
+ }
214
+
215
+
216
+ // User select
217
+ // For selecting text on the page
218
+
219
+ @mixin user-select($select) {
220
+ -webkit-user-select: $select;
221
+ -moz-user-select: $select;
222
+ -ms-user-select: $select; // IE10+
223
+ user-select: $select;
224
+ }
@@ -184,7 +184,7 @@
184
184
  */
185
185
  selectFirstItem: function() {
186
186
  setTimeout(function(){
187
- $('option:eq(0)', this.$select[multiple]).attr('selected', 'selected');
187
+ $('option:eq(0)', this.$select).attr('selected', 'selected');
188
188
  }, 1000);
189
189
  },
190
190
 
@@ -4,19 +4,19 @@
4
4
  <table class="{ @widget[:css_class] }">
5
5
  <thead>
6
6
  <tr>
7
- <th colspan="7">
7
+ <th colspan="7" scope="row" id="current_month">
8
8
  <a href="{ @request[:path] }?_w{ @widget[:param_u] }%5Bd%5D={ @prev_link }"><span>&lt;&lt;</span></a>
9
9
  { @current_month_name } { @year }
10
10
  <a href="{ @request[:path] }?_w{ @widget[:param_u] }%5Bd%5D={ @next_link }"><span>&gt;&gt;</span></a>
11
11
  </th>
12
12
  </tr>
13
13
  <tr>
14
- <th sp:each="@week_days |i|">{ @days_short_names[i] }</th>
14
+ <th scope="col" sp:each="@week_days |i|" id="{ @days_short_names[i] }_{ i }">{ @days_short_names[i] }</th>
15
15
  </tr>
16
16
  </thead>
17
17
  <tbody>
18
18
  <tr sp:each="@rows |row|">
19
- <td sp:each="row |col|" class="{ col[:classes].join(' ') }">
19
+ <td sp:each_with_index="row |col, i|" headers="event_calendar-current_month event_calendar-{ @days_short_names[i+1] }_{ i }" class="{ col[:classes].join(' ') }">
20
20
  { col[:day] }
21
21
  </td>
22
22
  </tr>
@@ -116,6 +116,8 @@ module Spider; module Components
116
116
  @scene.page = @page
117
117
  @scene.paginate_first = [@page-5, 1].max
118
118
  @scene.paginate = true
119
+ else
120
+ @rows.limit = @attributes[:row_limit]
119
121
  end
120
122
  if @sort_el
121
123
  @sort_el.each do |el|
@@ -177,8 +179,10 @@ module Spider; module Components
177
179
  list = "<ul>"
178
180
  if row[el]
179
181
  row[el][0..2].each{ |sub|
180
- if sub && element.junction? && element.model.attributes[:sub_model] != @model
181
- sub = sub.get(element.attributes[:junction_their_element])
182
+ #corretto errore, il controllo guardava solo se il sub_model (il modello collegato via junction) era uguale al modello corrente
183
+ # <= controlla se è uguale o una sottoclasse
184
+ if sub && element.junction? && !(@model <= element.model.attributes[:sub_model])
185
+ sub = sub.get(element.attributes[:junction_their_element])
182
186
  end
183
187
  sub_desc = sub.nil? ? '' : sub.to_s
184
188
  sub_desc ||= ''
@@ -16,20 +16,20 @@
16
16
  <tr class="{ (row_i%2==0) ? 'odd' : 'even' }">
17
17
  <td sp:each="@elements |element|">
18
18
  <a sp:if="((!@link_el.blank? && element == @link_el) && @link.blank?)" href="{ Spider::HTTP.urlencode(@data[row_i][@link_id]) }?current_page={ @page }">
19
- { @rows[row_i][element] }
19
+ { URI.decode(@rows[row_i][element]) }
20
20
  </a>
21
21
  <a sp:if="@link_el && element == @link_el && !@link.blank?" href="{ @link }{ Spider::HTTP.urlencode(@data[row_i][@link_id]) }&current_page={ @page }">
22
- { @rows[row_i][element] }
22
+ { URI.decode(@rows[row_i][element]) }
23
23
  </a>
24
24
  <span sp:if="element != @link_el" >
25
- { @rows[row_i][element] }
25
+ { URI.decode(@rows[row_i][element]) }
26
26
  </span>
27
27
  </td>
28
28
  </tr>
29
29
  </tpl:pass>
30
30
  </tbody>
31
31
  </table>
32
- <div sp:if="@pages > 1" class="pagination">
32
+ <div sp:if="!@pages.blank? && @pages > 1" class="pagination">
33
33
  <ul>
34
34
  <li sp:if="@page > 1">
35
35
  <a class="prev" href="{ @request[:path] }?_w{ @widget[:param] }[page]={ @page-1 }">&larr; _(Previous)</a>
@@ -363,7 +363,7 @@ module Spider; module Forms
363
363
  next unless input.modified?
364
364
  begin
365
365
  if (input.done?)
366
- obj.set(element_name, input.value)
366
+ obj.set(element_name, (input.value.respond_to?(:force_encoding) ? input.value.force_encoding('UTF-8') : input.value ) )
367
367
  else
368
368
  inputs_done = false
369
369
  end
@@ -50,7 +50,7 @@ module Spider; module Forms
50
50
  end
51
51
  @scene.values = {}
52
52
  @scene.selected = {}
53
- if @model || (@scene.data.is_a?(QuerySet) && @scene.data.autoload?)
53
+ if @model || (@scene.data.is_a?(Spider::Model::QuerySet) && @scene.data.autoload?)
54
54
  tree_el = nil
55
55
  if attributes[:tree_element]
56
56
  tree_el = @model.elements[attributes[:tree_element]]
@@ -65,12 +65,22 @@ module Spider; module Forms
65
65
  @scene.tree_depth = tree_el.attributes[:tree_depth]
66
66
  end
67
67
  end
68
+
68
69
  if @value
69
- val = @multiple ? @value : [@value]
70
+ if @multiple && @value.model.junction? && @value.model != @model
71
+ our_element = @value.model.elements_array.find{ |el| el.type == @model }
72
+ val = @value.map{ |obj| obj.get(our_element) }.uniq
73
+ else
74
+ val = @multiple ? @value : [@value]
75
+ end
76
+
70
77
  val.each do |v|
71
78
  @scene.selected[obj_to_key_str(v)] = true
72
79
  end
73
80
  end
81
+
82
+
83
+
74
84
  @scene.data.each_index do |i|
75
85
  @scene.values[i] = obj_to_key_str(@scene.data[i])
76
86
  end
@@ -79,6 +89,7 @@ module Spider; module Forms
79
89
 
80
90
 
81
91
  def value=(val)
92
+
82
93
  if val.blank?
83
94
  @value = nil
84
95
  return
@@ -1,6 +1,6 @@
1
1
  require 'digest/md5'
2
2
  require 'net/http'
3
- require 'iconv'
3
+ require 'iconv' if RUBY_VERSION =~ /1.8/
4
4
 
5
5
  module Spider::Messenger
6
6
 
@@ -8,7 +8,11 @@ module Spider::Messenger
8
8
 
9
9
  def self.parametri(username,password,to,from,testo,operation="TEXT",udh="")
10
10
  #cambio la codifica per gli accenti e caratteri particolari
11
- testo_codificato = Iconv.conv('ISO-8859-15', 'UTF-8', testo)
11
+ if RUBY_VERSION =~ /1.8/
12
+ testo_codificato = Iconv.conv('ISO-8859-15', 'UTF-8', testo)
13
+ else
14
+ testo_codificato = testo.encode('ISO-8859-15', 'UTF-8')
15
+ end
12
16
  string_digest = [username, operation, to, from, testo_codificato, password].map{ |val|
13
17
  val.to_s
14
18
  }.join("")
@@ -1,6 +1,6 @@
1
1
  require 'digest/md5'
2
2
  require 'net/http'
3
- require 'iconv'
3
+ require 'iconv' if RUBY_VERSION =~ /1.8/
4
4
 
5
5
  module Spider::Messenger
6
6
 
@@ -1,6 +1,6 @@
1
1
  require 'rexml/document'
2
2
  require 'webrick/httputils'
3
- require 'iconv'
3
+ require 'iconv' if RUBY_VERSION =~ /1.8/
4
4
 
5
5
  module Spider; module WebDAV
6
6
 
@@ -806,12 +806,21 @@ module Spider; module WebDAV
806
806
  def codeconv_str_fscode2utf(str)
807
807
  return str if @options[:FileSystemCoding] == "UTF-8"
808
808
  debug "codeconv str fscode2utf: orig='#{str}'"
809
- begin
810
- ret = Iconv.iconv("UTF-8", @options[:FileSystemCoding], str).first
811
- rescue Iconv::IllegalSequence
812
- warn "code conversion fail! #{@options[:FileSystemCoding]}->UTF-8 str=#{str.dump}"
813
- ret = str
814
- end
809
+ if RUBY_VERSION =~ /1.8/
810
+ begin
811
+ ret = Iconv.iconv("UTF-8", @options[:FileSystemCoding], str).first
812
+ rescue Iconv::IllegalSequence
813
+ warn "code conversion fail! #{@options[:FileSystemCoding]}->UTF-8 str=#{str.dump}"
814
+ ret = str
815
+ end
816
+ else
817
+ begin
818
+ ret = str.encode("UTF-8", @options[:FileSystemCoding]).first
819
+ rescue rescue EncodingError
820
+ warn "code conversion fail! #{@options[:FileSystemCoding]}->UTF-8 str=#{str.dump}"
821
+ ret = str
822
+ end
823
+ end
815
824
  debug "codeconv str fscode2utf: ret='#{ret}'"
816
825
  ret
817
826
  end
@@ -1,3 +1,5 @@
1
+ # -*- encoding : utf-8 -*-
2
+
1
3
  require 'spiderfw/controller/spider_controller'
2
4
  require 'spiderfw/controller/session/memory_session'
3
5
  require 'spiderfw/controller/session/file_session'
@@ -11,7 +13,8 @@ module Spider
11
13
  def initialize(request, response, scene=nil)
12
14
  response.status = Spider::HTTP::OK
13
15
  response.headers = {
14
- 'Content-Type' => 'text/plain'
16
+ 'Content-Type' => 'text/plain',
17
+ 'Accept-Charset' => 'utf-8'
15
18
  }
16
19
  @previous_stdout = $stdout
17
20
  Thread.current[:stdout] = response.server_output
data/lib/spiderfw/env.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  RUBY_VERSION_PARTS = RUBY_VERSION.split('.')
2
2
  ENV['LC_CTYPE'] = 'en_US.UTF-8'
3
-
4
3
  $SPIDER_PATH ||= File.expand_path(File.dirname(__FILE__)+'/../..')
5
4
  $SPIDER_PATHS ||= {}
6
5
  $SPIDER_PATHS[:core_apps] ||= File.join($SPIDER_PATH, 'apps')
@@ -31,7 +31,9 @@ module Spider; module HTTP
31
31
 
32
32
  def write(msg)
33
33
  send_headers unless @headers_sent
34
- @w.write(msg)
34
+ #workaround per ruby 1.9.3, problemi su parte di admin, faccio force encoding a utf8
35
+ msg_dup = msg.to_s.dup
36
+ @w.write(msg_dup.respond_to?(:force_encoding) ? msg_dup.force_encoding('UTF-8') : msg_dup)
35
37
  end
36
38
 
37
39
  def send_headers