Failed to execute template. Cause: [Access denied when checking [script] access to [xwiki:Collaboratory.UX.HbpSkin.WebHome] for user [xwiki:XWiki.Admin]]. Click on this message for details.

LiveTableServiceWorker - HBP Wiki

IAM21 instance, do not create collab nor modify a team, your changes will be lost


Changes for page LiveTableServiceWorker

Last modified by bougault on 2022/03/22 17:19

From version 4.7
edited by bougault
on 2022/03/21 13:11
Change comment: There is no comment for this version
To version 4.76
edited by bougault
on 2022/03/22 08:55
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -1,16 +1,0 @@
1 -{{velocity}}
2 -$response.setContentType("text/javascript")
3 -self.addEventListener("install" , evt => {
4 - console.log(evt);
5 -});
6 -
7 -self.addEventListener("activate" , evt => {
8 - console.log(evt);
9 - clients.claim();
10 -});
11 -
12 -self.addEventListener("fetch" , evt => {
13 - console.log(evt);
14 -});
15 -
16 -{{/velocity}}
XWiki.JavaScriptExtension[0]
Code
... ... @@ -1,10 +1,21 @@
1 -if ('serviceWorker' in navigator) {
2 - navigator.serviceWorker.register('/bin/get/LiveTableServiceWorker?xcontent=plain&outputSyntax=plain', { 'scope': '/bin/view/Membership'})
3 - .then((reg) => {
4 - // registration worked
5 - console.log('Registration succeeded. Scope is ' + reg.scope);
6 - }).catch((error) => {
7 - // registration failed
8 - console.log('Registration failed with ' + error);
9 - });
10 -}
1 +$response.addHeader('Service-Worker-Allowed', '/bin/view/Membership')
2 +$response.setContentType("text/javascript")
3 +self.addEventListener("install" , event => {
4 + self.skipWaiting();
5 +});
6 +
7 +self.addEventListener("activate" , event => {
8 + event.waitUntil(self.clients.claim());
9 +});
10 +
11 +self.addEventListener("fetch" , event => {
12 + const pathname = new URL(event.request.url).pathname;
13 + if(pathname === '/getMembershipRequests') {
14 + const req = fetch('/bin/get/XWiki/LiveTableResults?outputSyntax=plain&transprefix=membershiprequest.livetable.&classname=Collaboratory.Apps.Membership.MembershipRequest.Code.MembershipRequestClass&collist=doc.title%2Ctarget%2Cusername%2Cstatus%2Cdoc.date&queryFilters=currentlanguage%2Chidden&offset=1&limit=15&reqNo=1&sort=doc.date&dir=desc');
15 + event.respondWith(req.then(res => res.json()).then(json => {
16 + const headers = new Headers({'Content-Type': 'application/json'});
17 + const jsonResults = json.rows.filter(row => row.doc_viewable === true);
18 + return new Response(JSON.stringify(jsonResults), {headers});
19 + }));
20 + }
21 +});
Parse content
... ... @@ -1,0 +1,1 @@
1 +Yes
Use this extension
... ... @@ -1,0 +1,1 @@
1 +onDemand