@@ -113,14 +113,14 @@ object AjaxClient {
113
113
//
114
114
// Public for `UploaderClient`
115
115
def handleFailure (
116
- response : String Either dom.Document ,
117
- formId : String ,
118
- ignoreErrors : Boolean
116
+ response : String Either dom.Document ,
117
+ namespacedFormId : String ,
118
+ ignoreErrors : Boolean
119
119
): Boolean = {
120
120
121
121
object LoginRegexpMatcher {
122
122
def unapply (s : String ): Boolean = {
123
- val loginRegexp = Page .getXFormsFormFromNamespacedIdOrThrow(formId ).configuration.loginPageDetectionRegexp
123
+ val loginRegexp = Page .getXFormsFormFromNamespacedIdOrThrow(namespacedFormId ).configuration.loginPageDetectionRegexp
124
124
loginRegexp.exists(re => new js.RegExp (re).test(s))
125
125
}
126
126
}
@@ -138,50 +138,51 @@ object AjaxClient {
138
138
val title = responseXml.getElementsByTagName(" title" ) map (_.textContent) mkString " "
139
139
val body = responseXml.getElementsByTagName(" body" ) map (_.textContent) mkString " "
140
140
141
- showError(title, body, formId , ignoreErrors)
141
+ showError(title, body, namespacedFormId , ignoreErrors)
142
142
143
143
true
144
144
145
145
case Left (LoginRegexpMatcher ()) =>
146
-
147
- // It seems we got a login page back, so display dialog and reload form
148
- val dialogEl = $(s " # $formId .xforms-login-detected-dialog " )
149
-
150
- def getUniqueId (prefix : String ): String = {
151
- var i = 0
152
- var r : String = null
153
- do {
154
- r = prefix + i
155
- i += 1
156
- } while (dom.document.getElementById(r) ne null )
157
- r
158
- }
159
-
160
- // Link dialog with title for ARIA
161
- val title = dialogEl.find(" h4" )
162
- if (title.attr(" id" ).isEmpty) {
163
- val titleId = getUniqueId(" xf-aria-dialog-title-" )
164
- title.attr(" id" , titleId)
165
- dialogEl.attr(" aria-labelledby" , titleId)
166
- }
167
-
168
- dialogEl.find(" button" ).one(" click.xf" , ((_ : JQueryEventObject ) => {
169
- // Reloading the page will redirect us to the login page if necessary
170
- dom.window.location.href = dom.window.location.href
171
- }): js.Function1 [JQueryEventObject , js.Any ])
172
- dialogEl.asInstanceOf [js.Dynamic ].modal(new js.Object {
173
- val backdrop = " static" // Click on the background doesn't hide dialog
174
- val keyboard = false // Can't use esc to close the dialog
175
- })
176
-
146
+ showLoginDetectedDialog(namespacedFormId)
177
147
true
178
-
179
148
case _ =>
180
149
// This will cause a retry for event requests (but not uploads)
181
150
false
182
151
}
183
152
}
184
153
154
+ def showLoginDetectedDialog (formId : String ): Unit = {
155
+ // It seems we got a login page back, so display dialog and reload form
156
+ val dialogEl = $(s " # $formId .xforms-login-detected-dialog " )
157
+
158
+ def getUniqueId (prefix : String ): String = {
159
+ var i = 0
160
+ var r : String = null
161
+ do {
162
+ r = prefix + i
163
+ i += 1
164
+ } while (dom.document.getElementById(r) ne null )
165
+ r
166
+ }
167
+
168
+ // Link dialog with title for ARIA
169
+ val title = dialogEl.find(" h4" )
170
+ if (title.attr(" id" ).isEmpty) {
171
+ val titleId = getUniqueId(" xf-aria-dialog-title-" )
172
+ title.attr(" id" , titleId)
173
+ dialogEl.attr(" aria-labelledby" , titleId)
174
+ }
175
+
176
+ dialogEl.find(" button" ).one(" click.xf" , ((_ : JQueryEventObject ) => {
177
+ // Reloading the page will redirect us to the login page if necessary
178
+ dom.window.location.href = dom.window.location.href
179
+ }): js.Function1 [JQueryEventObject , js.Any ])
180
+ dialogEl.asInstanceOf [js.Dynamic ].modal(new js.Object {
181
+ val backdrop = " static" // Click on the background doesn't hide dialog
182
+ val keyboard = false // Can't use esc to close the dialog
183
+ })
184
+ }
185
+
185
186
// Create a timer which after the specified delay will fire a server event
186
187
// 2020-07-21: Only for upload response
187
188
@ JSExport
0 commit comments