spiderfw 0.6.30 → 0.6.31

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