spiderfw 0.6.30 → 0.6.31
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -7
- data/CHANGELOG +11 -0
- data/VERSION +1 -1
- data/apps/app_server/config/options.rb +1 -1
- data/apps/core/auth/controllers/login_controller.rb +3 -0
- data/apps/core/components/assets.rb +61 -3
- data/apps/core/components/public/bootstrap_3/img/glyphicons-halflings-regular.eot +0 -0
- data/apps/core/components/public/bootstrap_3/img/glyphicons-halflings-regular.svg +229 -0
- data/apps/core/components/public/bootstrap_3/img/glyphicons-halflings-regular.ttf +0 -0
- data/apps/core/components/public/bootstrap_3/img/glyphicons-halflings-regular.woff +0 -0
- data/apps/core/components/public/bootstrap_3/js/affix.js +140 -0
- data/apps/core/components/public/bootstrap_3/js/alert.js +92 -0
- data/apps/core/components/public/bootstrap_3/js/button.js +110 -0
- data/apps/core/components/public/bootstrap_3/js/carousel.js +210 -0
- data/apps/core/components/public/bootstrap_3/js/collapse.js +180 -0
- data/apps/core/components/public/bootstrap_3/js/dropdown.js +151 -0
- data/apps/core/components/public/bootstrap_3/js/modal.js +277 -0
- data/apps/core/components/public/bootstrap_3/js/popover.js +113 -0
- data/apps/core/components/public/bootstrap_3/js/scrollspy.js +158 -0
- data/apps/core/components/public/bootstrap_3/js/tab.js +128 -0
- data/apps/core/components/public/bootstrap_3/js/tooltip.js +456 -0
- data/apps/core/components/public/bootstrap_3/js/transition.js +48 -0
- data/apps/core/components/public/bootstrap_3/scss/_alerts.scss +67 -0
- data/apps/core/components/public/bootstrap_3/scss/_badges.scss +57 -0
- data/apps/core/components/public/bootstrap_3/scss/_breadcrumbs.scss +26 -0
- data/apps/core/components/public/bootstrap_3/scss/_button-groups.scss +240 -0
- data/apps/core/components/public/bootstrap_3/scss/_buttons.scss +159 -0
- data/apps/core/components/public/bootstrap_3/scss/_carousel.scss +243 -0
- data/apps/core/components/public/bootstrap_3/scss/_close.scss +35 -0
- data/apps/core/components/public/bootstrap_3/scss/_code.scss +62 -0
- data/apps/core/components/public/bootstrap_3/scss/_component-animations.scss +35 -0
- data/apps/core/components/public/bootstrap_3/scss/_dropdowns.scss +214 -0
- data/apps/core/components/public/bootstrap_3/scss/_forms.scss +489 -0
- data/apps/core/components/public/bootstrap_3/scss/_glyphicons.scss +237 -0
- data/apps/core/components/public/bootstrap_3/scss/_grid.scss +84 -0
- data/apps/core/components/public/bootstrap_3/scss/_input-groups.scss +166 -0
- data/apps/core/components/public/bootstrap_3/scss/_jumbotron.scss +48 -0
- data/apps/core/components/public/bootstrap_3/scss/_labels.scss +66 -0
- data/apps/core/components/public/bootstrap_3/scss/_list-group.scss +129 -0
- data/apps/core/components/public/bootstrap_3/scss/_media.scss +56 -0
- data/apps/core/components/public/bootstrap_3/scss/_mixins.scss +39 -0
- data/apps/core/components/public/bootstrap_3/scss/_modals.scss +147 -0
- data/apps/core/components/public/bootstrap_3/scss/_navbar.scss +658 -0
- data/apps/core/components/public/bootstrap_3/scss/_navs.scss +242 -0
- data/apps/core/components/public/bootstrap_3/scss/_normalize.scss +425 -0
- data/apps/core/components/public/bootstrap_3/scss/_pager.scss +55 -0
- data/apps/core/components/public/bootstrap_3/scss/_pagination.scss +88 -0
- data/apps/core/components/public/bootstrap_3/scss/_panels.scss +240 -0
- data/apps/core/components/public/bootstrap_3/scss/_popovers.scss +133 -0
- data/apps/core/components/public/bootstrap_3/scss/_print.scss +101 -0
- data/apps/core/components/public/bootstrap_3/scss/_progress-bars.scss +89 -0
- data/apps/core/components/public/bootstrap_3/scss/_responsive-embed.scss +34 -0
- data/apps/core/components/public/bootstrap_3/scss/_responsive-utilities.scss +174 -0
- data/apps/core/components/public/bootstrap_3/scss/_scaffolding.scss +150 -0
- data/apps/core/components/public/bootstrap_3/scss/_tables.scss +233 -0
- data/apps/core/components/public/bootstrap_3/scss/_theme.scss +247 -0
- data/apps/core/components/public/bootstrap_3/scss/_thumbnails.scss +38 -0
- data/apps/core/components/public/bootstrap_3/scss/_tooltip.scss +95 -0
- data/apps/core/components/public/bootstrap_3/scss/_type.scss +298 -0
- data/apps/core/components/public/bootstrap_3/scss/_utilities.scss +56 -0
- data/apps/core/components/public/bootstrap_3/scss/_variables.scss +853 -0
- data/apps/core/components/public/bootstrap_3/scss/_wells.scss +29 -0
- data/apps/core/components/public/bootstrap_3/scss/bootstrap.scss +50 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_alerts.scss +14 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_background-variant.scss +11 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_border-radius.scss +18 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_buttons.scss +50 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_center-block.scss +7 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_clearfix.scss +22 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_forms.scss +84 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_gradients.scss +58 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_grid-framework.scss +87 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_grid.scss +122 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_hide-text.scss +21 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_image.scss +33 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_labels.scss +12 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_list-group.scss +31 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_nav-divider.scss +10 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_nav-vertical-align.scss +9 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_opacity.scss +8 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_pagination.scss +23 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_panels.scss +20 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_progress-bar.scss +8 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_reset-filter.scss +8 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_resize.scss +6 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_responsive-visibility.scss +21 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_size.scss +10 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_tab-focus.scss +9 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_table-row.scss +28 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_text-emphasis.scss +11 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_text-overflow.scss +8 -0
- data/apps/core/components/public/bootstrap_3/scss/mixins/_vendor-prefixes.scss +224 -0
- data/apps/core/components/public/js/jquery/plugins/bsmselect/js/jquery.bsmselect.js +1 -1
- data/apps/core/components/widgets/month_calendar/month_calendar.shtml +3 -3
- data/apps/core/components/widgets/table/table.rb +6 -2
- data/apps/core/components/widgets/table/table.shtml +4 -4
- data/apps/core/forms/widgets/form/form.rb +1 -1
- data/apps/core/forms/widgets/inputs/select/select.rb +13 -2
- data/apps/messenger/lib/backends/mobyt.rb +6 -2
- data/apps/messenger/lib/backends/skebby.rb +1 -1
- data/apps/webdav/controllers/webdav_controller.rb +16 -7
- data/lib/spiderfw/controller/http_controller.rb +4 -1
- data/lib/spiderfw/env.rb +0 -1
- data/lib/spiderfw/http/adapters/rack.rb +3 -1
- data/lib/spiderfw/model/base_model.rb +7 -3
- data/lib/spiderfw/model/storage/connection_pool.rb +6 -2
- data/lib/spiderfw/model/storage/db/db_storage.rb +25 -9
- data/lib/spiderfw/site.rb +1 -1
- metadata +308 -149
@@ -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,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,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,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
|
+
}
|
@@ -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><<</span></a>
|
9
9
|
{ @current_month_name } { @year }
|
10
10
|
<a href="{ @request[:path] }?_w{ @widget[:param_u] }%5Bd%5D={ @next_link }"><span>>></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:
|
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
|
-
|
181
|
-
|
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]) }¤t_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 }">← _(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
|
-
|
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
|
-
|
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 '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
|
-
|
810
|
-
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
|
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
@@ -31,7 +31,9 @@ module Spider; module HTTP
|
|
31
31
|
|
32
32
|
def write(msg)
|
33
33
|
send_headers unless @headers_sent
|
34
|
-
|
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
|