Merge branch 'master' of https://git.startinblox.com/applications/hubl into feature/new-integration
This commit is contained in:
commit
4eb2f39463
@ -1,28 +1,24 @@
|
|||||||
/label ~BUG
|
# What's happening?
|
||||||
|
|
||||||
### What's happening?
|
Describe in a few words what's happening
|
||||||
|
|
||||||
*Describe in a few words what's happening*
|
## Steps to reproduce
|
||||||
|
|
||||||
### Steps to reproduce
|
How one can reproduce the issue - this is very important
|
||||||
|
|
||||||
*How one can reproduce the issue - this is very important*
|
|
||||||
|
|
||||||
1. Step 1
|
1. Step 1
|
||||||
2. Step 2
|
2. Step 2
|
||||||
3. Step 3
|
3. Step 3
|
||||||
|
|
||||||
### Relevant logs and/or screenshots
|
## Relevant logs and/or screenshots
|
||||||
|
|
||||||
*If possible, please add a screenshot.*
|
If possible, please add a screenshot.
|
||||||
|
|
||||||
### Your Environment
|
## Your Environment
|
||||||
|
|
||||||
(Include relevant details about the environment you experienced the bug in)
|
(Include relevant details about the environment you experienced the bug in)
|
||||||
|
|
||||||
* Browser name and version:
|
* Browser name and version:
|
||||||
* Operating System and version (desktop or mobile):
|
* Operating System and version (desktop or mobile):
|
||||||
|
|
||||||
|
/label ~BUG
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,16 +1,12 @@
|
|||||||
## What needs to be done?
|
# What needs to be done
|
||||||
|
|
||||||
/label ~Feature request
|
|
||||||
|
|
||||||
|
|
||||||
## Technical details
|
## Technical details
|
||||||
|
|
||||||
*Are there any technical details worth mentioning?*
|
Are there any technical details worth mentioning?
|
||||||
|
|
||||||
|
|
||||||
## Test cases
|
## Test cases
|
||||||
|
|
||||||
*Describe here the tests needed in order to validate this feature*
|
Describe here the tests needed in order to validate this feature
|
||||||
|
|
||||||
1. Step 1
|
1. Step 1
|
||||||
2. Step 2
|
2. Step 2
|
||||||
@ -20,3 +16,5 @@
|
|||||||
|
|
||||||
1. Link to user story in wiki
|
1. Link to user story in wiki
|
||||||
2. other related Gitlab issues
|
2. other related Gitlab issues
|
||||||
|
|
||||||
|
/label ~Feature request
|
||||||
|
@ -1,40 +1,16 @@
|
|||||||
/label ~"New Instance"
|
# Please fill all these info
|
||||||
|
|
||||||
# Please fill all these info:
|
|
||||||
|
|
||||||
## General info
|
## General info
|
||||||
|
|
||||||
- Name of the instance:
|
- Name of the instance:
|
||||||
- Domain:
|
- Domain: .hubl.world
|
||||||
|
|
||||||
## Settings:
|
|
||||||
|
|
||||||
- Does the instance allow people to sign up? **Yes / No**
|
|
||||||
- Does the instance want new people to get a welcome email? **Yes / No**
|
|
||||||
|
|
||||||
## Federation:
|
|
||||||
|
|
||||||
- Which current instance should see this new instance data? **Please provide the info module by module and include the instance itself.**
|
|
||||||
- Do those current instances agree to share their public data with this new instance? **Yes / No**
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
- *Instance G is the new kid in town*
|
|
||||||
- *Instance G wants to only see their dashboard, but want to access the circles of A, B, C, D, E & F.*
|
|
||||||
- *Instance G wants to be able to chat with users from A, B, C, D, E & F.*
|
|
||||||
- *Instance G wants to be able to see A and B job offers*
|
|
||||||
|
|
||||||
Let's say every instances agree to this scenario, the issue should describe the following:
|
|
||||||
|
|
||||||
- Dashboard: G
|
|
||||||
- Circles: A, B, C, D, E, F & G
|
|
||||||
- Job offers: A, B, F, G
|
|
||||||
- Users: A, B, C, D, E, F & G
|
|
||||||
- Profile directory: A, B, C, D, E, F & G
|
|
||||||
- G agrees that any new instance can see their public data.
|
|
||||||
|
|
||||||
## Cosmetics
|
## Cosmetics
|
||||||
|
|
||||||
- Logo:
|
- Logo:
|
||||||
- Favicon:
|
|
||||||
- 4 Colors:
|
- Favicon:
|
||||||
|
|
||||||
|
- 4 Colors:
|
||||||
|
|
||||||
|
/label ~"New Instance"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
## Checklist
|
# Checklist
|
||||||
|
|
||||||
<!---
|
<!---
|
||||||
Please, make sure you have changed the topic and also
|
Please, make sure you have changed the topic and also
|
||||||
@ -12,8 +12,6 @@ I have done ...
|
|||||||
- [ ] Tests for the changes have been added
|
- [ ] Tests for the changes have been added
|
||||||
- [ ] Docs have been added or updated
|
- [ ] Docs have been added or updated
|
||||||
- [ ] I have assigned my architect to review this merge request
|
- [ ] I have assigned my architect to review this merge request
|
||||||
- [ ] I have checked how to create a [merge request]()
|
|
||||||
|
|
||||||
|
|
||||||
## Issues
|
## Issues
|
||||||
|
|
||||||
@ -25,7 +23,6 @@ Format is: Closes #X or Refs #Y
|
|||||||
Docs: https://docs.gitlab.com/ee/user/project/issues/closing_issues.html#via-merge-request
|
Docs: https://docs.gitlab.com/ee/user/project/issues/closing_issues.html#via-merge-request
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
|
||||||
## Time spent
|
## Time spent
|
||||||
|
|
||||||
<!---
|
<!---
|
||||||
@ -38,7 +35,6 @@ Docs: https://docs.gitlab.com/ee/workflow/time_tracking.html
|
|||||||
|
|
||||||
/spend Xh
|
/spend Xh
|
||||||
|
|
||||||
|
|
||||||
## Assignee
|
## Assignee
|
||||||
|
|
||||||
<!---
|
<!---
|
||||||
@ -49,7 +45,6 @@ Docs: https://docs.gitlab.com/ee/user/project/quick_actions.html
|
|||||||
|
|
||||||
/assign
|
/assign
|
||||||
|
|
||||||
|
|
||||||
## Feedback
|
## Feedback
|
||||||
|
|
||||||
<!---
|
<!---
|
||||||
@ -57,5 +52,4 @@ Did you encounter any other problems you want to share with us?
|
|||||||
Optional. Feel free to remove this section if you don't have any feedback.
|
Optional. Feel free to remove this section if you don't have any feedback.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
|
||||||
<!--- Thank you for you contribution! -->
|
<!--- Thank you for you contribution! -->
|
||||||
|
@ -108,8 +108,8 @@ On `config.json`:
|
|||||||
|
|
||||||
```json
|
```json
|
||||||
"clientName": "Hubl",
|
"clientName": "Hubl",
|
||||||
"clientFavicon": "/images/favicon.png",
|
"clientFavicon": "/images/favicon.webp",
|
||||||
"clientLogo": "/images/logo.png",
|
"clientLogo": "/images/logo.webp",
|
||||||
"clientLogoHeight": "32px",
|
"clientLogoHeight": "32px",
|
||||||
"clientCSS": "/path/to/custom.css",
|
"clientCSS": "/path/to/custom.css",
|
||||||
"authorityName": "djangoldp-server-name"
|
"authorityName": "djangoldp-server-name"
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
{
|
{
|
||||||
"xmpp": "https://jabber.happy-dev.fr/http-bind/",
|
"xmpp": "https://jabber.happy-dev.fr/http-bind/",
|
||||||
"authority": "http://localhost:8000/",
|
"authority": "http://localhost:8000/",
|
||||||
|
"clientName": "Hubl",
|
||||||
|
"clientLogo": "https://cdn.startinblox.com/logos/hubl-logo.png",
|
||||||
"endpoints": {
|
"endpoints": {
|
||||||
"get": {
|
"get": {
|
||||||
"skills": "http://localhost:8000/skills/",
|
"skills": "http://localhost:8000/skills/",
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
"xmpp": "https://jabber.happy-dev.fr/http-bind/",
|
"xmpp": "https://jabber.happy-dev.fr/http-bind/",
|
||||||
"authority": "http://localhost:8000/",
|
"authority": "http://localhost:8000/",
|
||||||
"authorityName": "djangoldp-server-name",
|
"authorityName": "djangoldp-server-name",
|
||||||
|
"clientName": "Hubl",
|
||||||
|
"clientLogo": "https://cdn.startinblox.com/logos/hubl-logo.png",
|
||||||
"endpoints": {
|
"endpoints": {
|
||||||
"groups": "http://localhost:8000/groups/",
|
"groups": "http://localhost:8000/groups/",
|
||||||
"skills": "http://localhost:8000/skills/",
|
"skills": "http://localhost:8000/skills/",
|
||||||
|
39
make-webmanifest.mjs
Normal file
39
make-webmanifest.mjs
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
'use strict';
|
||||||
|
import fs from 'fs';
|
||||||
|
|
||||||
|
if(!fs.existsSync("config.json")) throw "[Error] (Mandatory) Missing config.json file";
|
||||||
|
|
||||||
|
let config = JSON.parse(fs.readFileSync('config.json'));
|
||||||
|
|
||||||
|
if(!config.clientName) throw "[Error] (Mandatory) Missing clientName on config.json";
|
||||||
|
if(!config.clientLogo) throw "[Error] (Mandatory) Missing clientLogo on config.json";
|
||||||
|
|
||||||
|
let manifest = {
|
||||||
|
"lang": "fr",
|
||||||
|
"dir": "ltr",
|
||||||
|
"name": config.clientName,
|
||||||
|
"description": `Hubl of ${config.clientName}`,
|
||||||
|
"short_name": config.clientName,
|
||||||
|
"icons": [{
|
||||||
|
"src": config.clientLogo,
|
||||||
|
"purpose": "any"
|
||||||
|
}, {
|
||||||
|
"src": "/images/hubl-icon-192.png",
|
||||||
|
"sizes": "192x192",
|
||||||
|
"type": "image/png"
|
||||||
|
}, {
|
||||||
|
"src": "/images/hubl-icon-512.png",
|
||||||
|
"sizes": "512x512",
|
||||||
|
"type": "image/png"
|
||||||
|
}],
|
||||||
|
"start_url": ".",
|
||||||
|
"display": "standalone",
|
||||||
|
"orientation": "portrait",
|
||||||
|
"background_color": "#fff",
|
||||||
|
'theme_color': "white"
|
||||||
|
}
|
||||||
|
|
||||||
|
fs.existsSync("dist") || fs.mkdirSync("dist");
|
||||||
|
fs.writeFileSync('dist/manifest.webmanifest', JSON.stringify(manifest, null, 2));
|
||||||
|
|
||||||
|
console.log(`Created manifest for ${config.clientName}`);
|
12
package.json
12
package.json
@ -11,29 +11,35 @@
|
|||||||
"build:css": "node-sass src/styles/index.scss -o dist/styles/",
|
"build:css": "node-sass src/styles/index.scss -o dist/styles/",
|
||||||
"build:js": "babel \"src/scripts/*.js\" -o dist/scripts/index.js",
|
"build:js": "babel \"src/scripts/*.js\" -o dist/scripts/index.js",
|
||||||
"build:jscomponents": "babel \"src/components/*.js\" --out-dir dist/components/",
|
"build:jscomponents": "babel \"src/components/*.js\" --out-dir dist/components/",
|
||||||
"build:html": "pug src/index.pug -o dist/ --obj config.json",
|
"build:pug": "pug src/index.pug -o dist/ --obj config.json",
|
||||||
|
"build:manifest": "node --experimental-modules make-webmanifest.mjs",
|
||||||
"build:i18n": "copyfiles -u 2 src/locales/*.json dist/locales",
|
"build:i18n": "copyfiles -u 2 src/locales/*.json dist/locales",
|
||||||
"copy:font": "copyfiles -f src/fonts/* dist/fonts",
|
"copy:font": "copyfiles -f src/fonts/* dist/fonts",
|
||||||
"copy:image": "copyfiles -f src/images/* dist/images",
|
"copy:image": "copyfiles -f src/images/* dist/images",
|
||||||
|
"copy:sw": "copyfiles -f src/sw.js dist",
|
||||||
"serve": "pushstate-server -d ./dist -p 3000",
|
"serve": "pushstate-server -d ./dist -p 3000",
|
||||||
"watch": "run-p build watch:* serve",
|
"watch": "run-p build watch:* serve",
|
||||||
"watch:css": "npm-watch build:css",
|
"watch:css": "npm-watch build:css",
|
||||||
"watch:js": "npm-watch build:js",
|
"watch:js": "npm-watch build:js",
|
||||||
"watch:jscomponents": "npm-watch build:jscomponents",
|
"watch:jscomponents": "npm-watch build:jscomponents",
|
||||||
|
"watch:manifest": "npm-watch build:manifest",
|
||||||
"watch:pug": "pug --watch src/index.pug -o dist/ --obj config.json",
|
"watch:pug": "pug --watch src/index.pug -o dist/ --obj config.json",
|
||||||
"watch:i18n": "npm-watch build:i18n",
|
"watch:i18n": "npm-watch build:i18n",
|
||||||
"watch:font": "npm-watch copy:font",
|
"watch:font": "npm-watch copy:font",
|
||||||
"watch:image": "npm-watch copy:image",
|
"watch:image": "npm-watch copy:image",
|
||||||
|
"watch:sw": "npm-watch copy:sw",
|
||||||
"cypress:open": "cypress open",
|
"cypress:open": "cypress open",
|
||||||
"cypress:verify": "cypress verify",
|
"cypress:verify": "cypress verify",
|
||||||
"cypress:info": "cypress info",
|
"cypress:info": "cypress info",
|
||||||
"test": "cypress run"
|
"test": "cypress run"
|
||||||
},
|
},
|
||||||
"watch": {
|
"watch": {
|
||||||
"build:css": "src/styles/*",
|
"build:css": "src/styles/**/*",
|
||||||
"build:i18n": "src/locales/*",
|
"build:manifest": "make-webmanifest.mjs",
|
||||||
|
"build:i18n": "src/locales/**/*",
|
||||||
"copy:images": "src/fonts/*.js",
|
"copy:images": "src/fonts/*.js",
|
||||||
"copy:fonts": "src/images/*.js",
|
"copy:fonts": "src/images/*.js",
|
||||||
|
"copy:sw": "src/sw.js",
|
||||||
"build:js": "src/scripts/*.js",
|
"build:js": "src/scripts/*.js",
|
||||||
"build:jscomponents": "src/components/*.js"
|
"build:jscomponents": "src/components/*.js"
|
||||||
},
|
},
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
import { store } from 'https://unpkg.com/@startinblox/core@0.12';
|
import { store, Sib, StoreMixin } from 'https://cdn.skypack.dev/@startinblox/core@0.13';
|
||||||
import { Sib } from "https://unpkg.com/@startinblox/core@0.12/dist/libs/Sib.js";
|
|
||||||
import { StoreMixin } from "https://unpkg.com/@startinblox/core@0.12/dist/mixins/storeMixin.js";
|
|
||||||
|
|
||||||
export const HublReactivity = {
|
export const HublReactivity = {
|
||||||
name: 'hubl-reactivity',
|
name: 'hubl-reactivity',
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { widgetFactory } from 'https://unpkg.com/@startinblox/core@0.12/dist/widgets/widget-factory.js';
|
import { widgetFactory } from 'https://cdn.skypack.dev/@startinblox/core@0.13';
|
||||||
|
|
||||||
const HublSearchUsers = widgetFactory(
|
const HublSearchUsers = widgetFactory(
|
||||||
'hubl-search-users',
|
'hubl-search-users',
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import { widgetFactory } from 'https://unpkg.com/@startinblox/core@0.12/dist/widgets/widget-factory.js';
|
import { widgetFactory, Helpers } from 'https://cdn.skypack.dev/@startinblox/core@0.13';
|
||||||
import { importCSS } from 'https://unpkg.com/@startinblox/core@0.12/dist/libs/helpers.js';
|
import SlimSelect from 'https://cdn.skypack.dev/slim-select@1.23';
|
||||||
import SlimSelect from 'https://dev.jspm.io/slim-select@1.23';
|
|
||||||
|
|
||||||
const HublStatus = widgetFactory(
|
const HublStatus = widgetFactory(
|
||||||
'hubl-status',
|
'hubl-status',
|
||||||
@ -22,7 +21,7 @@ const HublStatus = widgetFactory(
|
|||||||
let select = formWidget.querySelector('select');
|
let select = formWidget.querySelector('select');
|
||||||
if (!select) return;
|
if (!select) return;
|
||||||
const slimSelect = new SlimSelect({select: select});
|
const slimSelect = new SlimSelect({select: select});
|
||||||
importCSS('https://dev.jspm.io/slim-select/dist/slimselect.min.css');
|
Helpers.importCSS('https://dev.jspm.io/slim-select/dist/slimselect.min.css');
|
||||||
select.addEventListener('change', () => slimSelect.render());
|
select.addEventListener('change', () => slimSelect.render());
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
@ -1,49 +1,54 @@
|
|||||||
script(src="https://browser.sentry-cdn.com/5.25.0/bundle.tracing.min.js" defer)
|
script(src="https://browser.sentry-cdn.com/5.25.0/bundle.tracing.min.js" defer)
|
||||||
|
|
||||||
script(type="module" src="/components/sentry.js" defer)
|
script(type="module" src="/components/sentry.js" defer)
|
||||||
script(type="module" src="/components/hubl-search-users.js" defer)
|
script(type="module" src="/components/hubl-search-users.js" defer)
|
||||||
script(type="module" src="/components/hubl-status.js" defer)
|
script(type="module" src="/components/hubl-status.js" defer)
|
||||||
script(type="module" src="/components/hubl-reactivity.js" defer)
|
script(type="module" src="/components/hubl-reactivity.js" defer)
|
||||||
|
|
||||||
script(type="module" src="https://unpkg.com/@startinblox/core@0.12" defer)
|
script(type="module" src="https://cdn.skypack.dev/@startinblox/core@0.13" defer)
|
||||||
//- script(type="module" src="/lib/sib-core/dist/index.js" defer)
|
//- script(type="module" src="/lib/sib-core/dist/index.js" defer)
|
||||||
|
|
||||||
script(type="module" src="https://unpkg.com/@startinblox/oidc@0.10" defer)
|
script(type="module" src="https://cdn.skypack.dev/@startinblox/oidc@0.11" defer)
|
||||||
//- script(type="module" src="/lib/sib-auth/index.js" defer)
|
//- script(type="module" src="/lib/sib-auth/index.js" defer)
|
||||||
|
|
||||||
script(type="module" src="https://unpkg.com/@startinblox/router@0.10" defer)
|
script(type="module" src="https://cdn.skypack.dev/@startinblox/router@0.11" defer)
|
||||||
//- script(type="module" src="/lib/sib-router/src/index.js" defer)
|
//- script(type="module" src="/lib/sib-router/src/index.js" defer)
|
||||||
|
|
||||||
script(type="module" src="https://unpkg.com/@startinblox/component-notifications@0.7" defer)
|
script(type="module" src="https://cdn.skypack.dev/@startinblox/component-notifications@0.8" defer)
|
||||||
//- script(type="module" src="/lib/sib-notifications/index.js" defer)
|
//- script(type="module" src="/lib/sib-notifications/index.js" defer)
|
||||||
|
|
||||||
if (endpoints.events || (endpoints.get && endpoints.get.events)) && (endpoints.typeevents || (endpoints.get && endpoints.get.typeevents))
|
//- DISABLED - please migrate to dev.skypack.dev + upgrade to core@0.13
|
||||||
script(type="module" src="https://unpkg.com/@startinblox/component-event@1.2" defer)
|
//- if (endpoints.events || (endpoints.get && endpoints.get.events)) && (endpoints.typeevents || (endpoints.get && endpoints.get.typeevents))
|
||||||
|
//- script(type="module" src="https://cdn.skypack.dev/@startinblox/component-event@1.2" defer)
|
||||||
//- script(type="module" src="/lib/sib-event-component/sib-event.js" defer)
|
//- script(type="module" src="/lib/sib-event-component/sib-event.js" defer)
|
||||||
|
|
||||||
if (endpoints.resources || (endpoints.get && endpoints.get.resources)) && (endpoints.resourceskeywords || (endpoints.get && endpoints.get.resourceskeywords)) && (endpoints.resourcestypes || (endpoints.get && endpoints.get.resourcestypes))
|
//- DISABLED - please migrate to dev.skypack.dev + upgrade to core@0.13
|
||||||
script(type="module" src="https://unpkg.com/@startinblox/component-resource@1.0" defer)
|
//- if (endpoints.resources || (endpoints.get && endpoints.get.resources)) && (endpoints.resourceskeywords || (endpoints.get && endpoints.get.resourceskeywords)) && (endpoints.resourcestypes || (endpoints.get && endpoints.get.resourcestypes))
|
||||||
|
//- script(type="module" src="https://cdn.skypack.dev/@startinblox/component-resource@1.0" defer)
|
||||||
//- script(type="module" src="/lib/sib-resource/sib-resource.js" defer)
|
//- script(type="module" src="/lib/sib-resource/sib-resource.js" defer)
|
||||||
|
|
||||||
if endpoints.joboffers || (endpoints.get && endpoints.get.joboffers)
|
if endpoints.joboffers || (endpoints.get && endpoints.get.joboffers)
|
||||||
script(type="module" src="https://unpkg.com/@startinblox/component-job-board@1.1" defer)
|
script(type="module" src="https://cdn.skypack.dev/@startinblox/component-job-board@1.2" defer)
|
||||||
//- script(type="module" src="/lib/solid-job-board/dist/index.js" defer)
|
//- script(type="module" src="/lib/solid-job-board/dist/index.js" defer)
|
||||||
|
|
||||||
if (endpoints.uploads || (endpoints.get && endpoints.get.uploads)) && (endpoints.skills || (endpoints.get && endpoints.get.skills)) && (endpoints.users || (endpoints.get && endpoints.get.users))
|
if (endpoints.uploads || (endpoints.get && endpoints.get.uploads)) && (endpoints.skills || (endpoints.get && endpoints.get.skills)) && (endpoints.users || (endpoints.get && endpoints.get.users))
|
||||||
script(type="module" src="https://unpkg.com/@startinblox/component-directory@1.1" defer)
|
script(type="module" src="https://cdn.skypack.dev/@startinblox/component-directory@1.2" defer)
|
||||||
//- script(type="module" src="/lib/solid-directory/dist/index.js" defer)
|
//- script(type="module" src="/lib/solid-directory/dist/index.js" defer)
|
||||||
|
|
||||||
if endpoints.dashboards || (endpoints.get && endpoints.get.dashboards)
|
if endpoints.dashboards || (endpoints.get && endpoints.get.dashboards)
|
||||||
script(type="module" src="https://unpkg.com/@startinblox/component-dashboard@0.5" defer)
|
script(type="module" src="https://cdn.skypack.dev/@startinblox/component-dashboard@0.6" defer)
|
||||||
//- script(type="module" src="/lib/solid-dashboard/dist/index.js" defer)
|
//- script(type="module" src="/lib/solid-dashboard/dist/index.js" defer)
|
||||||
|
|
||||||
if endpoints.users || (endpoints.get && endpoints.get.users)
|
if endpoints.users || (endpoints.get && endpoints.get.users)
|
||||||
script(type="module" src="https://unpkg.com/@startinblox/component-chat@1.2" defer)
|
script(type="module" src="https://cdn.skypack.dev/@startinblox/component-chat@1.4" defer)
|
||||||
//- script(type="module" src="/lib/solid-xmpp-chat/dist/index.js" defer)
|
//- script(type="module" src="/lib/solid-xmpp-chat/dist/index.js" defer)
|
||||||
|
|
||||||
if endpoints.polls || (endpoints.get && endpoints.get.polls)
|
//- DISABLED - please migrate to dev.skypack.dev + upgrade to core@0.13
|
||||||
script(type="module" src="https://unpkg.com/@startinblox/component-poll@1.0" defer)
|
//- if endpoints.polls || (endpoints.get && endpoints.get.polls)
|
||||||
|
//- script(type="module" src="https://cdn.skypack.dev/@startinblox/component-poll@1.0" defer)
|
||||||
//- script(type="module" src="/lib/sib-polls-component/index.js" defer)
|
//- script(type="module" src="/lib/sib-polls-component/index.js" defer)
|
||||||
|
|
||||||
|
//- swal2 does not work with skypack
|
||||||
script(src="https://cdn.jsdelivr.net/npm/sweetalert2@10")
|
script(src="https://cdn.jsdelivr.net/npm/sweetalert2@10")
|
||||||
|
|
||||||
script(src="/scripts/index.js" defer)
|
script(src="/scripts/index.js" defer)
|
||||||
|
@ -52,7 +52,7 @@
|
|||||||
//-.header-left
|
//-.header-left
|
||||||
.logo
|
.logo
|
||||||
solid-link(next='dashboard')
|
solid-link(next='dashboard')
|
||||||
img(src=`${clientLogo || '/images/logo.png'}` style=`max-height:${clientLogoHeight || '32px'}`)
|
img(src=`${clientLogo || '/images/logo.webp'}` style=`max-height:${clientLogoHeight || '74px'}`)
|
||||||
|
|
||||||
span.beta-tag(data-trans='header.beta')
|
span.beta-tag(data-trans='header.beta')
|
||||||
|
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 7.5 KiB |
BIN
src/images/favicon.webp
Normal file
BIN
src/images/favicon.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 832 B |
BIN
src/images/hubl-icon-192.png
Normal file
BIN
src/images/hubl-icon-192.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 32 KiB |
BIN
src/images/hubl-icon-512.png
Normal file
BIN
src/images/hubl-icon-512.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 106 KiB |
Binary file not shown.
Before Width: | Height: | Size: 8.5 KiB |
BIN
src/images/logo.webp
Normal file
BIN
src/images/logo.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.0 KiB |
@ -9,11 +9,11 @@ html(lang="en")
|
|||||||
if clientFavicon
|
if clientFavicon
|
||||||
link(rel="icon" type="image/png" href=`${clientFavicon}`)
|
link(rel="icon" type="image/png" href=`${clientFavicon}`)
|
||||||
else
|
else
|
||||||
link(rel="icon" type="image/png" href="/images/favicon.png")
|
link(rel="icon" type="image/webp" href="/images/favicon.webp")
|
||||||
include dependencies.pug
|
include dependencies.pug
|
||||||
if clientCSS
|
if clientCSS
|
||||||
link(rel='stylesheet', href=`${clientCSS}`)
|
link(rel='stylesheet', href=`${clientCSS}`)
|
||||||
|
link(rel="manifest" href="/manifest.webmanifest")
|
||||||
body
|
body
|
||||||
|
|
||||||
//- header#header.header.is-spaced(role='banner')
|
//- header#header.header.is-spaced(role='banner')
|
||||||
|
@ -3,14 +3,16 @@
|
|||||||
div.content-box__header
|
div.content-box__header
|
||||||
solid-display(
|
solid-display(
|
||||||
bind-resources
|
bind-resources
|
||||||
fields='name, parenthesis, username, endParenthesis'
|
fields='avatar-container(account.picture), text(name, hyphen, at, username)'
|
||||||
value-parenthesis=" ("
|
value-hyphen=" - "
|
||||||
value-endParenthesis=")"
|
value-at="@"
|
||||||
|
|
||||||
class-parenthesis='h1-like'
|
widget-account.picture='hubl-user-avatar'
|
||||||
class-endParenthesis='h1-like'
|
class-text="avatar-text"
|
||||||
|
class-avatar-container="avatar-container"
|
||||||
|
class-account.picture='avatar'
|
||||||
class-name='h1-like'
|
class-name='h1-like'
|
||||||
class-username='h1-like'
|
class-hypen='h1-like'
|
||||||
)
|
)
|
||||||
|
|
||||||
.chat-view
|
.chat-view
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
document.addEventListener("DOMContentLoaded", function (event) {
|
document.addEventListener("DOMContentLoaded", function () {
|
||||||
document
|
document
|
||||||
.querySelector("sib-auth")
|
.querySelector("sib-auth")
|
||||||
.getUser()
|
.getUser()
|
||||||
|
@ -27,10 +27,10 @@ function closeUserControls() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", function(event) {
|
document.addEventListener("DOMContentLoaded", function() {
|
||||||
|
|
||||||
//- View change event
|
//- View change event
|
||||||
window.addEventListener("navigate", event => {
|
window.addEventListener("navigate", () => {
|
||||||
closeLeftMenu();
|
closeLeftMenu();
|
||||||
closeUserControls();
|
closeUserControls();
|
||||||
});
|
});
|
||||||
@ -63,7 +63,7 @@ document.addEventListener("DOMContentLoaded", function(event) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
document.querySelector("#toggleMainMenu").addEventListener("click", event => {
|
document.querySelector("#toggleMainMenu").addEventListener("click", () => {
|
||||||
let leftMenu = document.querySelector("#main__menu");
|
let leftMenu = document.querySelector("#main__menu");
|
||||||
if (leftMenu.hasAttribute("open")) {
|
if (leftMenu.hasAttribute("open")) {
|
||||||
closeLeftMenu();
|
closeLeftMenu();
|
||||||
@ -75,7 +75,7 @@ document.addEventListener("DOMContentLoaded", function(event) {
|
|||||||
const rightMenus = Array.from(document.querySelectorAll("nav.jsRightMenu"));
|
const rightMenus = Array.from(document.querySelectorAll("nav.jsRightMenu"));
|
||||||
rightMenus.forEach(rightMenu => {
|
rightMenus.forEach(rightMenu => {
|
||||||
const btnRightMenu = rightMenu.querySelector("li.jsOffsiteToggle");
|
const btnRightMenu = rightMenu.querySelector("li.jsOffsiteToggle");
|
||||||
btnRightMenu.addEventListener("click", e => {
|
btnRightMenu.addEventListener("click", () => {
|
||||||
if (rightMenu.hasAttribute("open")) {
|
if (rightMenu.hasAttribute("open")) {
|
||||||
closeRightMenu();
|
closeRightMenu();
|
||||||
} else {
|
} else {
|
||||||
@ -86,7 +86,7 @@ document.addEventListener("DOMContentLoaded", function(event) {
|
|||||||
|
|
||||||
Array.from(document.querySelectorAll(".jsMobileSidebarOpenButton")).forEach(
|
Array.from(document.querySelectorAll(".jsMobileSidebarOpenButton")).forEach(
|
||||||
el => {
|
el => {
|
||||||
el.addEventListener("click", event => {
|
el.addEventListener("click", () => {
|
||||||
openRightMenu();
|
openRightMenu();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
11
src/scripts/register-sw.js
Normal file
11
src/scripts/register-sw.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
// if('serviceWorker' in navigator) {
|
||||||
|
// var refreshing;
|
||||||
|
// navigator.serviceWorker.addEventListener('controllerchange', () => {
|
||||||
|
// if (refreshing) {
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
// refreshing = true;
|
||||||
|
// window.location.reload();
|
||||||
|
// });
|
||||||
|
// navigator.serviceWorker.register('/sw.js');
|
||||||
|
// }
|
@ -1,4 +1,4 @@
|
|||||||
document.addEventListener("DOMContentLoaded", function (event) {
|
document.addEventListener("DOMContentLoaded", function () {
|
||||||
window.addEventListener('newMessage', event => {
|
window.addEventListener('newMessage', event => {
|
||||||
let jid = event.detail.jid;
|
let jid = event.detail.jid;
|
||||||
Array.from(document.querySelectorAll('[data-jabberID="' + jid + '"]')).forEach(el => {
|
Array.from(document.querySelectorAll('[data-jabberID="' + jid + '"]')).forEach(el => {
|
||||||
|
@ -44,7 +44,7 @@ function recursiveAdaptWidgets(prefix, element, user) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", function (event) {
|
document.addEventListener("DOMContentLoaded", function () {
|
||||||
document
|
document
|
||||||
.querySelector("sib-auth")
|
.querySelector("sib-auth")
|
||||||
.getUser()
|
.getUser()
|
||||||
|
@ -54,8 +54,8 @@
|
|||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
background: var(--color-primary);
|
background: var(--color-primary);
|
||||||
color: var(--color-white);
|
color: var(--color-white);
|
||||||
position: absolute;
|
position: fixed;
|
||||||
top: -9px;
|
top: 12px;
|
||||||
left: 267px;
|
left: 267px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -674,7 +674,7 @@ h5 {
|
|||||||
margin: 0 1.6rem;
|
margin: 0 1.6rem;
|
||||||
|
|
||||||
@include breakpoint(lg) {
|
@include breakpoint(lg) {
|
||||||
padding: 3rem;
|
padding: 2rem;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
@import 'user-profile';
|
@import 'messages';
|
||||||
|
13
src/styles/layout/user/messages.scss
Normal file
13
src/styles/layout/user/messages.scss
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
.avatar-container {
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 10px;
|
||||||
|
|
||||||
|
.avatar {
|
||||||
|
height: 40px;
|
||||||
|
width: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.avatar-text {
|
||||||
|
position: absolute;
|
||||||
|
top: 2.8rem;
|
||||||
|
}
|
@ -1,76 +0,0 @@
|
|||||||
/*.user-profile__container {
|
|
||||||
|
|
||||||
.user-bio {
|
|
||||||
display: grid;
|
|
||||||
grid-gap: 1rem;
|
|
||||||
grid-template-areas: "avatar name"
|
|
||||||
"avatar information";
|
|
||||||
grid-template-columns: minmax(300px, 400px) 2fr;
|
|
||||||
|
|
||||||
.avatar-display {
|
|
||||||
grid-area: avatar;
|
|
||||||
overflow: hidden;
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
img {
|
|
||||||
border-radius: 50%;
|
|
||||||
height: 300px;
|
|
||||||
object-fit: cover;
|
|
||||||
overflow: hidden;
|
|
||||||
object-position: center;
|
|
||||||
width: 300px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.name-diplay {
|
|
||||||
grid-area: name;
|
|
||||||
|
|
||||||
[name='user-name-groups'] {
|
|
||||||
align-items: baseline;
|
|
||||||
align-self: end;
|
|
||||||
display: flex;
|
|
||||||
|
|
||||||
solid-multiple {
|
|
||||||
display: flex;
|
|
||||||
padding-left: 1.4rem;
|
|
||||||
|
|
||||||
hubl-groups-name {
|
|
||||||
@extend %tag-role;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-form {
|
|
||||||
grid-area: information; */
|
|
||||||
|
|
||||||
/* ces styles disparaitront lorsque l'on aura la fonctionnalité pour uploader une photo */
|
|
||||||
/*[name="account.picture"] {
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
hubl-instruction {
|
|
||||||
margin-left: 1rem;
|
|
||||||
|
|
||||||
span {
|
|
||||||
color: $color-233-18-29;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
margin-left: 1rem;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
/* Fin commentaire sur upload photos */
|
|
||||||
/*}
|
|
||||||
|
|
||||||
[name^="inline-"] {
|
|
||||||
display: flex;
|
|
||||||
justify-content: flex-start;
|
|
||||||
|
|
||||||
>*:not(:last-child) {
|
|
||||||
margin-right: 3rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}*/
|
|
113
src/sw.js
Normal file
113
src/sw.js
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
const CACHE_NAME = 'hubl-store';
|
||||||
|
|
||||||
|
self.addEventListener('install', function (e) {
|
||||||
|
self.skipWaiting();
|
||||||
|
e.waitUntil(
|
||||||
|
caches.open(CACHE_NAME).then(function (cache) {
|
||||||
|
return cache.addAll([
|
||||||
|
'/locales/es.json',
|
||||||
|
'/locales/fr.json',
|
||||||
|
'/scripts/index.js',
|
||||||
|
'/syles/index.css',
|
||||||
|
'/index.html',
|
||||||
|
'/'
|
||||||
|
]);
|
||||||
|
})
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
self.addEventListener('activate', function (e) {
|
||||||
|
// invalidate older versions
|
||||||
|
e.waitUntil(
|
||||||
|
caches.keys()
|
||||||
|
.then(function (keyList) {
|
||||||
|
return Promise.all(keyList.map(function (key) {
|
||||||
|
if (key !== CACHE_NAME && key !== (CACHE_NAME + "-cdn") && key !== (CACHE_NAME + "-api")) {
|
||||||
|
return caches.delete(key);
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
}));
|
||||||
|
self.clients.claim();
|
||||||
|
});
|
||||||
|
|
||||||
|
self.addEventListener('fetch', function (event) {
|
||||||
|
let requestURL = new URL(event.request.url);
|
||||||
|
if (requestURL.origin == location.origin) {
|
||||||
|
// Static asset, cache then network
|
||||||
|
event.respondWith(
|
||||||
|
caches.open(CACHE_NAME).then(function (cache) {
|
||||||
|
return cache.match(event.request).then(function (response) {
|
||||||
|
var fetchPromise = fetch(event.request).then(function (networkResponse) {
|
||||||
|
cache.put(event.request, networkResponse.clone());
|
||||||
|
return networkResponse;
|
||||||
|
});
|
||||||
|
return response || fetchPromise;
|
||||||
|
});
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
if (
|
||||||
|
event.request.method == 'POST' ||
|
||||||
|
event.request.method == 'PUT'
|
||||||
|
) {
|
||||||
|
// disabled: lead to cors errors
|
||||||
|
// // POST/PUT to api, rewrite the cache
|
||||||
|
// event.respondWith(
|
||||||
|
// caches.open(CACHE_NAME + '-api').then(function (cache) {
|
||||||
|
// return fetch(event.request).then(function (response) {
|
||||||
|
// cache.put(event.request, response.clone());
|
||||||
|
// return response;
|
||||||
|
// })
|
||||||
|
// }));
|
||||||
|
// api: no cache
|
||||||
|
event.respondWith(fetch(event.request));
|
||||||
|
} else if (
|
||||||
|
/matomo/.test(requestURL.origin) ||
|
||||||
|
/sentry/.test(requestURL.origin) ||
|
||||||
|
/jabber/.test(requestURL.origin) ||
|
||||||
|
/xmpp/.test(requestURL.origin)
|
||||||
|
) {
|
||||||
|
// analytics, always distant
|
||||||
|
event.respondWith(fetch(event.request));
|
||||||
|
} else {
|
||||||
|
if (
|
||||||
|
/unpkg/.test(requestURL.origin) ||
|
||||||
|
/skypack/.test(request.origin) ||
|
||||||
|
/jspm/.test(requestURL.origin) ||
|
||||||
|
/jsdeliver/.test(requestURL.origin) ||
|
||||||
|
/cdn/.test(requestURL.origin) ||
|
||||||
|
/googleapis/.test(requestURL.origin)
|
||||||
|
) {
|
||||||
|
// cdn: cache then network
|
||||||
|
event.respondWith(
|
||||||
|
caches.open(CACHE_NAME + '-cdn').then(function (cache) {
|
||||||
|
return cache.match(event.request).then(function (response) {
|
||||||
|
var fetchPromise = fetch(event.request).then(function (networkResponse) {
|
||||||
|
cache.put(event.request, networkResponse.clone());
|
||||||
|
return networkResponse;
|
||||||
|
});
|
||||||
|
return response || fetchPromise;
|
||||||
|
});
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
// disabled: lead to cors errors
|
||||||
|
// // api: distant then cache
|
||||||
|
// event.respondWith(
|
||||||
|
// fetch(event.request)
|
||||||
|
// .then((response) => {
|
||||||
|
// caches.open(CACHE_NAME + '-api').then(function (cache) {
|
||||||
|
// cache.put(event.request, response.clone());
|
||||||
|
// return response;
|
||||||
|
// });
|
||||||
|
// })
|
||||||
|
// .catch(() => {
|
||||||
|
// return caches.match(event.request);
|
||||||
|
// })
|
||||||
|
// );
|
||||||
|
// api: no cache
|
||||||
|
event.respondWith(fetch(event.request));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user