3
3
* uses the iframeResizer tool to adapt iframe size to the content
4
4
* and to communicate between iframe parent and child
5
5
*
6
- * last change: 2024-12-22
6
+ * last change: 2025-01-15
7
7
*/
8
8
9
- var SCRIPT_VERSION = '1.1 ' ;
9
+ var SCRIPT_VERSION = '1.2 ' ;
10
10
11
11
12
12
/*! iFrame Resizer (iframeSizer.min.js ) - v4.3.9 - 2023-11-10
@@ -23,7 +23,7 @@ var SCRIPT_VERSION = '1.1';
23
23
*/
24
24
25
25
window . onload = function ( ) {
26
- //logconsole .log('script version ' + SCRIPT_VERSION);
26
+ //console .log('script version ' + SCRIPT_VERSION);
27
27
evInitializeWidgets ( ) ;
28
28
} ;
29
29
@@ -43,35 +43,38 @@ function evCreateWidget(widget, i) {
43
43
//console.log('evCreateWidget', i, widget);
44
44
45
45
// read parameters
46
-
46
+
47
47
var data = widget . dataset ;
48
48
49
49
var apikey = data . apikey ;
50
50
var event = data . event ;
51
51
var lang = data . lang ;
52
+ var notterm = data . notterm ;
53
+ var period = data . period ;
52
54
var scope = data . scope ;
53
55
var server = data . server ;
54
56
var style = data . style ;
57
+ var term = data . term ;
55
58
var type = data . type ;
56
59
var user = data . user ;
57
60
var version = data . version || 'none' ;
58
- var wp_plugin_version = data . wp_plugin_version || 'none' ;
59
-
61
+ var wppluginversion = data . wppluginversion || 'none' ;
62
+
60
63
// overwrite some by fallbacks for WP plugin version < 1.8
61
-
64
+
62
65
if ( data . show ) {
63
66
if ( data . show == 'form' ) {
64
67
type = 'booking' ;
65
68
}
66
69
else if ( data . show == 'grid' || data . show == 'table' || data . show == 'list' ) {
67
- type = 'booking ' ; style = data . show ;
70
+ type = 'calendar ' ; style = data . show ;
68
71
}
69
72
}
70
73
if ( data . eventid ) event = data . eventid ;
71
74
if ( data . userid ) user = data . userid ;
72
-
75
+
73
76
// build widget url
74
-
77
+
75
78
switch ( server ) {
76
79
case 'dev' : var serverurl = 'http://localhost' ; break ;
77
80
case 'tst' : var serverurl = 'https://tst.eveeno.com' ; break ;
@@ -80,10 +83,10 @@ function evCreateWidget(widget, i) {
80
83
}
81
84
82
85
switch ( type ) {
83
-
86
+
84
87
case 'booking' :
85
-
86
- if ( ! event ) {
88
+
89
+ if ( ! event ) {
87
90
evWidgetShowError ( widget , "Für das widget 'booking' ist der parameter 'event' Pflicht" ) ;
88
91
return ;
89
92
}
@@ -92,13 +95,13 @@ function evCreateWidget(widget, i) {
92
95
93
96
case 'calendar' :
94
97
95
- if ( ! user ) {
98
+ if ( ! user ) {
96
99
evWidgetShowError ( widget , "Für das widget 'calendar' ist der parameter 'user' Pflicht" ) ;
97
100
return ;
98
101
}
99
102
var url = new URL ( serverurl + '/de/event-cal/' + user ) ;
100
103
break ;
101
-
104
+
102
105
default :
103
106
104
107
evWidgetShowError ( widget , "Der Widget-Typ 'type' fehlt oder ist falsch" ) ;
@@ -110,21 +113,23 @@ function evCreateWidget(widget, i) {
110
113
if ( apikey ) url . searchParams . append ( 'apikey' , apikey ) ;
111
114
if ( event ) url . searchParams . append ( 'eventid' , event ) ;
112
115
if ( lang ) url . searchParams . append ( 'lang' , lang ) ;
116
+ if ( notterm ) url . searchParams . append ( 'notterm' , notterm ) ;
117
+ if ( period ) url . searchParams . append ( 'period' , period ) ;
113
118
if ( scope ) url . searchParams . append ( 'scope' , scope ) ;
114
119
if ( style ) url . searchParams . append ( 'style' , style ) ;
120
+ if ( term ) url . searchParams . append ( 'term' , term ) ;
115
121
if ( user ) url . searchParams . append ( 'userid' , user ) ;
116
- if ( apikey ) url . searchParams . append ( 'apikey' , apikey ) ;
117
122
118
123
url . searchParams . append ( 'format' , 'embedded' ) ;
119
124
url . searchParams . append ( 'version' , SCRIPT_VERSION ) ;
120
- url . searchParams . append ( 'wp_plugin_version ' , wp_plugin_version ) ;
125
+ url . searchParams . append ( 'wppluginversion ' , wppluginversion ) ;
121
126
122
127
123
128
// create iframe
124
-
125
- let widgetId = 'evFrame' + i ;
129
+
130
+ let widgetId = 'evFrame' + i ;
126
131
const iframe = document . createElement ( 'iframe' ) ;
127
-
132
+
128
133
iframe . setAttribute ( 'id' , widgetId ) ;
129
134
iframe . setAttribute ( 'src' , url . href ) ;
130
135
iframe . setAttribute ( 'width' , '100%' ) ;
@@ -135,46 +140,50 @@ function evCreateWidget(widget, i) {
135
140
widget . replaceWith ( iframe ) ;
136
141
137
142
// create resizer for the iframe
138
-
143
+
139
144
iFrameResize ( {
140
-
145
+
141
146
log : false ,
142
147
checkOrigin : false ,
143
148
heightCalculationMethod : 'taggedElement' ,
144
149
145
150
onMessage : function ( data ) {
146
151
147
152
//console.log('Message received', data);
148
-
153
+
149
154
// receive commands from the iframed page
150
-
155
+
151
156
if ( ! data . message . cmd ) return ;
152
157
153
158
switch ( data . message . cmd ) {
154
-
155
- case 'forceReload' :
159
+
160
+ case 'forceReload' :
161
+
156
162
location . reload ( true ) ;
157
163
break ;
158
-
164
+
159
165
case 'scrollTo' :
166
+
160
167
if ( data . message . pos ) {
168
+
169
+ // window.pageYOffset => whole page's scroll offset ( page is at 500px scrolled down )
170
+ // document.getElementById(widgetId).getBoundingClientRect().top => current element's top relative to viewport
171
+ // ( form's top is hidden as currently you are watching bottom part of form : top is at -200px relative to viewport )
172
+ // above 1 + 2 => 500 + -200 => 300 => top position of iframe in given page
173
+ // ( top of iframe is at 300px relative to whole page )
174
+
175
+ // add to this : given field's pos from data.message.pos and it'll scroll to `iframe + given field`
176
+
161
177
window . scrollTo ( {
162
- top : document . getElementById ( widgetId ) . offsetTop + data . message . pos - 10 ,
178
+ top : ( window . pageYOffset + document . getElementById ( widgetId ) . getBoundingClientRect ( ) . top ) + data . message . pos - 10 ,
163
179
left : 0 ,
164
180
behavior : "smooth" ,
165
181
} ) ;
166
182
}
167
- /*
168
- if (data.message.msg) {
169
- setTimeout(function() {
170
- alert(data.message.msg);
171
- }, 10); // TBD: replace setTimeout with a better solution
172
- }
173
- */
174
183
break ;
175
184
}
176
185
} ,
177
-
186
+
178
187
} , '#' + widgetId ) ;
179
188
}
180
189
@@ -183,5 +192,5 @@ function evWidgetShowError(widget, msg) {
183
192
html += '<br><br>' ;
184
193
html += msg ;
185
194
widget . innerHTML = html ;
186
- widget . setAttribute ( 'style' , 'background-color:#FAEAE9; color: #D9534F; text-align: center; padding: 20px;' ) ;
195
+ widget . setAttribute ( 'style' , 'background-color:#FAEAE9; color: #D9534F; text-align: center; padding: 20px;' ) ;
187
196
}
0 commit comments