major: flatten the project

This commit is contained in:
Jean-Baptiste Pasquier
2020-11-26 23:21:55 +01:00
parent ebe46c6b6f
commit dee070596a
66 changed files with 11228 additions and 9483 deletions

View File

@ -0,0 +1,36 @@
div.content-box__info.flex
solid-link(class="backlink right", next='admin-circle-list' data-trans='circle.create.backlink')
h1.centered(data-trans='circle.create.title')
div#loader-circles-create.loader.loader-top
div
div
div
div
solid-form.form.button-register(
data-src=`${endpoints.circles || endpoints.post.circles}`
fields='status, name, description'
required-status
required-name
required-description
loader-id='loader-circles-create'
class-status='form-label is-light is-full-width color'
class-name='form-label is-light is-full-width input-text-like'
class-description='form-label is-light is-full-width input-text-like'
label-status=''
label-name=''
label-description=''
widget-status='hubl-status'
next='circle'
submit-button=''
data-trans='label-status=circle.create.labelStatus;label-name=circle.create.labelName;label-description=circle.create.labelDescription;submit-button=circle.create.buttonSubmit'
)

View File

@ -0,0 +1,126 @@
.content-box.flex.full-width.with-form
solid-router(default-route='admin-circle-list', hidden)
solid-route(name='admin-circle-list')
solid-route(name='admin-circle-create')
solid-route(name='circle-left')
div.content-box__header.flex.space-between
h1.without-margin(data-trans='circle.list.title')
button.mobile-sidebar-button.jsMobileSidebarOpenButton.icon-arrow-left-circle(data-trans='circle.list.buttonMobile')
include ../circle/page-circle-left.pug
#admin-circle-list.content-box__height(hidden, data-view="admin-circle-list")
solid-widget(name='hubl-circle-owner')
template
solid-display.user-thumb.block.is-spaced(
data-src='${await value}'
fields='account.picture, sup(name), sub(username)'
class-account.picture='avatar user-thumb__picture'
class-name='user-thumb__name'
class-username='user-thumb__username'
widget-account.picture='hubl-user-avatar'
)
div.content-box__info.flex
div.admin-header.flex
h3(data-trans='circle.list.subTitle')
solid-ac-checker(data-src=`${endpoints.circles || (endpoints.post && endpoints.post.circles)}`, permission='acl:Append')
solid-link(
class='button text-bold text-uppercase reversed button-primary bordered with-icon icon-plus'
next='admin-circle-create' data-trans='circle.list.buttonCreate'
)
.table-wrapper
.table
div.table-header.grey-color
div.w280(data-trans='circle.list.tableHeader1')
div.w280(data-trans='circle.list.tableHeader2')
div.w280(data-trans='circle.list.tableHeader3')
solid-widget(name='hubl-admin-circle-leave-button')
template
solid-delete(
class='circle-leave button text-bold text-uppercase reversed button-secondary bordered with-icon icon-close'
data-src="${src}"
data-label=''
data-trans='data-label=circle.list.buttonQuit'
)
hubl-reactivity(data-src=`${endpoints.circles || endpoints.get.circles}` target-src='${src}')
hubl-reactivity(data-src=`${endpoints.circles || endpoints.get.circles}joinable/` target-src='${src}')
hubl-reactivity(bind-user nested-field="circles" target-src='${src}')
if (endpoints.post && endpoints.post.circles) && (endpoints.get && endpoints.get.circles)
hubl-reactivity(data-src=`${endpoints.post.circles}joinable/` target-src=`${src}`)
hubl-reactivity(data-src=`${endpoints.post.circles}` target-src=`${src}`)
solid-display(
class='table-body'
bind-user
nested-field='circles'
fields='circle.name, circle.owner, leaveButton'
loader-id='loader-admin-circles'
class-circle.name='w280 border cell-with-name'
class-circle.owner='w280 border cell-with-id-card'
class-leaveButton='w280 border cell-with-buttons is-spaced'
action-leaveButton="joinButton"
widget-leaveButton="hubl-admin-circle-leave-button"
widget-circle.owner='hubl-circle-owner'
order-by="circle.name"
)
solid-widget(name='hubl-admin-circle-join-button')
template
solid-form.circle-join.button.text-bold.text-uppercase.reversed.button-primary.bordered.with-icon.icon-arrow-right-circle.flex(
data-src='${value}'
fields='user.username'
value-user.username='hubl-workaround-493'
widget-user.username='solid-form-hidden'
submit-button='Rejoindre'
data-trans='submit-button=circle.list.buttonJoin'
)
hubl-reactivity(data-src=`${endpoints.circles || endpoints.get.circles}` target-src='${value}')
hubl-reactivity(data-src=`${endpoints.circles || endpoints.get.circles}joinable/` target-src='${value}')
hubl-reactivity(bind-user nested-field="circles" target-src='${value}')
if (endpoints.post && endpoints.post.circles) && (endpoints.get && endpoints.get.circles)
hubl-reactivity(data-src=`${endpoints.post.circles}joinable/` target-src=`${value}`)
hubl-reactivity(data-src=`${endpoints.post.circles}` target-src=`${value}`)
solid-display(
class='table-body'
data-src=`${endpoints.circles || endpoints.get.circles}joinable/`
fields='name, owner, members'
loader-id='loader-admin-circles'
class-name='w280 border cell-with-name'
class-owner='w280 border cell-with-id-card'
widget-owner='hubl-circle-owner'
class-members='w280 border cell-with-buttons is-spaced'
widget-members="hubl-admin-circle-join-button"
order-by="name"
)
div#loader-admin-circles.loader.loader-top
div
div
div
div
#admin-circle-create.content-box__height(hidden, data-view="admin-circle-create")
include page-admin-circles-create.pug

View File

@ -0,0 +1,54 @@
.content-box.flex.full-width.with-form
solid-router(default-route='admin-communities-list', hidden)
solid-route(name='admin-communities-list')
solid-route(name='admin-users-create', use-id)
div.content-box__header.flex.space-between
h1.without-margin(data-trans='communities.title')
button.mobile-sidebar-button.jsMobileSidebarOpenButton.icon-arrow-left-circle(data-trans='communities.menuMobile')
solid-widget(name='hubl-action-community')
template
solid-ac-checker(data-src="${value}", nested-field="members", permission='acl:Append')
solid-link(
class='button text-bold text-uppercase reversed button-primary bordered with-icon icon-plus'
data-src="${value}"
next="admin-users-create"
data-trans='communities.linkInvite'
)
solid-ac-checker(data-src="${value}", nested-field="members", no-permission='acl:Append')
div.button.text-bold.text-uppercase.button-disabled(data-trans='communities.noPermission')
#admin-communities-list.content-box__height(hidden, data-view="admin-communities-list")
div.content-box__info.flex
div.admin-header.flex
h3(data-trans='communities.subTitle')
.table-wrapper
.table
div.table-header.grey-color
div.w450(data-trans='communities.tableHeader1')
div.w370(data-trans='communities.tableHeader2')
solid-display(
class='table-body'
bind-user
nested-field='communities'
fields='community.name, community'
loader-id='loader-admin-community'
class-community.name='w450 border cell-with-name'
class-community='w370 border cell-with-buttons is-spaced'
widget-community='hubl-action-community'
order-asc='community.name'
)
div#loader-admin-community.loader.loader-top
div
div
div
div
#admin-users-create.content-box__height(hidden, data-view="admin-users-create")
include page-admin-users-create.pug

View File

@ -0,0 +1,45 @@
div.content-box__info.flex
solid-link(class="backlink right" next='admin-project-list' data-trans='project.create.backlink')
h1.centered(data-trans='project.create.title')
div#loader-projects-create.loader.loader-top
div
div
div
div
solid-form.form.button-register(
data-src=`${endpoints.projects || endpoints.post.projects}`
fields='status, line-1(customer.name, name), line-2(captain)'
required-status
required-customer.name
required-name
required-captain
loader-id='loader-projects-create'
label-status=''
widget-status='solid-form-hidden'
class-status='form-label is-light is-full-width'
value-status="Private"
label-customer.name=''
class-customer.name='form-label is-light is-half-width input-text-like'
label-name=''
class-name='form-label is-light is-half-width input-text-like'
label-captain=''
range-captain=`${endpoints.users || endpoints.get.users}`
class-captain='form-label is-light is-half-width'
widget-captain='solid-form-dropdown-autocompletion-label'
class='input-text-like'
next='project'
submit-button=''
data-trans='label-status=project.create.labelStatus;label-customer.name=project.create.labelCustomer;label-name=project.create.labelName;label-captain=project.create.labelCaptain;submit-button=project.create.buttonSubmit'
)

View File

@ -0,0 +1,152 @@
.content-box.flex.full-width.with-form
solid-router(default-route='admin-project-list', hidden)
solid-route(name='admin-project-list')
solid-route(name='admin-project-create')
solid-route(name='project-left')
div.content-box__header.flex.space-between
h1.without-margin(data-trans='project.list.title')
button.mobile-sidebar-button.jsMobileSidebarOpenButton.icon-arrow-left-circle(data-trans='project.list.buttonMobile')
#project-left(hidden, data-view="project-left")
include ../project/page-project-left.pug
#admin-project-list.content-box__height(hidden, data-view="admin-project-list")
div.content-box__info.flex
div.admin-header.flex
h3(data-trans='project.list.subTitle')
solid-ac-checker(data-src=`${endpoints.projects || (endpoints.post && endpoints.post.projects)}`, permission='acl:Append')
solid-link(
class='button text-bold text-uppercase reversed button-primary bordered with-icon icon-plus'
next='admin-project-create'
data-trans='project.list.buttonCreate'
)
.table-wrapper
.table
div.table-header.grey-color
div.w280(data-trans='project.list.tableHeader1')
div.w280(data-trans='project.list.tableHeader2')
div.w280(data-trans='project.list.tableHeader3')
div.w230(data-trans='project.list.tableHeader4')
solid-widget(name="hubl-admin-project-leave-button")
template
solid-delete(
class='button text-bold text-uppercase reversed button-secondary bordered with-icon icon-close'
data-src="${src}"
data-label=''
data-trans='data-label=project.list.buttonQuit'
)
hubl-reactivity(data-src=`${endpoints.projects || endpoints.get.projects}` target-src='${src}')
hubl-reactivity(data-src=`${endpoints.projects || endpoints.get.projects}joinable/` target-src='${src}')
hubl-reactivity(bind-user nested-field="projects" target-src='${src}')
if (endpoints.post && endpoints.post.projects) && (endpoints.get && endpoints.get.projects)
hubl-reactivity(data-src=`${endpoints.post.projects}joinable/` target-src=`${src}`)
hubl-reactivity(data-src=`${endpoints.post.projects}` target-src=`${src}`)
solid-widget(name='hubl-project-captain')
template
solid-display.user-thumb.block.is-spaced(
data-src='${await value}'
fields='account.picture, sup(name), sub(username)'
class-account.picture='avatar user-thumb__picture'
class-name='user-thumb__name'
class-username='user-thumb__username'
widget-account.picture='hubl-user-avatar'
)
solid-widget(name='hubl-project-admins')
template
solid-display(
data-src='${value}'
fields='user'
search-fields='is_admin'
search-value-is_admin='true'
search-widget-is_admin='solid-form-hidden'
widget-user='hubl-project-captain'
)
solid-widget(name='hubl-admin-project-leave-button')
template
solid-delete(
class='button text-bold text-uppercase reversed button-secondary bordered with-icon icon-close'
data-src="${src}"
data-label=''
data-trans='data-label=project.list.buttonQuit'
)
solid-display(
class='table-body'
bind-user
nested-field="projects"
fields='project.name, project.members, project.captain, leaveButton'
loader-id='loader-admin-projects'
class-project.name='w280 cell border cell-with-name'
class-project.members='w280 cell border cell-with-id-card'
class-project.captain='w280 cell border cell-with-id-card'
class-leaveButton='w230 cell border cell-with-buttons is-spaced'
action-leaveButton="joinButton"
widget-leaveButton="hubl-admin-project-leave-button"
widget-project.captain='hubl-project-captain'
widget-project.members='hubl-project-admins'
order-by="project.name"
)
solid-widget(name='hubl-admin-project-join-button')
template
solid-form.button.text-bold.text-uppercase.reversed.button-primary.bordered.with-icon.icon-arrow-right-circle.flex(
data-src='${src}'
nested-field="members"
fields='user.username'
value-user.username='hubl-workaround-493'
widget-user.username='solid-form-hidden'
submit-button=''
data-trans='submit-button=project.list.buttonJoin'
)
hubl-reactivity(data-src=`${endpoints.projects || endpoints.get.projects}` target-src='${src}')
hubl-reactivity(data-src=`${endpoints.projects || endpoints.get.projects}joinable/` target-src='${src}')
hubl-reactivity(bind-user nested-field="projects" target-src='${src}')
if (endpoints.post && endpoints.post.projects) && (endpoints.get && endpoints.get.projects)
hubl-reactivity(data-src=`${endpoints.post.projects}joinable/` target-src=`${value}`)
hubl-reactivity(data-src=`${endpoints.post.projects}` target-src=`${value}`)
solid-display(
class='table-body'
data-src=`${endpoints.projects || endpoints.get.projects}joinable/`
fields='name, members, captain, joinButton'
loader-id='loader-admin-projects'
class-name='w280 cell border cell-with-name'
class-members='w280 cell border cell-with-id-card'
class-captain='w280 cell border cell-with-id-card'
class-joinButton='w230 cell border cell-with-buttons is-spaced'
action-joinButton="joinButton" # Workaround: I need members two times
widget-joinButton="hubl-admin-project-join-button"
widget-captain='hubl-project-captain'
widget-members='hubl-project-admins'
order-by="name"
)
div#loader-admin-projects.loader.loader-top
div
div
div
div
#admin-project-create(hidden, data-view="admin-project-create")
include page-admin-projects-create.pug

View File

@ -0,0 +1,65 @@
div.content-box__info.flex
solid-link(class='backlink right', next='admin-communities-list' data-trans='user.create.backlink')
solid-display.h1-like.centered(
bind-resources
fields='text, name'
value-text=''
data-trans='value-text=user.create.title'
loader-id='loader-users-title'
)
div#loader-users-title.loader.loader
div
div
div
div
div#loader-users-create.loader.loader-top
div
div
div
div
solid-widget(name='hubl-username-field')
template
label(data-trans='user.create.labelUsername')
input(type="text" title='' pattern="[a-zA-Z0-9]+" label="" data-trans='title=user.create.labelUsernameTitle;label=user.create.labelUsername' name="username" required value="\${value}" data-holder)
solid-widget(name='hubl-email-field')
template
label(data-trans='user.create.labelEmail')
input(type="email" label='' data-trans='label=user.create.labelEmail' name="email" required value="\${value}" data-holder)
solid-form.form.button-register#selected-community(
bind-resources
nested-field='members'
fields='line-1(user.first_name, user.last_name), line-2(user.username, user.email), user.password'
required-user.first_name
required-user.last_name
required-user.username
required-user.email
loader-id='loader-users-create'
class-user.first_name='form-label is-light is-half-width input-text-like'
class-user.last_name='form-label is-light is-half-width input-text-like'
class-user.username='form-label is-light is-half-width input-text-like'
class-user.email='form-label is-light is-half-width input-text-like'
label-user.first_name=''
label-user.last_name=''
label-user.username=''
label-user.email=''
value-user.password=''
widget-user.password='solid-form-hidden'
widget-user.username='hubl-username-field'
widget-user.email='hubl-email-field'
next='admin-communities-list'
submit-button=''
data-trans='label-user.first_name=user.create.labelFirstname;label-user.last_name=user.create.labelLastname;label-user.username=user.create.labelUsername;label-user.email=user.create.labelEmail;submit-button=user.create.buttonSubmit'
)

View File

@ -0,0 +1,8 @@
.chat-view
solid-xmpp-chat(
data-authentication='login',
data-auto-login='true',
data-websocket-url=`${xmppWebsocket || 'wss://jabber.happy-dev.fr/xmpp-websocket'}`,
data-i18n='en',
bind-resources
)

View File

@ -0,0 +1,103 @@
div.content-box__info
solid-widget(name="circle-edit-members-delete")
template
solid-ac-checker(permission="acl:Delete" data-src="${src}")
solid-delete(
class='button text-bold text-uppercase reversed button-secondary bordered with-icon icon-close'
data-src="${src}"
data-label=''
data-trans='data-label=circle.edit.buttonDelete'
)
solid-link(class="backlink right", bind-resources, next='circle-profile' data-trans='circle.edit.backlink')
solid-ac-checker(permission='acl:Write', bind-resources)
h1(data-trans='circle.edit.title')
div#loader-circle-edit.loader.loader-top
div
div
div
div
solid-form.form.button-register(
bind-resources
fields='status, line-1(name, owner), description'
required-status
required-name
required-owner
required-description
range-owner=`${endpoints.users || endpoints.get.users}`
label-status=''
widget-status='hubl-status'
label-name=''
label-owner=''
label-description=''
class-name='form-label is-light is-half-width input-text-like'
class-owner='form-label is-light is-half-width member-select color'
class-description='form-label is-light is-full-width input-text-like'
class-status='form-label is-light is-full-width member-select color'
widget-owner='solid-form-dropdown-autocompletion-label'
partial=''
submit-button='Enregistrer'
next='circle-information'
data-trans='label-name=circle.edit.labelStatus;label-name=circle.edit.labelName;label-owner=circle.edit.labelOwner;label-description=circle.edit.labelDescription;submit-button=circle.edit.buttonSubmit'
)
h2(data-trans='circle.edit.subTitle')
solid-ac-checker(permission='acl:Append', bind-resources, nested-field='members')
solid-form.block.select-add(
bind-resources
nested-field='members'
fields='user'
range-user=`${endpoints.users || endpoints.get.users}`
class-user='team'
widget-user='solid-form-dropdown-autocompletion'
submit-button=''
data-trans='submit-button=circle.edit.buttonAddMember'
)
.table-wrapper
.table
div.table-header.grey-color
div.w280(data-trans='circle.edit.tableHeader1')
div.w162(data-trans='circle.edit.tableHeader2')
solid-display(
class='table-body'
bind-resources
nested-field='members'
fields='classGroup(classGrid(user.account.picture, sup(user.name, user.groups), sub(user.communities))), self'
loader-id='loader-circle-edit'
class-classGroup='w280 cell border cell-with-id-card user-thumb is-spaced'
class-user.account.picture='user-thumb__picture avatar'
class-user.name='user-thumb__name'
class-user.groups='user-thumb__groups'
multiple-user.communities
multiple-user.communities-fields="community.name"
widget-user.account.picture='hubl-user-avatar'
multiple-user.groups
multiple-user.groups-fields='name'
action-self='self'
widget-self='circle-edit-members-delete'
)
//- Only to show the table grid
div.w162.cell.border

View File

@ -0,0 +1,10 @@
#circle-listevents
solid-event(
class='w700'
bind-resources
nested-field="events"
range-event-type=`${endpoints.typeevents || (endpoints.get && endpoints.get.typeevents)}`
range-event-circle=`${endpoints.circles || (endpoints.get && endpoints.get.circles)}`
upload-dir=`${endpoints.uploads || (endpoints.get && endpoints.get.uploads)}`
id-prefix='circles'
)

View File

@ -0,0 +1,10 @@
#circle-left(hidden, data-view="circle-left")
div.content-box__info.flex(style="padding: 15px")
p(data-trans='circle.left.paragraphQuit')
p
span(data-trans='circle.left.paragraphJoin')
span  
solid-link(next="admin-circle-list" data-trans='circle.left.admin')
span  
span(data-trans='circle.left.paragraphContact')

View File

@ -0,0 +1,9 @@
#circle-polls
solid-poll(
class='w700'
id-prefix='circles'
bind-resources
nested-field="polls"
range-base-polls=`${endpoints.pollRangeBase || (endpoints.get && endpoints.get.pollRangeBase)}`
upload-dir=`${endpoints.uploads || (endpoints.get && endpoints.get.uploads)}`
)

View File

@ -0,0 +1,117 @@
solid-router(default-route='circle-profile', hidden)
solid-route(name='circle-profile')
solid-route(name='circle-edit')
#circle-profile(hidden, data-view="circle-profile")
solid-widget(name='hubl-circle-team-contact')
template
solid-link(data-src='\${value}', next='messages')
.content-box__info.flex
div#loader-circle-profile.loader
div
div
div
div
.flex.space-between.with-padding.mobile-vertical-align
solid-display.mobile-margin__bottom(
bind-resources
fields='creationDateSet(title, creationDate)'
loader-id='loader-circle-profile'
class-title='word-spacing-right'
value-title=''
data-trans='value-title=circle.profile.creationDate'
widget-creationDate='solid-display-value-date'
)
solid-ac-checker(permission='acl:Append', bind-resources, nested-field='members')
solid-ac-checker(permission='acl:Delete', bind-resources)
solid-link(class='button mobile-full-width text-bold text-uppercase reversed button-primary bordered with-icon icon-pencil' next='circle-edit' bind-resources data-trans='circle.profile.buttonModify')
solid-ac-checker(no-permission='acl:Delete', bind-resources)
solid-link(class='button mobile-full-width text-bold text-uppercase reversed button-primary bordered with-icon icon-pencil' next='circle-edit' bind-resources data-trans='circle.profile.buttonAdd')
div.flex.desktop-button__end
solid-ac-checker(permission='acl:Delete', bind-resources)
solid-delete(
class='button mobile-full-width text-bold text-uppercase button-primary bordered with-icon icon-trash'
bind-resources
data-label=''
data-trans='data-label=circle.profile.buttonDelete'
next='admin-circles'
)
solid-widget(name='hubl-circle-leave-button')
template
solid-ac-checker(no-permission='acl:Delete', data-src="${src}", nested-field="circle")
solid-delete(
class='button mobile-full-width desktop-btn-margin__left text-bold text-uppercase reversed button-secondary bordered with-icon icon-close'
data-src="${src}"
data-label=''
data-trans='data-label=circle.profile.buttonQuit'
next='circle-left'
)
solid-widget(name='hubl-circle-join-button')
template
button.button.desktop-btn-margin__left.text-bold.text-uppercase.reversed.button-primary.bordered.with-icon.icon-arrow-right-circle.flex
solid-form(
data-src=''
nested-field='members'
fields='user.username'
value-user.username='hubl-workaround-493'
widget-user.username='solid-form-hidden'
submit-button=''
data-trans='submit-button=circle.profile.buttonJoin'
)
solid-display(
bind-resources
nested-field='members'
fields='relation'
action-relation='relation'
widget-relation='hubl-circle-leave-button'
search-fields='user'
search-widget-user='solid-form-hidden'
search-value-user=""
empty-widget='hubl-circle-join-button'
hubl-inherit-bind-resources='hubl-circle-join-button'
hubl-inherit-user-id="search-value-user"
)
h2(data-trans='circle.profile.subTitle')
solid-widget(name='hubl-circle-user-admin')
template ${value ? "Administrateur" : ""}
solid-display.block(
bind-resources
nested-field='members'
loader-id='loader-circle-profile'
fields='classGroup(user.account.picture, sup(user.name, user, is_admin), sub(user.communities))'
widget-user='hubl-circle-team-contact'
class-classGroup='user-thumb is-spaced'
class-user.account.picture='avatar user-thumb__picture'
class-user.name='user-thumb__name'
class-user='user-thumb__send'
class-is_admin='user-thumb__admin'
multiple-user.communities
multiple-user.communities-fields="community.name"
widget-classGroup='solid-set-div'
widget-user.account.picture='hubl-user-avatar'
widget-is_admin='hubl-circle-user-admin'
)
#circle-edit.content-box__height(hidden, data-view="circle-edit")
include page-circle-edit.pug

View File

@ -0,0 +1,11 @@
#circle-listresources
solid-resource(
class='w700'
bind-resources
nested-field="resources"
range-resource-type=`${endpoints.resourcestypes || (endpoints.get && endpoints.get.resourcestypes)}`
range-resource-keyword=`${endpoints.resourceskeywords || (endpoints.get && endpoints.get.resourceskeywords)}`
range-resource-circle=`${endpoints.circles || (endpoints.get && endpoints.get.circles)}`
upload-dir=`${endpoints.uploads || (endpoints.get && endpoints.get.uploads)}`
id-prefix='circles'
)

View File

@ -0,0 +1,44 @@
.header-left
.logo
solid-link(next='dashboard')
img(src=`${clientLogo || '/images/logo.webp'}` style=`max-height:${clientLogoHeight || '74px'}`)
span.beta-tag(data-trans='header.beta')
solid-notifications.notLoggedIn(
nested-field="inbox"
bind-user
)
details#user-controls.notLoggedIn
summary(tabindex='0' role='button')
solid-display#user-controls__profile(
fields='first_name, account.picture'
class-first_name='flex'
class-account.picture='avatar'
widget-account.picture='hubl-user-avatar'
bind-user
)
#user-controls__panel
nav(role="user's functionalities menu")
ul
if (endpoints.uploads || (endpoints.get && endpoints.get.uploads)) && (endpoints.skills || (endpoints.get && endpoints.get.skills)) && (endpoints.users || (endpoints.get && endpoints.get.users))
li
solid-link(next='profile' data-trans='header.myProfile')
li
solid-link(next='admin' data-trans='header.admin')
li
solid-link(next='about' data-trans='header.about')
button(role='log out' onclick="document.querySelector('sib-auth').logout();" data-trans='header.logOut')
button.loggedIn(role='log in' onclick="document.querySelector('sib-auth').login();" data-trans='header.logIn')
button.notLoggedIn.mobile-menu-icon.icon-menu#toggleMainMenu
sib-auth(style='display:none!important')
sib-auth-provider(
data-authority=`${authority}`
data-id=`${authorityName || "authority"}`
data-client-name=`${clientName || "Hubl"}`
)

View File

@ -0,0 +1,179 @@
solid-widget(name='hubl-counter')
template
solid-badge(data-src="${value == 'badge' ? src : value}")
solid-widget(name='hubl-menu-jabberid')
template
div.hidden(
data-jabberID="${value}"
)
solid-widget(name='hubl-menu-publicprivate')
template
div ${value == 'Public' ? '#' : ''}
solid-widget(name='hubl-create')
template
p.create
span(data-trans="menuLeft.emptyCircleProject.notPartOf")
span  ${value}.
br
span(data-trans="menuLeft.emptyCircleProject.createNew")
span  
solid-link(next="${value == 'projet' ? 'admin-projects' : 'admin-circles'}", data-trans="menuLeft.emptyCircleProject.adminPanel")
solid-widget(name='hubl-menu-fix-url-circle')
template
solid-link(data-src="${value}" next="circle")
solid-display(
data-src='${value}'
fields='status, name, jabberID, badge'
value-badge='${value}'
widget-status='hubl-menu-publicprivate'
widget-badge='hubl-counter'
widget-jabberID='hubl-menu-jabberid'
widget-name='solid-display-div'
order-by="name"
)
solid-widget(name='hubl-menu-fix-url-project')
template
solid-link(data-src="${value}" next="project")
solid-display(
data-src='${value}'
fields='status, project(customer.name, name, jabberID), badge'
class-name='project-name'
class-customer.name='project-customer'
value-badge='${value}'
widget-status='hubl-menu-publicprivate'
widget-jabberID='hubl-menu-jabberid'
widget-badge='hubl-counter'
widget-name='solid-display-div'
order-by="customer.name"
)
solid-router#navbar-router(default-route='dashboard')
if endpoints.dashboards || (endpoints.get && endpoints.get.dashboards)
solid-route.menu(name='dashboard')
div.menu-label(data-trans="menuLeft.dashboard")
div.menu-icon.icon-home
div.divider
if publicDirectory && (endpoints.users || (endpoints.get && endpoints.get.users))
solid-route.menu(name='members')
div.menu-label(data-trans="menuLeft.profileDirectory")
div.menu-icon.icon-people
div.divider
if endpoints.joboffers || (endpoints.get && endpoints.get.joboffers)
solid-route.menu(name='job-offers', rdf-type='hd:joboffer')
div.menu-label(data-trans="menuLeft.jobBoard")
div.menu-icon.icon-briefcase
div.divider
if endpoints.resources || (endpoints.get && endpoints.get.resources)
solid-route.menu(name='resources')
div.menu-label(data-trans="menuLeft.resources")
div.menu-icon.icon-docs
div.divider
if endpoints.polls || (endpoints.get && endpoints.get.polls)
solid-route.menu(name='polls')
div.menu-label(data-trans="menuLeft.gov")
div.menu-icon.icon-bubbles
div.divider
if endpoints.events || (endpoints.get && endpoints.get.events)
solid-route.menu(name='events')
div.menu-label(data-trans="menuLeft.events")
div.menu-icon.icon-calendar
div.divider
if endpoints.projects || (endpoints.get && endpoints.get.projects)
div.menu-wrapper
solid-link
//- (next='admin-project-list')
div.menu
div.menu-chevron
div.menu-icon.icon-arrow-up
//- div.menu-icon.icon-arrow-right-circle
div.menu-label(data-trans="menuLeft.projects")
div.menu-icon.icon-folder-alt
solid-route(name='project', rdf-type='hd:project', use-id='', hidden)
div.sub-menu.menu-notification
div#loader-projects.loader.loader-menu
div
div
div
div
solid-display.project-tab(
bind-user
nested-field='projects'
fields='project'
loader-id='loader-projects'
empty-widget='hubl-create'
empty-value=''
data-trans="empty-value=menuLeft.emptyCircleProject.project"
widget-project='hubl-menu-fix-url-project'
order-by="project.customer.name"
)
div.divider
if endpoints.circles || (endpoints.get && endpoints.get.circles)
div.menu-wrapper
solid-link
//- (next='admin-circle-list')
div.menu
div.menu-chevron
div.menu-icon.icon-arrow-up
//- div.menu-icon.icon-arrow-right-circle
div.menu-label(data-trans="menuLeft.circles")
div.menu-icon.icon-folder-alt
solid-route(name='circle', rdf-type='hd:circle', use-id='', hidden)
div.sub-menu.menu-notification
div#loader-circles.loader.loader-menu
div
div
div
div
solid-display.circle-tab(
bind-user
nested-field='circles'
fields='circle'
loader-id='loader-circles'
empty-widget='hubl-create'
empty-value=''
data-trans="empty-value=menuLeft.emptyCircleProject.circle"
widget-circle='hubl-menu-fix-url-circle'
order-by="circle.name"
)
div.divider
if endpoints.users || (endpoints.get && endpoints.get.users)
div.menu-wrapper
div.menu
div.menu-chevron
div.menu-icon.icon-arrow-up
div.menu-label(data-trans="menuLeft.messages")
div.menu-icon.icon-envelope-letter
solid-route(name='messages', rdf-type='foaf:user', use-id='', hidden)
div.sub-menu.menu-notification
div#loader-messages.loader.loader-menu
div
div
div
div
solid-display.nosub.message-tab(
data-src=`${endpoints.users || (endpoints.get && endpoints.get.users)}`
fields='name, chatProfile.jabberID, badge'
loader-id='loader-messages'
search-fields="name"
search-label-name=""
data-trans="search-label-name=menuLeft.search"
search-widget-name="hubl-search-users"
widget-name='solid-display-div'
widget-badge='hubl-counter'
widget-chatProfile.jabberID='hubl-menu-jabberid'
action-badge='badge'
order-by='username'
next='messages'
paginate-by='10'
)
div.divider
solid-route(name='admin', hidden)
solid-route.menu(name='profile', hidden)
solid-route(name='about', hidden)

View File

@ -0,0 +1,4 @@
//- Templates for notifications
include notifications/message-circle.pug
include notifications/message-private.pug

View File

@ -0,0 +1,11 @@
solid-notifications-template(data-rdf-type='hd:circle')
template
.solid-notification__avatar
| ${await author['account.foaf:depiction'] ? `<img src="${await author['account.foaf:depiction']}" style="max-width:100%; max-height: 100%;" />` : `<object type="image/svg+xml" data="/images/alien.svg"></object>`}
.solid-notification__content
.solid-notification__title ${await author.name}
span.solid-notification__title__side
span(data-trans='notification.circle.in')
span.solid-notification__title__icon ${(await object.status) == 'Public' ? '#' : ''}
| ${await object.name}
p.solid-notification__summary ${summary}

View File

@ -0,0 +1,8 @@
solid-notifications-template(data-rdf-type='foaf:user')
template
.solid-notification__avatar
| ${await author['account.foaf:depiction'] ? `<img src="${await author['account.foaf:depiction']}" style="max-width:100%; max-height: 100%;" />` : `<object type="image/svg+xml" data="/images/alien.svg"></object>`}
.solid-notification__content
.solid-notification__title ${await author.name}
span.solid-notification__title__side(data-trans='notification.private.private')
p.solid-notification__summary ${summary}

View File

@ -0,0 +1,8 @@
.content-box.flex.full-width.chat-view
solid-xmpp-chat(
data-authentication='login',
data-auto-login='true',
data-websocket-url=`${xmppWebsocket || 'wss://jabber.happy-dev.fr/xmpp-websocket'}`,
data-i18n='en',
bind-resources
)

View File

@ -0,0 +1,90 @@
div.content-box__info
solid-widget(name="project-edit-members-delete")
template
solid-ac-checker(permission="acl:Delete" data-src="${src}")
solid-delete(
class='button text-bold text-uppercase reversed button-secondary bordered with-icon icon-close'
data-src="${src}"
data-label=''
data-trans='data-label=project.edit.buttonDelete'
)
solid-link(class='backlink right', bind-resources, next='project-profile' data-trans='project.edit.backlink')
solid-ac-checker(permission='acl:Write', bind-resources)
h1(data-trans='project.edit.title')
div#loader-project-edit.loader.loader-top
div
div
div
div
solid-form.form.button-register(
bind-resources
fields='line-1(customer.name, name)'
required-customer.name
required-name
label-name=''
class-name='form-label is-light is-half-width input-text-like'
label-customer.name=''
class-customer.name='form-label is-light is-half-width input-text-like'
partial=""
submit-button='Enregistrer'
next='project-information'
data-trans='label-name=project.edit.labelName;label-customer.name=project.edit.labelCustomer;submit-button=project.edit.buttonSubmit'
)
h2(data-trans='project.edit.subTitle')
solid-ac-checker(permission='acl:Append', bind-resources, nested-field='members')
solid-form.block.select-add(
bind-resources
nested-field='members'
fields='user'
range-user=`${endpoints.users || endpoints.get.users}`
class-user='team'
label-user=''
widget-user='solid-form-dropdown-autocompletion'
submit-button=''
data-trans='submit-button=project.edit.buttonAddMember'
)
.table-wrapper
.table
div.table-header.grey-color
div.w280(data-trans='project.edit.tableHeader1')
div.w162(data-trans='project.edit.tableHeader2')
//-class='table-body'
solid-display(
class='table-body'
bind-resources
nested-field='members'
fields='classGroup(classGrid(user.account.picture, sup(user.name, user.groups), sub(user.communities))), self'
loader-id='loader-project-edit'
class-classGroup='w280 cell border cell-with-id-card user-thumb is-spaced'
class-user.account.picture='user-thumb__picture avatar'
class-user.name='user-thumb__name'
class-user.groups='user-thumb__groups'
multiple-user.communities
multiple-user.communities-fields="community.name"
widget-user.account.picture='hubl-user-avatar'
multiple-user.groups
multiple-user.groups-fields='name'
action-self='self'
widget-self='project-edit-members-delete'
)

View File

@ -0,0 +1,10 @@
#project-left
div.content-box__info.flex(style="padding: 15px")
p(data-trans='circle.left.paragraphQuit')
p
span(data-trans='project.left.paragraphJoin')
span &nbsp;
solid-link(next="admin-project-list" data-trans='project.left.admin')
span &nbsp;
span(data-trans='project.left.paragraphContact')

View File

@ -0,0 +1,15 @@
div.content-box__info
solid-link(class='backlink right', bind-resources, next='project-edit' data-trans='project.modifyPicture.backlink')
h1(data-trans='project.modifyPicture.title')
solid-picture.project-edit-picture(
bind-resources
upload-src=`${endpoints.uploads || endpoints.post.uploads}`
upload-id="solid-project-edit-picture"
nested-fields='customer'
fields='logo'
next='project-edit'
additional='name'
)

View File

@ -0,0 +1,114 @@
solid-router(default-route='project-profile', hidden)
solid-route(name='project-profile')
solid-route(name='project-edit')
#project-profile(hidden, data-view="project-profile")
solid-widget(name='hubl-project-team-contact')
template
solid-link(data-src='\${value}', next='messages')
.content-box__info.flex
div#loader-project-profile.loader
div
div
div
div
.flex.space-between.with-padding.mobile-vertical-align
solid-display.mobile-margin__bottom(
bind-resources
fields='creationDateSet(title, creationDate)'
loader-id='loader-project-profile'
class-title='word-spacing-right'
value-title=''
data-trans='value-title=project.profile.creationDate'
widget-creationDate='solid-display-value-date'
)
solid-ac-checker(permission='acl:Append', bind-resources, nested-field='members')
solid-ac-checker(permission='acl:Delete', bind-resources)
solid-link(class='button mobile-full-width text-bold text-uppercase reversed button-primary bordered with-icon icon-pencil' next='project-edit' bind-resources data-trans='project.profile.buttonModify')
solid-ac-checker(no-permission='acl:Delete', bind-resources)
solid-link(class='button mobile-full-width text-bold text-uppercase reversed button-primary bordered with-icon icon-pencil' next='project-edit' bind-resources data-trans='project.profile.buttonAdd')
div.flex.desktop-button__end
solid-ac-checker(permission='acl:Delete', bind-resources)
solid-delete(
class='button mobile-full-width text-bold text-uppercase button-primary bordered with-icon icon-trash'
bind-resources
data-label=''
data-trans='data-label=project.profile.buttonDelete'
next='admin-projects'
)
solid-widget(name='hubl-project-leave-button')
template
solid-delete(
class='button mobile-full-width desktop-btn-margin__left text-bold text-uppercase reversed button-secondary bordered with-icon icon-close'
data-src="${src}"
data-label=''
data-trans='data-label=project.profile.buttonQuit'
next='project-left'
)
solid-ac-checker(no-permission='acl:Delete', bind-resources)
solid-display(
bind-resources
nested-field='members'
fields='relation'
action-relation='relation'
widget-relation='hubl-project-leave-button'
search-fields='user'
search-widget-user='solid-form-hidden'
search-value-user=""
hubl-inherit-user-id="search-value-user"
)
.flex.space-between
solid-display(
bind-resources
fields='label-captain, captain'
value-label-captain=''
data-trans='value-label-captain=project.profile.captain',
class-label-captain='h2-like'
widget-captain='hubl-captain'
)
br
h2(data-trans:'project.profile.subTitle')
solid-widget(name='hubl-project-user-admin')
template ${value ? "Administrateur" : ""}
solid-display.block(
bind-resources
nested-field='members'
fields='classGroup(user.account.picture, sup(user.name, user, is_admin), sub(user.communities, name))'
widget-user='hubl-project-team-contact'
class-classGroup='user-thumb is-spaced'
class-user.account.picture='avatar user-thumb__picture'
class-user.name='user-thumb__name'
class-user='user-thumb__send'
class-is_admin='user-thumb__admin'
multiple-user.communities
multiple-user.communities-fields="community.name"
class-name='user-thumb__lead'
widget-classGroup='solid-set-div'
widget-user.account.picture='hubl-user-avatar'
widget-is_admin='hubl-project-user-admin'
)
#project-edit.content-box__height(hidden, data-view="project-edit")
include page-project-edit.pug

View File

@ -0,0 +1,3 @@
//- Import your widgets from the `widget`folder here
include widgets/hubl-user-avatar.pug

View File

@ -0,0 +1,2 @@
solid-widget(name='hubl-user-avatar')
template ${value ? `<img src="${value}" style="max-width:100%; max-height: 100%;" />` : `<object type="image/svg+xml" data="/images/alien.svg"></object>`}