Merge branch 'master' into solid-resource
This commit is contained in:
commit
3c32e3880a
@ -5,7 +5,7 @@ stages:
|
|||||||
- integration
|
- integration
|
||||||
- acceptance
|
- acceptance
|
||||||
- release
|
- release
|
||||||
- deployment
|
- deploy
|
||||||
|
|
||||||
# default image for jobs
|
# default image for jobs
|
||||||
default:
|
default:
|
||||||
@ -33,6 +33,7 @@ build:
|
|||||||
- dist/
|
- dist/
|
||||||
except:
|
except:
|
||||||
- tags
|
- tags
|
||||||
|
- feature/ansible
|
||||||
tags:
|
tags:
|
||||||
- test
|
- test
|
||||||
|
|
||||||
@ -53,6 +54,7 @@ test:e2e:
|
|||||||
- cypress run -e CYPRESS_baseUrl=http://localhost:3000
|
- cypress run -e CYPRESS_baseUrl=http://localhost:3000
|
||||||
except:
|
except:
|
||||||
- tags
|
- tags
|
||||||
|
- feature/ansible
|
||||||
tags:
|
tags:
|
||||||
- test
|
- test
|
||||||
|
|
||||||
@ -67,8 +69,10 @@ test1:
|
|||||||
extends: .ansible
|
extends: .ansible
|
||||||
stage: integration
|
stage: integration
|
||||||
environment:
|
environment:
|
||||||
name: test1
|
name: dev/test1
|
||||||
url: https://test1.startinblox.com
|
url: https://test1.startinblox.com
|
||||||
|
variables:
|
||||||
|
ANSIBLE_INVENTORY: inventory/dev/
|
||||||
only:
|
only:
|
||||||
- /^feature\/.*/
|
- /^feature\/.*/
|
||||||
when: manual
|
when: manual
|
||||||
@ -77,8 +81,10 @@ test2:
|
|||||||
extends: .ansible
|
extends: .ansible
|
||||||
stage: integration
|
stage: integration
|
||||||
environment:
|
environment:
|
||||||
name: test2
|
name: dev/test2
|
||||||
url: https://test2.startinblox.com
|
url: https://test2.startinblox.com
|
||||||
|
variables:
|
||||||
|
ANSIBLE_INVENTORY: inventory/dev
|
||||||
only:
|
only:
|
||||||
- /^feature\/.*/
|
- /^feature\/.*/
|
||||||
when: manual
|
when: manual
|
||||||
@ -87,8 +93,10 @@ test3:
|
|||||||
extends: .ansible
|
extends: .ansible
|
||||||
stage: integration
|
stage: integration
|
||||||
environment:
|
environment:
|
||||||
name: test3
|
name: dev/test3
|
||||||
url: https://test3.startinblox.com
|
url: https://test3.startinblox.com
|
||||||
|
variables:
|
||||||
|
ANSIBLE_INVENTORY: inventory/dev
|
||||||
only:
|
only:
|
||||||
- /^feature\/.*/
|
- /^feature\/.*/
|
||||||
when: manual
|
when: manual
|
||||||
@ -97,8 +105,10 @@ stg1:
|
|||||||
extends: .ansible
|
extends: .ansible
|
||||||
stage: acceptance
|
stage: acceptance
|
||||||
environment:
|
environment:
|
||||||
name: stg1
|
name: review/stg1
|
||||||
url: https://stg1.startinblox.com
|
url: https://stg1.startinblox.com
|
||||||
|
variables:
|
||||||
|
ANSIBLE_INVENTORY: inventory/stg
|
||||||
only:
|
only:
|
||||||
- /^release\/.*/
|
- /^release\/.*/
|
||||||
when: manual
|
when: manual
|
||||||
@ -107,8 +117,10 @@ stg2:
|
|||||||
extends: .ansible
|
extends: .ansible
|
||||||
stage: acceptance
|
stage: acceptance
|
||||||
environment:
|
environment:
|
||||||
name: stg2
|
name: review/stg2
|
||||||
url: https://stg2.startinblox.com
|
url: https://stg2.startinblox.com
|
||||||
|
variables:
|
||||||
|
ANSIBLE_INVENTORY: inventory/stg
|
||||||
only:
|
only:
|
||||||
- /^release\/.*/
|
- /^release\/.*/
|
||||||
when: manual
|
when: manual
|
||||||
@ -129,6 +141,16 @@ publish:
|
|||||||
|
|
||||||
hublworld:
|
hublworld:
|
||||||
extends: .ansible
|
extends: .ansible
|
||||||
|
variables:
|
||||||
|
ANSIBLE_INVENTORY: inventory/prd
|
||||||
|
only:
|
||||||
|
- master
|
||||||
|
when: manual
|
||||||
|
|
||||||
|
hublunderworld:
|
||||||
|
extends: .ansible
|
||||||
|
variables:
|
||||||
|
ANSIBLE_INVENTORY: inventory/prd
|
||||||
only:
|
only:
|
||||||
- master
|
- master
|
||||||
when: manual
|
when: manual
|
||||||
|
82
README.md
82
README.md
@ -267,7 +267,8 @@ Eg.:
|
|||||||
"get": "http://server.url/events/",
|
"get": "http://server.url/events/",
|
||||||
"post": "http://server.url/events/",
|
"post": "http://server.url/events/",
|
||||||
"typeevents": "http://server.url/typeevents/",
|
"typeevents": "http://server.url/typeevents/",
|
||||||
"postTypeevents": "http://server.url/typeevents/"
|
"postTypeevents": "http://server.url/typeevents/",
|
||||||
|
"uploads": "http://server.url/upload/"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -295,6 +296,24 @@ To activate community on Hubl, add this module declaration your `config.json`:
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### Activate the community directory
|
||||||
|
|
||||||
|
When you work with a federated application, you may want a directory for communities.
|
||||||
|
|
||||||
|
You can activate it by changing the route to anything else than false. Some endpoints will also get needed:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"type": "communities",
|
||||||
|
"endpoints": {
|
||||||
|
"get": "http://server/communities/",
|
||||||
|
"addresses": "http://server/community-addresses/",
|
||||||
|
"uploads": "http://server/upload/"
|
||||||
|
},
|
||||||
|
"route": "communities"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### Dashboard
|
### Dashboard
|
||||||
|
|
||||||
Dashboard includes card generation from HTML. To activate them, you need:
|
Dashboard includes card generation from HTML. To activate them, you need:
|
||||||
@ -335,7 +354,8 @@ Module declaration, on `config.json`:
|
|||||||
"get": "http://server.url/events/",
|
"get": "http://server.url/events/",
|
||||||
"post": "http://server.url/events/",
|
"post": "http://server.url/events/",
|
||||||
"typeevents": "http://server.url/typeevents/",
|
"typeevents": "http://server.url/typeevents/",
|
||||||
"postTypeevents": "http://server.url/typeevents/"
|
"postTypeevents": "http://server.url/typeevents/",
|
||||||
|
"uploads": "http://server.url/upload/"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@ -404,6 +424,36 @@ Where:
|
|||||||
|
|
||||||
Setting custom langs will not allow user to choose their own lang.
|
Setting custom langs will not allow user to choose their own lang.
|
||||||
|
|
||||||
|
### Invoices
|
||||||
|
|
||||||
|
Invoices allow your Projects to manage invoices
|
||||||
|
|
||||||
|
Project is mandatory.
|
||||||
|
|
||||||
|
You'll need:
|
||||||
|
|
||||||
|
On Server: `djangoldp_invoice` packages
|
||||||
|
|
||||||
|
Module declaration, on `config.json`:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"type": "projects",
|
||||||
|
"extensions": [
|
||||||
|
{
|
||||||
|
"type": "invoices",
|
||||||
|
"endpoints": {
|
||||||
|
"uploads": "http://server.url/upload/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Where:
|
||||||
|
|
||||||
|
* `xmpp` is your [Prosody](https://prosody.im/) with [appropriate modules](https://git.startinblox.com/infra/prosody-modules/) configured on.
|
||||||
|
|
||||||
### Job Offers
|
### Job Offers
|
||||||
|
|
||||||
Job Offers includes a job board with conversation. To activate them
|
Job Offers includes a job board with conversation. To activate them
|
||||||
@ -478,7 +528,10 @@ On `config.json`:
|
|||||||
"type": "polls",
|
"type": "polls",
|
||||||
"endpoints": {
|
"endpoints": {
|
||||||
"get": "http://server.url/polls/",
|
"get": "http://server.url/polls/",
|
||||||
"post": "http://server.url/polls/"
|
"post": "http://server.url/polls/",
|
||||||
|
"pollRangeTags": "http://server.url/tags/",
|
||||||
|
"pollRangeCircles": "http://server.url/circles/",
|
||||||
|
"uploads": "http://server.url/upload/"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@ -632,6 +685,29 @@ Some module don't need any route to be active, set `route` to `false` so.
|
|||||||
|
|
||||||
Components can get the route of a module with `window.hubl.getRoute('componentName')`.
|
Components can get the route of a module with `window.hubl.getRoute('componentName')`.
|
||||||
|
|
||||||
|
#### Change the default route
|
||||||
|
|
||||||
|
By default, Hubl will take a Dashboard as a default route.
|
||||||
|
|
||||||
|
You can enforce a component to be the default one by adding `defaultRoute` to its parameters.
|
||||||
|
|
||||||
|
Eg.:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"type": "profileDirectory",
|
||||||
|
"endpoints": {
|
||||||
|
"get": "http://server.url/users/",
|
||||||
|
"skills": "http://server.url/skills/",
|
||||||
|
"uploads": "http://server.url/upload/"
|
||||||
|
},
|
||||||
|
"route": "directory",
|
||||||
|
"defaultRoute": true
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
If there is more than one component with this parameter, it'll be ignored.
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
### Circles or Projects are missing the @user list
|
### Circles or Projects are missing the @user list
|
||||||
|
2489
package-lock.json
generated
2489
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
17
package.json
17
package.json
@ -15,6 +15,9 @@
|
|||||||
"cypress:info": "cypress info",
|
"cypress:info": "cypress info",
|
||||||
"test": "cypress run"
|
"test": "cypress run"
|
||||||
},
|
},
|
||||||
|
"browserslist": [
|
||||||
|
"last 2 Chrome versions"
|
||||||
|
],
|
||||||
"release": {
|
"release": {
|
||||||
"branches": [
|
"branches": [
|
||||||
"master"
|
"master"
|
||||||
@ -44,12 +47,22 @@
|
|||||||
"@semantic-release/gitlab"
|
"@semantic-release/gitlab"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"cache": {
|
||||||
|
"strategy": "inject",
|
||||||
|
"swSrc": "./src/service-worker.js",
|
||||||
|
"swDest": "service-worker.js",
|
||||||
|
"globPatterns": [
|
||||||
|
"**/*.{html,js,map,css,jpg,png,gif,webp,svg,eot,ttf,woff,woff2,json}"
|
||||||
|
],
|
||||||
|
"clearDist": false
|
||||||
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@startinblox/hubl-styling-framework": "^1.8.15",
|
"@startinblox/hubl-styling-framework": "^1.8.21",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
"fs-extra": "^9.0.1",
|
"fs-extra": "^9.0.1",
|
||||||
"normalize.css": "^8.0.1",
|
"normalize.css": "^8.0.1",
|
||||||
"parcel-bundler": "^1.12.4",
|
"parcel-bundler": "^1.12.5",
|
||||||
|
"parcel-plugin-sw-cache": "^0.3.1",
|
||||||
"pug": "^3.0.0",
|
"pug": "^3.0.0",
|
||||||
"rimraf": "^2.7.1",
|
"rimraf": "^2.7.1",
|
||||||
"sass": "^1.29.0"
|
"sass": "^1.29.0"
|
||||||
|
@ -1,34 +0,0 @@
|
|||||||
import {
|
|
||||||
widgetFactory,
|
|
||||||
Helpers
|
|
||||||
} from 'https://cdn.skypack.dev/@startinblox/core@0.16';
|
|
||||||
import SlimSelect from 'https://cdn.skypack.dev/slim-select@1.23';
|
|
||||||
|
|
||||||
const HublStatus = widgetFactory(
|
|
||||||
'hubl-status',
|
|
||||||
`<label>\${label}</label>
|
|
||||||
<select
|
|
||||||
data-holder
|
|
||||||
name="\${name}">
|
|
||||||
<option
|
|
||||||
value="Public"
|
|
||||||
\${value=="Public" ? 'selected' : ''} data-trans="hublStatus.public">Public</option>
|
|
||||||
<option
|
|
||||||
value="Private"
|
|
||||||
\${value=="Private" ? 'selected' : ''} data-trans="hublStatus.private">Privé</option>
|
|
||||||
</select>`,
|
|
||||||
'',
|
|
||||||
formWidget => {
|
|
||||||
let select = formWidget.querySelector('select');
|
|
||||||
if (!select) return;
|
|
||||||
const slimSelect = new SlimSelect({
|
|
||||||
select: select
|
|
||||||
});
|
|
||||||
Helpers.importCSS('https://dev.jspm.io/slim-select/dist/slimselect.min.css');
|
|
||||||
select.addEventListener('change', () => slimSelect.render());
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
export {
|
|
||||||
HublStatus
|
|
||||||
}
|
|
47
src/components/sw-toolbox.js
Normal file
47
src/components/sw-toolbox.js
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
import {
|
||||||
|
Workbox,
|
||||||
|
messageSW
|
||||||
|
} from 'https://storage.googleapis.com/workbox-cdn/releases/6.1.1/workbox-window.prod.mjs';
|
||||||
|
|
||||||
|
if ('serviceWorker' in navigator) {
|
||||||
|
window.addEventListener('load', function () {
|
||||||
|
|
||||||
|
const wb = new Workbox('/service-worker.js');
|
||||||
|
let registration;
|
||||||
|
|
||||||
|
const showSkipWaitingPrompt = (event) => {
|
||||||
|
if(hubl.intl.t('serviceWorker.newUpdate') != undefined) {
|
||||||
|
Swal.fire({
|
||||||
|
position: 'bottom-end',
|
||||||
|
backdrop: false,
|
||||||
|
title: "",
|
||||||
|
text: hubl.intl.t('serviceWorker.newUpdate') + ". " + hubl.intl.t('serviceWorker.wantToUpdate'),
|
||||||
|
imageUrl: hubl.client.logo || 'https://cdn.startinblox.com/logos/webp/hubl.webp',
|
||||||
|
imageAlt: hubl.client.name,
|
||||||
|
showCancelButton: true,
|
||||||
|
confirmButtonClass: 'button text-xsmall text-bold text-center reversed color-secondary bordered icon icon-check no-background-image',
|
||||||
|
cancelButtonClass: 'button text-xsmall text-bold text-center reversed color-primary bordered icon icon-exclamation no-background-image',
|
||||||
|
confirmButtonText: hubl.intl.t('serviceWorker.yes'),
|
||||||
|
cancelButtonText: hubl.intl.t('serviceWorker.no')
|
||||||
|
}).then((result) => {
|
||||||
|
if (result.isConfirmed) {
|
||||||
|
wb.addEventListener('controlling', (event) => {
|
||||||
|
window.location.reload();
|
||||||
|
});
|
||||||
|
|
||||||
|
if (registration && registration.waiting) {
|
||||||
|
messageSW(registration.waiting, {
|
||||||
|
type: 'SKIP_WAITING'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
wb.addEventListener('waiting', showSkipWaitingPrompt);
|
||||||
|
wb.addEventListener('externalwaiting', showSkipWaitingPrompt);
|
||||||
|
|
||||||
|
wb.register().then((r) => registration = r);
|
||||||
|
});
|
||||||
|
}
|
@ -4,7 +4,13 @@ script(type="module" src="https://cdn.skypack.dev/@startinblox/core@0.16" defer)
|
|||||||
script(type="module" src="https://cdn.skypack.dev/@startinblox/router@0.11" 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)
|
||||||
|
|
||||||
- const componentSet = new Set(components.map(c=>c.type));
|
-
|
||||||
|
const componentSet = new Set(components.map(c=>c.type));
|
||||||
|
components.map(c => {
|
||||||
|
if(c.extensions) {
|
||||||
|
c.extensions.forEach(e => componentSet.add(e.type));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
if componentSet.has("autoLogin") || componentSet.has("registering")
|
if componentSet.has("autoLogin") || componentSet.has("registering")
|
||||||
script(type="module" src="https://cdn.skypack.dev/@startinblox/oidc@0.14" defer)
|
script(type="module" src="https://cdn.skypack.dev/@startinblox/oidc@0.14" defer)
|
||||||
@ -14,6 +20,10 @@ if componentSet.has("chat") || componentSet.has("circles") || componentSet.has("
|
|||||||
script(type="module" src="https://cdn.skypack.dev/@startinblox/component-chat@5.2" defer)
|
script(type="module" src="https://cdn.skypack.dev/@startinblox/component-chat@5.2" 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 componentSet.has("communities")
|
||||||
|
script(type="module" src="https://cdn.skypack.dev/@startinblox/core@0.16/dist/components/solid-map.js" defer)
|
||||||
|
//- script(type="module" src="/lib/sib-core/dist/components/solid-map.js" defer)
|
||||||
|
|
||||||
if componentSet.has("dashboard")
|
if componentSet.has("dashboard")
|
||||||
script(type="module" src="https://cdn.skypack.dev/@startinblox/component-dashboard@4.0" defer)
|
script(type="module" src="https://cdn.skypack.dev/@startinblox/component-dashboard@4.0" defer)
|
||||||
//- script(type="module" src="/lib/solid-dashboard/dist/index.js" defer)
|
//- script(type="module" src="/lib/solid-dashboard/dist/index.js" defer)
|
||||||
@ -23,8 +33,8 @@ if componentSet.has("events")
|
|||||||
//- script(type="module", src="/lib/solid-event/solid-event.js", defer)
|
//- script(type="module", src="/lib/solid-event/solid-event.js", defer)
|
||||||
|
|
||||||
//- Disabled - Not in core@0.16
|
//- Disabled - Not in core@0.16
|
||||||
//- if componentSet.has("events") || componentSet.has("polls") || componentSet.has("resources")
|
if componentSet.has("events") || componentSet.has("polls") || componentSet.has("resources")
|
||||||
script(type="module" src="https://cdn.skypack.dev/@startinblox/component-conversation@0.9" defer)
|
script(type="module" src="https://cdn.skypack.dev/@startinblox/component-conversation@0.10" defer)
|
||||||
|
|
||||||
if componentSet.has("jobBoard")
|
if componentSet.has("jobBoard")
|
||||||
script(type="module" src="https://cdn.skypack.dev/@startinblox/component-job-board@5.0" defer)
|
script(type="module" src="https://cdn.skypack.dev/@startinblox/component-job-board@5.0" defer)
|
||||||
@ -34,10 +44,9 @@ if componentSet.has("notification")
|
|||||||
script(type="module" src="https://cdn.skypack.dev/@startinblox/component-notifications@0.12" defer)
|
script(type="module" src="https://cdn.skypack.dev/@startinblox/component-notifications@0.12" defer)
|
||||||
//- script(type="module" src="/lib/sib-notifications/index.js" defer)
|
//- script(type="module" src="/lib/sib-notifications/index.js" defer)
|
||||||
|
|
||||||
//- Disabled - Not in core@0.16
|
if componentSet.has("polls")
|
||||||
//- if componentSet.has("polls")
|
script(type="module" src="https://cdn.skypack.dev/@startinblox/component-poll@2.1" defer)
|
||||||
//- script(type="module" src="https://cdn.skypack.dev/@startinblox/component-poll@1.2" defer)
|
//script(type="module" src="/lib/solid-poll/index.js" defer)
|
||||||
//- //- script(type="module" src="/lib/sib-polls-component/index.js" defer)
|
|
||||||
|
|
||||||
if componentSet.has("profileDirectory")
|
if componentSet.has("profileDirectory")
|
||||||
script(type="module" src="https://cdn.skypack.dev/@startinblox/component-directory@5.1" defer)
|
script(type="module" src="https://cdn.skypack.dev/@startinblox/component-directory@5.1" defer)
|
||||||
|
@ -53,6 +53,22 @@ for component of components
|
|||||||
routes.add(route);
|
routes.add(route);
|
||||||
component.route = route;
|
component.route = route;
|
||||||
}
|
}
|
||||||
|
if(component.extensions)
|
||||||
|
for extension of component.extensions
|
||||||
|
-
|
||||||
|
if(typeof extension.route === 'undefined') {
|
||||||
|
extension.route = extension.type;
|
||||||
|
}
|
||||||
|
if(extension.route) {
|
||||||
|
extension.uniq = Math.random().toString(16).slice(2);
|
||||||
|
let route = extension.route;
|
||||||
|
if (routes.has(extension.route)) {
|
||||||
|
route += "-" + extension.uniq;
|
||||||
|
}
|
||||||
|
routes.add(route);
|
||||||
|
extension.route = route;
|
||||||
|
}
|
||||||
|
|
||||||
-
|
-
|
||||||
const defaultComponent = components.filter(e=>e.defaultRoute != undefined);
|
const defaultComponent = components.filter(e=>e.defaultRoute != undefined);
|
||||||
let defaultRoute = "dashboard";
|
let defaultRoute = "dashboard";
|
||||||
@ -60,5 +76,5 @@ for component of components
|
|||||||
defaultRoute = defaultComponent[0].uniq;
|
defaultRoute = defaultComponent[0].uniq;
|
||||||
}
|
}
|
||||||
|
|
||||||
- const hublComponents = `window.hubl={};window.hubl.components = ${JSON.stringify(components)};window.hubl.defaultRoute = "${defaultRoute}";`;
|
- const hublComponents = `window.hubl={};window.hubl.components = ${JSON.stringify(components)};window.hubl.defaultRoute = "${defaultRoute}";window.hubl.client = ${JSON.stringify(client)}`;
|
||||||
script!=hublComponents
|
script!=hublComponents
|
@ -31,8 +31,8 @@ html(lang="en")
|
|||||||
script(type="module" src="/components/sentry.js" defer)
|
script(type="module" src="/components/sentry.js" defer)
|
||||||
script(type="module" src="/components/hubl-auto-login.js" defer)
|
script(type="module" src="/components/hubl-auto-login.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-reactivity.js" defer)
|
script(type="module" src="/components/hubl-reactivity.js" defer)
|
||||||
|
script(type="module" src="/components/sw-toolbox.js" defer)
|
||||||
script(src="index.js" defer)
|
script(src="index.js" defer)
|
||||||
|
|
||||||
include dependencies.pug
|
include dependencies.pug
|
||||||
@ -99,7 +99,7 @@ html(lang="en")
|
|||||||
include views/page-messages.pug
|
include views/page-messages.pug
|
||||||
|
|
||||||
if component.type == "circles"
|
if component.type == "circles"
|
||||||
.with-sidebar.whitespace-normal
|
.with-sidebar.whitespace-normal.jsMobileContentSidebarControl
|
||||||
hubl-reactivity(bind-user nested-field='inbox' target-src="store://user.circles")
|
hubl-reactivity(bind-user nested-field='inbox' target-src="store://user.circles")
|
||||||
hubl-reactivity(bind-user nested-field="circles" target-src="store://user")
|
hubl-reactivity(bind-user nested-field="circles" target-src="store://user")
|
||||||
hubl-reactivity(data-src=`${component.endpoints.get}joinable/` target-src=`${component.endpoints.get}`)
|
hubl-reactivity(data-src=`${component.endpoints.get}joinable/` target-src=`${component.endpoints.get}`)
|
||||||
@ -111,6 +111,10 @@ html(lang="en")
|
|||||||
hubl-reactivity(bind-user nested-field="circles" target-src=`${component.endpoints.get}joinable/`)
|
hubl-reactivity(bind-user nested-field="circles" target-src=`${component.endpoints.get}joinable/`)
|
||||||
include views/page-circle.pug
|
include views/page-circle.pug
|
||||||
|
|
||||||
|
if component.type == "communities"
|
||||||
|
.scrollbar-content.whitespace-normal
|
||||||
|
include views/page-communities.pug
|
||||||
|
|
||||||
if component.type == "dashboard"
|
if component.type == "dashboard"
|
||||||
.scrollbar-content
|
.scrollbar-content
|
||||||
include views/page-dashboard.pug
|
include views/page-dashboard.pug
|
||||||
@ -133,11 +137,11 @@ html(lang="en")
|
|||||||
include views/page-job-board.pug
|
include views/page-job-board.pug
|
||||||
|
|
||||||
if component.type == "polls"
|
if component.type == "polls"
|
||||||
.with-sidebar
|
.scrollbar-content
|
||||||
include views/page-polls.pug
|
include views/page-polls.pug
|
||||||
|
|
||||||
if component.type == "projects"
|
if component.type == "projects"
|
||||||
.with-sidebar.whitespace-normal
|
.with-sidebar.whitespace-normal.jsMobileContentSidebarControl
|
||||||
hubl-reactivity(bind-user nested-field='inbox' target-src="store://user.projects")
|
hubl-reactivity(bind-user nested-field='inbox' target-src="store://user.projects")
|
||||||
hubl-reactivity(bind-user nested-field="projects" target-src="store://user")
|
hubl-reactivity(bind-user nested-field="projects" target-src="store://user")
|
||||||
hubl-reactivity(data-src=`${component.endpoints.post}joinable/` target-src=`${component.endpoints.get}`)
|
hubl-reactivity(data-src=`${component.endpoints.post}joinable/` target-src=`${component.endpoints.get}`)
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
"resources": "Resources",
|
"resources": "Resources",
|
||||||
"jobBoard": "Job offers",
|
"jobBoard": "Job offers",
|
||||||
"profileDirectory": "Profiles directory",
|
"profileDirectory": "Profiles directory",
|
||||||
|
"communities": "Communities",
|
||||||
"projects": "Projects",
|
"projects": "Projects",
|
||||||
"closeMenu": "Close menu",
|
"closeMenu": "Close menu",
|
||||||
"projectsBrowse": "Browse projects",
|
"projectsBrowse": "Browse projects",
|
||||||
@ -32,13 +33,7 @@
|
|||||||
"circlesBrowse": "Browse circles",
|
"circlesBrowse": "Browse circles",
|
||||||
"circleCreate": "Create circle",
|
"circleCreate": "Create circle",
|
||||||
"messages": "Messages",
|
"messages": "Messages",
|
||||||
"search": "Search...",
|
"search": "Search"
|
||||||
"republiqueESS": {
|
|
||||||
"home": "Home",
|
|
||||||
"contribute": "Contribute",
|
|
||||||
"thematics": "Thematics",
|
|
||||||
"community": "Community"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"about": {
|
"about": {
|
||||||
"title": "About",
|
"title": "About",
|
||||||
@ -131,13 +126,11 @@
|
|||||||
"subTitle": "Members :"
|
"subTitle": "Members :"
|
||||||
},
|
},
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"associated": "Associated circle",
|
"associated": "Associated circle"
|
||||||
"republiqueESS": {
|
|
||||||
"associatedThematic": "Associated thematic"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"communities": {
|
"communities": {
|
||||||
|
"back": "Back",
|
||||||
"title": "Administration",
|
"title": "Administration",
|
||||||
"menuMobile": "MENU",
|
"menuMobile": "MENU",
|
||||||
"linkInvite": "Invite a new user",
|
"linkInvite": "Invite a new user",
|
||||||
@ -156,6 +149,42 @@
|
|||||||
"email": "Email*",
|
"email": "Email*",
|
||||||
"password": "Password*",
|
"password": "Password*",
|
||||||
"formCreateAccount": "Create an account"
|
"formCreateAccount": "Create an account"
|
||||||
|
},
|
||||||
|
"list": {
|
||||||
|
"title": "Communities",
|
||||||
|
"searchBy": "Find by name",
|
||||||
|
"searchButton": "Search",
|
||||||
|
"members": "members"
|
||||||
|
},
|
||||||
|
"profile": {
|
||||||
|
"back": "Back",
|
||||||
|
"members": "members",
|
||||||
|
"edit": "Edit the page"
|
||||||
|
},
|
||||||
|
"edit": {
|
||||||
|
"labelShortDescription": "Community headline",
|
||||||
|
"labelDescription": "community description",
|
||||||
|
"labelPhone": "Phone",
|
||||||
|
"labelEmail": "Email",
|
||||||
|
"labelWebsite": "Website",
|
||||||
|
"labelTwitter": "Twitter",
|
||||||
|
"labelFacebook": "Facebook",
|
||||||
|
"labelLinkedin": "Linkedin",
|
||||||
|
"labelInstagram": "Instagram",
|
||||||
|
"labelPicture1": "Picture 1",
|
||||||
|
"labelPicture2": "Picture 2",
|
||||||
|
"labelPicture3": "Picture 3",
|
||||||
|
"labelAddressLine1": "New address line 1",
|
||||||
|
"labelAddressLine2": "New address line 2",
|
||||||
|
"labelLogo": "Community Logo",
|
||||||
|
"subTitle": "Pictures",
|
||||||
|
"subTitle1": "Address",
|
||||||
|
"buttonSubmit": "Save",
|
||||||
|
"noPermission": "You don't have access to this page",
|
||||||
|
"tableHeader1": "Address line 1",
|
||||||
|
"tableHeader2": "Address line 2",
|
||||||
|
"buttonDelete": "Delete",
|
||||||
|
"buttonAdd": "Add"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"project": {
|
"project": {
|
||||||
@ -248,10 +277,7 @@
|
|||||||
"template-captain": {
|
"template-captain": {
|
||||||
"isLead": "Captain"
|
"isLead": "Captain"
|
||||||
},
|
},
|
||||||
"hublStatus": {
|
"hublStatus": "Public = Public, Private = Private",
|
||||||
"private": "Private",
|
|
||||||
"public": "Public"
|
|
||||||
},
|
|
||||||
"success": "Success!",
|
"success": "Success!",
|
||||||
"errors": {
|
"errors": {
|
||||||
"somethingGoesWrong": "Something goes wrong, try to",
|
"somethingGoesWrong": "Something goes wrong, try to",
|
||||||
@ -312,5 +338,11 @@
|
|||||||
"edit": "Edit",
|
"edit": "Edit",
|
||||||
"back": "Back",
|
"back": "Back",
|
||||||
"goButton": "GO"
|
"goButton": "GO"
|
||||||
|
},
|
||||||
|
"serviceWorker": {
|
||||||
|
"newUpdate": "A new version is available",
|
||||||
|
"wantToUpdate": "Do you want to update?",
|
||||||
|
"yes": "Yes",
|
||||||
|
"no": "No"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
"resources": "Recursos",
|
"resources": "Recursos",
|
||||||
"jobBoard": "Ofertas de trabajo",
|
"jobBoard": "Ofertas de trabajo",
|
||||||
"profileDirectory": "Directorio de miembrxs",
|
"profileDirectory": "Directorio de miembrxs",
|
||||||
|
"communities": "Las comunidades",
|
||||||
"projects": "Proyectos",
|
"projects": "Proyectos",
|
||||||
"closeMenu": "Cerrar menú",
|
"closeMenu": "Cerrar menú",
|
||||||
"projectsBrowse": "Examinar los proyectos",
|
"projectsBrowse": "Examinar los proyectos",
|
||||||
@ -32,13 +33,7 @@
|
|||||||
"circlesBrowse": "Examinar los círculos",
|
"circlesBrowse": "Examinar los círculos",
|
||||||
"circleCreate": "Crea un círculo.",
|
"circleCreate": "Crea un círculo.",
|
||||||
"messages": "Mensajes",
|
"messages": "Mensajes",
|
||||||
"search": "Buscar...",
|
"search": "Buscar"
|
||||||
"republiqueESS": {
|
|
||||||
"home": "Hogar",
|
|
||||||
"contribute": "Contribuir",
|
|
||||||
"thematics": "Temáticas",
|
|
||||||
"community": "Comunidad"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"about": {
|
"about": {
|
||||||
"title": "Acerca de",
|
"title": "Acerca de",
|
||||||
@ -131,13 +126,11 @@
|
|||||||
"subTitle": "Miembrxs: "
|
"subTitle": "Miembrxs: "
|
||||||
},
|
},
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"associated": "Círculo asociado",
|
"associated": "Círculo asociado"
|
||||||
"republiqueESS": {
|
|
||||||
"associatedThematic": "Temática asociada"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"communities": {
|
"communities": {
|
||||||
|
"back": "Volver",
|
||||||
"title": "Administración",
|
"title": "Administración",
|
||||||
"menuMobile": "MENÚ",
|
"menuMobile": "MENÚ",
|
||||||
"linkInvite": "Invita a un/a nuevx usuarix",
|
"linkInvite": "Invita a un/a nuevx usuarix",
|
||||||
@ -156,6 +149,42 @@
|
|||||||
"email": "Correo electrónico*",
|
"email": "Correo electrónico*",
|
||||||
"password": "Contraseña*",
|
"password": "Contraseña*",
|
||||||
"formCreateAccount": "Crear una cuenta"
|
"formCreateAccount": "Crear una cuenta"
|
||||||
|
},
|
||||||
|
"list": {
|
||||||
|
"title": "Comunidades",
|
||||||
|
"searchBy": "Buscar por nombre",
|
||||||
|
"searchButton": "Buscar",
|
||||||
|
"members": "miembros"
|
||||||
|
},
|
||||||
|
"profile": {
|
||||||
|
"back": "Volver",
|
||||||
|
"members": "miembros",
|
||||||
|
"edit": "Editar la página"
|
||||||
|
},
|
||||||
|
"edit": {
|
||||||
|
"labelShortDescription": "Subtítulo del comunidad",
|
||||||
|
"labelDescription": "Descripción de la comunidad",
|
||||||
|
"labelPhone": "Teléfono",
|
||||||
|
"labelEmail": "Email",
|
||||||
|
"labelWebsite": "Página web",
|
||||||
|
"labelTwitter": "Twitter",
|
||||||
|
"labelFacebook": "Facebook",
|
||||||
|
"labelLinkedin": "Linkedin",
|
||||||
|
"labelInstagram": "Instagram",
|
||||||
|
"labelPicture1": "Foto 1",
|
||||||
|
"labelPicture2": "Foto 2",
|
||||||
|
"labelPicture3": "Foto 3",
|
||||||
|
"labelAddressLine1": "Nueva línea de dirección 1",
|
||||||
|
"labelAddressLine2": "Nueva línea de dirección 2",
|
||||||
|
"labelLogo": "Logotipo comunitario",
|
||||||
|
"subTitle": "Foto",
|
||||||
|
"subTitle1": "Dirección",
|
||||||
|
"buttonSubmit": "Guardar",
|
||||||
|
"noPermission": "No tiene permiso",
|
||||||
|
"tableHeader1": "Dirección línea 1",
|
||||||
|
"tableHeader2": "Dirección línea 2",
|
||||||
|
"buttonDelete": "Eliminar",
|
||||||
|
"buttonAdd": "Añadir"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"project": {
|
"project": {
|
||||||
@ -248,10 +277,7 @@
|
|||||||
"template-captain": {
|
"template-captain": {
|
||||||
"isLead": "Líder"
|
"isLead": "Líder"
|
||||||
},
|
},
|
||||||
"hublStatus": {
|
"hublStatus": "Público = Public, Privado = Private",
|
||||||
"private": "Privado",
|
|
||||||
"public": "Público"
|
|
||||||
},
|
|
||||||
"success": "¡Éxito!",
|
"success": "¡Éxito!",
|
||||||
"errors": {
|
"errors": {
|
||||||
"somethingGoesWrong": "Algo sale mal, intenta",
|
"somethingGoesWrong": "Algo sale mal, intenta",
|
||||||
@ -312,5 +338,11 @@
|
|||||||
"edit": "Modificar",
|
"edit": "Modificar",
|
||||||
"back": "Atrás",
|
"back": "Atrás",
|
||||||
"goButton": "GO"
|
"goButton": "GO"
|
||||||
|
},
|
||||||
|
"serviceWorker": {
|
||||||
|
"newUpdate": "Una nueva version esta disponible",
|
||||||
|
"wantToUpdate": "¿Quieres actualizar?",
|
||||||
|
"yes": "Sí",
|
||||||
|
"no": "No"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,9 +9,7 @@
|
|||||||
},
|
},
|
||||||
"menuLeft": {
|
"menuLeft": {
|
||||||
"emptyCircleProjectContact": {
|
"emptyCircleProjectContact": {
|
||||||
"empty": "Il n'y a aucun résultat dans cette section.",
|
"empty": "Il n'y a aucun résultat dans cette section."
|
||||||
"project": "projet",
|
|
||||||
"circle": "cercle"
|
|
||||||
},
|
},
|
||||||
"contact": {
|
"contact": {
|
||||||
"create": "Retrouve tes contacts sur",
|
"create": "Retrouve tes contacts sur",
|
||||||
@ -24,6 +22,7 @@
|
|||||||
"resources": "Ressources",
|
"resources": "Ressources",
|
||||||
"jobBoard": "Offres de mission",
|
"jobBoard": "Offres de mission",
|
||||||
"profileDirectory": "Annuaire des membres",
|
"profileDirectory": "Annuaire des membres",
|
||||||
|
"communities": "Les communautés",
|
||||||
"projects": "Projets",
|
"projects": "Projets",
|
||||||
"closeMenu": "Fermer le menu",
|
"closeMenu": "Fermer le menu",
|
||||||
"projectsBrowse": "Parcourir les projets",
|
"projectsBrowse": "Parcourir les projets",
|
||||||
@ -32,13 +31,7 @@
|
|||||||
"circlesBrowse": "Parcourir les cercles",
|
"circlesBrowse": "Parcourir les cercles",
|
||||||
"circleCreate": "Créer un cercle",
|
"circleCreate": "Créer un cercle",
|
||||||
"messages": "Messages",
|
"messages": "Messages",
|
||||||
"search": "Rechercher...",
|
"search": "Rechercher"
|
||||||
"republiqueESS": {
|
|
||||||
"home": "Accueil",
|
|
||||||
"contribute": "Contribuer",
|
|
||||||
"thematics": "Thématiques",
|
|
||||||
"community": "Communauté"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"about": {
|
"about": {
|
||||||
"title": "A propos",
|
"title": "A propos",
|
||||||
@ -131,13 +124,11 @@
|
|||||||
"subTitle": "Membres :"
|
"subTitle": "Membres :"
|
||||||
},
|
},
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"associated": "Cercle associé",
|
"associated": "Cercle associé"
|
||||||
"republiqueESS": {
|
|
||||||
"associatedThematic": "Thématique associée"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"communities": {
|
"communities": {
|
||||||
|
"back": "Retour",
|
||||||
"title": "Administration",
|
"title": "Administration",
|
||||||
"menuMobile": "MENU",
|
"menuMobile": "MENU",
|
||||||
"linkInvite": "Inviter un nouvel utilisateur",
|
"linkInvite": "Inviter un nouvel utilisateur",
|
||||||
@ -156,6 +147,42 @@
|
|||||||
"email": "E-mail*",
|
"email": "E-mail*",
|
||||||
"password": "Mot de passe*",
|
"password": "Mot de passe*",
|
||||||
"formCreateAccount": "Créer un compte"
|
"formCreateAccount": "Créer un compte"
|
||||||
|
},
|
||||||
|
"list": {
|
||||||
|
"title": "Les communautés",
|
||||||
|
"searchBy": "Trouver par nom",
|
||||||
|
"searchButton": "Rechercher",
|
||||||
|
"members": "membres"
|
||||||
|
},
|
||||||
|
"profile": {
|
||||||
|
"back": "Retour",
|
||||||
|
"members": "membres",
|
||||||
|
"edit": "Editer la page"
|
||||||
|
},
|
||||||
|
"edit": {
|
||||||
|
"labelShortDescription": "Sous-titre de la communauté",
|
||||||
|
"labelDescription": "Description de la communauté",
|
||||||
|
"labelPhone": "Téléphone",
|
||||||
|
"labelEmail": "Email",
|
||||||
|
"labelWebsite": "Site web",
|
||||||
|
"labelTwitter": "Twitter",
|
||||||
|
"labelFacebook": "Facebook",
|
||||||
|
"labelLinkedin": "Linkedin",
|
||||||
|
"labelInstagram": "Instagram",
|
||||||
|
"labelPicture1": "Photo 1",
|
||||||
|
"labelPicture2": "Photo 2",
|
||||||
|
"labelPicture3": "Photo 3",
|
||||||
|
"labelAddressLine1": "Nouvelle adresse ligne 1",
|
||||||
|
"labelAddressLine2": "Nouvelle adresse ligne 2",
|
||||||
|
"labelLogo": "Logo de la communauté",
|
||||||
|
"subTitle": "Photos",
|
||||||
|
"subTitle1": "Adresse",
|
||||||
|
"buttonSubmit": "Enregistrer",
|
||||||
|
"noPermission": "Vous n'avez pas la permission",
|
||||||
|
"tableHeader1": "Adresse ligne 1",
|
||||||
|
"tableHeader2": "Adresse ligne 2",
|
||||||
|
"buttonDelete": "Effacer",
|
||||||
|
"buttonAdd": "Ajouter"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"project": {
|
"project": {
|
||||||
@ -248,10 +275,7 @@
|
|||||||
"template-captain": {
|
"template-captain": {
|
||||||
"isLead": "Capitaine"
|
"isLead": "Capitaine"
|
||||||
},
|
},
|
||||||
"hublStatus": {
|
"hublStatus": "Public = Public, Privé = Private",
|
||||||
"private": "Privé",
|
|
||||||
"public": "Public"
|
|
||||||
},
|
|
||||||
"success": "Succès!",
|
"success": "Succès!",
|
||||||
"errors": {
|
"errors": {
|
||||||
"somethingGoesWrong": "Quelque chose ne va pas, essayez de",
|
"somethingGoesWrong": "Quelque chose ne va pas, essayez de",
|
||||||
@ -312,5 +336,11 @@
|
|||||||
"edit": "Editer",
|
"edit": "Editer",
|
||||||
"back": "Retour",
|
"back": "Retour",
|
||||||
"goButton": "GO"
|
"goButton": "GO"
|
||||||
|
},
|
||||||
|
"serviceWorker": {
|
||||||
|
"newUpdate": "Une nouvelle version est disponible",
|
||||||
|
"wantToUpdate": "Voulez-vous mettre à jour ?",
|
||||||
|
"yes": "Oui",
|
||||||
|
"no": "Non"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
33
src/scripts/hubl-geocoord.js
Normal file
33
src/scripts/hubl-geocoord.js
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
Geocoord helper using Nominatim
|
||||||
|
Usage:
|
||||||
|
const madrid = await hubl.geocoord('Madrid');
|
||||||
|
madrid == ["-3.7035825", "40.4167047"]
|
||||||
|
*/
|
||||||
|
window.hubl.geocoord = async (address = false) => {
|
||||||
|
if (address) {
|
||||||
|
const nominatim = await fetch('https://nominatim.openstreetmap.org/?format=geocodejson&limit=1&q=' + encodeURI(address));
|
||||||
|
const response = await nominatim.json();
|
||||||
|
if (response.features[0]) {
|
||||||
|
const coords = response.features[0].geometry.coordinates;
|
||||||
|
if (coords[0] && coords[1]) {
|
||||||
|
return [String(coords[0]), String(coords[1])];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.error("Address not found");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.error("Missing address");
|
||||||
|
}
|
||||||
|
return ["-47.15", "-123.716667"];
|
||||||
|
}
|
||||||
|
|
||||||
|
window.hubl.geocalc = (element) => {
|
||||||
|
const editionForm = element.parentElement.parentElement.parentElement.parentElement;
|
||||||
|
window.hubl.geocoord(editionForm.querySelector('input[name="address_line1"]').value + " " + editionForm.querySelector('input[name="address_line2"]').value).then(coords => {
|
||||||
|
editionForm.querySelector('input[name="lat"]').value = coords[1];
|
||||||
|
editionForm.querySelector('input[name="lng"]').value = coords[0];
|
||||||
|
editionForm.querySelector('input[type="submit"]').click();
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
}
|
@ -6,27 +6,27 @@ class JsI18n {
|
|||||||
constructor() {
|
constructor() {
|
||||||
this.locale = ""; //Current locale
|
this.locale = ""; //Current locale
|
||||||
this.locales = new Array(); //Available locales
|
this.locales = new Array(); //Available locales
|
||||||
|
this.overwrites = new Array();
|
||||||
this.defaultLocale = "fr";
|
this.defaultLocale = "fr";
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Method for automatically detecting the language, does not work in every browser.
|
Method for automatically detecting the language, does not work in every browser.
|
||||||
*/
|
*/
|
||||||
detectLanguage() {
|
async detectLanguage() {
|
||||||
const customLangs = document.querySelectorAll('hubl-lang');
|
const customLangs = document.querySelectorAll('hubl-lang');
|
||||||
if(customLangs) {
|
if (customLangs) {
|
||||||
for(let lang of customLangs) {
|
for (let lang of customLangs) {
|
||||||
let name = lang.getAttribute('lang'),
|
let name = lang.getAttribute('lang'),
|
||||||
file = lang.getAttribute('file');
|
file = lang.getAttribute('file');
|
||||||
if(window.hubl.intl.locales[name.toString()] == undefined) {
|
let result = await fetch(file);
|
||||||
return fetch(file).then((result) => {
|
if (result.ok) {
|
||||||
if (result.ok) {
|
let json = await result.json();
|
||||||
result.json().then(e => {
|
if(this.overwrites[name.toString()] != undefined) {
|
||||||
window.hubl.intl.addLocale(name, e);
|
this.mergeDeep(this.overwrites[name.toString()], json);
|
||||||
});
|
} else {
|
||||||
}
|
this.overwrites[name.toString()] = json;
|
||||||
window.hubl.intl.resumeDetection();
|
}
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -35,10 +35,10 @@ class JsI18n {
|
|||||||
|
|
||||||
resumeDetection() {
|
resumeDetection() {
|
||||||
const langComponent = document.querySelector('hubl-fallback-lang');
|
const langComponent = document.querySelector('hubl-fallback-lang');
|
||||||
if(langComponent) {
|
if (langComponent) {
|
||||||
if(langComponent.hasAttribute('lang')) {
|
if (langComponent.hasAttribute('lang')) {
|
||||||
this.defaultLocale = langComponent.getAttribute('lang');
|
this.defaultLocale = langComponent.getAttribute('lang');
|
||||||
if(langComponent.hasAttribute('force')) {
|
if (langComponent.hasAttribute('force')) {
|
||||||
localStorage.setItem('language', this.defaultLocale);
|
localStorage.setItem('language', this.defaultLocale);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -52,6 +52,30 @@ class JsI18n {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
isObject(item) {
|
||||||
|
return (item && typeof item === 'object' && !Array.isArray(item));
|
||||||
|
}
|
||||||
|
|
||||||
|
mergeDeep(target, ...sources) {
|
||||||
|
if (!sources.length) return target;
|
||||||
|
const source = sources.shift();
|
||||||
|
if (this.isObject(target) && this.isObject(source)) {
|
||||||
|
for (const key in source) {
|
||||||
|
if (this.isObject(source[key])) {
|
||||||
|
if (!target[key]) Object.assign(target, {
|
||||||
|
[key]: {}
|
||||||
|
});
|
||||||
|
this.mergeDeep(target[key], source[key]);
|
||||||
|
} else {
|
||||||
|
Object.assign(target, {
|
||||||
|
[key]: source[key]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this.mergeDeep(target, ...sources);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Translates tag contents and
|
Translates tag contents and
|
||||||
attributes depending on the
|
attributes depending on the
|
||||||
@ -78,6 +102,17 @@ class JsI18n {
|
|||||||
this.translateNodeContent(label, k);
|
this.translateNodeContent(label, k);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// https://git.startinblox.com/framework/sib-core/issues/755
|
||||||
|
if (attr.startsWith('placeholder-')) {
|
||||||
|
let placeholder = node.querySelector('[placeholder="' + attr.replace("placeholder-", "") + '"]');
|
||||||
|
if (placeholder != null) {
|
||||||
|
this.translateNodeContent(placeholder.attributes['placeholder'], k);
|
||||||
|
let input = node.querySelector('[name="' + attr.replace("placeholder-", "") + '"] > input');
|
||||||
|
if (input != null) {
|
||||||
|
this.translateNodeContent(input.attributes['placeholder'], k);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
this.translateNodeContent(node.attributes[attr], k);
|
this.translateNodeContent(node.attributes[attr], k);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -134,21 +169,20 @@ class JsI18n {
|
|||||||
if the locale is already defined.
|
if the locale is already defined.
|
||||||
*/
|
*/
|
||||||
addLocale(locale, translations) {
|
addLocale(locale, translations) {
|
||||||
|
if (this.overwrites[locale.toString()] != undefined) {
|
||||||
|
this.mergeDeep(translations, this.overwrites[locale.toString()]);
|
||||||
|
}
|
||||||
this.locales[locale.toString()] = translations;
|
this.locales[locale.toString()] = translations;
|
||||||
}
|
}
|
||||||
|
|
||||||
fetchLocale(locale) {
|
fetchLocale(locale) {
|
||||||
if(this.locales[locale.toString()] == undefined) {
|
return fetch(`/locales/${locale}.json`).then((result) => {
|
||||||
return fetch(`/locales/${locale}.json`).then((result) => {
|
if (result.ok) {
|
||||||
if (result.ok) {
|
result.json().then(e => {
|
||||||
result.json().then(e => {
|
this.addLocale(locale, e);
|
||||||
this.addLocale(locale, e);
|
});
|
||||||
});
|
}
|
||||||
}
|
});
|
||||||
});
|
|
||||||
} else {
|
|
||||||
return (new Promise()).resolve();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -157,7 +191,7 @@ class JsI18n {
|
|||||||
setLocale(locale) {
|
setLocale(locale) {
|
||||||
try {
|
try {
|
||||||
this.fetchLocale(locale).then(() => {
|
this.fetchLocale(locale).then(() => {
|
||||||
if(this.locale) {
|
if (this.locale) {
|
||||||
localStorage.setItem('language', this.locale);
|
localStorage.setItem('language', this.locale);
|
||||||
}
|
}
|
||||||
this.processPage();
|
this.processPage();
|
||||||
@ -179,11 +213,11 @@ class JsI18n {
|
|||||||
t(key) {
|
t(key) {
|
||||||
var translations = this.locales[this.locale];
|
var translations = this.locales[this.locale];
|
||||||
if (translations == undefined) {
|
if (translations == undefined) {
|
||||||
if(this.locales.length > 1) {
|
if (this.locales.length > 1) {
|
||||||
translations = this.locales[this.defaultLocale];
|
translations = this.locales[this.defaultLocale];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(translations != undefined) {
|
if (translations != undefined) {
|
||||||
let translation = key.toString().split('.').reduce((o, i) => (o ? o[i] : undefined), translations);
|
let translation = key.toString().split('.').reduce((o, i) => (o ? o[i] : undefined), translations);
|
||||||
if (typeof translation == "string") {
|
if (typeof translation == "string") {
|
||||||
return translation;
|
return translation;
|
||||||
|
9
src/scripts/keyboard-shortcuts.js
Normal file
9
src/scripts/keyboard-shortcuts.js
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
document.addEventListener("keydown", function (e) {
|
||||||
|
/*
|
||||||
|
CTRL + K : Focus on the user search
|
||||||
|
*/
|
||||||
|
if(e.ctrlKey && e.key == "k") {
|
||||||
|
document.querySelector('#general-search input[type="text"]').focus();
|
||||||
|
e.preventDefault();
|
||||||
|
}
|
||||||
|
});
|
@ -19,13 +19,27 @@ function closeRightMenu() {
|
|||||||
el.querySelector('.text-right').setAttribute('hidden', '');
|
el.querySelector('.text-right').setAttribute('hidden', '');
|
||||||
el.querySelector('.text-left').removeAttribute('hidden');
|
el.querySelector('.text-left').removeAttribute('hidden');
|
||||||
});
|
});
|
||||||
Array.from(rightMenu).forEach(el => el.removeAttribute("open"));
|
Array.from(rightMenu).forEach(el => {
|
||||||
|
el.removeAttribute("open");
|
||||||
|
el.classList.add('sm-hidden');
|
||||||
|
Array.from(el.parentElement.querySelectorAll('.jsMobileRightMenuButton')).forEach(ac => {
|
||||||
|
ac.classList.remove('icon-close');
|
||||||
|
ac.classList.add('icon-options-vertical');
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function openRightMenu() {
|
function openRightMenu() {
|
||||||
let rightMenu = document.querySelectorAll(".jsRightMenu");
|
let rightMenu = document.querySelectorAll(".jsRightMenu");
|
||||||
Array.from(rightMenu).forEach(el => el.setAttribute("open", ""));
|
Array.from(rightMenu).forEach(el => {
|
||||||
|
el.setAttribute("open", "");
|
||||||
|
el.classList.remove('sm-hidden');
|
||||||
|
Array.from(el.parentElement.querySelectorAll('.jsMobileRightMenuButton')).forEach(ac => {
|
||||||
|
ac.classList.remove('icon-options-vertical');
|
||||||
|
ac.classList.add('icon-close');
|
||||||
|
});
|
||||||
|
});
|
||||||
Array.from(document.querySelectorAll(".jsOffsiteToggle")).forEach(el => {
|
Array.from(document.querySelectorAll(".jsOffsiteToggle")).forEach(el => {
|
||||||
el.querySelector('.text-left').setAttribute('hidden', '');
|
el.querySelector('.text-left').setAttribute('hidden', '');
|
||||||
el.querySelector('.text-right').removeAttribute('hidden');
|
el.querySelector('.text-right').removeAttribute('hidden');
|
||||||
@ -35,6 +49,32 @@ function openRightMenu() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function closeRightMobileMenu() {
|
||||||
|
let rightMenu = document.querySelectorAll(".jsRightMenu");
|
||||||
|
if (Array.from(rightMenu).filter(el => el.hasAttribute("mobile-open")).length > 0) {
|
||||||
|
Array.from(rightMenu).forEach(el => {
|
||||||
|
el.removeAttribute("mobile-open");
|
||||||
|
el.classList.add('sm-hidden');
|
||||||
|
Array.from(el.parentElement.querySelectorAll('.jsMobileRightMenuButton')).forEach(ac => {
|
||||||
|
ac.classList.remove('icon-close');
|
||||||
|
ac.classList.add('icon-options-vertical');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function openRightMobileMenu() {
|
||||||
|
let rightMenu = document.querySelectorAll(".jsRightMenu");
|
||||||
|
Array.from(rightMenu).forEach(el => {
|
||||||
|
el.setAttribute("mobile-open", "");
|
||||||
|
el.classList.remove('sm-hidden');
|
||||||
|
Array.from(el.parentElement.querySelectorAll('.jsMobileRightMenuButton')).forEach(ac => {
|
||||||
|
ac.classList.remove('icon-options-vertical');
|
||||||
|
ac.classList.add('icon-close');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", function () {
|
document.addEventListener("DOMContentLoaded", function () {
|
||||||
const componentSet = new Set(window.hubl.components.map(c => c.type));
|
const componentSet = new Set(window.hubl.components.map(c => c.type));
|
||||||
|
|
||||||
@ -112,9 +152,11 @@ document.addEventListener("DOMContentLoaded", function () {
|
|||||||
closeLeftMenu();
|
closeLeftMenu();
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
!event.target.closest(".jsOffsiteToggle")
|
!event.target.closest(".jsOffsiteToggle") &&
|
||||||
|
!event.target.classList.contains('jsMobileRightMenuButton')
|
||||||
) {
|
) {
|
||||||
closeRightMenu();
|
closeRightMenu();
|
||||||
|
closeRightMobileMenu();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -125,6 +167,7 @@ document.addEventListener("DOMContentLoaded", function () {
|
|||||||
closeUserControls();
|
closeUserControls();
|
||||||
closeLeftMenu();
|
closeLeftMenu();
|
||||||
closeRightMenu();
|
closeRightMenu();
|
||||||
|
closeRightMobileMenu();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -152,10 +195,15 @@ document.addEventListener("DOMContentLoaded", function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
Array.from(document.querySelectorAll(".jsMobileSidebarOpenButton")).forEach(
|
|
||||||
|
Array.from(document.querySelectorAll(".jsMobileRightMenuButton")).forEach(
|
||||||
el => {
|
el => {
|
||||||
el.addEventListener("click", () => {
|
el.addEventListener("click", () => {
|
||||||
openRightMenu();
|
if (el.closest('.jsMobileContentSidebarControl').querySelector('nav.jsRightMenu').hasAttribute("mobile-open")) {
|
||||||
|
closeRightMobileMenu();
|
||||||
|
} else {
|
||||||
|
openRightMobileMenu();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
if ('serviceWorker' in navigator) {
|
|
||||||
var refreshing;
|
|
||||||
navigator.serviceWorker.addEventListener('controllerchange', () => {
|
|
||||||
if (refreshing) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
refreshing = true;
|
|
||||||
window.location.reload();
|
|
||||||
});
|
|
||||||
navigator.serviceWorker.register('/sw.js');
|
|
||||||
}
|
|
81
src/service-worker.js
Normal file
81
src/service-worker.js
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
importScripts('https://storage.googleapis.com/workbox-cdn/releases/6.1.1/workbox-sw.js');
|
||||||
|
|
||||||
|
workbox.precaching.precacheAndRoute([]);
|
||||||
|
|
||||||
|
addEventListener('message', (event) => {
|
||||||
|
if (event.data && event.data.type === 'SKIP_WAITING') {
|
||||||
|
skipWaiting();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
workbox.routing.registerRoute(
|
||||||
|
({url}) => url.origin === 'https://fonts.gstatic.com',
|
||||||
|
new workbox.strategies.CacheFirst({
|
||||||
|
cacheName: 'google-fonts-webfonts',
|
||||||
|
plugins: [
|
||||||
|
new workbox.cacheableResponse.CacheableResponsePlugin({
|
||||||
|
statuses: [0, 200],
|
||||||
|
}),
|
||||||
|
new workbox.expiration.ExpirationPlugin({
|
||||||
|
maxAgeSeconds: 60 * 60 * 24 * 365,
|
||||||
|
maxEntries: 30,
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
workbox.routing.registerRoute(
|
||||||
|
({url}) => [
|
||||||
|
'https://cdn.jsdelivr.net',
|
||||||
|
'https://unpkg.com',
|
||||||
|
'https://cdn.skypack.dev',
|
||||||
|
'https://jspm.dev',
|
||||||
|
'https://fonts.googleapis.com',
|
||||||
|
'https://cdn.startinblox.com'
|
||||||
|
].includes(url.origin),
|
||||||
|
new workbox.strategies.StaleWhileRevalidate({
|
||||||
|
cacheName: 'cdn',
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
workbox.routing.registerRoute(
|
||||||
|
({ request }) => request.destination === 'image',
|
||||||
|
new workbox.strategies.CacheFirst({
|
||||||
|
cacheName: 'images',
|
||||||
|
plugins: [
|
||||||
|
new workbox.cacheableResponse.CacheableResponsePlugin({
|
||||||
|
statuses: [200],
|
||||||
|
}),
|
||||||
|
new workbox.expiration.ExpirationPlugin({
|
||||||
|
maxEntries: 300,
|
||||||
|
maxAgeSeconds: 60 * 60 * 24 * 30,
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
workbox.routing.registerRoute(
|
||||||
|
({ request }) =>
|
||||||
|
request.destination === 'style' ||
|
||||||
|
request.destination === 'script',
|
||||||
|
new workbox.strategies.StaleWhileRevalidate({
|
||||||
|
cacheName: 'assets',
|
||||||
|
plugins: [
|
||||||
|
new workbox.cacheableResponse.CacheableResponsePlugin({
|
||||||
|
statuses: [200],
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
workbox.routing.registerRoute(
|
||||||
|
({ request }) => request.mode === 'navigate',
|
||||||
|
new workbox.strategies.NetworkFirst({
|
||||||
|
cacheName: 'pages',
|
||||||
|
plugins: [
|
||||||
|
new workbox.cacheableResponse.CacheableResponsePlugin({
|
||||||
|
statuses: [200],
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
}),
|
||||||
|
);
|
@ -1,5 +1,6 @@
|
|||||||
#admin-circles,
|
#admin-circles,
|
||||||
#admin-circles-leave {
|
#admin-circles-leave,
|
||||||
|
.communities-directory {
|
||||||
|
|
||||||
/* Fix on Join button in admin (circles + projects) */
|
/* Fix on Join button in admin (circles + projects) */
|
||||||
/* Styles on buttons and .children-link don't work because this input is inside too many elements. */
|
/* Styles on buttons and .children-link don't work because this input is inside too many elements. */
|
||||||
@ -57,10 +58,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.form.search-button :not(.add-member)+button[type=submit] {
|
.form.search-button :not(.add-member)+button[type=submit] {
|
||||||
background-color: #E9F2FF;
|
background-color: transparent;
|
||||||
border: none;
|
border: 1px solid var(--color-secondary);
|
||||||
color: var(--color-secondary);
|
color: var(--color-secondary);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: var(--color-secondary);
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
&:before {
|
&:before {
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
margin-right: 6px;
|
margin-right: 6px;
|
||||||
@ -75,7 +81,7 @@
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
font-variant: normal;
|
font-variant: normal;
|
||||||
text-transform: none;
|
text-transform: none;
|
||||||
line-height: 1em;
|
line-height: 13px;
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
}
|
}
|
||||||
@ -95,6 +101,7 @@
|
|||||||
.segment.hover:hover {
|
.segment.hover:hover {
|
||||||
box-shadow: 0 0 16px 0 rgba(46, 63, 88, 0.34);
|
box-shadow: 0 0 16px 0 rgba(46, 63, 88, 0.34);
|
||||||
bottom: 2px;
|
bottom: 2px;
|
||||||
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
hubl-admin-circle-name:hover {
|
hubl-admin-circle-name:hover {
|
||||||
@ -105,6 +112,40 @@
|
|||||||
height: 76px;
|
height: 76px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: block;
|
display: block;
|
||||||
|
|
||||||
|
div {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background-position: center;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: contain;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.community-profile solid-multiple {
|
||||||
|
|
||||||
|
[name="address_line1"]::before {
|
||||||
|
font-family: 'material-design-icons';
|
||||||
|
content: "\F34E";
|
||||||
|
position: relative;
|
||||||
|
top: 2px;
|
||||||
|
color: var(--color-third);
|
||||||
|
font-size: 20px;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
[name="address_line2"] {
|
||||||
|
display: block;
|
||||||
|
margin-left: 30px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
hubl-communities-profile-logo {
|
||||||
|
height: 155px;
|
||||||
|
width: 100%;
|
||||||
|
display: block;
|
||||||
|
|
||||||
div {
|
div {
|
||||||
display: block;
|
display: block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@ -121,6 +162,107 @@
|
|||||||
padding-bottom: 10px;
|
padding-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.communities-profile-picture {
|
||||||
|
|
||||||
|
>div:not(:empty) {
|
||||||
|
height: 200px;
|
||||||
|
|
||||||
|
div:first-child {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background-position: center;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: contain;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.communities-map {
|
||||||
|
|
||||||
|
.leaflet-popup-content-wrapper {
|
||||||
|
border-radius: 5px;
|
||||||
|
|
||||||
|
.leaflet-popup-content {
|
||||||
|
width: 340px !important;
|
||||||
|
margin: 0;
|
||||||
|
|
||||||
|
.description {
|
||||||
|
height: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-popup-close-button {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.edit-img {
|
||||||
|
|
||||||
|
input[type="file"] {
|
||||||
|
display: block;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
display: block;
|
||||||
|
margin-top: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.edit-logo {
|
||||||
|
|
||||||
|
img{
|
||||||
|
width: 280px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.edit-picture {
|
||||||
|
|
||||||
|
&>div {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
button {
|
||||||
|
margin-top: 10px;
|
||||||
|
color: #636363;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 19px;
|
||||||
|
font-size: 22px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.edit-address {
|
||||||
|
|
||||||
|
form {
|
||||||
|
display: table-row;
|
||||||
|
}
|
||||||
|
|
||||||
|
.segment.table-cell {
|
||||||
|
display: table-cell;
|
||||||
|
border-bottom: 1px solid #C9C8C8;
|
||||||
|
border-right: 1px solid #C9C8C8;
|
||||||
|
height: 60px;
|
||||||
|
padding: 10px;
|
||||||
|
vertical-align: middle;
|
||||||
|
width: 250px;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type='submit'] {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
|
|
||||||
.tabs {
|
.tabs {
|
||||||
@ -143,5 +285,66 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.community-profile-logo {
|
||||||
|
border-bottom: 1px solid #D6CECE;
|
||||||
|
}
|
||||||
|
|
||||||
|
hubl-communities-profile-logo {
|
||||||
|
height: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.communities-profile-picture {
|
||||||
|
|
||||||
|
>div:not(:empty) {
|
||||||
|
height: 180px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mobile-map-search-field {
|
||||||
|
position: fixed;
|
||||||
|
top: 70px;
|
||||||
|
z-index: 1000;
|
||||||
|
width: 97%;
|
||||||
|
|
||||||
|
button[type='submit'] {
|
||||||
|
background: var(--color-secondary) !important;
|
||||||
|
color: white !important;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: white !important;
|
||||||
|
color: var(--color-secondary) !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.communities-map {
|
||||||
|
height: calc(100vh - 50px) !important;
|
||||||
|
|
||||||
|
.leaflet-top.leaflet-left {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-popup-close-button {
|
||||||
|
display: block;
|
||||||
|
font-size: 20px;
|
||||||
|
margin-top: 5px;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.edit-img {
|
||||||
|
|
||||||
|
&.edit-logo {
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.flex {
|
||||||
|
display: flex;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,6 +2,10 @@ main {
|
|||||||
height: 100vh;
|
height: 100vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.no-background-image {
|
||||||
|
background-image: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
/* Styles of the right-hand menu + pages with that menu */
|
/* Styles of the right-hand menu + pages with that menu */
|
||||||
.with-sidebar {
|
.with-sidebar {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
@ -65,11 +69,28 @@ main {
|
|||||||
|
|
||||||
/* Styles use with JS to open/close the sidebar */
|
/* Styles use with JS to open/close the sidebar */
|
||||||
&.jsRightMenu {
|
&.jsRightMenu {
|
||||||
display: block;
|
@media (min-width: 768,01px) {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
position: fixed;
|
||||||
|
top: 99px;
|
||||||
|
right: 0;
|
||||||
|
height: auto;
|
||||||
|
z-index: 2999;
|
||||||
|
box-shadow: 0 4px 6px 0 rgba(0, 0, 0, 0.14);
|
||||||
|
}
|
||||||
|
|
||||||
solid-link[active] {
|
solid-link[active] {
|
||||||
color: white;
|
color: white;
|
||||||
background: var(--color-heading);
|
background: var(--color-heading);
|
||||||
|
|
||||||
|
>li {
|
||||||
|
border-bottom: 1px solid var(--color-heading);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
solid-link:not([active]):hover {
|
solid-link:not([active]):hover {
|
||||||
background: #e4e4e4;
|
background: #e4e4e4;
|
||||||
}
|
}
|
||||||
@ -79,30 +100,18 @@ main {
|
|||||||
@media (min-width: 768.01px) {
|
@media (min-width: 768.01px) {
|
||||||
transform: translate(152px);
|
transform: translate(152px);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Quick fix. When you got time, use animation on the span instead */
|
|
||||||
@media (max-width: 768px) {
|
|
||||||
ul>li:first-child>span,
|
|
||||||
ul>li:first-child>a {
|
|
||||||
visibility: hidden;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&.jsRightMenu[open] {
|
&.jsRightMenu[open] {
|
||||||
display: block;
|
display: block;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
|
|
||||||
@media(max-width: 768px) {
|
|
||||||
box-shadow: 0 2px 9px 0 rgba(0, 0, 0, 0.12);
|
|
||||||
min-width: 60%;
|
|
||||||
position: fixed;
|
|
||||||
top: 50px;
|
|
||||||
z-index: 3000;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.jsMobileRightMenuButton {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Add scrollbar to the left menu and to the content */
|
/* Add scrollbar to the left menu and to the content */
|
||||||
@ -118,7 +127,7 @@ main {
|
|||||||
height: 100vh;
|
height: 100vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Custom scrollbar of the left-menu*/
|
/* Custom scrollbar of the right-menu */
|
||||||
/* Works on Firefox*/
|
/* Works on Firefox*/
|
||||||
.scrollbar-nav {
|
.scrollbar-nav {
|
||||||
scrollbar-width: thin;
|
scrollbar-width: thin;
|
||||||
@ -142,9 +151,6 @@ main {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Custom scrollbar of the content */
|
/* Custom scrollbar of the content */
|
||||||
/* Works on Firefox */
|
/* Works on Firefox */
|
||||||
.scrollbar-content {
|
.scrollbar-content {
|
||||||
@ -168,6 +174,7 @@ main {
|
|||||||
border: 3px solid white; /* creates padding around scroll thumb */
|
border: 3px solid white; /* creates padding around scroll thumb */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* End scrollbar*/
|
||||||
|
|
||||||
|
|
||||||
solid-display-value-markdown {
|
solid-display-value-markdown {
|
||||||
|
@ -131,10 +131,10 @@ nav#main__menu {
|
|||||||
.menu-admin {
|
.menu-admin {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: 3016;
|
z-index: 3016;
|
||||||
left: 78px;
|
left: 15%;
|
||||||
top: 36px;
|
top: 36px;
|
||||||
text-align: end;
|
text-align: end;
|
||||||
width: 64%;
|
width: 80%;
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@ -242,6 +242,7 @@ nav#main__menu {
|
|||||||
|
|
||||||
solid-set-default[name="message"] {
|
solid-set-default[name="message"] {
|
||||||
margin-right: 9px;
|
margin-right: 9px;
|
||||||
|
width: 74%;
|
||||||
}
|
}
|
||||||
|
|
||||||
hubl-menu-contact-removed {
|
hubl-menu-contact-removed {
|
||||||
|
115
src/sw.js
115
src/sw.js
@ -1,115 +0,0 @@
|
|||||||
const CACHE_NAME = 'hubl-store-epm9475';
|
|
||||||
|
|
||||||
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();
|
|
||||||
});
|
|
||||||
|
|
||||||
if(process.env.NODE_ENV === 'production'){
|
|
||||||
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(requestURL.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));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
@ -1,4 +1,4 @@
|
|||||||
.with-sidebar.whitespace-normal.bg-color-white.only-on-admin(hidden)
|
.with-sidebar.jsMobileContentSidebarControl.whitespace-normal.bg-color-white.only-on-admin(hidden)
|
||||||
.scrollbar-content.views-container.sidebar-is-closed
|
.scrollbar-content.views-container.sidebar-is-closed
|
||||||
for component of components
|
for component of components
|
||||||
if component.route
|
if component.route
|
||||||
@ -57,10 +57,10 @@
|
|||||||
)
|
)
|
||||||
include partials/admin/page-admin-chat-create.pug
|
include partials/admin/page-admin-chat-create.pug
|
||||||
|
|
||||||
nav.jsRightMenu.text-disable-selection.sidebar.whitespace-normal(role='navigation')
|
nav.jsRightMenu.segment.sm-hidden.text-disable-selection.sidebar.whitespace-normal(role='navigation')
|
||||||
.segment.whitespace-normal.text-color-heading.text-bold
|
.segment.whitespace-normal.text-color-heading.text-bold
|
||||||
ul
|
ul
|
||||||
li.segment.full.padding-small.text-normal.jsOffsiteToggle
|
li.segment.full.sm-hidden.padding-small.text-normal.jsOffsiteToggle
|
||||||
span.icon.icon-arrow-left.icon-xsmall.margin-left-xxsmall.text-left
|
span.icon.icon-arrow-left.icon-xsmall.margin-left-xxsmall.text-left
|
||||||
span.segment.full.text-right(hidden)
|
span.segment.full.text-right(hidden)
|
||||||
span.icon.icon-arrow-right.icon-xsmall.margin-right-xxsmall
|
span.icon.icon-arrow-right.icon-xsmall.margin-right-xxsmall
|
||||||
|
@ -14,55 +14,37 @@
|
|||||||
no-render
|
no-render
|
||||||
)
|
)
|
||||||
include partials/circle/page-circle-profile.pug
|
include partials/circle/page-circle-profile.pug
|
||||||
//- Note:
|
if component.extensions
|
||||||
Instead of using flat events/resources or polls components, you
|
for extension of component.extensions
|
||||||
may you to expend the way circle work to handle events & cie.
|
if extension.type == 'events'
|
||||||
Like:
|
div(
|
||||||
{
|
id=`${extension.route}-events`
|
||||||
"type": "circles",
|
hidden
|
||||||
...
|
data-view=`${extension.route}-events`
|
||||||
"extensions": [
|
no-render
|
||||||
{
|
)
|
||||||
"type": "events",
|
include partials/circle/page-circle-events.pug
|
||||||
"endpoints": {...},
|
if extension.type == 'resources'
|
||||||
...
|
div(
|
||||||
}
|
id=`${extension.route}-resources`
|
||||||
]
|
hidden
|
||||||
}
|
data-view=`${extension.route}-resources`
|
||||||
-
|
no-render
|
||||||
let extensions = new Set();
|
)
|
||||||
if(component.extensions) {
|
include partials/circle/page-circle-resources.pug
|
||||||
extensions = new Set(component.extensions.map(c=>c.type));
|
if extension.type == 'polls'
|
||||||
}
|
div(
|
||||||
if extensions.has('events')
|
id=`${extension.route}-polls`
|
||||||
div(
|
hidden
|
||||||
id=`${component.route}-events`
|
data-view=`${extension.route}-polls`
|
||||||
hidden
|
no-render
|
||||||
data-view=`${component.route}-events`
|
)
|
||||||
no-render
|
include partials/circle/page-circle-polls.pug
|
||||||
)
|
|
||||||
include partials/circle/page-circle-events.pug
|
|
||||||
if extensions.has('resources')
|
|
||||||
div(
|
|
||||||
id=`${component.route}-resources`
|
|
||||||
hidden
|
|
||||||
data-view=`${component.route}-resources`
|
|
||||||
no-render
|
|
||||||
)
|
|
||||||
include partials/circle/page-circle-resources.pug
|
|
||||||
if extensions.has('polls')
|
|
||||||
div(
|
|
||||||
id=`${component.route}-polls`
|
|
||||||
hidden
|
|
||||||
data-view=`${component.route}-polls`
|
|
||||||
no-render
|
|
||||||
)
|
|
||||||
include partials/circle/page-circle-polls.pug
|
|
||||||
|
|
||||||
nav.jsRightMenu.text-disable-selection.sidebar.whitespace-normal(role='navigation')
|
nav.jsRightMenu.segment.sm-hidden.text-disable-selection.sidebar.whitespace-normal(role='navigation')
|
||||||
solid-router.segment.whitespace-normal.text-color-heading.text-bold(default-route=`${component.route}-chat`)
|
solid-router.segment.whitespace-normal.text-color-heading.text-bold(default-route=`${component.route}-chat`)
|
||||||
ul
|
ul
|
||||||
li.segment.full.padding-small.text-normal.jsOffsiteToggle
|
li.segment.full.sm-hidden.padding-small.text-normal.jsOffsiteToggle
|
||||||
span.icon.icon-arrow-left.icon-xsmall.margin-left-xxsmall.text-left
|
span.icon.icon-arrow-left.icon-xsmall.margin-left-xxsmall.text-left
|
||||||
span.segment.full.text-right(hidden)
|
span.segment.full.text-right(hidden)
|
||||||
span.icon.icon-arrow-right.icon-xsmall.margin-right-xxsmall
|
span.icon.icon-arrow-right.icon-xsmall.margin-right-xxsmall
|
||||||
@ -75,18 +57,20 @@ nav.jsRightMenu.text-disable-selection.sidebar.whitespace-normal(role='navigatio
|
|||||||
li.segment.full.padding-medium
|
li.segment.full.padding-medium
|
||||||
span.icon.ci-information.icon-xlarge.margin-right-medium
|
span.icon.ci-information.icon-xlarge.margin-right-medium
|
||||||
a(data-trans='circle.menuRight.information')
|
a(data-trans='circle.menuRight.information')
|
||||||
if extensions.has('resources')
|
if component.extensions
|
||||||
solid-route.segment.full(name=`${component.route}-resources` use-id)
|
for extension of component.extensions
|
||||||
li.segment.full.padding-medium
|
if extension.type == 'resources'
|
||||||
span.icon.ci-networking.icon-xlarge.margin-right-medium
|
solid-route.segment.full(name=`${extension.route}-resources` use-id)
|
||||||
a(data-trans='circle.menuRight.resources')
|
li.segment.full.padding-medium
|
||||||
if extensions.has('events')
|
span.icon.ci-file.icon-xlarge.margin-right-medium
|
||||||
solid-route.segment.full(name=`${component.route}-events` use-id)
|
a(data-trans='circle.menuRight.resources')
|
||||||
li.segment.full.padding-medium
|
if extension.type == 'events'
|
||||||
span.icon.ci-networking.icon-xlarge.margin-right-medium
|
solid-route.segment.full(name=`${extension.route}-events` use-id)
|
||||||
a(data-trans='circle.menuRight.events')
|
li.segment.full.padding-medium
|
||||||
if extensions.has('polls')
|
span.icon.ci-appointment.icon-xlarge.margin-right-medium
|
||||||
solid-route.segment.full(name=`${component.route}-polls` use-id)
|
a(data-trans='circle.menuRight.events')
|
||||||
li.segment.full.padding-medium
|
if extension.type == 'polls'
|
||||||
span.icon.ci-networking.icon-xlarge.margin-right-medium
|
solid-route.segment.full(name=`${extension.route}-polls` use-id)
|
||||||
a(data-trans='circle.menuRight.polls')
|
li.segment.full.padding-medium
|
||||||
|
span.icon.ci-list.icon-xlarge.margin-right-medium
|
||||||
|
a(data-trans='circle.menuRight.polls')
|
||||||
|
34
src/views/page-communities.pug
Normal file
34
src/views/page-communities.pug
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
div.communities-directory
|
||||||
|
solid-router(default-route=`${component.route}-directory` hidden)
|
||||||
|
solid-route(name=`${component.route}-directory`)
|
||||||
|
solid-route(name=`${component.route}-map`)
|
||||||
|
solid-route(name=`${component.route}-profile` use-id)
|
||||||
|
solid-route(name=`${component.route}-edit` use-id)
|
||||||
|
div(
|
||||||
|
id=`${component.route}-directory`
|
||||||
|
hidden
|
||||||
|
data-view=`${component.route}-directory`
|
||||||
|
no-render
|
||||||
|
)
|
||||||
|
include partials/communities/page-community-directory.pug
|
||||||
|
div(
|
||||||
|
id=`${component.route}-map`
|
||||||
|
hidden
|
||||||
|
data-view=`${component.route}-map`
|
||||||
|
no-render
|
||||||
|
)
|
||||||
|
include partials/communities/page-community-map.pug
|
||||||
|
div(
|
||||||
|
id=`${component.route}-profile`
|
||||||
|
hidden
|
||||||
|
data-view=`${component.route}-profile`
|
||||||
|
no-render
|
||||||
|
)
|
||||||
|
include partials/communities/page-community-profile.pug
|
||||||
|
div(
|
||||||
|
id=`${component.route}-edit`
|
||||||
|
hidden
|
||||||
|
data-view=`${component.route}-edit`
|
||||||
|
no-render
|
||||||
|
)
|
||||||
|
include partials/communities/page-community-edit.pug
|
@ -1,8 +1,8 @@
|
|||||||
.views-container
|
solid-poll(
|
||||||
solid-poll(
|
data-src=component.endpoints.get
|
||||||
data-src=`${component.endpoints.get}`
|
data-dest=component.endpoints.post
|
||||||
range-base-polls=`${component.endpoints.pollRangeBase}`
|
range-tags=component.endpoints.pollRangeTags
|
||||||
upload-dir=`${component.endpoints.uploads}`
|
range-circles=component.endpoints.pollRangeCircles
|
||||||
id-prefix='default'
|
upload-dir=component.endpoints.uploads
|
||||||
uniq=component.uniq
|
uniq=component.uniq
|
||||||
)
|
)
|
||||||
|
@ -21,11 +21,21 @@
|
|||||||
no-render
|
no-render
|
||||||
)
|
)
|
||||||
include partials/project/page-project-picture.pug
|
include partials/project/page-project-picture.pug
|
||||||
|
if component.extensions
|
||||||
|
for extension of component.extensions
|
||||||
|
if extension.type == 'invoices'
|
||||||
|
div(
|
||||||
|
id=`${extension.route}-invoices`
|
||||||
|
hidden
|
||||||
|
data-view=`${extension.route}-invoices`
|
||||||
|
no-render
|
||||||
|
)
|
||||||
|
include partials/project/page-project-invoices.pug
|
||||||
|
|
||||||
nav.jsRightMenu.text-disable-selection.sidebar.whitespace-normal(role='navigation')
|
nav.jsRightMenu.segment.sm-hidden.text-disable-selection.sidebar.whitespace-normal(role='navigation')
|
||||||
solid-router.segment.whitespace-normal.text-color-heading.text-bold(default-route=`${component.route}-chat`)
|
solid-router.segment.whitespace-normal.text-color-heading.text-bold(default-route=`${component.route}-chat`)
|
||||||
ul
|
ul
|
||||||
li.segment.full.padding-small.text-normal.jsOffsiteToggle
|
li.segment.full.sm-hidden.padding-small.text-normal.jsOffsiteToggle
|
||||||
span.icon.icon-arrow-left.icon-xsmall.margin-left-xxsmall.text-left
|
span.icon.icon-arrow-left.icon-xsmall.margin-left-xxsmall.text-left
|
||||||
span.segment.full.text-right(hidden)
|
span.segment.full.text-right(hidden)
|
||||||
span.icon.icon-arrow-right.icon-xsmall.margin-right-xxsmall
|
span.icon.icon-arrow-right.icon-xsmall.margin-right-xxsmall
|
||||||
@ -39,3 +49,10 @@ nav.jsRightMenu.text-disable-selection.sidebar.whitespace-normal(role='navigatio
|
|||||||
span.icon.ci-information.icon-xlarge.margin-right-medium
|
span.icon.ci-information.icon-xlarge.margin-right-medium
|
||||||
a(data-trans='project.menuRight.information')
|
a(data-trans='project.menuRight.information')
|
||||||
solid-route(name=`${component.route}-picture` use-id)
|
solid-route(name=`${component.route}-picture` use-id)
|
||||||
|
if component.extensions
|
||||||
|
for extension of component.extensions
|
||||||
|
if extension.type == 'invoices'
|
||||||
|
solid-route.segment.full(name=`${extension.route}-invoices` use-id)
|
||||||
|
li.segment.full.padding-medium
|
||||||
|
span.icon.ci-list.icon-xlarge.margin-right-medium
|
||||||
|
a(data-trans='circle.menuRight.invoices')
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
div.segment.full.padding-large.sm-padding-top-small.sm-padding-right-xsmall.sm-padding-bottom-small.sm-padding-left-xsmall.padding-large.border-bottom.border-color-grey
|
div.segment.full.padding-large.sm-padding-top-small.sm-padding-right-xsmall.sm-padding-bottom-small.sm-padding-left-xsmall.padding-large.border-bottom.border-color-grey
|
||||||
div.segment.half.sm-full
|
div.segment.full.sm-three-quarter
|
||||||
h2.margin-none.text-color-heading.text-uppercase.text-xlarge.text-letter-spacing-large(data-trans='communities.title')
|
h2.margin-none.text-color-heading.text-uppercase.text-xlarge.text-letter-spacing-large(data-trans='communities.title')
|
||||||
div.segment.half.sm-hidden.text-right
|
div.segment.half.sm-hidden.text-right
|
||||||
solid-link(class="backlink", next=`admin-${getRoute('chat', true)}` data-trans='circle.create.backlink')
|
solid-link(class="backlink", next=`admin-${getRoute('chat', true)}` data-trans='circle.create.backlink')
|
||||||
|
div.segment.lg-hidden.sm-quarter.text-right
|
||||||
|
div.jsMobileRightMenuButton.icon.icon-options-vertical.icon-heading
|
||||||
|
|
||||||
div.segment.full.padding-large.sm-padding-xsmall.sm-padding-top-medium.whitespace-normal
|
div.segment.full.padding-large.sm-padding-xsmall.sm-padding-top-medium.whitespace-normal
|
||||||
div#loader-users-title.loader.loader
|
div#loader-users-title.loader.loader
|
||||||
@ -11,12 +13,6 @@ div.segment.full.padding-large.sm-padding-xsmall.sm-padding-top-medium.whitespac
|
|||||||
div
|
div
|
||||||
div
|
div
|
||||||
|
|
||||||
div#loader-users-create.loader.loader-top
|
|
||||||
div
|
|
||||||
div
|
|
||||||
div
|
|
||||||
div
|
|
||||||
|
|
||||||
div.segment.margin-bottom-medium
|
div.segment.margin-bottom-medium
|
||||||
div.segment
|
div.segment
|
||||||
solid-display.text-color-heading.text-semibold.text-xlarge.text-letter-spacing-large(
|
solid-display.text-color-heading.text-semibold.text-xlarge.text-letter-spacing-large(
|
||||||
@ -27,6 +23,12 @@ div.segment.full.padding-large.sm-padding-xsmall.sm-padding-top-medium.whitespac
|
|||||||
loader-id='loader-users-title'
|
loader-id='loader-users-title'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
div#loader-users-create.loader.loader-top
|
||||||
|
div
|
||||||
|
div
|
||||||
|
div
|
||||||
|
div
|
||||||
|
|
||||||
solid-form.form#selected-community(
|
solid-form.form#selected-community(
|
||||||
bind-resources
|
bind-resources
|
||||||
nested-field='members'
|
nested-field='members'
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
div.segment.full.padding-large.sm-padding-top-small.sm-padding-right-xsmall.sm-padding-bottom-small.sm-padding-left-xsmall.border-bottom.border-color-grey.whitespace-normal
|
div.segment.full.padding-large.sm-padding-top-small.sm-padding-right-xsmall.sm-padding-bottom-small.sm-padding-left-xsmall.border-bottom.border-color-grey.whitespace-normal
|
||||||
h2.margin-none.text-color-heading.text-uppercase.text-xlarge.text-letter-spacing-large(data-trans='communities.title')
|
div.segment.full.sm-three-quarter
|
||||||
|
h2.margin-none.text-color-heading.text-uppercase.text-xlarge.text-letter-spacing-large(data-trans='communities.title')
|
||||||
|
div.segment.lg-hidden.sm-quarter.text-right
|
||||||
|
div.jsMobileRightMenuButton.icon.icon-options-vertical.icon-heading
|
||||||
|
|
||||||
div.segment.full.padding-large.sm-padding-xsmall.sm-padding-top-medium.whitespace-normal
|
div.segment.full.padding-large.sm-padding-xsmall.sm-padding-top-medium.whitespace-normal
|
||||||
|
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
div.segment.full.padding-large.sm-padding-top-small.sm-padding-right-xsmall.sm-padding-bottom-small.sm-padding-left-xsmall.border-bottom.border-color-grey
|
div.segment.full.padding-large.sm-padding-top-small.sm-padding-right-xsmall.sm-padding-bottom-small.sm-padding-left-xsmall.border-bottom.border-color-grey
|
||||||
div.segment.half.sm-full
|
div.segment.full.sm-three-quarter
|
||||||
h2.margin-none.text-color-heading.text-uppercase.text-xlarge.text-letter-spacing-large(data-trans='circle.create.title')
|
h2.margin-none.text-color-heading.text-uppercase.text-xlarge.text-letter-spacing-large(data-trans='circle.create.title')
|
||||||
div.segment.half.sm-hidden.text-right
|
div.segment.half.sm-hidden.text-right
|
||||||
solid-link(class="backlink", next=`admin-${getRoute('circles', true)}` data-trans='circle.create.backlink')
|
solid-link(class="backlink", next=`admin-${getRoute('circles', true)}` data-trans='circle.create.backlink')
|
||||||
|
div.segment.lg-hidden.sm-quarter.text-right
|
||||||
|
div.jsMobileRightMenuButton.icon.icon-options-vertical.icon-heading
|
||||||
|
|
||||||
div.segment.full.padding-large.sm-padding-xsmall.sm-padding-top-medium.whitespace-normal
|
div.segment.full.padding-large.sm-padding-xsmall.sm-padding-top-medium.whitespace-normal
|
||||||
div.loader.loader-top(id=`loader-admin-${getComponent('circles').uniq}`)
|
div.loader.loader-top(id=`loader-admin-${getComponent('circles').uniq}`)
|
||||||
@ -14,32 +16,34 @@ div.segment.full.padding-large.sm-padding-xsmall.sm-padding-top-medium.whitespac
|
|||||||
solid-form.form(
|
solid-form.form(
|
||||||
data-src=`${getComponent('circles').endpoints.post}`
|
data-src=`${getComponent('circles').endpoints.post}`
|
||||||
|
|
||||||
fields='status, community, name, subtitle, description, help'
|
fields='status, community.community, name, subtitle, description, help'
|
||||||
required-status
|
required-status
|
||||||
required-community
|
required-community.community
|
||||||
required-name
|
required-name
|
||||||
required-subtitle
|
required-subtitle
|
||||||
loader-id=`loader-admin-${getComponent('circles').uniq}`
|
loader-id=`loader-admin-${getComponent('circles').uniq}`
|
||||||
|
|
||||||
class-status='segment margin-bottom-medium half sm-full padding-right-small sm-padding-none text-small text-semibold text-uppercase text-color-heading whitespace-normal'
|
class-status='segment margin-bottom-medium half sm-full padding-right-small sm-padding-none text-small text-semibold text-uppercase text-color-heading whitespace-normal'
|
||||||
class-community='segment margin-bottom-medium half sm-full padding-left-small sm-padding-none text-small text-semibold text-uppercase text-color-heading whitespace-normal'
|
class-community.community='segment margin-bottom-medium half sm-full padding-left-small sm-padding-none text-small text-semibold text-uppercase text-color-heading whitespace-normal'
|
||||||
class-name='segment margin-bottom-medium half sm-full padding-right-small sm-padding-none text-small text-semibold text-uppercase text-color-heading'
|
class-name='segment margin-bottom-medium half sm-full padding-right-small sm-padding-none text-small text-semibold text-uppercase text-color-heading'
|
||||||
class-subtitle='segment margin-bottom-medium half sm-full padding-left-small sm-padding-none text-small text-semibold text-uppercase text-color-heading'
|
class-subtitle='segment margin-bottom-medium half sm-full padding-left-small sm-padding-none text-small text-semibold text-uppercase text-color-heading'
|
||||||
class-description='segment margin-bottom-xxsmall full text-small text-semibold text-uppercase text-color-heading'
|
class-description='segment margin-bottom-xxsmall full text-small text-semibold text-uppercase text-color-heading'
|
||||||
class-help='segment full text-small margin-bottom-medium padding-left-small'
|
class-help='segment full text-small margin-bottom-medium padding-left-small'
|
||||||
|
|
||||||
label-status=''
|
label-status=''
|
||||||
label-community=''
|
label-community.community=''
|
||||||
label-name=''
|
label-name=''
|
||||||
label-subtitle=''
|
label-subtitle=''
|
||||||
label-description=''
|
label-description=''
|
||||||
label-help=''
|
label-help=''
|
||||||
|
|
||||||
range-community='store://user.communities'
|
range-community.community='store://user.communities'
|
||||||
option-label-community="community.name"
|
option-label-community.community="community.name"
|
||||||
|
option-value-community.community="community"
|
||||||
|
|
||||||
widget-status='hubl-status'
|
widget-status='solid-form-dropdown-autocompletion-label'
|
||||||
widget-community='solid-form-dropdown-autocompletion-label'
|
enum-status=""
|
||||||
|
widget-community.community='solid-form-dropdown-autocompletion-label'
|
||||||
widget-linebreak='solid-form-hidden'
|
widget-linebreak='solid-form-hidden'
|
||||||
|
|
||||||
widget-description='solid-form-richtext-label'
|
widget-description='solid-form-richtext-label'
|
||||||
@ -50,5 +54,5 @@ div.segment.full.padding-large.sm-padding-xsmall.sm-padding-top-medium.whitespac
|
|||||||
submit-button=''
|
submit-button=''
|
||||||
submit-widget="button"
|
submit-widget="button"
|
||||||
|
|
||||||
data-trans='label-status=circle.create.labelStatus;label-community=circle.create.labelCommunity;label-name=circle.create.labelName;label-description=circle.create.labelDescription;submit-button=circle.create.buttonSubmit;label-subtitle=circle.create.labelSubtitle;label-help=circle.create.descriptionHelp'
|
data-trans='enum-status=hublStatus;label-status=circle.create.labelStatus;label-community.community=circle.create.labelCommunity;label-name=circle.create.labelName;label-description=circle.create.labelDescription;submit-button=circle.create.buttonSubmit;label-subtitle=circle.create.labelSubtitle;label-help=circle.create.descriptionHelp'
|
||||||
)
|
)
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
div.segment.full.padding-large.sm-padding-top-small.sm-padding-right-xsmall.sm-padding-bottom-small.sm-padding-left-xsmall.border-bottom.border-color-grey.whitespace-normal
|
div.segment.full.padding-large.sm-padding-top-small.sm-padding-right-xsmall.sm-padding-bottom-small.sm-padding-left-xsmall.border-bottom.border-color-grey.whitespace-normal
|
||||||
h2.margin-none.text-color-heading.text-uppercase.text-xlarge.text-letter-spacing-large(data-trans='circle.list.title')
|
div.segment.full.sm-three-quarter
|
||||||
|
h2.margin-none.text-color-heading.text-uppercase.text-xlarge.text-letter-spacing-large(data-trans='circle.list.title')
|
||||||
|
div.segment.lg-hidden.sm-quarter.text-right
|
||||||
|
div.jsMobileRightMenuButton.icon.icon-options-vertical.icon-heading
|
||||||
|
|
||||||
div.segment.full.padding-large.padding-top-medium.padding-bottom-xsmall.sm-padding-xsmall.sm-padding-top-xxsmall.whitespace-normal
|
div.segment.full.padding-large.padding-top-medium.padding-bottom-xsmall.sm-padding-xsmall.sm-padding-top-xxsmall.whitespace-normal
|
||||||
|
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
div.segment.full.padding-large.sm-padding-top-small.sm-padding-right-xsmall.sm-padding-bottom-small.sm-padding-left-xsmall.border-bottom.border-color-grey
|
div.segment.full.padding-large.sm-padding-top-small.sm-padding-right-xsmall.sm-padding-bottom-small.sm-padding-left-xsmall.border-bottom.border-color-grey
|
||||||
div.segment.half.sm-full
|
div.segment.full.sm-three-quarter
|
||||||
h2.margin-none.text-color-heading.text-uppercase.text-xlarge.text-letter-spacing-large(data-trans='project.create.title')
|
h2.margin-none.text-color-heading.text-uppercase.text-xlarge.text-letter-spacing-large(data-trans='project.create.title')
|
||||||
div.segment.half.sm-hidden.text-right
|
div.segment.half.sm-hidden.text-right
|
||||||
solid-link(class="backlink", next=`admin-${getRoute('projects', true)}` data-trans='project.create.backlink')
|
solid-link(class="backlink", next=`admin-${getRoute('projects', true)}` data-trans='project.create.backlink')
|
||||||
|
div.segment.lg-hidden.sm-quarter.text-right
|
||||||
|
div.jsMobileRightMenuButton.icon.icon-options-vertical.icon-heading
|
||||||
|
|
||||||
div.segment.full.padding-large.sm-padding-xsmall.sm-padding-top-medium.whitespace-normal
|
div.segment.full.padding-large.sm-padding-xsmall.sm-padding-top-medium.whitespace-normal
|
||||||
div.loader.loader-top(id=`loader-admin-${getComponent('projects').uniq}`)
|
div.loader.loader-top(id=`loader-admin-${getComponent('projects').uniq}`)
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
div.segment.full.padding-large.sm-padding-top-small.sm-padding-right-xsmall.sm-padding-bottom-small.sm-padding-left-xsmall.border-bottom.border-color-grey.whitespace-normal
|
div.segment.full.padding-large.sm-padding-top-small.sm-padding-right-xsmall.sm-padding-bottom-small.sm-padding-left-xsmall.border-bottom.border-color-grey.whitespace-normal
|
||||||
h2.margin-none.text-color-heading.text-uppercase.text-xlarge.text-letter-spacing-large(data-trans='project.list.title')
|
div.segment.full.sm-three-quarter
|
||||||
|
h2.margin-none.text-color-heading.text-uppercase.text-xlarge.text-letter-spacing-large(data-trans='project.list.title')
|
||||||
|
div.segment.lg-hidden.sm-quarter.text-right
|
||||||
|
div.jsMobileRightMenuButton.icon.icon-options-vertical.icon-heading
|
||||||
|
|
||||||
div.segment.full.padding-large.sm-padding-xsmall.sm-padding-top-medium.whitespace-normal
|
div.segment.full.padding-large.sm-padding-xsmall.sm-padding-top-medium.whitespace-normal
|
||||||
|
|
||||||
|
@ -1,13 +1,16 @@
|
|||||||
div.segment.full.padding-large.sm-padding-top-small.sm-padding-right-xsmall.sm-padding-bottom-small.sm-padding-left-xsmall.border-bottom.border-color-grey.whitespace-normal
|
div.segment.full.padding-large.sm-padding-top-small.sm-padding-right-xsmall.sm-padding-bottom-small.sm-padding-left-xsmall.border-bottom.border-color-grey.whitespace-normal
|
||||||
solid-display.text-xxlarge.text-letter-spacing-large(
|
div.segment.full.sm-three-quarter.whitespace-normal
|
||||||
bind-resources
|
solid-display.text-xlarge.text-letter-spacing-large(
|
||||||
fields='name, dash, subtitle'
|
bind-resources
|
||||||
|
fields='name, dash, subtitle'
|
||||||
|
|
||||||
value-dash=' - '
|
value-dash=' - '
|
||||||
|
|
||||||
class-name='text-color-heading text-bold'
|
class-name='text-color-heading text-bold'
|
||||||
class-dash='text-color-heading text-bold'
|
class-dash='text-color-heading text-bold'
|
||||||
)
|
)
|
||||||
|
div.segment.lg-hidden.sm-quarter.text-right
|
||||||
|
div.jsMobileRightMenuButton.icon.icon-options-vertical.icon-heading
|
||||||
|
|
||||||
.chat-view.segment.full.whitespace-normal
|
.chat-view.segment.full.whitespace-normal
|
||||||
solid-xmpp-chat(
|
solid-xmpp-chat(
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
solid-ac-checker(permission='acl:Read', bind-resources)
|
solid-ac-checker(permission='acl:Read', bind-resources)
|
||||||
div.segment.full.padding-large.border-bottom.border-color-grey
|
div.segment.full.padding-large.border-bottom.border-color-grey
|
||||||
div.segment.half.sm-full
|
div.segment.half.sm-three-quarter.whitespace-normal
|
||||||
solid-display.text-xxlarge.text-letter-spacing-large(
|
solid-display.text-xlarge.text-letter-spacing-large(
|
||||||
bind-resources
|
bind-resources
|
||||||
fields='name, dash, subtitle'
|
fields='name, dash, subtitle'
|
||||||
|
|
||||||
@ -12,6 +12,8 @@ solid-ac-checker(permission='acl:Read', bind-resources)
|
|||||||
)
|
)
|
||||||
div.segment.half.sm-hidden.text-right
|
div.segment.half.sm-hidden.text-right
|
||||||
solid-link(class="backlink", bind-resources, next=`${component.route}-profile` data-trans='circle.edit.backlink')
|
solid-link(class="backlink", bind-resources, next=`${component.route}-profile` data-trans='circle.edit.backlink')
|
||||||
|
div.segment.lg-hidden.sm-quarter.text-right
|
||||||
|
div.jsMobileRightMenuButton.icon.icon-options-vertical.icon-heading
|
||||||
|
|
||||||
div.segment.full.padding-large.whitespace-normal
|
div.segment.full.padding-large.whitespace-normal
|
||||||
|
|
||||||
@ -25,12 +27,12 @@ div.segment.full.padding-large.whitespace-normal
|
|||||||
solid-form.form(
|
solid-form.form(
|
||||||
bind-resources
|
bind-resources
|
||||||
|
|
||||||
fields='name, subtitle, description, status, community, owner'
|
fields='name, subtitle, description, status, community.community, owner'
|
||||||
required-status
|
required-status
|
||||||
required-name
|
required-name
|
||||||
required-owner
|
required-owner
|
||||||
required-subtitle
|
required-subtitle
|
||||||
required-community
|
required-community.community
|
||||||
range-owner=`${component.endpoints.owners}`
|
range-owner=`${component.endpoints.owners}`
|
||||||
|
|
||||||
label-name=''
|
label-name=''
|
||||||
@ -38,25 +40,27 @@ div.segment.full.padding-large.whitespace-normal
|
|||||||
label-description=''
|
label-description=''
|
||||||
label-subtitle=''
|
label-subtitle=''
|
||||||
label-status=''
|
label-status=''
|
||||||
label-community=''
|
label-community.community=''
|
||||||
label-help=''
|
label-help=''
|
||||||
|
|
||||||
class-name='segment margin-bottom-medium half sm-full padding-right-small sm-padding-none text-small text-semibold text-uppercase text-color-heading'
|
class-name='segment margin-bottom-medium half sm-full padding-right-small sm-padding-none text-small text-semibold text-uppercase text-color-heading'
|
||||||
class-subtitle='segment margin-bottom-medium half sm-full padding-left-small sm-padding-none text-small text-semibold text-uppercase text-color-heading'
|
class-subtitle='segment margin-bottom-medium half sm-full padding-left-small sm-padding-none text-small text-semibold text-uppercase text-color-heading'
|
||||||
class-description='segment margin-bottom-medium full text-small text-semibold text-uppercase text-color-heading'
|
class-description='segment margin-bottom-medium full text-small text-semibold text-uppercase text-color-heading'
|
||||||
class-status='segment margin-bottom-medium half sm-full padding-right-small sm-padding-none text-small text-semibold text-uppercase text-color-heading whitespace-normal'
|
class-status='segment margin-bottom-medium half sm-full padding-right-small sm-padding-none text-small text-semibold text-uppercase text-color-heading whitespace-normal'
|
||||||
class-community='segment margin-bottom-medium half sm-full padding-left-small sm-padding-none text-small text-semibold text-uppercase text-color-heading whitespace-normal'
|
class-community.community='segment margin-bottom-medium half sm-full padding-left-small sm-padding-none text-small text-semibold text-uppercase text-color-heading whitespace-normal'
|
||||||
class-owner='hidden'
|
class-owner='hidden'
|
||||||
class-help='segment full text-small margin-bottom-medium padding-left-small'
|
class-help='segment full text-small margin-bottom-medium padding-left-small'
|
||||||
|
|
||||||
widget-status='hubl-status'
|
widget-status='solid-form-dropdown-autocompletion-label'
|
||||||
|
enum-status=""
|
||||||
widget-description='solid-form-richtext-label'
|
widget-description='solid-form-richtext-label'
|
||||||
widget-help='solid-form-hidden-label'
|
widget-help='solid-form-hidden-label'
|
||||||
widget-community='solid-form-dropdown-autocompletion-label'
|
widget-community.community='solid-form-dropdown-autocompletion-label'
|
||||||
widget-owner='solid-form-dropdown-autocompletion-label'
|
widget-owner='solid-form-dropdown-autocompletion-label'
|
||||||
|
|
||||||
range-community='store://user.communities'
|
range-community.community='store://user.communities'
|
||||||
option-label-community="community.name"
|
option-label-community.community="community.name"
|
||||||
|
option-value-community.community="community"
|
||||||
|
|
||||||
partial=''
|
partial=''
|
||||||
|
|
||||||
@ -64,7 +68,7 @@ div.segment.full.padding-large.whitespace-normal
|
|||||||
submit-widget="button"
|
submit-widget="button"
|
||||||
next=`${component.route}-information`
|
next=`${component.route}-information`
|
||||||
|
|
||||||
data-trans='label-status=circle.edit.labelStatus;label-community=circle.edit.labelCommunity;label-name=circle.edit.labelName;label-owner=circle.edit.labelOwner;label-description=circle.edit.labelDescription;submit-button=circle.edit.buttonSubmit;label-subtitle=circle.edit.labelSubtitle;label-help=circle.edit.descriptionHelp'
|
data-trans='enum-status=hublStatus;label-status=circle.edit.labelStatus;label-community.community=circle.edit.labelCommunity;label-name=circle.edit.labelName;label-owner=circle.edit.labelOwner;label-description=circle.edit.labelDescription;submit-button=circle.edit.buttonSubmit;label-subtitle=circle.edit.labelSubtitle;label-help=circle.edit.descriptionHelp'
|
||||||
)
|
)
|
||||||
|
|
||||||
h3.segment.full.padding-bottom-small.border-bottom.border-color-grey.text-color-heading.text-bold.text-letter-spacing-large(data-trans='circle.edit.subTitle')
|
h3.segment.full.padding-bottom-small.border-bottom.border-color-grey.text-color-heading.text-bold.text-letter-spacing-large(data-trans='circle.edit.subTitle')
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
solid-event(
|
solid-event(
|
||||||
class='w700'
|
|
||||||
bind-resources
|
bind-resources
|
||||||
nested-field="events"
|
nested-field="events"
|
||||||
range-event-type=`${component.extensions.find(c => c.type=='events').endpoints.typeevents}`
|
range-event-type=`${extension.endpoints.typeevents}`
|
||||||
range-event-circle=`${component.endpoints.get}/`
|
range-event-circle=`${getComponent('circles').endpoints.get}/`
|
||||||
upload-dir=`${component.extensions.find(c => c.type=='events').endpoints.uploads}`
|
upload-dir=`${extension.endpoints.uploads}`
|
||||||
id-prefix=`${component.route}`
|
id-prefix='default'
|
||||||
uniq=component.uniq
|
uniq=extension.uniq
|
||||||
)
|
)
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
solid-poll(
|
solid-poll(
|
||||||
class='w700'
|
|
||||||
id-prefix='circles'
|
|
||||||
bind-resources
|
bind-resources
|
||||||
nested-field="polls"
|
nested-field="polls"
|
||||||
range-base-polls=`${component.get('polls').endpoints.pollRangeBase}`
|
data-dest=extension.endpoints.post
|
||||||
upload-dir=`${component.get('polls').endpoints.uploads}`
|
range-tags=extension.endpoints.pollRangeTags
|
||||||
uniq=component.uniq
|
range-circles=extension.endpoints.pollRangeCircles
|
||||||
|
upload-dir=extension.endpoints.uploads
|
||||||
|
uniq=extension.uniq
|
||||||
)
|
)
|
@ -9,15 +9,18 @@ div(
|
|||||||
)
|
)
|
||||||
solid-ac-checker.segment.block(permission='acl:Read', bind-resources)
|
solid-ac-checker.segment.block(permission='acl:Read', bind-resources)
|
||||||
div.segment.full.padding-large.sm-padding-top-small.sm-padding-right-xsmall.sm-padding-bottom-small.sm-padding-left-xsmall.border-bottom.border-color-grey.whitespace-normal
|
div.segment.full.padding-large.sm-padding-top-small.sm-padding-right-xsmall.sm-padding-bottom-small.sm-padding-left-xsmall.border-bottom.border-color-grey.whitespace-normal
|
||||||
solid-display.text-xxlarge.text-letter-spacing-large(
|
div.segment.full.sm-three-quarter.whitespace-normal
|
||||||
bind-resources
|
solid-display.text-xlarge.text-letter-spacing-large(
|
||||||
fields='name, dash, subtitle'
|
bind-resources
|
||||||
|
fields='name, dash, subtitle'
|
||||||
|
|
||||||
value-dash=' - '
|
value-dash=' - '
|
||||||
|
|
||||||
class-name='text-color-heading text-bold'
|
class-name='text-color-heading text-bold'
|
||||||
class-dash='text-color-heading text-bold'
|
class-dash='text-color-heading text-bold'
|
||||||
)
|
)
|
||||||
|
div.segment.lg-hidden.sm-quarter.text-right
|
||||||
|
div.jsMobileRightMenuButton.icon.icon-options-vertical.icon-heading
|
||||||
|
|
||||||
div.segment.full.padding-large.sm-padding-xsmall.sm-padding-top-xlarge
|
div.segment.full.padding-large.sm-padding-xsmall.sm-padding-top-xlarge
|
||||||
div.loader(id=`loader-${component.route}-profile-1`)
|
div.loader(id=`loader-${component.route}-profile-1`)
|
||||||
|
@ -1,10 +1,15 @@
|
|||||||
solid-resource(
|
solid-resource(
|
||||||
class='w700'
|
|
||||||
bind-resources
|
bind-resources
|
||||||
nested-field="resources"
|
nested-field="resources"
|
||||||
range-resource-type=`${component.extensions.find(c => c.type=='resources').endpoints.resourcestypes}`
|
post-data-src=`${extension.endpoints.post}`
|
||||||
range-resource-keyword=`${component.extensions.find(c => c.type=='resources').endpoints.resourceskeywords}`
|
range-resource-type=`${extension.endpoints.types}`
|
||||||
range-resource-circle=`${component.endpoints.get}/`
|
post-data-type-src=`${extension.endpoints.postTypes}`
|
||||||
upload-dir=`${component.extensions.find(c => c.type=='resources').endpoints.uploads}`
|
range-resource-keyword=`${extension.endpoints.keywords}`
|
||||||
id-prefix='circles'
|
post-data-keyword-src=`${extension.endpoints.postKeywords}`
|
||||||
|
range-resource-circle=`${getComponent('circles').endpoints.get}/`
|
||||||
|
associated-circle-label=""
|
||||||
|
data-trans=`associated-circle-label=${extension.parameters && extension.parameters.associatedName ? extension.parameters.associatedName : 'circle.extensions.associated'}`
|
||||||
|
upload-dir=`${extension.endpoints.uploads}`
|
||||||
|
id-prefix='default'
|
||||||
|
uniq=extension.uniq
|
||||||
)
|
)
|
||||||
|
46
src/views/partials/communities/page-community-directory.pug
Normal file
46
src/views/partials/communities/page-community-directory.pug
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
.padding-small.sm-padding-none.sm-padding-top-medium.sm-padding-bottom-medium
|
||||||
|
h2.margin-top-xxsmall.margin-left-xsmall.margin-bottom-medium.sm-margin-none.sm-margin-right-xsmall.sm-margin-bottom-small.sm-margin-left-xsmall.text-xlarge.text-bold.text-color-heading.text-uppercase(data-trans='communities.list.title')
|
||||||
|
|
||||||
|
div.padding-top-xxsmall.margin-left-xsmall.margin-right-xsmall.sm-padding-none.sm-margin-none.sm-margin-right-xsmall.sm-margin-left-xsmall
|
||||||
|
div.segment.quarter.sm-full
|
||||||
|
solid-form-search.form.search-form.search-button(
|
||||||
|
id=`communities-filter`
|
||||||
|
fields='name'
|
||||||
|
placeholder-name=''
|
||||||
|
widget-name='solid-form-placeholder-text'
|
||||||
|
class-name="segment margin-bottom-medium sm-margin-bottom-none three-quarter sm-full padding-right-small sm-padding-none text-small input-bg-white children-shadow"
|
||||||
|
submit-button=""
|
||||||
|
submit-widget="button"
|
||||||
|
data-trans='placeholder-name=communities.list.searchBy;submit-button=communities.list.searchButton'
|
||||||
|
)
|
||||||
|
div.segment.three-quarter.sm-full.text-right
|
||||||
|
solid-link.segment.children-link-rounded.children-icon-map.children-link-reversed.color-secondary.bordered(next=`${component.route}-map`)
|
||||||
|
span
|
||||||
|
|
||||||
|
div.segment.full.padding-top-xsmall.sm-padding-xsmall.whitespace-normal
|
||||||
|
div.loader(id=`loader-${component.route}-directory`)
|
||||||
|
div
|
||||||
|
div
|
||||||
|
div
|
||||||
|
div
|
||||||
|
solid-display(
|
||||||
|
class='segment full children children-quarter sm-children-full children-margin-bottom-medium sm-children-margin-bottom-xsmall children-padding-right-xsmall children-padding-left-xsmall sm-children-padding-none sm-whitespace-normal masonry pagination text-disable-selection'
|
||||||
|
data-src=`${component.endpoints.get}`
|
||||||
|
loader-id=`loader-${component.route}-directory`
|
||||||
|
fields='segment1(segment2(logo), segment3(name, profile.shortDescription, counter))'
|
||||||
|
filtered-by=`communities-filter`
|
||||||
|
order-by='name'
|
||||||
|
paginate-by='20'
|
||||||
|
|
||||||
|
class-segment1='segment hover bg-color-white shadow border-rounded-xxsmall full text-top whitespace-normal'
|
||||||
|
class-segment2='segment block padding-xlarge text-center'
|
||||||
|
class-segment3='segment full padding-xlarge sm-padding-medium border-top border-color-grey text-center whitespace-normal'
|
||||||
|
class-name='segment block one-line-ellipsis text-xlarge text-bold text-color-heading margin-bottom-xsmall'
|
||||||
|
class-profile.shortDescription='segment two-lines-ellipsis margin-bottom-xlarge sm-margin-bottom-medium whitespace-normal circle-subtitle-custom'
|
||||||
|
class-counter='segment block whitespace-normal'
|
||||||
|
|
||||||
|
widget-logo='hubl-admin-community-logo'
|
||||||
|
action-counter="counter"
|
||||||
|
widget-counter='hubl-communities-counter-alternate'
|
||||||
|
next=`${component.route}-profile`
|
||||||
|
)
|
162
src/views/partials/communities/page-community-edit.pug
Normal file
162
src/views/partials/communities/page-community-edit.pug
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
div.bg-color-white
|
||||||
|
solid-ac-checker(permission="acl:Read", bind-resources)
|
||||||
|
div.segment.full.padding-large.border-bottom.border-color-grey
|
||||||
|
div.segment.half.sm-full
|
||||||
|
solid-display.text-color-heading.text-bold.text-xxlarge.text-letter-spacing-large(
|
||||||
|
bind-resources
|
||||||
|
fields="name"
|
||||||
|
)
|
||||||
|
div.segment.half.sm-hidden.text-right
|
||||||
|
solid-link(class="backlink", bind-resources, next=`${component.route}-profile` data-trans="communities.back")
|
||||||
|
|
||||||
|
div.segment.full.padding-large.whitespace-normal
|
||||||
|
|
||||||
|
solid-ac-checker(permission="acl:Write", bind-resources)
|
||||||
|
div.loader.loader-top(id=`loader-${component.route}-edit`)
|
||||||
|
div
|
||||||
|
div
|
||||||
|
div
|
||||||
|
div
|
||||||
|
|
||||||
|
solid-form.form(
|
||||||
|
bind-resources
|
||||||
|
loader-id=`loader-${component.route}-edit`
|
||||||
|
|
||||||
|
fields="profile.shortDescription, profile.description, segment(logo), profile.website, profile.email, profile.phone, profile.tweeter, profile.facebook, profile.linkedin, segment1(profile.instagram)"
|
||||||
|
|
||||||
|
label-profile.shortDescription=""
|
||||||
|
label-profile.description=""
|
||||||
|
label-logo=""
|
||||||
|
label-profile.website=""
|
||||||
|
label-profile.email=""
|
||||||
|
label-profile.phone=""
|
||||||
|
label-profile.tweeter=""
|
||||||
|
label-profile.facebook=""
|
||||||
|
label-profile.linkedin=""
|
||||||
|
label-profile.instagram=""
|
||||||
|
|
||||||
|
class-profile.shortDescription="segment margin-bottom-medium full text-small text-semibold text-uppercase text-color-heading"
|
||||||
|
class-profile.description="segment margin-bottom-medium full text-small text-semibold text-uppercase text-color-heading"
|
||||||
|
|
||||||
|
class-segment="segment full"
|
||||||
|
class-logo="edit-img edit-logo segment margin-bottom-medium full sm-padding-none text-small text-semibold text-uppercase text-color-heading"
|
||||||
|
class-profile.website="segment margin-bottom-medium third sm-full padding-right-small sm-padding-none"
|
||||||
|
class-profile.email="segment margin-bottom-medium third sm-full padding-right-small padding-left-small sm-padding-none"
|
||||||
|
class-profile.phone="segment margin-bottom-medium third sm-full padding-left-small sm-padding-none text-small text-semibold text-uppercase text-color-heading"
|
||||||
|
|
||||||
|
class-profile.tweeter="segment margin-bottom-medium third sm-full padding-right-small sm-padding-none text-small text-semibold text-uppercase text-color-heading"
|
||||||
|
class-profile.facebook="segment margin-bottom-medium third sm-full padding-right-small padding-left-small sm-padding-none text-small text-semibold text-uppercase text-color-heading"
|
||||||
|
class-profile.linkedin="segment margin-bottom-medium third sm-full padding-left-small sm-padding-none text-small text-semibold text-uppercase text-color-heading"
|
||||||
|
class-segment1="segment full"
|
||||||
|
class-profile.instagram="segment margin-bottom-medium third sm-full padding-right-small sm-padding-none text-small text-semibold text-uppercase text-color-heading"
|
||||||
|
|
||||||
|
widget-profile.description="solid-form-richtext-label"
|
||||||
|
widget-profile.email="hubl-communities-edit-email"
|
||||||
|
widget-profile.website="hubl-communities-edit-website"
|
||||||
|
upload-url-logo=component.endpoints.uploads
|
||||||
|
widget-logo="solid-form-image-label"
|
||||||
|
|
||||||
|
submit-button=""
|
||||||
|
submit-widget="button"
|
||||||
|
|
||||||
|
data-trans="label-logo=communities.edit.labelLogo;label-profile.shortDescription=communities.edit.labelShortDescription;label-profile.description=communities.edit.labelDescription;label-profile.phone=communities.edit.labelPhone;label-profile.tweeter=communities.edit.labelTwitter;label-profile.facebook=communities.edit.labelFacebook;label-profile.linkedin=communities.edit.labelLinkedin;label-profile.instagram=communities.edit.labelInstagram;submit-button=communities.edit.buttonSubmit"
|
||||||
|
)
|
||||||
|
|
||||||
|
h3.segment.full.padding-bottom-small.border-bottom.border-color-grey.text-color-heading.text-bold.text-letter-spacing-large(data-trans="communities.edit.subTitle")
|
||||||
|
|
||||||
|
solid-form.form(
|
||||||
|
bind-resources
|
||||||
|
|
||||||
|
fields="profile.picture1, profile.picture2, profile.picture3"
|
||||||
|
|
||||||
|
upload-url-profile.picture1=component.endpoints.uploads
|
||||||
|
upload-url-profile.picture2=component.endpoints.uploads
|
||||||
|
upload-url-profile.picture3=component.endpoints.uploads
|
||||||
|
|
||||||
|
widget-profile.picture1="solid-form-image-label"
|
||||||
|
widget-profile.picture2="solid-form-image-label"
|
||||||
|
widget-profile.picture3="solid-form-image-label"
|
||||||
|
|
||||||
|
label-profile.picture1=""
|
||||||
|
label-profile.picture2=""
|
||||||
|
label-profile.picture3=""
|
||||||
|
|
||||||
|
class-profile.picture1="edit-img edit-picture segment margin-bottom-medium third sm-full padding-right-small sm-padding-none text-small text-semibold text-uppercase text-color-heading text-top"
|
||||||
|
class-profile.picture2="edit-img edit-picture segment margin-bottom-medium third sm-full padding-right-small padding-left-small sm-padding-none text-small text-semibold text-uppercase text-color-heading text-top"
|
||||||
|
class-profile.picture3="edit-img edit-picture segment margin-bottom-medium third sm-full padding-left-small sm-padding-none text-small text-semibold text-uppercase text-color-heading text-top"
|
||||||
|
|
||||||
|
submit-button=""
|
||||||
|
submit-widget="button"
|
||||||
|
|
||||||
|
data-trans="label-profile.picture1=communities.edit.labelPicture1;label-profile.picture2=communities.edit.labelPicture2;label-profile.picture3=communities.edit.labelPicture3;submit-button=communities.edit.buttonSubmit"
|
||||||
|
)
|
||||||
|
|
||||||
|
h3.segment.full.padding-bottom-small.border-bottom.border-color-grey.text-color-heading.text-bold.text-letter-spacing-large(data-trans="communities.edit.subTitle1")
|
||||||
|
|
||||||
|
solid-widget(name=`hubl-communities-edit-delete-button`)
|
||||||
|
template
|
||||||
|
solid-delete(
|
||||||
|
class='segment text-xsmall children-link-button children-link-text-bold children-link-text-uppercase children-link-color-secondary bordered'
|
||||||
|
data-src="${src}"
|
||||||
|
data-label=''
|
||||||
|
data-trans=''
|
||||||
|
)
|
||||||
|
|
||||||
|
.segment.table-wrapper.margin-top-medium
|
||||||
|
.table
|
||||||
|
div.table-header.bg-color-third.text-color-heading
|
||||||
|
div.segment.table-cell.third(data-trans='communities.edit.tableHeader1')
|
||||||
|
div.segment.table-cell.third(data-trans='communities.edit.tableHeader2')
|
||||||
|
div.segment.table-cell.third
|
||||||
|
|
||||||
|
solid-display(
|
||||||
|
class='table-body'
|
||||||
|
bind-resources
|
||||||
|
nested-field='addresses'
|
||||||
|
fields='segment1(address_line1), segment2(address_line2), remove'
|
||||||
|
loader-id=`loader-${component.route}-edit`
|
||||||
|
|
||||||
|
class-segment1='segment table-cell third'
|
||||||
|
class-segment2='segment table-cell third'
|
||||||
|
class-remove='segment table-cell third text-center'
|
||||||
|
|
||||||
|
class-address_line1='text-small text-semibold'
|
||||||
|
class-address_line2='text-small text-semibold'
|
||||||
|
|
||||||
|
multiple-addresses
|
||||||
|
multiple-addresses-fields="address_line1, address_line2"
|
||||||
|
|
||||||
|
action-remove='remove'
|
||||||
|
widget-remove='hubl-circle-edit-members-delete'
|
||||||
|
)
|
||||||
|
|
||||||
|
solid-form.form.table-body.edit-address(
|
||||||
|
bind-resources
|
||||||
|
nested-field="addresses"
|
||||||
|
fields="segment1(address_line1), segment2(address_line2), lat, lng, segment3(addButton)"
|
||||||
|
|
||||||
|
placeholder-address_line1=""
|
||||||
|
placeholder-address_line2=""
|
||||||
|
|
||||||
|
class-segment1='segment table-cell third'
|
||||||
|
class-segment2='segment table-cell third'
|
||||||
|
class-segment3='segment table-cell third text-center'
|
||||||
|
|
||||||
|
class-address_line1="segment full text-small"
|
||||||
|
class-address_line2="segment full text-small"
|
||||||
|
|
||||||
|
class-lat="hidden"
|
||||||
|
class-lng="hidden"
|
||||||
|
|
||||||
|
widget-community="solid-form-hidden"
|
||||||
|
widget-address_line1="solid-form-placeholder-text"
|
||||||
|
widget-address_line2="solid-form-placeholder-text"
|
||||||
|
widget-lat="solid-form-hidden"
|
||||||
|
widget-lng="solid-form-hidden"
|
||||||
|
widget-addButton=`hubl-communities-edit-add-button`
|
||||||
|
|
||||||
|
data-trans="placeholder-address_line1=communities.edit.labelAddressLine1;placeholder-address_line2=communities.edit.labelAddressLine2"
|
||||||
|
)
|
||||||
|
|
||||||
|
solid-ac-checker(no-permission="acl:Write", bind-resources)
|
||||||
|
span(data-trans="communities.edit.noPermission")
|
40
src/views/partials/communities/page-community-map.pug
Normal file
40
src/views/partials/communities/page-community-map.pug
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
.padding-small.sm-padding-none
|
||||||
|
h2.segment.sm-hidden.margin-top-xxsmall.margin-left-xsmall.margin-bottom-medium.sm-margin-none.sm-margin-right-xsmall.sm-margin-bottom-large.sm-margin-left-xsmall.text-xlarge.text-bold.text-color-heading.text-uppercase(data-trans='communities.list.title')
|
||||||
|
|
||||||
|
div.mobile-map-search-field.padding-top-xxsmall.margin-left-xsmall.margin-right-xsmall.sm-padding-none.sm-margin-none.sm-margin-right-xsmall.sm-margin-left-xsmall
|
||||||
|
div.segment.quarter.sm-full
|
||||||
|
solid-form-search.form.search-form.search-button(
|
||||||
|
id=`communities-filter-map`
|
||||||
|
fields='filter'
|
||||||
|
search-filter='community.name, address_line1, address_line2'
|
||||||
|
placeholder-filter=''
|
||||||
|
widget-filter='solid-form-placeholder-text'
|
||||||
|
class-filter="segment margin-bottom-medium sm-margin-bottom-none three-quarter sm-full padding-right-small sm-padding-none text-small input-bg-white children-shadow"
|
||||||
|
|
||||||
|
submit-button=""
|
||||||
|
submit-widget="button"
|
||||||
|
data-trans='placeholder-filter=communities.list.searchBy;submit-button=communities.list.searchButton'
|
||||||
|
)
|
||||||
|
div.segment.three-quarter.sm-full.text-right
|
||||||
|
solid-link.segment.children-link-rounded.children-icon-grid.children-link-reversed.color-secondary.bordered(next=`${component.route}-directory`)
|
||||||
|
span
|
||||||
|
|
||||||
|
solid-map.communities-map.margin-right-xsmall.margin-left-xsmall.sm-margin-none.shadow(
|
||||||
|
data-src=`${component.endpoints.addresses}`
|
||||||
|
loader-id=`loader-${component.route}-map`
|
||||||
|
fields="position(segment1(community.logo), segment2(community.name, community.profile.shortDescription, community.members))"
|
||||||
|
|
||||||
|
class-segment1="segment block margin-medium"
|
||||||
|
class-segment2="segment full padding-top-xlarge padding-right-large padding-bottom-xlarge padding-left-large sm-padding-medium border-top border-color-grey text-center whitespace-normal"
|
||||||
|
class-community.name="title segment block margin-bottom-xsmall text-color-heading text-xlarge text-bold"
|
||||||
|
class-community.profile.shortDescription="segment block description text-medium margin-bottom-xsmall whitespace-normal two-lines-ellipsis"
|
||||||
|
|
||||||
|
action-community.name=`${component.route}-profile`
|
||||||
|
widget-community.name='hubl-communities-map-fix-url-name'
|
||||||
|
widget-community.logo='hubl-admin-community-logo'
|
||||||
|
widget-community.members="hubl-communities-profile-members-counter"
|
||||||
|
|
||||||
|
clustering=""
|
||||||
|
filtered-by=`communities-filter-map`
|
||||||
|
style="display:block;height:698px;"
|
||||||
|
)
|
80
src/views/partials/communities/page-community-profile.pug
Normal file
80
src/views/partials/communities/page-community-profile.pug
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
div.community-profile.padding-medium.sm-padding-none
|
||||||
|
div.segment.full.sm-hidden.text-right
|
||||||
|
solid-link.backlink.text-xlarge.line-xlarge.margin-right-xxsmall(next=`${component.route}-directory` data-trans="communities.back")
|
||||||
|
|
||||||
|
div.segment.block.shadow.bg-color-white.margin-right-xxsmall.margin-top-large.margin-left-xxsmall.sm-margin-none
|
||||||
|
|
||||||
|
div.loader(id=`loader-${component.route}-profile`)
|
||||||
|
div
|
||||||
|
div
|
||||||
|
div
|
||||||
|
div
|
||||||
|
|
||||||
|
solid-display.segment.block.whitespace-normal(
|
||||||
|
fields="segment0(segment1(community-picture(logo)), segment2(segment3(segment4(name),segment5(profile.tweeter, profile.facebook, profile.linkedin, profile.instagram)), segment6(profile.shortDescription), segment7(profile.tweeter, profile.facebook, profile.linkedin, profile.instagram), segment8(addresses, members, profile.website, profile.email, profile.phone), segment9(profile.description), segment10(edit))), segment11(profile.picture1, profile.picture2, profile.picture3)"
|
||||||
|
loader-id=`loader-${component.route}-profile`
|
||||||
|
|
||||||
|
class-segment0="segment full padding-xlarge sm-padding-none whitespace-normal"
|
||||||
|
class-segment1="community-profile-logo segment quarter sm-full margin-top-medium padding-top-medium padding-right-medium sm-margin-top-xsmall sm-padding-medium text-center"
|
||||||
|
|
||||||
|
class-segment2="segment three-quarter sm-full sm-padding-top-medium sm-padding-right-xsmall sm-padding-bottom-medium sm-padding-left-xsmall text-top sm-text-center whitespace-normal"
|
||||||
|
|
||||||
|
class-segment3="segment full sm-two-third"
|
||||||
|
class-segment4="segment half sm-two-third padding-top-xsmall"
|
||||||
|
class-name="segment block text-color-heading text-xxlarge text-bold sm-text-center margin-bottom-xxsmall whitespace-normal"
|
||||||
|
class-segment5="segment half text-right sm-hidden"
|
||||||
|
|
||||||
|
class-segment6="segment two-third sm-full padding-top-xsmall sm-text-center"
|
||||||
|
class-profile.shortDescription="segment block sm-text-center margin-bottom-large whitespace-normal"
|
||||||
|
|
||||||
|
class-segment7="segment lg-hidden sm-full"
|
||||||
|
|
||||||
|
class-segment8="segment two-third sm-full padding-bottom-large padding-bottom-xxsmall sm-text-left"
|
||||||
|
class-addresses="segment block margin-bottom-xsmall"
|
||||||
|
class-members="segment block margin-bottom-xsmall"
|
||||||
|
class-profile.website="segment block"
|
||||||
|
class-profile.email="segment block"
|
||||||
|
class-profile.phone="segment block"
|
||||||
|
|
||||||
|
class-segment9="segment full"
|
||||||
|
class-profile.description="segment full whitespace-normal"
|
||||||
|
|
||||||
|
class-segment10="segment full text-right"
|
||||||
|
|
||||||
|
class-segment11="segment full whitespace-normal flex"
|
||||||
|
class-profile.picture1="communities-profile-picture segment third sm-full"
|
||||||
|
class-profile.picture2="communities-profile-picture segment third sm-full"
|
||||||
|
class-profile.picture3="communities-profile-picture segment third sm-full"
|
||||||
|
|
||||||
|
widget-logo="hubl-communities-profile-logo"
|
||||||
|
widget-profile.description="solid-display-value-markdown"
|
||||||
|
widget-profile.tweeter="hubl-communities-profile-twitter"
|
||||||
|
widget-profile.facebook="hubl-communities-profile-facebook"
|
||||||
|
widget-profile.linkedin="hubl-communities-profile-linkedin"
|
||||||
|
widget-profile.instagram="hubl-communities-profile-instagram"
|
||||||
|
widget-addresses="hubl-communities-profile-address"
|
||||||
|
widget-members="hubl-communities-profile-members-counter"
|
||||||
|
widget-profile.website="hubl-communities-profile-website"
|
||||||
|
widget-profile.email="hubl-communities-profile-email"
|
||||||
|
widget-profile.phone="hubl-communities-profile-phone"
|
||||||
|
widget-profile.picture1="hubl-communities-profile-picture"
|
||||||
|
widget-profile.picture2="hubl-communities-profile-picture"
|
||||||
|
widget-profile.picture3="hubl-communities-profile-picture"
|
||||||
|
action-edit="edit"
|
||||||
|
widget-edit="hubl-communities-edit-button"
|
||||||
|
multiple-addresses
|
||||||
|
multiple-addresses-fields="address_line1, address_line2"
|
||||||
|
|
||||||
|
bind-resources
|
||||||
|
)
|
||||||
|
|
||||||
|
solid-map.communities-profile-map(
|
||||||
|
bind-resources
|
||||||
|
nested-field="addresses"
|
||||||
|
fields="position(community.name, address_line1, address_line2)"
|
||||||
|
class-community.name="segment block margin-bottom-xsmall text-color-heading text-xlarge text-bold text-center"
|
||||||
|
class-address_line1="segment block"
|
||||||
|
class-address_line2="segment block"
|
||||||
|
clustering=""
|
||||||
|
style="display:block;height:450px;"
|
||||||
|
)
|
@ -99,7 +99,7 @@ div
|
|||||||
if componentSet.has("communities") && getComponent("chat").route
|
if componentSet.has("communities") && getComponent("chat").route
|
||||||
solid-link.text-hover(next=`admin-${getRoute("chat", true)}`)
|
solid-link.text-hover(next=`admin-${getRoute("chat", true)}`)
|
||||||
li.segment.padding-top-small.sm-padding-top-medium
|
li.segment.padding-top-small.sm-padding-top-medium
|
||||||
a.icon.icon-people.icon-third.icon-small.icon-margin-right-xsmall(data-trans='admin.menuRight.community')
|
a.icon.icon-grid.icon-third.icon-small.icon-margin-right-xsmall(data-trans='admin.menuRight.community')
|
||||||
if componentSet.has("circles") && getComponent("circles").route
|
if componentSet.has("circles") && getComponent("circles").route
|
||||||
solid-link.text-hover(next=`admin-${getRoute("circles", true)}`)
|
solid-link.text-hover(next=`admin-${getRoute("circles", true)}`)
|
||||||
li.segment.padding-top-small.sm-padding-top-medium
|
li.segment.padding-top-small.sm-padding-top-medium
|
||||||
|
@ -5,14 +5,15 @@ solid-form-search.icon.children-icon-magnifier(
|
|||||||
search-name='circle.name, project.customer.name, project.name, contact.username, contact.name'
|
search-name='circle.name, project.customer.name, project.name, contact.username, contact.name'
|
||||||
order-asc-names='name'
|
order-asc-names='name'
|
||||||
|
|
||||||
label-name='Rechercher'
|
placeholder-name=''
|
||||||
|
data-trans='placeholder-name=menuLeft.search'
|
||||||
widget-name="solid-form-placeholder-text"
|
widget-name="solid-form-placeholder-text"
|
||||||
|
|
||||||
submit-button=""
|
submit-button=""
|
||||||
submit-widget="button"
|
submit-widget="button"
|
||||||
)
|
)
|
||||||
div.divider
|
div.divider
|
||||||
solid-router#navbar-router(default-route='dashboard')
|
solid-router#navbar-router(default-route=defaultRoute)
|
||||||
for component of components
|
for component of components
|
||||||
if component.route
|
if component.route
|
||||||
if component.type == "about"
|
if component.type == "about"
|
||||||
@ -23,6 +24,14 @@ solid-router#navbar-router(default-route='dashboard')
|
|||||||
div.icon.icon-small.icon-home
|
div.icon.icon-small.icon-home
|
||||||
div.segment.text-uppercase.text-letter-spacing-large(data-trans=`${component.name?component.name:"menuLeft.dashboard"}`)
|
div.segment.text-uppercase.text-letter-spacing-large(data-trans=`${component.name?component.name:"menuLeft.dashboard"}`)
|
||||||
div.divider
|
div.divider
|
||||||
|
if component.type == "communities"
|
||||||
|
solid-route.menu.segment.full.padding-xsmall.text-semibold.text-color-white.heading-active.bg-color-heading.hover.active(name=component.route)
|
||||||
|
div.segment.margin-right-xxsmall
|
||||||
|
div.segment.icon.icon-small.icon-grid
|
||||||
|
div.segment.text-uppercase.text-letter-spacing-large(data-trans="menuLeft.communities")
|
||||||
|
solid-route(name=`${component.route}-profile`)
|
||||||
|
div.divider
|
||||||
|
|
||||||
if component.type == "circles"
|
if component.type == "circles"
|
||||||
div.jsMenuTab
|
div.jsMenuTab
|
||||||
div.menu-header.segment.full.padding-xsmall.text-semibold.text-color-white.bg-color-heading.transparent-background.hover.cursor-pointer.jsMenuHeader
|
div.menu-header.segment.full.padding-xsmall.text-semibold.text-color-white.bg-color-heading.transparent-background.hover.cursor-pointer.jsMenuHeader
|
||||||
|
@ -1,17 +1,20 @@
|
|||||||
div.segment.full.padding-large.sm-padding-top-small.sm-padding-right-xsmall.sm-padding-bottom-small.sm-padding-left-xsmall.border-bottom.border-color-grey.whitespace-normal
|
div.segment.full.padding-large.sm-padding-top-small.sm-padding-right-xsmall.sm-padding-bottom-small.sm-padding-left-xsmall.border-bottom.border-color-grey.whitespace-normal
|
||||||
solid-display.text-xxlarge.text-letter-spacing-large(
|
div.segment.full.sm-three-quarter.whitespace-normal
|
||||||
bind-resources
|
solid-display.text-xlarge.text-letter-spacing-large(
|
||||||
fields='const-title1, number, customer.name, dash, name'
|
bind-resources
|
||||||
|
fields='const-title1, number, customer.name, dash, name'
|
||||||
|
|
||||||
class-const-title1='text-color-heading text-bold text-uppercase'
|
class-const-title1='text-color-heading text-bold text-uppercase'
|
||||||
class-number='text-color-heading text-bold text-uppercase word-spacing-right'
|
class-number='text-color-heading text-bold text-uppercase word-spacing-right'
|
||||||
class-customer.name='text-color-heading text-bold text-uppercase'
|
class-customer.name='text-color-heading text-bold text-uppercase'
|
||||||
class-dash='text-color-heading text-bold text-xlarge'
|
class-dash='text-color-heading text-bold text-xlarge'
|
||||||
class-name=''
|
class-name=''
|
||||||
|
|
||||||
value-const-title1='N°'
|
value-const-title1='N°'
|
||||||
value-dash=' - '
|
value-dash=' - '
|
||||||
)
|
)
|
||||||
|
div.segment.lg-hidden.sm-quarter.text-right
|
||||||
|
div.jsMobileRightMenuButton.icon.icon-options-vertical.icon-heading
|
||||||
|
|
||||||
.chat-view.segment.full.whitespace-normal
|
.chat-view.segment.full.whitespace-normal
|
||||||
solid-xmpp-chat(
|
solid-xmpp-chat(
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
solid-ac-checker(permission='acl:Read', bind-resources)
|
solid-ac-checker(permission='acl:Read', bind-resources)
|
||||||
div.segment.full.padding-large.border-bottom.border-color-grey
|
div.segment.full.padding-large.sm-padding-top-small.sm-padding-right-xsmall.sm-padding-bottom-small.sm-padding-left-xsmall.border-bottom.border-color-grey.whitespace-normal
|
||||||
div.segment.half.sm-full
|
div.segment.half.sm-three-quarter.whitespace-normal
|
||||||
solid-display.text-xxlarge.text-letter-spacing-large(
|
solid-display.text-xlarge.text-letter-spacing-large(
|
||||||
bind-resources
|
bind-resources
|
||||||
fields='const-title1, number, customer.name, dash, name'
|
fields='const-title1, number, customer.name, dash, name'
|
||||||
|
|
||||||
@ -16,6 +16,8 @@ solid-ac-checker(permission='acl:Read', bind-resources)
|
|||||||
)
|
)
|
||||||
div.segment.half.sm-hidden.text-right
|
div.segment.half.sm-hidden.text-right
|
||||||
solid-link(class='backlink', bind-resources, next=`${component.route}-profile` data-trans='project.edit.backlink')
|
solid-link(class='backlink', bind-resources, next=`${component.route}-profile` data-trans='project.edit.backlink')
|
||||||
|
div.segment.lg-hidden.sm-quarter.text-right
|
||||||
|
div.jsMobileRightMenuButton.icon.icon-options-vertical.icon-heading
|
||||||
|
|
||||||
div.segment.full.padding-large.whitespace-normal
|
div.segment.full.padding-large.whitespace-normal
|
||||||
|
|
||||||
|
5
src/views/partials/project/page-project-invoices.pug
Normal file
5
src/views/partials/project/page-project-invoices.pug
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
solid-invoicing(
|
||||||
|
bind-resources
|
||||||
|
upload-dir=`${extension.endpoints.uploads}`
|
||||||
|
uniq=extension.uniq
|
||||||
|
)
|
@ -9,19 +9,22 @@ div(
|
|||||||
)
|
)
|
||||||
solid-ac-checker.segment.block(permission='acl:Read', bind-resources)
|
solid-ac-checker.segment.block(permission='acl:Read', bind-resources)
|
||||||
div.segment.full.padding-large.sm-padding-top-small.sm-padding-right-xsmall.sm-padding-bottom-small.sm-padding-left-xsmall.border-bottom.border-color-grey.whitespace-normal
|
div.segment.full.padding-large.sm-padding-top-small.sm-padding-right-xsmall.sm-padding-bottom-small.sm-padding-left-xsmall.border-bottom.border-color-grey.whitespace-normal
|
||||||
solid-display.text-xxlarge.text-letter-spacing-large(
|
div.segment.full.sm-three-quarter.whitespace-normal
|
||||||
bind-resources
|
solid-display.text-xlarge.text-letter-spacing-large(
|
||||||
fields='const-title1, number, customer.name, dash, name'
|
bind-resources
|
||||||
|
fields='const-title1, number, customer.name, dash, name'
|
||||||
|
|
||||||
class-const-title1='text-color-heading text-bold text-uppercase'
|
class-const-title1='text-color-heading text-bold text-uppercase'
|
||||||
class-number='text-color-heading text-bold text-uppercase word-spacing-right'
|
class-number='text-color-heading text-bold text-uppercase word-spacing-right'
|
||||||
class-customer.name='text-color-heading text-bold text-uppercase'
|
class-customer.name='text-color-heading text-bold text-uppercase'
|
||||||
class-dash='text-color-heading text-bold text-xlarge'
|
class-dash='text-color-heading text-bold text-xlarge'
|
||||||
class-name=''
|
class-name=''
|
||||||
|
|
||||||
value-const-title1='N°'
|
value-const-title1='N°'
|
||||||
value-dash=' - '
|
value-dash=' - '
|
||||||
)
|
)
|
||||||
|
div.segment.lg-hidden.sm-quarter.text-right
|
||||||
|
div.jsMobileRightMenuButton.icon.icon-options-vertical.icon-heading
|
||||||
|
|
||||||
div.segment.full.padding-large.sm-padding-xsmall.sm-padding-top-xlarge
|
div.segment.full.padding-large.sm-padding-xsmall.sm-padding-top-xlarge
|
||||||
div.loader(id=`loader-${component.route}-profile`)
|
div.loader(id=`loader-${component.route}-profile`)
|
||||||
|
@ -20,6 +20,23 @@ include widgets/hubl-circle-join-button.pug
|
|||||||
include widgets/hubl-circle-owner.pug
|
include widgets/hubl-circle-owner.pug
|
||||||
include widgets/hubl-circle-team-contact.pug
|
include widgets/hubl-circle-team-contact.pug
|
||||||
include widgets/hubl-circle-user-admin.pug
|
include widgets/hubl-circle-user-admin.pug
|
||||||
|
include widgets/hubl-communities-counter-alternate.pug
|
||||||
|
include widgets/hubl-communities-edit-button.pug
|
||||||
|
include widgets/hubl-communities-edit-add-button.pug
|
||||||
|
include widgets/hubl-communities-edit-email.pug
|
||||||
|
include widgets/hubl-communities-edit-website.pug
|
||||||
|
include widgets/hubl-communities-logo.pug
|
||||||
|
include widgets/hubl-communities-map-fix-url-name.pug
|
||||||
|
include widgets/hubl-communities-profile-email.pug
|
||||||
|
include widgets/hubl-communities-profile-facebook.pug
|
||||||
|
include widgets/hubl-communities-profile-instagram.pug
|
||||||
|
include widgets/hubl-communities-profile-linkedin.pug
|
||||||
|
include widgets/hubl-communities-profile-logo.pug
|
||||||
|
include widgets/hubl-communities-profile-members-counter.pug
|
||||||
|
include widgets/hubl-communities-profile-phone.pug
|
||||||
|
include widgets/hubl-communities-profile-picture.pug
|
||||||
|
include widgets/hubl-communities-profile-twitter.pug
|
||||||
|
include widgets/hubl-communities-profile-website.pug
|
||||||
include widgets/hubl-counter.pug
|
include widgets/hubl-counter.pug
|
||||||
include widgets/hubl-email-field.pug
|
include widgets/hubl-email-field.pug
|
||||||
include widgets/hubl-menu-empty.pug
|
include widgets/hubl-menu-empty.pug
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
if componentSet.has('admin') && componentSet.has('circles')
|
if (componentSet.has('admin') && componentSet.has('circles')) || componentSet.has('communities')
|
||||||
solid-widget(name='hubl-admin-community-logo')
|
solid-widget(name='hubl-admin-community-logo')
|
||||||
template ${value != "" ? `<div \style="background-image:url(${value});" />` : `<div></div>`}
|
template ${value != "" ? `<div \style="background-image:url(${value});" />` : `<div></div>`}
|
@ -0,0 +1,12 @@
|
|||||||
|
if componentSet.has('communities')
|
||||||
|
solid-widget(name='hubl-communities-counter-alternate')
|
||||||
|
template
|
||||||
|
div
|
||||||
|
span.icon.icon-people.icon-third.icon-large.margin-right-xsmall
|
||||||
|
solid-display(
|
||||||
|
fields=''
|
||||||
|
data-src="${src || value}"
|
||||||
|
nested-field="members"
|
||||||
|
counter-template="\\\${counter}"
|
||||||
|
)
|
||||||
|
span(data-trans="communities.list.members")
|
@ -0,0 +1,11 @@
|
|||||||
|
if componentSet.has('communities') && getRoute('communities')
|
||||||
|
solid-widget(name='hubl-communities-edit-add-button')
|
||||||
|
template
|
||||||
|
div(
|
||||||
|
class="segment text-xsmall children-link-button children-link-text-bold children-link-text-uppercase children-link-color-secondary bordered"
|
||||||
|
)
|
||||||
|
button.form-sub(
|
||||||
|
data-trans="communities.edit.buttonAdd"
|
||||||
|
type="button"
|
||||||
|
onclick="window.hubl.geocalc(this);"
|
||||||
|
)
|
@ -0,0 +1,10 @@
|
|||||||
|
if componentSet.has('communities')
|
||||||
|
solid-widget(name="hubl-communities-edit-address-delete")
|
||||||
|
template
|
||||||
|
solid-ac-checker(permission="acl:Delete", data-src="${src}")
|
||||||
|
solid-delete(
|
||||||
|
class='segment text-xsmall children-link-button children-link-text-bold children-link-text-uppercase children-link-color-secondary bordered'
|
||||||
|
data-src="${src}"
|
||||||
|
data-label=''
|
||||||
|
data-trans='data-label=communities.edit.buttonDelete'
|
||||||
|
)
|
14
src/views/partials/widgets/hubl-communities-edit-button.pug
Normal file
14
src/views/partials/widgets/hubl-communities-edit-button.pug
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
if componentSet.has('communities') && getRoute('communities')
|
||||||
|
solid-widget(name='hubl-communities-edit-button')
|
||||||
|
template
|
||||||
|
solid-ac-checker(
|
||||||
|
permission='acl:Write'
|
||||||
|
data-src="${src}"
|
||||||
|
nested-field="profile"
|
||||||
|
)
|
||||||
|
solid-link(
|
||||||
|
class="segment margin-top-xxlarge sm-full button text-xsmall text-bold text-uppercase text-center reversed color-secondary bordered icon icon-pencil"
|
||||||
|
data-trans="communities.profile.edit"
|
||||||
|
data-src="${src}"
|
||||||
|
next=`${getRoute('communities', true)}-edit`
|
||||||
|
)
|
@ -0,0 +1,5 @@
|
|||||||
|
if componentSet.has('communities') && getRoute('communities')
|
||||||
|
solid-widget(name='hubl-communities-edit-email')
|
||||||
|
template
|
||||||
|
label(class="text-small text-semibold text-uppercase text-color-heading" data-trans="communities.edit.labelEmail")
|
||||||
|
input(type="email" label="communities.edit.labelEmail" name="profile.email" value="\${value}" data-holder)
|
@ -0,0 +1,5 @@
|
|||||||
|
if componentSet.has('communities') && getRoute('communities')
|
||||||
|
solid-widget(name='hubl-communities-edit-website')
|
||||||
|
template
|
||||||
|
label(class="text-small text-semibold text-uppercase text-color-heading" data-trans='communities.edit.labelWebsite')
|
||||||
|
input(type="url" label="communities.edit.labelWebsite" name="profile.website" value="\${value}" data-holder)
|
3
src/views/partials/widgets/hubl-communities-logo.pug
Normal file
3
src/views/partials/widgets/hubl-communities-logo.pug
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
if componentSet.has('communities') && getRoute('communities')
|
||||||
|
solid-widget(name='hubl-communities-logo')
|
||||||
|
template ${value != "" ? `<div \style="background-image:url(${value});" />` : `<div></div>`}
|
@ -0,0 +1,15 @@
|
|||||||
|
if componentSet.has('communities')
|
||||||
|
solid-widget(name='hubl-communities-name')
|
||||||
|
template
|
||||||
|
solid-link(
|
||||||
|
data-src="${value}"
|
||||||
|
next=`${getRoute(`communities`, true)}-profile`
|
||||||
|
) ${await value.name}
|
||||||
|
|
||||||
|
solid-widget(name='hubl-communities-map-fix-url-name')
|
||||||
|
template
|
||||||
|
solid-display(
|
||||||
|
data-src="${src}"
|
||||||
|
fields="community"
|
||||||
|
widget-community='hubl-communities-name'
|
||||||
|
)
|
@ -0,0 +1,3 @@
|
|||||||
|
if componentSet.has('communities') && getRoute('communities')
|
||||||
|
solid-widget(name='hubl-communities-profile-email')
|
||||||
|
template ${value != "" ? `<a class="link margin-bottom-xsmall icon mdi-email-outline icon-third icon-large icon-margin-right-xsmall" style="text-decoration:none;" href="mailto:\${value}">${value}</a>` : ""}
|
@ -0,0 +1,3 @@
|
|||||||
|
if componentSet.has('communities') && getRoute('communities')
|
||||||
|
solid-widget(name='hubl-communities-profile-facebook')
|
||||||
|
template ${value != "" ? `<a class="segment children-link-rounded children-icon-social-facebook children-link-reversed color-secondary bordered margin-right-medium" href="${value}" target="_blank"><span></span></a>` : ""}
|
@ -0,0 +1,3 @@
|
|||||||
|
if componentSet.has('communities') && getRoute('communities')
|
||||||
|
solid-widget(name='hubl-communities-profile-instagram')
|
||||||
|
template ${value != "" ? `<a class="segment children-link-rounded children-icon-social-instagram children-link-reversed color-secondary bordered" href="${value}" target="_blank"><span></span></a>` : ""}
|
@ -0,0 +1,3 @@
|
|||||||
|
if componentSet.has('communities') && getRoute('communities')
|
||||||
|
solid-widget(name='hubl-communities-profile-linkedin')
|
||||||
|
template ${value != "" ? `<a class="segment children-link-rounded children-icon-social-linkedin children-link-reversed color-secondary bordered margin-right-medium" href="${value}" target="_blank"><span></span></a>` : ""}
|
@ -0,0 +1,3 @@
|
|||||||
|
if componentSet.has('communities') && getRoute('communities')
|
||||||
|
solid-widget(name='hubl-communities-profile-logo')
|
||||||
|
template ${value != "" ? `<div \style="background-image:url(${value});" />` : ""}
|
@ -0,0 +1,11 @@
|
|||||||
|
if componentSet.has('communities') && getRoute('communities')
|
||||||
|
solid-widget(name='hubl-communities-profile-members-counter')
|
||||||
|
template
|
||||||
|
span
|
||||||
|
span.icon.icon-people.icon-third.icon-large.margin-right-xsmall
|
||||||
|
solid-display.text-medium(
|
||||||
|
data-src="${src || value}"
|
||||||
|
fields=''
|
||||||
|
counter-template="\\\${counter}"
|
||||||
|
)
|
||||||
|
span.text-medium(data-trans="communities.profile.members")
|
@ -0,0 +1,3 @@
|
|||||||
|
if componentSet.has('communities') && getRoute('communities')
|
||||||
|
solid-widget(name='hubl-communities-profile-phone')
|
||||||
|
template ${value != "" ? `<a class="link margin-bottom-xsmall icon mdi-cellphone-iphone icon-third icon-large icon-margin-right-xsmall" style="text-decoration:none;" href="tel:\${value}">${value}</a>` : ""}
|
@ -0,0 +1,3 @@
|
|||||||
|
if componentSet.has('communities') && getRoute('communities')
|
||||||
|
solid-widget(name='hubl-communities-profile-picture')
|
||||||
|
template ${value != "" ? `<div><div \style="background-image:url(${value});"></div></div>` : `<div class="picture-empty"></div>`}
|
@ -0,0 +1,3 @@
|
|||||||
|
if componentSet.has('communities') && getRoute('communities')
|
||||||
|
solid-widget(name='hubl-communities-profile-twitter')
|
||||||
|
template ${value != "" ? `<a class="segment children-link-rounded children-icon-social-twitter children-link-reversed color-secondary bordered margin-right-medium" href="${value}" target="_blank"><span></span></a>` : ""}
|
@ -0,0 +1,3 @@
|
|||||||
|
if componentSet.has('communities') && getRoute('communities')
|
||||||
|
solid-widget(name='hubl-communities-profile-website')
|
||||||
|
template ${value != "" ? `<a class="link margin-bottom-xsmall icon mdi-link-variant icon-third icon-large icon-margin-right-xsmall" style="text-decoration:none;" href="tel:\${value}" target="_blank">${value}</a>` : ""}
|
Loading…
Reference in New Issue
Block a user