diff --git a/.gitignore b/.gitignore
index 9ed3cc4..2b25e21 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@
*.iml
*.swp
dist
+.DS_Store
\ No newline at end of file
diff --git a/README.md b/README.md
index cbab858..990726f 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
-# SiB App
+# Hubl
-SiB App is the magic tool that allows the Freelance Network to thrive in a decentralized way.
+Hubl is the magic tool that allows the Freelance Network to thrive in a decentralized way.
## Getting Started
@@ -8,52 +8,48 @@ These instructions will get you a copy of the project up and running on your loc
### Prerequisites
-To install SiB App, you'll need:
+To install Hubl, you'll need:
-* A SIB server (djangoldp>=0.6.41) with the appropriate modules
-* A Prosody Server (with [appropriate modules](https://git.happy-dev.fr/startinblox/prosody/custom-prosody-modules/)
+* A Hubl Server (djangoldp>=0.6.42) with the appropriate modules
+* A Prosody Server (with [appropriate modules](https://git.startinblox.com/infra/prosody-modules/)
* A SMTP Server (optional)
* NodeJS on your machine
-Before diving in you have to check your SIB server supports the following LDP packages:
+Before diving in you have to check your Hubl Server supports the following LDP packages:
* djangoldp_account
-* djangoldp_circle
-* djangoldp_dashboard
-* djangoldp_joboffer
-* djangoldp_conversation
* djangoldp_notification
* djangoldp_profile
-* djangoldp_project
* djangoldp_skill
+* djangoldp_uploader
* oidc_provider: 'git+https://github.com/jblemee/django-oidc-provider.git@develop'
Those packages are given with the last stable version tested.
-Refer to the [documentation to install a SIB server](https://git.startinblox.com/documentation/doc/wikis/devops/install_sib_server) with this configuration.
+Refer to the [documentation to install a Hubl Server](https://git.startinblox.com/documentation/doc/wikis/devops/install_sib_server) with this configuration.
## Build the application
In order to find your server(s) the client application needs to be assembled with the proper configuration.
-Get the code of the SIB app on your machine:
+Get the code of the Hubl on your machine:
```bash
git clone ...
-cd sib-app
+cd hubl
npm install
```
Then create a `config.json` based on your needs, see Mandatory and Optional Modules on this page. For convienence a `config.sample.json` exists in the source.
-Federated Sib App needs to use `config.sample.federated.json` example.
+Federated Hubl needs to use `config.sample.federated.json` example.
You can quickly update your API URI from the samples:
```
-$ sed 's/http:\/\/localhost:8000/https:\/\/api.test2.startinblox.com/' config.sample.json > config.json
+$ sed 's/http:\/\/localhost:8000/https:\/\/api.your-server.startinblox.com/' config.sample.json > config.json
```
-Then build your new SIB App:
+Then build your new Hubl:
```bash
npm run build
@@ -71,9 +67,9 @@ npm run watch
## Mandatory modules
-By default, a SIB App includes only individual chat modules.
+By default, a Hubl includes only individual chat modules.
-On Server: `djangoldp_account`, `djangoldp_profile`, `djangoldp_notification`, `oidc_provider` packages
+On Server: `djangoldp_account`, `djangoldp_profile`, `djangoldp_notification`, `djangoldp_skill`, `djangoldp_upload`, `oidc_provider` packages
On `config.json`:
@@ -89,7 +85,7 @@ On `config.json`:
Where:
-* `xmpp` is your Prosody with [appropriate modules](https://git.happy-dev.fr/startinblox/prosody/custom-prosody-modules/) configured on.
+* `xmpp` is your Prosody with [appropriate modules](https://git.startinblox.com/infra/prosody-modules/) configured on.
* `authority` is the OpenID Provider. Usually, if you use `djangoldp-account` it's the same as your djangoldp server.
* `endpoints.users` is the API endpoints for Users on your djangoldp server.
@@ -98,7 +94,8 @@ Where:
On `config.json`:
```json
- "clientName": "Sib App",
+ "clientName": "Hubl",
+ "clientFavicon": "/images/favicon.png",
"clientLogo": "/images/logo.png",
"clientLogoHeight": "32px",
"clientCSS": "/path/to/custom.css",
@@ -107,21 +104,36 @@ On `config.json`:
Where:
-* `clientName` is the name of your SIB App.
+* `clientName` is the name of your Hubl.
+* `clientFavicon` is an URL to a distant favicon
* `clientLogo` is an URL to a distant logo for your client
* `clientLogoHeight` allow a quick fix to manage different height logos
-* `clientCSS` is an URL to a distant CSS that'll be the last one loaded by the SIB App
+* `clientCSS` is an URL to a distant CSS that'll be the last one loaded by the Hubl
* `authorityName` is a visual name of your OpenID Provider
## Optional modules
+### Analytics
+
+Hubl support Google or Matomo as analytics trackers. To use them, add to your `config.json`:
+
+```json
+ "analytics": [
+ {
+ "type": "matomo", //Or "google"
+ "url": "https://my-personal.matomo.cloud/",
+ "id": "1"
+ }
+ ]
+```
+
### Circles
Circles are a public group chat. To activate them, you need:
On Server: `djangoldp_circle` packages
-On `config.json`:
+On `config.json`:
```json
"endpoints": {
@@ -129,18 +141,33 @@ On `config.json`:
}
```
+### Dashboard
+
+Dashboard includes card generation from HTML. To activate them, you need:
+
+On Server: `djangoldp_dashboard` packages
+
+On `config.json`:
+
+```json
+ "endpoints": {
+ "dashboard": "http://server.url/dashboard/"
+ }
+```
+
### Events
Events allow to create and manage instance-level evenement. To activate them, you need:
-On Server: `djangoldp_event` and `djangoldp_upload` packages
+On Server: `djangoldp_event`, `djangoldp_upload` packages
-On `config.json`:
+On `config.json`:
```json
"endpoints": {
"events": "http://server.url/events/",
"typeevents": "http://server.url/typeevents/",
+ "uploads": "http://server.url/upload/"
}
```
@@ -150,7 +177,7 @@ On `config.json`:
On Server: `djangoldp_project` packages
-On `config.json`:
+On `config.json`:
```json
"endpoints": {
@@ -165,44 +192,35 @@ On `config.json`:
(In development) Directory includes a listing of each users of your app and editable individual profile. To activate them, you need:
-On `config.json`:
+On Server: `djangoldp_skill`, `djangoldp_upload` packages
+
+On `config.json`:
```json
"publicDirectory": true,
"endpoints": {
- "users": "http://server.url/users/",
"groups": "http://server.url/groups/",
"skills": "http://server.url/skills/",
"uploads": "http://server.url/upload/"
}
```
-### Dashboard
+### Job Offers
-Dashboard includes card generation from HTML. To activate them, you need:
+(In development) Job Offers includes a job board with conversation. To activate them, you need:
-On `config.json`:
+On Server: `djangoldp_joboffer`, `djangoldp_skill`, `djangoldp_upload`, `djangoldp_conversation` packages
+
+On `config.json`:
```json
"endpoints": {
- "dashboard": "http://server.url/dashboard/"
+ "joboffers": "http://server.url/joboffers/",
+ "skills": "http://server.url/skills/",
+ "uploads": "http://server.url/upload/"
}
```
-### Analytics
-
-SIB App support Google or Matomo as analytics trackers. To use them, add to your `config.json`:
-
-```json
- "analytics": [
- {
- "type": "matomo", //Or "google"
- "url": "https://my-personal-.matomo.cloud/",
- "id": "1"
- }
- ]
-```
-
## Built With
-* [Sib-Core](https://git.happy-dev.fr/startinblox/framework/sib-core/) - An awesome new framework!
+* [Sib-Core](https://git.startinblox.com/framework/sib-core/) - An awesome new framework!
diff --git a/config.sample.federated.json b/config.sample.federated.json
index 953296a..0fa0a63 100644
--- a/config.sample.federated.json
+++ b/config.sample.federated.json
@@ -1,41 +1,16 @@
{
"xmpp": "https://jabber.happy-dev.fr/http-bind/",
"authority": "http://localhost:8000/",
- "clientName": "Sib App",
- "clientLogo": "/images/logo.png",
- "clientLogoHeight": "32px",
- "clientCSS": "/path/to/custom.css",
- "authorityName": "djangoldp-server-name",
- "publicDirectory": false,
"endpoints": {
"get": {
- "dashboards": "http://localhost:8000/dashboards/",
- "groups": "http://localhost:8000/groups/",
- "circles": "http://localhost:8000/circles/",
- "projects": "http://localhost:8000/projects/",
- "customers": "http://localhost:8000/customers/",
- "businessproviders": "http://localhost:8000/sources/businessproviders/",
- "skills": "http://localhost:8000/sources/skills/",
- "events": "http://localhost:8000/events/",
- "typeevents": "http://localhost:8000/typeevents/",
+ "skills": "http://localhost:8000/skills/",
"users": "http://localhost:8000/users/",
- "groups": "http://localhost:8000/groups/",
- "uploads": "http://localhost:8000/upload/"
+ "groups": "http://localhost:8000/groups/"
},
"post": {
- "dashboards": "http://localhost:8000/dashboards/",
- "groups": "http://localhost:8000/groups/",
- "circles": "http://localhost:8000/circles/",
- "projects": "http://localhost:8000/projects/",
- "customers": "http://localhost:8000/customers/",
- "businessproviders": "http://localhost:8000/sources/businessproviders/",
- "skills": "http://localhost:8000/sources/skills/",
- "events": "http://localhost:8000/events/",
- "typeevents": "http://localhost:8000/typeevents/",
+ "skills": "http://localhost:8000/skills/",
"users": "http://localhost:8000/users/",
- "groups": "http://localhost:8000/groups/",
- "uploads": "http://localhost:8000/upload/"
+ "groups": "http://localhost:8000/groups/"
}
- },
- "analytics": []
+ }
}
diff --git a/config.sample.json b/config.sample.json
index a5b14a5..fa65e10 100644
--- a/config.sample.json
+++ b/config.sample.json
@@ -1,25 +1,10 @@
{
"xmpp": "https://jabber.happy-dev.fr/http-bind/",
"authority": "http://localhost:8000/",
- "clientName": "Sib App",
- "clientLogo": "/images/logo.png",
- "clientLogoHeight": "32px",
- "clientCSS": "/path/to/custom.css",
"authorityName": "djangoldp-server-name",
- "publicDirectory": false,
"endpoints": {
- "dashboards": "http://localhost:8000/dashboards/",
- "groups": "http://localhost:8000/groups/",
- "circles": "http://localhost:8000/circles/",
- "projects": "http://localhost:8000/projects/",
- "customers": "http://localhost:8000/customers/",
- "businessproviders": "http://localhost:8000/sources/businessproviders/",
- "skills": "http://localhost:8000/sources/skills/",
- "events": "http://localhost:8000/events/",
- "groups": "http://localhost:8000/groups/",
- "typeevents": "http://localhost:8000/typeevents/",
+ "skills": "http://localhost:8000/skills/",
"users": "http://localhost:8000/users/",
- "uploads": "http://localhost:8000/upload/"
- },
- "analytics": []
+ "groups": "http://localhost:8000/groups/"
+ }
}
diff --git a/package-lock.json b/package-lock.json
index a8c3118..e053852 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,5 +1,5 @@
{
- "name": "sib-app",
+ "name": "hubl",
"version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
diff --git a/package.json b/package.json
index 903d0b9..a1b4ce7 100644
--- a/package.json
+++ b/package.json
@@ -1,10 +1,10 @@
{
- "name": "sib-app",
+ "name": "hubl",
"version": "1.0.0",
"license": "MIT",
"repository": {
"type": "git",
- "url": "https://git.startinblox.com/applications/sib-app.git"
+ "url": "https://git.startinblox.com/applications/hubl.git"
},
"scripts": {
"build": "run-p copy:* build:*",
diff --git a/src/dependencies.pug b/src/dependencies.pug
index 97124f4..60b0441 100644
--- a/src/dependencies.pug
+++ b/src/dependencies.pug
@@ -1,37 +1,38 @@
-script(src="/scripts/index.js")
+script(type="module" src="https://unpkg.com/@startinblox/core@0.9" defer)
+//- script(type="module" src="/lib/sib-core/dist/index.js" defer)
-//- Scripts - use add `"libLocal" = true` on config.json to use your local `lib` folder
-if libLocal
- script(type="module" src="/lib/sib-oidc/index.js")
- script(type="module" src="/lib/sib-router/src/index.js")
- script(type="module" src="/lib/sib-notifications/index.js")
- if endpoints.users || (endpoints.get && endpoints.get.users)
- script(type="module" src="/lib/sib-chat/sib-chat.js")
- if endpoints.events || (endpoints.get && endpoints.get.events)
- script(type="module" src="/lib/sib-event/sib-event.js")
- if endpoints.joboffers || (endpoints.get && endpoints.get.joboffers)
- script(type="module" src="/lib/sib-job-board/sib-job-board.js")
- script(type="module" src="/lib/sib-conversation/sib-conversation.js")
- if publicDirectory && (endpoints.users || (endpoints.get && endpoints.get.users))
- script(type="module" src="/lib/sib-directory/sib-directory.js")
- if endpoints.dashboards || (endpoints.get && endpoints.get.dashboards)
- script(type="module" src="/lib/sib-dashboard/sib-dashboard.js")
-else
- script(type="module" src="https://unpkg.com/@startinblox/oidc@0.8")
- script(type="module" src="https://unpkg.com/@startinblox/core@0.9")
- script(type="module" src="https://unpkg.com/@startinblox/router@0.7")
- script(type="module" src="https://unpkg.com/@startinblox/component-notifications@0.3")
- if endpoints.users || (endpoints.get && endpoints.get.users)
- script(type="module" src="https://unpkg.com/@startinblox/component-chat@0.5")
- if endpoints.events || (endpoints.get && endpoints.get.events)
- script(type="module" src="https://unpkg.com/@startinblox/component-event@0.1")
- if endpoints.joboffers || (endpoints.get && endpoints.get.joboffers)
- script(type="module" src="https://unpkg.com/@startinblox/component-job-board@0.3")
- script(type="module" src="https://unpkg.com/@startinblox/component-conversation@0.3")
- if publicDirectory && (endpoints.users || (endpoints.get && endpoints.get.users))
- script(type="module" src="https://unpkg.com/@startinblox/component-directory@0.3")
- if endpoints.dashboards || (endpoints.get && endpoints.get.dashboards)
- script(type="module" src="https://unpkg.com/@startinblox/component-dashboard@0.1")
+script(type="module" src="https://unpkg.com/@startinblox/oidc@0.8" defer)
+//- script(type="module" src="/lib/sib-oidc/index.js" defer)
+
+script(type="module" src="https://unpkg.com/@startinblox/router@0.7" defer)
+//- script(type="module" src="/lib/sib-router/src/index.js" defer)
+
+script(type="module" src="https://unpkg.com/@startinblox/component-notifications@0.3" defer)
+//- script(type="module" src="/lib/sib-notifications/index.js" defer)
+
+if endpoints.events || (endpoints.get && endpoints.get.events)
+ script(type="module" src="https://unpkg.com/@startinblox/component-event@0.1" defer)
+//- script(type="module" src="/lib/sib-event/sib-event.js" defer)
+
+if endpoints.joboffers || (endpoints.get && endpoints.get.joboffers)
+ script(type="module" src="https://unpkg.com/@startinblox/component-job-board@0.3" defer)
+ script(type="module" src="https://unpkg.com/@startinblox/component-conversation@0.3" defer)
+//- script(type="module" src="/lib/sib-job-board/sib-job-board.js" defer)
+//- script(type="module" src="/lib/sib-conversation/sib-conversation.js" defer)
+
+if publicDirectory && (endpoints.users || (endpoints.get && endpoints.get.users))
+ script(type="module" src="https://unpkg.com/@startinblox/component-directory@0.3" defer)
+//- script(type="module" src="/lib/sib-directory/sib-directory.js" defer)
+
+if endpoints.dashboards || (endpoints.get && endpoints.get.dashboards)
+ script(type="module" src="https://unpkg.com/@startinblox/component-dashboard@0.1" defer)
+//- script(type="module" src="/lib/sib-dashboard/sib-dashboard.js" defer)
+
+if endpoints.users || (endpoints.get && endpoints.get.users)
+ script(type="module" src="https://unpkg.com/@startinblox/component-chat@0.6" defer)
+ //- script(type="module" src="/lib/sib-chat/sib-chat.js" defer)
+
+script(src="/scripts/index.js" defer)
//- Stylesheets
link(rel='stylesheet', href='/styles/index.css')
diff --git a/src/header.pug b/src/header.pug
index 8662cfc..55d35a8 100644
--- a/src/header.pug
+++ b/src/header.pug
@@ -12,13 +12,13 @@ sib-notifications.notLoggedIn(
bind-user
)
-include templates/hd-user-avatar.pug
+include templates/hubl-user-avatar.pug
details#user-controls.notLoggedIn
summary(tabindex='0' role='button')
sib-display#user-controls__profile(
fields='first_name, account.picture'
- widget-account.picture='hd-user-avatar'
+ widget-account.picture='hubl-user-avatar'
bind-user
)
#user-controls__panel
@@ -41,6 +41,6 @@ sib-auth(style='display:none!important')
sib-auth-provider(
data-authority=`${authority}`
data-id=`${authorityName || "authority"}`
- data-client-name=`${clientName || "SIB App"}`
+ data-client-name=`${clientName || "Hubl"}`
)
diff --git a/src/images/favicon.png b/src/images/favicon.png
index a0d43dd..e715278 100644
Binary files a/src/images/favicon.png and b/src/images/favicon.png differ
diff --git a/src/images/logo.png b/src/images/logo.png
index d47b120..ea256f2 100644
Binary files a/src/images/logo.png and b/src/images/logo.png differ
diff --git a/src/index.pug b/src/index.pug
index a6fd51f..5ae77e6 100644
--- a/src/index.pug
+++ b/src/index.pug
@@ -3,10 +3,13 @@ doctype html
html(lang="en")
head
meta(charset="UTF-8")
- title #{clientName || "Sib App"}
+ title #{clientName || "My Personal Hubl"}
meta(name="viewport", content="width=device-width, initial-scale=1.0")
meta(http-equiv="X-UA-Compatible", content="ie=edge")
- link(rel="icon" type="image/png" href="/images/favicon.png")
+ if clientFavicon
+ link(rel="icon" type="image/png" href=`${clientFavicon}`)
+ else
+ link(rel="icon" type="image/png" href="/images/favicon.png")
include dependencies.pug
if clientCSS
link(rel='stylesheet', href=`${clientCSS}`)
diff --git a/src/menu-left.pug b/src/menu-left.pug
index 9a71b50..2d261c0 100644
--- a/src/menu-left.pug
+++ b/src/menu-left.pug
@@ -1,33 +1,41 @@
-sib-widget(name='hd-counter')
+sib-widget(name='hubl-counter')
template
sib-fix-badge(data-src="${value == 'badge' ? src : value}")
-sib-widget(name='hd-create')
+sib-widget(name='hubl-menu-jabberid')
+ template
+ div.hidden(
+ data-jabberID="${value}"
+ )
+
+sib-widget(name='hubl-create')
template
p.create Tu ne fais partie d'aucun ${value}.
br
| Pour en créer un nouveau, tu peux te rendre dans le
sib-link(next='admin') panneau d'administration
-sib-widget(name='menu-fix-url-circle')
+sib-widget(name='hubl-menu-fix-url-circle')
template
sib-display(
data-src='${value}'
- fields='name, badge'
+ fields='name, jabberID, badge'
value-badge='${value}'
- widget-badge='hd-counter'
+ widget-badge='hubl-counter'
+ widget-jabberID='hubl-menu-jabberid'
widget-name='sib-display-div'
)
-sib-widget(name='menu-fix-url-project')
+sib-widget(name='hubl-menu-fix-url-project')
template
sib-display(
data-src='${value}'
- fields='project(customer.name, name), badge'
+ fields='project(customer.name, name, jabberID), badge'
class-name='project-name'
class-customer.name='project-customer'
value-badge='${value}'
- widget-badge='hd-counter'
+ widget-jabberID='hubl-menu-jabberid'
+ widget-badge='hubl-counter'
widget-name='sib-display-div'
)
@@ -67,9 +75,9 @@ nav#main__menu.jsLeftMenu
bind-user
nested-field='projects'
fields='project'
- empty-widget='hd-create'
+ empty-widget='hubl-create'
empty-value='project'
- widget-project='menu-fix-url-project'
+ widget-project='hubl-menu-fix-url-project'
order-by='project.customer.name'
next='project'
)
@@ -88,9 +96,9 @@ nav#main__menu.jsLeftMenu
bind-user
nested-field='circles'
fields='circle'
- empty-widget='hd-create'
+ empty-widget='hubl-create'
empty-value='circle'
- widget-circle='menu-fix-url-circle'
+ widget-circle='hubl-menu-fix-url-circle'
order-by='circle.name'
next='circle'
)
@@ -106,9 +114,10 @@ nav#main__menu.jsLeftMenu
div.sub-menu.menu-notification
sib-display.nosub(
data-src=`${endpoints.users || (endpoints.get && endpoints.get.users)}`
- fields='username, badge'
- widget-username='sib-display-div'
- widget-badge='hd-counter'
+ fields='name, chatProfile.jabberID, badge'
+ widget-name='sib-display-div'
+ widget-badge='hubl-counter'
+ widget-chatProfile.jabberID='hubl-menu-jabberid'
action-badge='badge'
order-by='username'
next='messages'
diff --git a/src/page-messages.pug b/src/page-messages.pug
index f12cb83..545e643 100644
--- a/src/page-messages.pug
+++ b/src/page-messages.pug
@@ -1,16 +1,22 @@
.content-box.full-width
+
sib-display.content-box__header(
bind-resources
- fields='username'
+ fields='name, parenthesis, username, endParenthesis'
+ value-parenthesis=" ("
+ value-endParenthesis=")"
+ class-parenthesis='name'
+ class-endParenthesis='name'
+ class-name='name'
class-username='name'
)
+
.chat-view
sib-chat(
data-authentication='login',
data-auto-login='true',
data-bosh-service-url=`${xmpp}`,
- data-debug='false',
- data-locales-url='en',
+ data-i18n='en',
bind-resources
)
diff --git a/src/page-user-profile.pug b/src/page-user-profile.pug
index 9cc8d28..d10d1e1 100644
--- a/src/page-user-profile.pug
+++ b/src/page-user-profile.pug
@@ -1,4 +1,4 @@
-include templates/template-groups.pug
+include templates/hubl-groups.pug
.content-box.with-form.user-profile__container
@@ -19,7 +19,7 @@ include templates/template-groups.pug
label-groups=''
multiple-groups=''
- widget-groups='groups-name'
+ widget-groups='hubl-groups-name'
class-username='username'
)
@@ -48,7 +48,7 @@ include templates/template-groups.pug
class-account.picture='form-label is-light'
label-account.picture='your picture'
- widget-instruction='hd-instruction'
+ widget-instruction='hubl-instruction'
)
.section.user-skills
@@ -65,7 +65,7 @@ include templates/template-groups.pug
)
- sib-widget(name='hd-instruction')
+ sib-widget(name='hubl-instruction')
template
span Show us your most beautiful smile
p Pictures help us to know ourselves and also to recognize ourselves, so don't be afraid to show your pretty face and avoid strange avatars.
diff --git a/src/scripts/index.js b/src/scripts/index.js
deleted file mode 100644
index 983ae7b..0000000
--- a/src/scripts/index.js
+++ /dev/null
@@ -1,363 +0,0 @@
-function applyAdapt(prefix, sibDisplay, user) {
-
- //- Allow to bind-user on selected attribute
- if (sibDisplay.getAttribute(prefix + "-user-id")) {
- sibDisplay.setAttribute(
- sibDisplay.getAttribute(prefix + "-user-id"),
- user["@id"]
- );
- }
-
- //- Allow to set data-src to a children sib-form
- if (sibDisplay.getAttribute(prefix + "-bind-resources")) {
- let form = sibDisplay.querySelector(
- sibDisplay.getAttribute(prefix + "-bind-resources") + " sib-form"
- );
- if (form) {
- form.setAttribute(
- "data-src",
- sibDisplay.component.resourceId.replace("members/", "")
- );
- }
- }
-
- //- Allow to put user on a targetted search field
- if (sibDisplay.getAttribute(prefix + "-bind-user2input")) {
- sibDisplay.querySelector(
- sibDisplay.getAttribute(prefix + "-bind-user2input")
- ).value = user["@id"];
- }
-}
-
-function recursiveAdaptWidgets(prefix, element, user) {
-
- element.addEventListener("populate", () => {
-
- //- This function is a workaround for the currently unworking populate
- //- Feel free to see examples on page-circles-
- element.querySelectorAll("[" + prefix + "-user-id]").forEach(el => {
- el.setAttribute(el.getAttribute(prefix + "-user-id"), user["@id"]);
- });
- applyAdapt(prefix, element, user);
-
- document.querySelectorAll('sib-display, sib-form').forEach(sibDisplay => {
- applyAdapt(prefix, sibDisplay, user);
- });
- });
-}
-
-// auxiliary function closes the user profile menu
-function closeUserControls() {
- let userControls = document.querySelector("#user-controls");
- if (userControls) userControls.removeAttribute("open");
-}
-
-function closeLeftMenu() {
- let leftMenu = document.querySelector("#main__menu");
- if (leftMenu) leftMenu.removeAttribute("open");
-}
-
-function closeRightMenu() {
- let rightMenu = document.querySelectorAll(".jsRightMenu");
- if (Array.from(rightMenu).filter(el => el.hasAttribute("open")).length > 0) {
- Array.from(document.querySelectorAll(".views-container")).forEach(vC =>
- vC.classList.toggle("sidebar-is-closed")
- );
- Array.from(rightMenu).forEach(el => el.removeAttribute("open"));
- }
-}
-
-function openRightMenu() {
- let rightMenu = document.querySelectorAll(".jsRightMenu");
- Array.from(rightMenu).forEach(el => el.setAttribute("open", ""));
- Array.from(document.querySelectorAll(".views-container")).forEach(vC =>
- vC.classList.toggle("sidebar-is-closed")
- );
-}
-
-//auxiliary function clears cache & refreshes sib-displays for a given resource ID
-function refreshSibDisplays(resourceId, clearCache = true) {
- let cacheCleared = false;
-
- Array.from(document.querySelectorAll("sib-display"))
- .filter(sibDisplay => sibDisplay.component.resourceId == resourceId) // keep only elements with resource == edited resource
- .forEach(e => {
- //clear cache if we were unable to before
- if ((clearCache && !cacheCleared) && e.component.resource != null) {
- e.component.resource.clearCache();
- cacheCleared = true;
- }
- e.dataset.src = e.dataset.src;
- }); // and update them
-}
-
-async function updateSources(resource) {
- let res = resource.split('/');
- res.splice(3, 0, 'sources');
- let cacheCleared = false;
- if (event.target.component.resource != null) {
- event.target.component.resource.clearCache();
- cacheCleared = true;
- }
- refreshSibDisplays(res.join('/'),cacheCleared);
-}
-
-//auxiliary function updates displays using a given resource
-//NOTE: this is a temporary workaround and should be replaced by a reactive storage
-//https://git.happy-dev.fr/startinblox/framework/sib-core/issues/524
-async function refreshResource(event) {
-
- // if of the edited resource || id of the container of the created resource
- const resourceId = event.detail.resource["@id"] || event.target.dataset.src;
- updateSources(resourceId, event);
- let resource = document
- .querySelector('[data-src="' + resourceId + '"]')
- .component.resource.getResourceData();
-
- //special case: refresh circles/X/ from circle-members/Y/
- let partnerId = null;
- if (resourceId.includes("circle-members")) {
- partnerId = resource["http://happy-dev.fr/owl/#circle"]["@id"];
- } else if (resourceId.includes("project-members")) {
- partnerId = resource["http://happy-dev.fr/owl/#project"]["@id"];
- }
-
- //refresh all resources using the partner ID
- if (partnerId != null) {
- refreshSibDisplays(partnerId);
- refreshSibDisplays(partnerId + "members/");
- }
-
- //special cases updating users/X/circles for the left-side-menu (leaving or joining circle)
- let user = await document.querySelector('sib-auth').getUser();
- if(resourceId.includes('circle') && user != null) {
- let userId = user['@id'];
- refreshSibDisplays(userId + "circles/");
- refreshSibDisplays(resourceId.split('/').slice(0,4).join('/')+'/joinable/');
- }
-
- //clear cache on this resource
- //NOTE: this is required because the cache is not refreshed after POSTing changes on the resource
- let cacheCleared = false;
- if (event.target.component.resource != null) {
- event.target.component.resource.clearCache();
- cacheCleared = true;
- }
-
- //update all displays which use this resource
- refreshSibDisplays(resourceId, cacheCleared);
-}
-
-//auxiliary function performs a redirect
-//NOTE: currently a sib-display is required to dispatch the requestNavigation event
-function performRedirect(route) {
- document.dispatchEvent(
- new CustomEvent("requestNavigation", {
- bubbles: true,
- detail: { route: route }
- })
- );
-}
-
-//auxiliary function redirects after leaving a project/circle
-//NOTE: this is a temporary workaround until the following issues are resolved:
-//https://git.happy-dev.fr/startinblox/framework/sib-core/issues/476
-//https://git.happy-dev.fr/startinblox/framework/sib-core/issues/546
-async function checkForPostLeaveRedirect(event) {
- //a redirect will only be required if I left in the information page of the resource
- if(!window.location.href.includes('-information')) return;
- //first need to get a sib-display with this resource id (to have access to the target Proxy, containing model fields)
- const resourceId = event.detail.resource['@id'] || event.target.dataset.src;
- let target = document.querySelector('[data-src="' + resourceId + '"]');
- let resource = target.component.resource.getResourceData();
-
- //no redirect is required for public circles
- let targetCircleId = resource["http://happy-dev.fr/owl/#circle"]["@id"];
- if(targetCircleId != undefined) {
- let targetCircle = document.querySelector('[data-src="' + targetCircleId + '"]');
- let targetCircleResource = targetCircle.component.resource.getResourceData();
- if(targetCircleResource['http://happy-dev.fr/owl/#status'] == 'Public') return;
- }
-
- //a redirect will only be required if I've deleted myself
- let targetUser = resource['http://happy-dev.fr/owl/#user'];
-
- //compare with current user
- let user = await document.querySelector('sib-auth').getUser();
- if(targetUser['@id'] != user['@id'] && targetUser['@id'] != undefined) return;
-
- //perform the redirect
- if(resourceId.includes('circle')) performRedirect('circle-left');
- else if(resourceId.includes('project')) performRedirect('project-left');
-}
-
-//- Update badges from notifications list
-async function updateBadges(element) {
- const unreadNotifications = new Map();
- const notifications = element.component.resource;
- if (!notifications) return;
- // Generate unread map
- for (let notification of notifications['ldp:contains']) {
- if (await notification['unread']) {
- const object = await notification['object'];
- unreadNotifications.set(object['@id'], (unreadNotifications.get(object['@id']) || 0) + 1);
- }
- }
- // update badges
- unreadNotifications.forEach((notifNumber, objectId) => {
- const badge = document.querySelector(`sib-fix-badge[data-src="${objectId}"]`);
- if (badge) {
- badge.innerText = notifNumber || '';
- badge.style.display = notifNumber ? 'block' : 'none';
- }
- })
-}
-
-document.addEventListener("DOMContentLoaded", function(event) {
- const menuWrappers = Array.from(document.querySelectorAll(".menu-wrapper"));
-
- //- View change event
- window.addEventListener("navigate", event => {
- closeLeftMenu();
- closeUserControls();
- });
-
- //- Toggle sub-menus
- menuWrappers.forEach(menuWrapper => {
- const menu = menuWrapper.querySelector(".menu");
- menu.addEventListener("click", e => {
- menuWrapper.classList.toggle("is-closed");
- });
- });
-
- //- Watch every sib-forms & update data-src of linked sib-display
- document.querySelector("body").addEventListener("save", event => {
- refreshResource(event);
- });
- document.querySelector("body").addEventListener("resourceDeleted", event => {
- //I might need to be redirected from this page
- checkForPostLeaveRedirect(event).then(refreshResource(event));
- });
-
- document
- .querySelector("sib-auth")
- .getUser()
- .then(user => {
- if (user !== null) {
- document
- .querySelectorAll(".notLoggedIn")
- .forEach(el => (el.style.visibility = "visible"));
- // Hide login button if already logged
- document
- .querySelector('.loggedIn')
- .setAttribute("style", "display:none !important");
- document.querySelectorAll('sib-display, sib-form').forEach(element => {
- // Set current user id on set-user-id of sib-display
- recursiveAdaptWidgets("hd-inherit", element, user);
- });
- for (leaveBtn of document.querySelectorAll(
- "admin-circle-leave > sib-ac-checker:not([hidden])"
- )) {
- leaveBtn.parentNode.parentNode.parentNode.nextElementSibling.setAttribute(
- "style",
- "display:none !important"
- ); // Hide Join button
- }
- } else {
- document.querySelector('sib-auth').login();
- }
- })
- .catch(error => console.log(error));
-
- // Document -> close menu
- document.addEventListener("click", event => {
- if (!event.target.closest("#user-controls")) {
- closeUserControls();
- }
- if (
- !event.target.closest("#main__menu") &&
- event.target.id != "toggleMainMenu"
- ) {
- closeLeftMenu();
- }
- if (
- !event.target.className.includes("jsMobileSidebarOpenButton") &&
- !event.target.className.includes("jsOffsiteToggle")
- ) {
- closeRightMenu();
- }
- });
-
- document.querySelector("#toggleMainMenu").addEventListener("click", event => {
- let leftMenu = document.querySelector("#main__menu");
- if (leftMenu.hasAttribute("open")) {
- closeLeftMenu();
- } else {
- leftMenu.setAttribute("open", "");
- }
- });
-
- Array.from(document.querySelectorAll(".jsMobileSidebarOpenButton")).forEach(
- el => {
- el.addEventListener("click", event => {
- openRightMenu();
- });
- }
- );
-
- const rightMenus = Array.from(document.querySelectorAll("nav.jsRightMenu"));
- rightMenus.forEach(rightMenu => {
- const btnRightMenu = rightMenu.querySelector("li.jsOffsiteToggle");
- btnRightMenu.addEventListener("click", e => {
- if (rightMenu.hasAttribute("open")) {
- closeRightMenu();
- } else {
- openRightMenu();
- }
- });
- });
-
- // listen for keypress
- document.onkeydown = e => {
- e = e || window.event;
- if (e.key === "Escape" || e.key === "Esc") {
- closeUserControls();
- closeLeftMenu();
- closeRightMenu();
- }
- };
-
- //- Fix badges performances
- // on load time
- const checkNotificationMenuExist = setInterval(function () { // wait for notification menu to exist
- const notifsMenu = document.getElementById('notifications-list');
- if (notifsMenu) {
- clearInterval(checkNotificationMenuExist);
- notifsMenu.addEventListener('populate', (event) => {
- const checkExist = setInterval(function () { // wait for left menus to exist
- const subMenus = document.querySelectorAll('.sub-menu > sib-display > div');
- if (subMenus.length >= 2) {
- updateBadges(event.target);
- clearInterval(checkExist);
- }
- }, 500);
- }, { once: true });
- }
- }, 500);
-
- // on refresh notification list
- window.addEventListener('notificationsRefresh', () => {
- document.getElementById('notifications-list').addEventListener('populate', (event) => {
- updateBadges(event.target);
- }, { once: true });
- });
-
- // on read notification
- window.addEventListener('read', (event) => {
- if (event.detail && event.detail.resource && event.detail.resource['@id']) {
- const badge = document.querySelector(`sib-fix-badge[data-src="${event.detail.resource['@id']}"]`);
- if (badge) badge.style.display = "none";
- }
- });
-
-});
diff --git a/src/scripts/login-element-visibility.js b/src/scripts/login-element-visibility.js
new file mode 100644
index 0000000..cc0daf1
--- /dev/null
+++ b/src/scripts/login-element-visibility.js
@@ -0,0 +1,17 @@
+document.addEventListener("DOMContentLoaded", function (event) {
+ document
+ .querySelector("sib-auth")
+ .getUser()
+ .then(user => {
+ if (user !== null) {
+ document
+ .querySelectorAll(".notLoggedIn")
+ .forEach(el => (el.style.visibility = "visible"));
+ document
+ .querySelector('.loggedIn')
+ .setAttribute("style", "display:none !important");
+ } else {
+ document.querySelector('sib-auth').login();
+ }
+ });
+});
\ No newline at end of file
diff --git a/src/scripts/navigate-event.js b/src/scripts/navigate-event.js
new file mode 100644
index 0000000..ba4eb0b
--- /dev/null
+++ b/src/scripts/navigate-event.js
@@ -0,0 +1,94 @@
+// auxiliary function closes the user profile menu
+function closeUserControls() {
+ let userControls = document.querySelector("#user-controls");
+ if (userControls) userControls.removeAttribute("open");
+ }
+
+ function closeLeftMenu() {
+ let leftMenu = document.querySelector("#main__menu");
+ if (leftMenu) leftMenu.removeAttribute("open");
+ }
+
+ function closeRightMenu() {
+ let rightMenu = document.querySelectorAll(".jsRightMenu");
+ if (Array.from(rightMenu).filter(el => el.hasAttribute("open")).length > 0) {
+ Array.from(document.querySelectorAll(".views-container")).forEach(vC =>
+ vC.classList.toggle("sidebar-is-closed")
+ );
+ Array.from(rightMenu).forEach(el => el.removeAttribute("open"));
+ }
+ }
+
+ function openRightMenu() {
+ let rightMenu = document.querySelectorAll(".jsRightMenu");
+ Array.from(rightMenu).forEach(el => el.setAttribute("open", ""));
+ Array.from(document.querySelectorAll(".views-container")).forEach(vC =>
+ vC.classList.toggle("sidebar-is-closed")
+ );
+ }
+
+document.addEventListener("DOMContentLoaded", function(event) {
+
+ //- View change event
+ window.addEventListener("navigate", event => {
+ closeLeftMenu();
+ closeUserControls();
+ });
+ // Document -> close menu
+ document.addEventListener("click", event => {
+ if (!event.target.closest("#user-controls")) {
+ closeUserControls();
+ }
+ if (
+ !event.target.closest("#main__menu") &&
+ event.target.id != "toggleMainMenu"
+ ) {
+ closeLeftMenu();
+ }
+ if (
+ !event.target.className.includes("jsMobileSidebarOpenButton") &&
+ !event.target.className.includes("jsOffsiteToggle")
+ ) {
+ closeRightMenu();
+ }
+ });
+
+ // listen for keypress
+ document.onkeydown = e => {
+ e = e || window.event;
+ if (e.key === "Escape" || e.key === "Esc") {
+ closeUserControls();
+ closeLeftMenu();
+ closeRightMenu();
+ }
+ };
+
+ document.querySelector("#toggleMainMenu").addEventListener("click", event => {
+ let leftMenu = document.querySelector("#main__menu");
+ if (leftMenu.hasAttribute("open")) {
+ closeLeftMenu();
+ } else {
+ leftMenu.setAttribute("open", "");
+ }
+ });
+
+ const rightMenus = Array.from(document.querySelectorAll("nav.jsRightMenu"));
+ rightMenus.forEach(rightMenu => {
+ const btnRightMenu = rightMenu.querySelector("li.jsOffsiteToggle");
+ btnRightMenu.addEventListener("click", e => {
+ if (rightMenu.hasAttribute("open")) {
+ closeRightMenu();
+ } else {
+ openRightMenu();
+ }
+ });
+ });
+
+ Array.from(document.querySelectorAll(".jsMobileSidebarOpenButton")).forEach(
+ el => {
+ el.addEventListener("click", event => {
+ openRightMenu();
+ });
+ }
+ );
+});
\ No newline at end of file
diff --git a/src/scripts/reactive-store.js b/src/scripts/reactive-store.js
new file mode 100644
index 0000000..3dc54f7
--- /dev/null
+++ b/src/scripts/reactive-store.js
@@ -0,0 +1,173 @@
+//auxiliary function clears cache & refreshes sib-displays for a given resource ID
+function refreshSibDisplays(resourceId, clearCache = true) {
+ let cacheCleared = false;
+
+ Array.from(document.querySelectorAll("sib-display"))
+ .filter(sibDisplay => sibDisplay.component.resourceId == resourceId) // keep only elements with resource == edited resource
+ .forEach(async (e) => {
+ //clear cache if we were unable to before
+ if ((clearCache && !cacheCleared) && e.component.resource != null) {
+ await e.component.resource.clearCache();
+ cacheCleared = true;
+ }
+ e.dataset.src = e.dataset.src;
+ }); // and update them
+}
+
+async function updateSources(resource) {
+ let res = resource.split('/');
+ res.splice(3, 0, 'sources');
+ let cacheCleared = false;
+ if (event.target.component.resource != null) {
+ await event.target.component.resource.clearCache();
+ cacheCleared = true;
+ }
+ refreshSibDisplays(res.join('/'),cacheCleared);
+}
+
+//auxiliary function updates displays using a given resource
+//NOTE: this is a temporary workaround and should be replaced by a reactive storage
+//https://git.startinblox.com/framework/sib-core/issues/524
+async function refreshResource(event) {
+
+ // if of the edited resource || id of the container of the created resource
+ const resourceId = event.detail.resource["@id"] || event.target.dataset.src;
+ updateSources(resourceId, event);
+ let resource;
+ try {
+ resource = document
+ .querySelector('[data-src="' + resourceId + '"]')
+ .component.resource.getResourceData();
+ } catch (e) {
+ try {
+ resource = document
+ .querySelector('[data-src="' + resourceId.replace('circle-members','circles').split('/').slice(0, 4).join('/') + '/"]')
+ .component.resource.getResourceData();
+ } catch (e) {
+ try {
+ resource = document
+ .querySelector('[nested-field="' + resourceId.split('/').slice(3, 4).join('').replace('circle-members','circles') + '"]')
+ .component.resource.getResourceData();
+ } catch (e) {
+ resource = undefined;
+ }
+ }
+ }
+
+ if(resource) {
+ //special case: refresh circles/X/ from circle-members/Y/
+ let partnerId = null;
+ if (resourceId.includes("circle-members")) {
+ partnerId = resource["http://happy-dev.fr/owl/#circle"]["@id"];
+ } else if (resourceId.includes("project-members")) {
+ partnerId = resource["http://happy-dev.fr/owl/#project"]["@id"];
+ }
+ //refresh all resources using the partner ID
+ if (partnerId != null) {
+ refreshSibDisplays(partnerId);
+ refreshSibDisplays(partnerId + "members/");
+ }
+ }
+
+
+ //special cases updating users/X/circles for the left-side-menu (leaving or joining circle)
+ let user = await document.querySelector('sib-auth').getUser();
+ if(resourceId.includes('circle') && user != null) {
+ let userId = user['@id'];
+ refreshSibDisplays(userId + "circles/");
+ refreshSibDisplays(resourceId.replace('circle-members','circles').split('/').slice(0, 3).join('/') + '/circles/joinable/');
+ refreshSibDisplays(resourceId.replace('circle-members','circles').split('/').slice(0, 3).join('/') + '/sources/circlesjoinable/');
+ }
+
+ if(resourceId.includes('users')) {
+ refreshSibDisplays(resourceId.split('/').slice(0, 3).join('/') + '/users/');
+ refreshSibDisplays(resourceId.split('/').slice(0, 3).join('/') + '/sources/users/');
+ }
+
+ //clear cache on this resource
+ //NOTE: this is required because the cache is not refreshed after POSTing changes on the resource
+ let cacheCleared = false;
+ if (event.target.component.resource != null) {
+ await event.target.component.resource.clearCache();
+ cacheCleared = true;
+ }
+
+ //update all displays which use this resource
+ refreshSibDisplays(resourceId, cacheCleared);
+}
+
+//auxiliary function performs a redirect
+//NOTE: currently a sib-display is required to dispatch the requestNavigation event
+function performRedirect(route) {
+ document.dispatchEvent(
+ new CustomEvent("requestNavigation", {
+ bubbles: true,
+ detail: { route: route }
+ })
+ );
+}
+
+//auxiliary function redirects after leaving a project/circle
+//NOTE: this is a temporary workaround until the following issues are resolved:
+//https://git.startinblox.com/framework/sib-core/issues/476
+//https://git.startinblox.com/framework/sib-core/issues/546
+async function checkForPostLeaveRedirect(event) {
+ //a redirect will only be required if I left in the information page of the resource
+ if(!window.location.href.includes('-information')) {
+ return;
+ }
+ //first need to get a sib-display with this resource id (to have access to the target Proxy, containing model fields)
+ const resourceId = event.detail.resource['@id'] || event.target.dataset.src;
+ let target = document.querySelector('[data-src="' + resourceId + '"]');
+ let resource = target.component.resource.getResourceData();
+
+ //no redirect is required for public circles
+ let targetCircleId = resource["http://happy-dev.fr/owl/#circle"];
+ if(targetCircleId != undefined) {
+ let targetCircle = document.querySelector('[data-src="' + targetCircleId["@id"] + '"]');
+ let targetCircleResource = targetCircle.component.resource.getResourceData();
+ if(targetCircleResource['http://happy-dev.fr/owl/#status'] == 'Public') {
+ return;
+ }
+ }
+
+ //a redirect will only be required if I've deleted myself
+ let targetUser = resource['http://happy-dev.fr/owl/#user'];
+ if(targetUser != undefined) {
+ //compare with current user
+ let user = await document.querySelector('sib-auth').getUser();
+ if(targetUser['@id'] != user['@id'] && targetUser['@id'] != undefined) {
+ return;
+ }
+ }
+
+ //perform the redirect
+ if(resourceId.includes('circle')) {
+ performRedirect('circle-left');
+ } else if(resourceId.includes('project')) {
+ performRedirect('project-left');
+ }
+}
+
+
+document.addEventListener("DOMContentLoaded", function(event) {
+ const menuWrappers = Array.from(document.querySelectorAll(".menu-wrapper"));
+
+ //- Toggle sub-menus
+ menuWrappers.forEach(menuWrapper => {
+ const menu = menuWrapper.querySelector(".menu");
+ menu.addEventListener("click", e => {
+ menuWrapper.classList.toggle("is-closed");
+ });
+ });
+
+ //- Watch every sib-forms & update data-src of linked sib-display
+ document.querySelector("body").addEventListener("save", event => {
+ refreshResource(event);
+ });
+ document.querySelector("body").addEventListener("resourceDeleted", event => {
+ //I might need to be redirected from this page
+ checkForPostLeaveRedirect(event).then(refreshResource(event));
+ });
+
+});
diff --git a/src/scripts/sib-notifications.js b/src/scripts/sib-notifications.js
new file mode 100644
index 0000000..d45bba7
--- /dev/null
+++ b/src/scripts/sib-notifications.js
@@ -0,0 +1,60 @@
+//- Update badges from notifications list
+async function updateBadges(element) {
+ const unreadNotifications = new Map();
+ const notifications = element.component.resource;
+ if (!notifications) return;
+ // Generate unread map
+ for (let notification of notifications['ldp:contains']) {
+ if (await notification['unread']) {
+ const object = await notification['object'];
+ unreadNotifications.set(object['@id'], (unreadNotifications.get(object['@id']) || 0) + 1);
+ }
+ }
+ // update badges
+ unreadNotifications.forEach((notifNumber, objectId) => {
+ const badge = document.querySelector(`sib-fix-badge[data-src="${objectId}"]`);
+ if (badge) {
+ badge.innerText = notifNumber || '';
+ badge.style.display = notifNumber ? 'block' : 'none';
+ }
+ })
+}
+document.addEventListener("DOMContentLoaded", function (event) {
+
+ //- Fix badges performances
+ // on load time
+ const checkNotificationMenuExist = setInterval(function () { // wait for notification menu to exist
+ const notifsMenu = document.getElementById('notifications-list');
+ if (notifsMenu) {
+ clearInterval(checkNotificationMenuExist);
+ notifsMenu.addEventListener('populate', (event) => {
+ const checkExist = setInterval(function () { // wait for left menus to exist
+ const subMenus = document.querySelectorAll('.sub-menu > sib-display > div');
+ if (subMenus.length >= 2) {
+ updateBadges(event.target);
+ clearInterval(checkExist);
+ }
+ }, 500);
+ }, {
+ once: true
+ });
+ }
+ }, 500);
+
+ // on refresh notification list
+ window.addEventListener('notificationsRefresh', () => {
+ document.getElementById('notifications-list').addEventListener('populate', (event) => {
+ updateBadges(event.target);
+ }, {
+ once: true
+ });
+ });
+
+ // on read notification
+ window.addEventListener('read', (event) => {
+ if (event.detail && event.detail.resource && event.detail.resource['@id']) {
+ const badge = document.querySelector(`sib-fix-badge[data-src="${event.detail.resource['@id']}"]`);
+ if (badge) badge.style.display = "none";
+ }
+ });
+});
\ No newline at end of file
diff --git a/src/scripts/unreads-menu.js b/src/scripts/unreads-menu.js
new file mode 100644
index 0000000..3cd1904
--- /dev/null
+++ b/src/scripts/unreads-menu.js
@@ -0,0 +1,15 @@
+document.addEventListener("DOMContentLoaded", function (event) {
+ window.addEventListener('newMessage', event => {
+ let jid = event.detail.jid;
+ Array.from(document.querySelectorAll('[data-jabberID="'+jid+'"]')).forEach(el => {
+ el.parentElement.parentElement.classList.add('unread');
+ });
+ });
+
+ window.addEventListener('read', (event) => {
+ if (event.detail && event.detail.resource && event.detail.resource['@id']) {
+ const badge = document.querySelector(`sib-fix-badge[data-src="${event.detail.resource['@id']}"]`);
+ if (badge) badge.parentElement.parentElement.classList.remove('unread');
+ }
+ });
+});
\ No newline at end of file
diff --git a/src/scripts/widget-extension.js b/src/scripts/widget-extension.js
new file mode 100644
index 0000000..d126f3b
--- /dev/null
+++ b/src/scripts/widget-extension.js
@@ -0,0 +1,68 @@
+function applyAdapt(prefix, sibDisplay, user) {
+
+ //- Allow to bind-user on selected attribute
+ if (sibDisplay.getAttribute(prefix + "-user-id")) {
+ sibDisplay.setAttribute(
+ sibDisplay.getAttribute(prefix + "-user-id"),
+ user["@id"]
+ );
+ }
+
+ //- Allow to set data-src to a children sib-form
+ if (sibDisplay.getAttribute(prefix + "-bind-resources")) {
+ let form = sibDisplay.querySelector(
+ sibDisplay.getAttribute(prefix + "-bind-resources") + " sib-form"
+ );
+ if (form) {
+ form.setAttribute(
+ "data-src",
+ sibDisplay.component.resourceId.replace("members/", "")
+ );
+ }
+ }
+
+ //- Allow to put user on a targetted search field
+ if (sibDisplay.getAttribute(prefix + "-bind-user2input")) {
+ let qS = sibDisplay.querySelector(
+ sibDisplay.getAttribute(prefix + "-bind-user2input")
+ );
+ if(qS) qS.value = user["@id"];
+ }
+}
+
+//- This function is a workaround for the currently unworking populate
+//- Feel free to see examples on page-circles-
+function recursiveAdaptWidgets(prefix, element, user) {
+ element.addEventListener("populate", () => {
+ element.querySelectorAll("[" + prefix + "-user-id]").forEach(el => {
+ el.setAttribute(el.getAttribute(prefix + "-user-id"), user["@id"]);
+ });
+ applyAdapt(prefix, element, user);
+ document.querySelectorAll('sib-display, sib-form').forEach(sibDisplay => {
+ applyAdapt(prefix, sibDisplay, user);
+ });
+ });
+}
+
+document.addEventListener("DOMContentLoaded", function (event) {
+ document
+ .querySelector("sib-auth")
+ .getUser()
+ .then(user => {
+ if (user !== null) {
+ document.querySelectorAll('sib-display, sib-form').forEach(element => {
+ // Set current user id on set-user-id of sib-display
+ recursiveAdaptWidgets("hubl-inherit", element, user);
+ });
+ for (leaveBtn of document.querySelectorAll(
+ "admin-circle-leave > sib-ac-checker:not([hidden])"
+ )) {
+ // Hide Join button
+ leaveBtn.parentNode.parentNode.parentNode.nextElementSibling.setAttribute(
+ "style",
+ "display:none !important"
+ );
+ }
+ }
+ });
+});
\ No newline at end of file
diff --git a/src/styles/base/form.scss b/src/styles/base/form.scss
index 1c4f179..d1b819c 100644
--- a/src/styles/base/form.scss
+++ b/src/styles/base/form.scss
@@ -398,7 +398,7 @@
/* CUSTOM WIDGETS */
- hd-member-form {
+ hubl-member-form {
width: 100%;
form {
diff --git a/src/styles/base/header.scss b/src/styles/base/header.scss
index 291b92e..eb11c3b 100644
--- a/src/styles/base/header.scss
+++ b/src/styles/base/header.scss
@@ -141,7 +141,7 @@
vertical-align: middle;
}
- hd-user-avatar {
+ hubl-user-avatar {
align-items: center;
background-color: $color-213-20-91;
border-radius: 50%;
diff --git a/src/styles/base/menu-left.scss b/src/styles/base/menu-left.scss
index 57bf2be..e9368d8 100644
--- a/src/styles/base/menu-left.scss
+++ b/src/styles/base/menu-left.scss
@@ -10,6 +10,10 @@
&.open {
transform: translateX(0);
}
+
+ .unread {
+ font-weight: bolder;
+ }
sib-router {
@@ -119,7 +123,7 @@
}
}
- hd-counter {
+ hubl-counter {
margin-top: 16px;
}
}
@@ -145,8 +149,8 @@
>div {
color: $color-244-10-70;
cursor: pointer;
- >menu-fix-url-circle>sib-display>div,
- >menu-fix-url-project>sib-display>div {
+ >hubl-menu-fix-url-circle>sib-display>div,
+ >hubl-menu-fix-url-project>sib-display>div {
padding: 1rem 1rem 1rem 3rem;
}
}
@@ -157,8 +161,8 @@
}
&>sib-display[active]>div,
- &>sib-display>div>menu-fix-url-circle>sib-display[active]>div,
- &>sib-display>div>menu-fix-url-project>sib-display[active]>div {
+ &>sib-display>div>hubl-menu-fix-url-circle>sib-display[active]>div,
+ &>sib-display>div>hubl-menu-fix-url-project>sib-display[active]>div {
background-color: $color-46-100-67;
color: $color-233-18-29;
font-weight: bold;
@@ -166,18 +170,18 @@
}
&.menu-notification {
- > sib-display > div > sib-display > div > menu-fix-url-circle,
- > sib-display > div > sib-display > div > menu-fix-url-project {
+ > sib-display > div > sib-display > div > hubl-menu-fix-url-circle,
+ > sib-display > div > sib-display > div > hubl-menu-fix-url-project {
flex: 1;
}
> sib-display > div > sib-display > div,
- > sib-display > div > sib-display > div > menu-fix-url-circle > sib-display > div,
- > sib-display > div > sib-display > div > menu-fix-url-project > sib-display > div {
+ > sib-display > div > sib-display > div > hubl-menu-fix-url-circle > sib-display > div,
+ > sib-display > div > sib-display > div > hubl-menu-fix-url-project > sib-display > div {
display: flex;
sib-display-div {
flex: 3;
}
- hd-counter {
+ hubl-counter {
height: 20px;
width: 20px;
margin-right: 1em;
diff --git a/src/styles/base/table.scss b/src/styles/base/table.scss
index 1d2cb80..db2361d 100644
--- a/src/styles/base/table.scss
+++ b/src/styles/base/table.scss
@@ -7,6 +7,10 @@
#admin-project-create,
#admin-users-list {
+ [widget="hubl-team-template-edit"]>div {
+ flex: 1;
+ }
+
.table {
.table-header {
@@ -24,7 +28,7 @@
>* {
border-right: 1px solid white;
- flex: 1;
+ //flex: 1;
padding: 2.1rem 0;
text-align: center;
}
@@ -34,10 +38,10 @@
}
}
- .table-body {
+ .table-body, .table-header {
>div:first-of-type>sib-display>div,
- team-template-edit[name='members'] {
+ hubl-team-template-edit[name='members'] {
display: flex;
border-left: 1px solid $color-228-25-79;
}
@@ -50,6 +54,7 @@
.cell {
text-align: center;
word-wrap: break-word;
+ white-space: nowrap;
}
.w25 {
@@ -64,6 +69,14 @@
width: 50%;
}
+ .w66 {
+ width: 66.6666%;
+ }
+
+ .w75 {
+ width: 75%;
+ }
+
.hashtag::before {
content: '#';
}
diff --git a/src/styles/layout/user/admin-users.scss b/src/styles/layout/user/admin-users.scss
index 61f0e46..ddf18e7 100644
--- a/src/styles/layout/user/admin-users.scss
+++ b/src/styles/layout/user/admin-users.scss
@@ -1,6 +1,6 @@
/* Fix. Could disappear when we can add .class on set fields */
sib-set-default[name='cell-1'] {
- @extend .w33;
+ @extend .w75;
@extend .cell;
@extend .border;
}
\ No newline at end of file
diff --git a/src/styles/layout/user/user-profile.scss b/src/styles/layout/user/user-profile.scss
index 2192233..87dafaf 100644
--- a/src/styles/layout/user/user-profile.scss
+++ b/src/styles/layout/user/user-profile.scss
@@ -34,7 +34,7 @@
display: flex;
padding-left: 1.4rem;
- groups-name {
+ hubl-groups-name {
@extend %tag-role;
}
}
@@ -49,7 +49,7 @@
margin-bottom: 1rem;
}
- hd-instruction {
+ hubl-instruction {
margin-left: 1rem;
span {
diff --git a/src/templates/hd-business-provider.pug b/src/templates/hd-business-provider.pug
deleted file mode 100644
index 669f534..0000000
--- a/src/templates/hd-business-provider.pug
+++ /dev/null
@@ -1,6 +0,0 @@
-sib-widget(name='hd-business-provider')
- template
- ul
- li #[span Happy Dev Paris: ] 5%
- li #[span Apporteur d'affaire : ] ${await value.name ? await value.name : ""}${await value.name ? "," : ""} ${await value.fee ? await value.fee:0}%
-
\ No newline at end of file
diff --git a/src/templates/hd-captain.pug b/src/templates/hubl-captain.pug
similarity index 61%
rename from src/templates/hd-captain.pug
rename to src/templates/hubl-captain.pug
index 30a4108..aacb117 100644
--- a/src/templates/hd-captain.pug
+++ b/src/templates/hubl-captain.pug
@@ -1,6 +1,6 @@
-include hd-user-avatar.pug
+include hubl-user-avatar.pug
-sib-widget(name='hd-captain')
+sib-widget(name='hubl-captain')
template
sib-display.user-thumb(
data-src="${await value}"
@@ -11,9 +11,6 @@ sib-widget(name='hd-captain')
class-profile.city='user-thumb__city'
class-is_lead='user-thumb__lead'
- widget-account.picture='hd-user-avatar'
- widget-is_lead='hd-user-lead'
+ widget-account.picture='hubl-user-avatar'
+ value-is_lead='Project lead'
)
-
-sib-widget(name='hd-user-lead')
- template Project lead
diff --git a/src/templates/hd-circle-team.pug b/src/templates/hubl-circle-team.pug
similarity index 63%
rename from src/templates/hd-circle-team.pug
rename to src/templates/hubl-circle-team.pug
index c22b713..f985788 100644
--- a/src/templates/hd-circle-team.pug
+++ b/src/templates/hubl-circle-team.pug
@@ -1,6 +1,6 @@
-include hd-user-avatar.pug
+include hubl-user-avatar.pug
-sib-widget(name='circle-team-template')
+sib-widget(name='hubl-circle-team-template')
template
sib-display.user-thumb(
data-src='${await value.user}'
@@ -13,15 +13,15 @@ sib-widget(name='circle-team-template')
class-groups='tag-group'
class-profile.city='user-thumb__city'
- widget-account.picture='hd-user-avatar'
- widget-isadmin='hd-circle-user-admin'
- widget-groups='hd-circle-user-groups'
+ widget-account.picture='hubl-user-avatar'
+ widget-isadmin='hubl-circle-user-admin'
+ widget-groups='hubl-circle-user-groups'
multiple-groups=''
)
-sib-widget(name='hd-circle-user-admin')
+sib-widget(name='hubl-circle-user-admin')
template ${(await value) != "false" ? "Administrateur" : ""}
-sib-widget(name='hd-circle-user-groups')
+sib-widget(name='hubl-circle-user-groups')
template ${await value.name}
diff --git a/src/templates/hd-customer.pug b/src/templates/hubl-customer.pug
similarity index 96%
rename from src/templates/hd-customer.pug
rename to src/templates/hubl-customer.pug
index 791d69a..07abe0b 100644
--- a/src/templates/hd-customer.pug
+++ b/src/templates/hubl-customer.pug
@@ -1,4 +1,4 @@
-sib-widget(name='hd-customer')
+sib-widget(name='hubl-customer')
template
div.customer-box
div
diff --git a/src/templates/hubl-groups.pug b/src/templates/hubl-groups.pug
new file mode 100644
index 0000000..49bd446
--- /dev/null
+++ b/src/templates/hubl-groups.pug
@@ -0,0 +1,3 @@
+sib-widget(name='hubl-groups-name')
+ template ${value.name}
+
diff --git a/src/templates/hd-project-team.pug b/src/templates/hubl-project-team.pug
similarity index 66%
rename from src/templates/hd-project-team.pug
rename to src/templates/hubl-project-team.pug
index acc6280..6d47d27 100644
--- a/src/templates/hd-project-team.pug
+++ b/src/templates/hubl-project-team.pug
@@ -1,6 +1,6 @@
-include hd-user-avatar.pug
+include hubl-user-avatar.pug
-sib-widget(name='hd-project-team')
+sib-widget(name='hubl-project-team')
template
sib-display.user-thumb(
data-src='${await value}'
@@ -15,15 +15,15 @@ sib-widget(name='hd-project-team')
class-user.profile.city='user-thumb__city'
class-name='user-thumb__lead'
- widget-user.account.picture='hd-user-avatar'
- widget-isadmin='hd-project-user-admin'
- widget-user.groups='hd-project-user-groups'
+ widget-user.account.picture='hubl-user-avatar'
+ widget-isadmin='hubl-project-user-admin'
+ widget-user.groups='hubl-project-user-groups'
multiple-user.groups=''
)
-sib-widget(name='hd-project-user-admin')
+sib-widget(name='hubl-project-user-admin')
template ${(await value) == "false" ? "" : "Administrateur"}
-sib-widget(name='hd-project-user-groups')
+sib-widget(name='hubl-project-user-groups')
template ${await value.name}
diff --git a/src/templates/hd-user-avatar.pug b/src/templates/hubl-user-avatar.pug
similarity index 82%
rename from src/templates/hd-user-avatar.pug
rename to src/templates/hubl-user-avatar.pug
index 8ee2dba..08a2876 100644
--- a/src/templates/hd-user-avatar.pug
+++ b/src/templates/hubl-user-avatar.pug
@@ -1,2 +1,2 @@
-sib-widget(name='hd-user-avatar')
+sib-widget(name='hubl-user-avatar')
template ${await value ? `` : ``}
diff --git a/src/templates/template-groups.pug b/src/templates/template-groups.pug
deleted file mode 100644
index 843a597..0000000
--- a/src/templates/template-groups.pug
+++ /dev/null
@@ -1,3 +0,0 @@
-sib-widget(name='groups-name')
- template ${value.name}
-
diff --git a/src/templates/template-joboffers-filter.pug b/src/templates/template-joboffers-filter.pug
deleted file mode 100644
index b9d5e0d..0000000
--- a/src/templates/template-joboffers-filter.pug
+++ /dev/null
@@ -1,8 +0,0 @@
-sib-widget(name='joboffers-filter')
- template
- select
- option(name='Offers',disabled) Offers
- option(selected,name='Current offers') Current offers
- option(name='Expired offers') Expired offers
- option(name='All offers') All offers
- option(name='My offers') Only my offers
\ No newline at end of file
diff --git a/src/templates/template-skills.pug b/src/templates/template-skills.pug
deleted file mode 100644
index cad1b90..0000000
--- a/src/templates/template-skills.pug
+++ /dev/null
@@ -1,5 +0,0 @@
-sib-widget(name='skills-name')
- template
- li(class='skill') ${value.name}
-
-
diff --git a/src/templates/template-status.pug b/src/templates/template-status.pug
deleted file mode 100644
index c6f5fa8..0000000
--- a/src/templates/template-status.pug
+++ /dev/null
@@ -1,4 +0,0 @@
-sib-widget(name='status-template')
- template
- div#member-status ${value == true ? 'Available' : 'Busy'}
-
diff --git a/src/views/admin/page-admin-circles.pug b/src/views/admin/page-admin-circles.pug
index b7f9180..927688b 100644
--- a/src/views/admin/page-admin-circles.pug
+++ b/src/views/admin/page-admin-circles.pug
@@ -7,15 +7,12 @@
div.content-box__header
h1.without-margin Administration
-
- #circle-left(hidden)
- include ../circle/page-circle-left.pug
-
+ include ../circle/page-circle-left.pug
#admin-circle-list(hidden)
- include ../../templates/hd-user-avatar.pug
+ include ../../templates/hubl-user-avatar.pug
- sib-widget(name='circle-owner')
+ sib-widget(name='hubl-circle-owner')
template
sib-display.user-thumb(
data-src='${await value}'
@@ -25,7 +22,7 @@
class-name='user-thumb__name'
class-username='user-thumb__username'
- widget-account.picture='hd-user-avatar'
+ widget-account.picture='hubl-user-avatar'
)
@@ -43,11 +40,11 @@
.table
div.table-header.grey-color
- div Nom
- div Administrateurs
- div Rejoindre
+ div.w33 Nom
+ div.w33 Administrateurs
+ div.w33 Rejoindre
- sib-widget(name='admin-circle-leave-button')
+ sib-widget(name='hubl-admin-circle-leave-button')
template
sib-delete(
class='button text-bold text-uppercase reversed button-dark bordered with-icon icon-close'
@@ -67,21 +64,18 @@
class-leaveButton='w33 cell border cell-with-buttons'
action-leaveButton="joinButton"
- widget-leaveButton="admin-circle-leave-button"
- widget-circle.owner='circle-owner'
+ widget-leaveButton="hubl-admin-circle-leave-button"
+ widget-circle.owner='hubl-circle-owner'
)
- sib-widget(name='admin-circle-join-button')
+ sib-widget(name='hubl-admin-circle-join-button')
template
sib-form.button.text-bold.text-uppercase.reversed.button-blue.bordered.with-icon.icon-arrow-right-circle.flex(
data-src='${value}'
- fields='user.@id'
- label-user.@id=''
- value-user.@id='self'
- widget-user.@id='sib-form-hidden'
-
- hd-inherit-bind-user2input="input[name='user.@id']"
+ fields='user.username'
+ value-user.username='hubl-workaround-493'
+ widget-user.username='sib-form-hidden'
submit-button='Rejoindre'
)
@@ -94,10 +88,10 @@
class-name='w33 cell border cell-with-name'
class-owner='w33 cell border cell-with-id-card'
- widget-owner='circle-owner'
+ widget-owner='hubl-circle-owner'
class-members='w33 cell border cell-with-buttons'
- widget-members="admin-circle-join-button"
+ widget-members="hubl-admin-circle-join-button"
)
diff --git a/src/views/admin/page-admin-projects-create.pug b/src/views/admin/page-admin-projects-create.pug
index 498a6e7..44c9101 100644
--- a/src/views/admin/page-admin-projects-create.pug
+++ b/src/views/admin/page-admin-projects-create.pug
@@ -1,11 +1,11 @@
-sib-widget(name='hd-template-project-title')
+sib-widget(name='hubl-template-project-title')
template
p ${value}
div.content-box__info
sib-link(class="backlink right" next='admin-project-list') Retour
- sib-widget(name="admin-project-add-user")
+ sib-widget(name="hubl-admin-project-add-user")
template
sib-form(
data-holder
@@ -25,11 +25,11 @@ div.content-box__info
class-fieldset-fee='fieldset'
value-fieldset-fee='Contributions'
- widget-fieldset-fee='hd-template-project-title'
+ widget-fieldset-fee='hubl-template-project-title'
class-fieldset-captain='fieldset'
value-fieldset-captain='Capitaine'
- widget-fieldset-captain='hd-template-project-title'
+ widget-fieldset-captain='hubl-template-project-title'
label-customer='Nom du client*'
class-customer='member-select form-label is-light is-half-width'
diff --git a/src/views/admin/page-admin-projects.pug b/src/views/admin/page-admin-projects.pug
index 89fb9f2..bf6e653 100644
--- a/src/views/admin/page-admin-projects.pug
+++ b/src/views/admin/page-admin-projects.pug
@@ -11,7 +11,7 @@
include ../project/page-project-left.pug
#admin-project-list(hidden)
- include ../../templates/hd-user-avatar.pug
+ include ../../templates/hubl-user-avatar.pug
div.content-box__info
div.admin-header
@@ -28,7 +28,7 @@
div Capitaines
div Accès
- sib-widget(name="admin-project-leave-button")
+ sib-widget(name="hubl-admin-project-leave-button")
template
sib-delete(
class='button text-bold text-uppercase reversed button-dark bordered with-icon icon-close'
@@ -36,7 +36,7 @@
data-label='Quitter'
)
- sib-widget(name='project-captain')
+ sib-widget(name='hubl-project-captain')
template
sib-display.user-thumb(
data-src='${await value}'
@@ -46,10 +46,10 @@
class-name='user-thumb__name'
class-username='user-thumb__username'
- widget-account.picture='hd-user-avatar'
+ widget-account.picture='hubl-user-avatar'
)
- sib-widget(name='project-admins')
+ sib-widget(name='hubl-project-admins')
template
sib-display(
data-src='${value}'
@@ -57,21 +57,21 @@
search-fields='is_admin'
search-value-is_admin='true'
search-widget-is_admin='sib-form-hidden'
- widget-user='project-captain'
+ widget-user='hubl-project-captain'
)
- sib-widget(name="admin-project-buttons")
+ sib-widget(name="hubl-admin-project-buttons")
template
sib-display(
data-src='${src}'
nested-field='members'
fields='relation'
action-relation='relation'
- widget-relation='admin-project-leave-button'
+ widget-relation='hubl-admin-project-leave-button'
search-fields='user'
search-widget-user='sib-form-hidden'
search-value-user="-"
- hd-inherit-user-id="search-value-user"
+ hubl-inherit-user-id="search-value-user"
)
sib-display(
@@ -88,8 +88,8 @@
widget-buttons="admin-project-buttons"
action-buttons="buttons"
- widget-captain='project-captain'
- widget-members='project-admins'
+ widget-captain='hubl-project-captain'
+ widget-members='hubl-project-admins'
)
#admin-project-create(hidden)
diff --git a/src/views/admin/page-admin-users-create.pug b/src/views/admin/page-admin-users-create.pug
index a921df0..ab580b5 100644
--- a/src/views/admin/page-admin-users-create.pug
+++ b/src/views/admin/page-admin-users-create.pug
@@ -7,22 +7,17 @@ div.content-box__info
data-src=`${endpoints.users || endpoints.post.users}`
range-groups=`${endpoints.groups || endpoints.get.groups}`
- fields='line-1(first_name, last_name), line-2(username, email), line-3(password), line-4-border-top(groups)'
+ fields='line-1(first_name, last_name), line-2(username, email), line-3(password)'
class-first_name='form-label is-light is-half-width'
class-last_name='form-label is-light is-half-width'
class-username='form-label is-light is-half-width'
class-email='form-label is-light is-half-width'
- class-groups='form-label is-light is-half-width select-groups'
label-first_name='Prénom *'
label-last_name='Nom *'
label-username='Nom d\'utilisateur *'
label-email='E-mail *'
- label-groups='Groupes'
-
- multiple-groups='sib-multiple-select'
- widget-groups='sib-form-auto-completion'
value-password=''
widget-password='sib-form-hidden'
@@ -31,5 +26,3 @@ div.content-box__info
submit-button='Enregistrer'
)
-
- p Seuls les administrateurs de ta plateforme peuvent créer de nouveaux Groupes dans l'Administration Django.
diff --git a/src/views/admin/page-admin-users-edit.pug b/src/views/admin/page-admin-users-edit.pug
index e6daebb..61fddec 100644
--- a/src/views/admin/page-admin-users-edit.pug
+++ b/src/views/admin/page-admin-users-edit.pug
@@ -12,22 +12,17 @@ div.content-box__info
bind-resources=''
range-groups=`${endpoints.groups || endpoints.get.groups}`
- fields='line-1(first_name, last_name), line-2(username, email), line-4-border-top(groups)'
+ fields='line-1(first_name, last_name), line-2(username, email)'
class-first_name='form-label is-light is-half-width'
class-last_name='form-label is-light is-half-width'
class-username='form-label is-light is-half-width'
class-email='form-label is-light is-half-width'
- class-groups='form-label is-light is-half-width select-groups'
label-first_name='Prénom *'
label-last_name='Nom *'
label-username='Nom d\'utilisateur *'
label-email='E-mail *'
- label-groups='Groupes'
-
- multiple-groups='sib-multiple-select'
- widget-groups='sib-form-auto-completion'
next='admin-user-list'
diff --git a/src/views/admin/page-admin-users.pug b/src/views/admin/page-admin-users.pug
index f0944c3..fc0b5ec 100644
--- a/src/views/admin/page-admin-users.pug
+++ b/src/views/admin/page-admin-users.pug
@@ -7,7 +7,7 @@
div.content-box__header
h1.without-margin Administration
- sib-widget(name='sib-action-hd-custom')
+ sib-widget(name='hubl-sib-action-custom')
template
sib-ac-checker(data-src="${src}", permission='acl:Write')
sib-link(
@@ -16,7 +16,7 @@
next="${value}"
)
- sib-widget(name='hd-user-admin-groups-display')
+ sib-widget(name='hubl-user-admin-groups-display')
template
sib-display(
data-src="${value}"
@@ -36,29 +36,24 @@
.table
div.table-header.grey-color
- div Nom
- div Groupes
- div
+ div.w75 Nom
+ div.w25
sib-display(
class='table-body'
data-src=`${endpoints.users || endpoints.get.users}`
- fields='cell-1(user-thumb(account.picture, sup(name), sub(username))), groups, actions'
+ fields='cell-1(user-thumb(account.picture, sup(name), sub(username))), actions'
class-account.picture='user-thumb__picture'
class-name='user-thumb__name'
class-username='user-thumb__username'
class-profile.city='user-thumb__city'
- widget-account.picture='hd-user-avatar'
-
- class-groups='w33 cell border cell-with-groups'
- multiple-groups=''
- widget-groups='hd-user-admin-groups-display'
+ widget-account.picture='hubl-user-avatar'
label-actions='Edit'
action-actions='admin-users-edit'
- class-actions='w33 cell border cell-with-buttons'
- widget-actions='sib-action-hd-custom'
+ class-actions='w25 cell border cell-with-buttons'
+ widget-actions='hubl-sib-action-custom'
order-by='username'
)
diff --git a/src/views/circle/page-circle-chat.pug b/src/views/circle/page-circle-chat.pug
index 37a3cbc..7e522a2 100644
--- a/src/views/circle/page-circle-chat.pug
+++ b/src/views/circle/page-circle-chat.pug
@@ -3,7 +3,6 @@
data-authentication='login',
data-auto-login='true',
data-bosh-service-url=`${xmpp}`,
- data-debug='false',
- data-locales-url='en',
+ data-i18n='en',
bind-resources
)
\ No newline at end of file
diff --git a/src/views/circle/page-circle-edit.pug b/src/views/circle/page-circle-edit.pug
index 04336b6..c0630b2 100644
--- a/src/views/circle/page-circle-edit.pug
+++ b/src/views/circle/page-circle-edit.pug
@@ -1,14 +1,14 @@
div.content-box__info
- include ../../templates/hd-user-avatar.pug
+ include ../../templates/hubl-user-avatar.pug
- sib-widget(name='hd-user-groups')
+ sib-widget(name='hubl-user-groups')
template ${await value.name}
- sib-widget(name='team-template-edit')
+ sib-widget(name='hubl-team-template-edit')
template
sib-display.user-thumb(
- class='w50 cell border cell-with-id-card user-thumb'
+ class='w66 cell border cell-with-id-card user-thumb'
data-src='${await value.user}'
fields='account.picture, sup(name, groups), sub(profile.city)'
@@ -17,14 +17,14 @@ div.content-box__info
class-groups='user-thumb__groups'
class-profile.city='user-thumb__city'
- widget-account.picture='hd-user-avatar'
+ widget-account.picture='hubl-user-avatar'
multiple-groups=''
- widget-groups='hd-user-groups'
+ widget-groups='hubl-user-groups'
)
sib-ac-checker(
- class='w50 cell border'
+ class='w33 cell border'
permission="acl:Delete"
data-src="${value['@id']}"
)
@@ -36,7 +36,7 @@ div.content-box__info
//- Only to show the table grid
sib-ac-checker(
- class='w50 cell border'
+ class='w33 cell border'
no-permission="acl:Delete"
data-src="${value['@id']}"
)
@@ -87,8 +87,8 @@ div.content-box__info
.table
div.table-header.grey-color
- div Nom
- div Accès
+ div.w66 Nom
+ div.w33 Accès
//-class='table-body'
sib-display(
@@ -97,6 +97,6 @@ div.content-box__info
fields='members'
multiple-members=''
- widget-members='team-template-edit'
+ widget-members='hubl-team-template-edit'
)
diff --git a/src/views/circle/page-circle-left.pug b/src/views/circle/page-circle-left.pug
index 978f126..098c61a 100644
--- a/src/views/circle/page-circle-left.pug
+++ b/src/views/circle/page-circle-left.pug
@@ -1,5 +1,5 @@
-#circle-left
+#circle-left(hidden)
div.content-box__info(style="padding: 15px")
p Tu as quitté ce canal.
- p Ceci est un groupe privé. Pour le rejoindre, rends-toi dans le panneau administration et demande une invitation.
+ p Pour le rejoindre à nouveau, rends-toi dans le panneau administration ou contacte un administrateur.
diff --git a/src/views/circle/page-circle-profile.pug b/src/views/circle/page-circle-profile.pug
index f27999d..a6b5b21 100644
--- a/src/views/circle/page-circle-profile.pug
+++ b/src/views/circle/page-circle-profile.pug
@@ -3,7 +3,7 @@ sib-router(default-route='circle-profile', hidden)
sib-route(name='circle-edit')
#circle-profile(hidden)
- include ../../templates/hd-circle-team.pug
+ include ../../templates/hubl-circle-team.pug
.content-box__info
.space-between
@@ -28,7 +28,7 @@ sib-router(default-route='circle-profile', hidden)
fields='members'
multiple-members=''
- widget-members='circle-team-template'
+ widget-members='hubl-circle-team-template'
)
div.box-button
@@ -39,7 +39,7 @@ sib-router(default-route='circle-profile', hidden)
data-label='Supprimer le canal'
)
- sib-widget(name='circle-leave-button')
+ sib-widget(name='hubl-circle-leave-button')
template
sib-delete(
class='button btn-margin-left text-bold text-uppercase reversed button-dark bordered with-icon icon-close'
@@ -47,7 +47,7 @@ sib-router(default-route='circle-profile', hidden)
data-label='Quitter le canal'
)
- sib-widget(name='circle-join-button')
+ sib-widget(name='hubl-circle-join-button')
template
button.button.btn-margin-left.text-bold.text-uppercase.reversed.button-dark.bordered.with-icon.icon-arrow-right-circle.flex
sib-form(
@@ -59,7 +59,7 @@ sib-router(default-route='circle-profile', hidden)
value-user.@id=''
widget-user.@id='sib-form-hidden'
- hd-inherit-bind-user2input="input[name='user.@id']"
+ hubl-inherit-bind-user2input="input[name='user.@id']"
submit-button='Rejoindre le canal'
)
@@ -69,13 +69,13 @@ sib-router(default-route='circle-profile', hidden)
nested-field='members'
fields='relation'
action-relation='relation'
- widget-relation='circle-leave-button'
+ widget-relation='hubl-circle-leave-button'
search-fields='user'
search-widget-user='sib-form-hidden'
search-value-user=""
- empty-widget='circle-join-button'
- hd-inherit-bind-resources='circle-join-button'
- hd-inherit-user-id="search-value-user"
+ empty-widget='hubl-circle-join-button'
+ hubl-inherit-bind-resources='hubl-circle-join-button'
+ hubl-inherit-user-id="search-value-user"
)
diff --git a/src/views/project/page-project-chat.pug b/src/views/project/page-project-chat.pug
index 4f16492..cd2c4c2 100644
--- a/src/views/project/page-project-chat.pug
+++ b/src/views/project/page-project-chat.pug
@@ -3,7 +3,6 @@
data-authentication='login',
data-auto-login='true',
data-bosh-service-url=`${xmpp}`,
- data-debug='false',
- data-locales-url='en',
+ data-i18n='en',
bind-resources
)
diff --git a/src/views/project/page-project-edit.pug b/src/views/project/page-project-edit.pug
index 1650311..2a387f0 100644
--- a/src/views/project/page-project-edit.pug
+++ b/src/views/project/page-project-edit.pug
@@ -1,8 +1,8 @@
div.content-box__info
- include ../../templates/hd-user-avatar.pug
+ include ../../templates/hubl-user-avatar.pug
- sib-widget(name='hd-fieldset-title')
+ sib-widget(name='hubl-fieldset-title')
template
label ${label}
@@ -24,7 +24,7 @@ div.content-box__info
range-customer=`${endpoints.customers || endpoints.get.customers}`
label-name='Nom du projet*'
label-description='Description du projet'
- widget-fieldset-info='hd-fieldset-title'
+ widget-fieldset-info='hubl-fieldset-title'
widget-description='sib-form-textarea'
class-fieldset-fee='fieldset'
@@ -33,7 +33,7 @@ div.content-box__info
label-fieldset-fee='Contributions'
label-businessprovider='Apporteur d\'affaire'
label-businessproviderfee='Montant de la contribution'
- widget-fieldset-fee='hd-fieldset-title'
+ widget-fieldset-fee='hubl-fieldset-title'
submit-button='Enregistrer'
)
@@ -66,5 +66,5 @@ div.content-box__info
fields='members'
multiple-members=''
- widget-members='team-template-edit'
+ widget-members='hubl-team-template-edit'
)
diff --git a/src/views/project/page-project-profile.pug b/src/views/project/page-project-profile.pug
index dbd7758..ffdf5eb 100644
--- a/src/views/project/page-project-profile.pug
+++ b/src/views/project/page-project-profile.pug
@@ -3,11 +3,10 @@ sib-router(default-route='project-profile', hidden)
sib-route(name='project-edit')
#project-profile(hidden)
- include ../../templates/hd-business-provider.pug
- include ../../templates/hd-captain.pug
- include ../../templates/hd-circle-team.pug
- include ../../templates/hd-customer.pug
- include ../../templates/hd-project-team.pug
+ include ../../templates/hubl-captain.pug
+ include ../../templates/hubl-circle-team.pug
+ include ../../templates/hubl-customer.pug
+ include ../../templates/hubl-project-team.pug
.content-box__info
@@ -33,7 +32,7 @@ sib-router(default-route='project-profile', hidden)
value-label-captain='Capitaine :'
class-label-captain='h2-like'
- widget-captain='hd-captain'
+ widget-captain='hubl-captain'
)
sib-display(
class='customer-logo'
@@ -47,19 +46,13 @@ sib-router(default-route='project-profile', hidden)
sib-link(next='project-contributions-help').button-question__position
button(aria-label='modal activator').icon-question.button-question__color
- sib-display(
- bind-resources
- fields='businessProvider',
- widget-businessProvider='hd-business-provider'
- )
-
h2 Informations sur le client :
sib-display(
bind-resources
fields='customer'
- widget-customer='hd-customer'
+ widget-customer='hubl-customer'
)
h2 Equipe :
@@ -68,11 +61,11 @@ sib-router(default-route='project-profile', hidden)
bind-resources
fields='members'
- widget-members='hd-project-team'
+ widget-members='hubl-project-team'
multiple-members
)
- sib-widget(name='project-leave-button')
+ sib-widget(name='hubl-project-leave-button')
template
sib-delete(
class='button btn-margin-left text-bold text-uppercase reversed button-dark bordered with-icon icon-close'
@@ -87,13 +80,13 @@ sib-router(default-route='project-profile', hidden)
fields='relation'
action-relation='relation'
- widget-relation='project-leave-button'
+ widget-relation='hubl-project-leave-button'
search-fields='user'
search-widget-user='sib-form-hidden'
search-value-user=""
- hd-inherit-user-id="search-value-user"
+ hubl-inherit-user-id="search-value-user"
)