diff --git a/README.md b/README.md index ecb59f9..c58877a 100644 --- a/README.md +++ b/README.md @@ -120,14 +120,7 @@ On `config.json`: "css": "/path/to/custom.css", "i18n": { "lang": "fr", - "force": "false", - "files": [ - { - "name": "yourCustomLangName", - "file": "/path/to/file.json" - }, - ... - ] + "force": "false" } } } @@ -139,8 +132,6 @@ Where: * `client.css` is an URL to a distant CSS that'll be the last one loaded by the Hubl * `client.i18n.lang` is the fallback langage in case the visitor's browser one does not contain the string * `client.i18n.force` allows to ignore the visitor's browser langage and force the `client.i18n.lang` one -* `client.i18n.files[].name` allows to use custom client lang file. -* `client.i18n.files[].file` is the path the the json lang file ### Allow to login to your application @@ -159,56 +150,6 @@ Where: * `authority` is the OpenID Provider. Usually, if you use `djangoldp_account` it's the same as your djangoldp server. -### Custom lang files - -Each client can overwrite langs files with their own or even create custom langs. - -#### Overwrite langs - -On `config.json`: - -```json -{ - "client": { - "i18n": { - "files": [ - { - "name": "fr", - "file": "/path/to/custom-fr.json" - } - ] - } - } -} -``` - -#### Custom langs - -Needs `client.i18n.force` to `true` and `client.i18n.lang` to the custom lang name. - -Your custom JSON file **must** contain every keys, from the template and from every bloxes, prefixed by the blox namespace. See example on `src/locales/fr.json`. - -On `config.json`: - -```json -{ - "client": { - "i18n": { - "lang": "pirate", - "force": "true", - "files": [ - { - "name": "pirate", - "file": "/path/to/yarr.json" - } - ] - } - } -} -``` - -Setting custom langs will not allow user to choose their own lang. - ## Optional modules ### Adding modules @@ -405,6 +346,64 @@ You can get only future events by using: "get": "http://server.url/events/future/", ``` +### Internationalization + +Each client can overwrite langs files with their own or even create custom langs. + +#### Overwrite langs + +On `config.json`: + +```json + { + "type": "lang", + "parameters": { + "name": "fr", + "file": "/path/to/fr.json" + }, + "route": false + } +``` + +Where: + +* `parameters.name` allows to use custom client lang file. +* `parameters.file` is the path the the json lang file + +#### Custom langs + +Needs `client.i18n.force` to `true` and `client.i18n.lang` to the custom lang name. + +Your custom JSON file **must** contain every keys, from the template and from every bloxes, prefixed by the blox namespace. See example on `src/locales/fr.json`. + +On `config.json`: + +```json + "client": { + "i18n": { + "lang": "pirate", + "force": "true" + } + }, + "components": [ + { + "type": "i18n", + "parameters": { + "name": "pirate", + "file": "/path/to/yarr.json" + }, + "route": false + } + ] +``` + +Where: + +* `parameters.name` allows to use custom client lang file. +* `parameters.file` is the path the the json lang file + +Setting custom langs will not allow user to choose their own lang. + ### Job Offers Job Offers includes a job board with conversation. To activate them diff --git a/src/index.pug b/src/index.pug index 1e82095..d3c72a0 100644 --- a/src/index.pug +++ b/src/index.pug @@ -176,6 +176,13 @@ html(lang="en") if component.type == "notification" include views/partials/notifications.pug + if component.type == "lang" + hubl-lang( + hidden + lang=component.parameters.name + file=component.parameters.file + ) + if componentSet.has('profileDirectory') .scrollbar-content( id=`${getRoute("profileDirectory", true)}-profile` @@ -221,13 +228,6 @@ html(lang="en") hidden lang=client.i18n.lang?client.i18n.lang:"fr" )&attributes({"force": client.i18n.force}) - if client.i18n.files - for clientI18n in client.i18n.files - hubl-lang( - hidden - lang=clientI18n.name - file=clientI18n.file - ) div( id="swal-content-text" diff --git a/src/locales/en.json b/src/locales/en.json index b82fd85..428112d 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -77,6 +77,7 @@ "backlink": "Back", "title": " Create a circle", "labelStatus": "Circle status", + "labelCommunity": "Circle community *", "labelName": "Circle name *", "labelSubtitle": "Circle headline *", "labelDescription": "Circle description", @@ -88,6 +89,7 @@ "backlink": "Back", "title": "Edit your circle", "labelStatus": "Circle status *", + "labelCommunity": "Circle community *", "labelName": "Circle name *", "labelOwner": "Admin *", "labelDescription": "Circle description", @@ -104,12 +106,12 @@ "buttonMobile": "MENU", "subTitle": "Circles", "buttonCreate": " Create a circle", - "tableHeader1": "Name", - "tableHeader2": "Admins", - "tableHeader3": "Join", "buttonQuit": "Leave", "buttonJoin": "Join", - "searchBy": "Find a circle by name" + "searchBy": "Find a circle", + "searchButton": "search", + "tabJoin": "Discover circles", + "tabLeave": "My circles" }, "left": { "paragraphQuit": "You left this circle.", diff --git a/src/locales/es.json b/src/locales/es.json index 64492bd..e22a1f2 100644 --- a/src/locales/es.json +++ b/src/locales/es.json @@ -77,6 +77,7 @@ "backlink": "Atrás", "title": "Crear un círculo", "labelStatus": "Estado del círculo", + "labelCommunity": "Comunidad del círculo *", "labelName": "Nombre del círculo *", "labelSubtitle": "Subtítulo del círculo *", "labelDescription": "Descripción del círculo", @@ -88,6 +89,7 @@ "backlink": "Atrás", "title": "Modificá tu círculo", "labelStatus": "Estado del círculo *", + "labelCommunity": "Comunidad del círculo *", "labelName": "Nombre del círculo *", "labelOwner": "Administrador/a *", "labelSubtitle": "Subtítulo del círculo *", @@ -104,12 +106,12 @@ "buttonMobile": "MENÚ", "subTitle": "Círculos", "buttonCreate": "Crear un círculo", - "tableHeader1": "Nombre", - "tableHeader2": "Administradorxs", - "tableHeader3": "Unirse", "buttonQuit": "Salir", "buttonJoin": "Unirse", - "searchBy": "Busca un círculo por nombre " + "searchBy": "Busca un círculo", + "searchButton": "Buscar", + "tabJoin": "Descubrir los círculos", + "tabLeave": "Mis círculos" }, "left": { "paragraphQuit": "Dejaste este círculo.", diff --git a/src/locales/fr.json b/src/locales/fr.json index 168ed0a..25ba3bd 100644 --- a/src/locales/fr.json +++ b/src/locales/fr.json @@ -77,6 +77,7 @@ "backlink": "Retour", "title": "Créer un cercle", "labelStatus": "Statut du cercle", + "labelCommunity": "Communauté du cercle *", "labelName": "Nom du cercle *", "labelSubtitle": "Sous-titre du cercle *", "labelDescription": "Description du cercle", @@ -88,12 +89,12 @@ "backlink": "Retour", "title": "Modifie ton cercle", "labelStatus": "Statut du cercle *", + "labelCommunity": "Communauté du cercle *", "labelName": "Nom du cercle *", "labelOwner": "Administrateur ou administratrice *", "labelDescription": "Description du cercle", "descriptionHelp": "Vous pouvez utiliser Markdown", "labelSubtitle": "Sous-titre du cercle *", - "labelStatus": "Statut *", "subTitle": "Liste des membres :", "tableHeader1": "Nom", "tableHeader2": "Accès", @@ -105,12 +106,12 @@ "buttonMobile": "MENU", "subTitle": "Cercles", "buttonCreate": "Créer un cercle", - "tableHeader1": "Nom", - "tableHeader2": "Administrateurs", - "tableHeader3": "Rejoindre", "buttonQuit": "Quitter", "buttonJoin": "Rejoindre", - "searchBy": "Rechercher un cercle par nom" + "searchBy": "Trouver un cercle", + "searchButton": "Rechercher", + "tabJoin": "Découvrir des cercles", + "tabLeave": "Mes cercles" }, "left": { "paragraphQuit": "Tu as quitté ce cercle.", diff --git a/src/styles/admin-circles/_index.scss b/src/styles/admin-circles/_index.scss new file mode 100644 index 0000000..d02c585 --- /dev/null +++ b/src/styles/admin-circles/_index.scss @@ -0,0 +1,92 @@ +#admin-circles, +#admin-circles-leave { + + .form.search-button :not(.add-member)+button[type=submit] { + background-color: #E9F2FF; + border: none; + color: var(--color-secondary); + + &:before { + font-size: 15px; + margin-right: 6px; + content: "\e079"; + font-family: simple-line-icons; + font-style: normal; + font-weight: 400; + speak: none; + display: inline-block; + text-decoration: inherit; + width: 1em; + text-align: center; + font-variant: normal; + text-transform: none; + line-height: 1em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + } + + .masonry>div:nth-child(1) { + /* change from directory (nth-child(2))*/ + display: flex !important; + flex-wrap: wrap; + align-items: center; + + .circle-subtitle-custom { + height: 32px; + } + } + + .segment.hover:hover { + box-shadow: 0 0 16px 0 rgba(46, 63, 88, 0.34); + bottom: 2px; + } + + hubl-admin-circle-name:hover { + text-decoration: underline; + } + + hubl-admin-community-logo { + height: 76px; + width: 100%; + display: block; + div { + display: block; + width: 100%; + height: 100%; + background-position: center; + background-repeat: no-repeat; + background-size: contain; + } + } + + .tab.active { + font-weight: bold; + border-bottom: 5px solid var(--color-third); + padding-bottom: 10px; + } + + @media (max-width: 768px) { + + .tabs { + + &>li { + color: #3C3F57; + font-size: 13px; + letter-spacing: 0.18px; + line-height: 17px; + + &>.tab { + border-radius: 5px; + box-shadow: 0 0 6px 0 rgba(46, 63, 88, 0.17); + + &.active { + color: var(--color-primary); + border: 1px solid var(--color-primary); + box-shadow: none; + } + } + } + } + } +} \ No newline at end of file diff --git a/src/styles/index.scss b/src/styles/index.scss index 72de102..d2dd306 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -42,6 +42,7 @@ solid-display>div { @import 'chat'; @import 'forms'; @import 'communities'; +@import 'admin-circles'; nav#main__menu { @media (min-width: 768.01px) { @@ -92,6 +93,7 @@ hubl-menu-empty+hubl-menu-empty { /* And no I can't add that stupid icon because it'a an input. */ /* But now, with 0.16, it's a button and you can :D */ .join-button { + input, button { padding: 9px 20px; @@ -104,9 +106,44 @@ hubl-menu-empty+hubl-menu-empty { color: white; border: 1px solid var(--color-secondary); + &:before { + font-size: 15px; + margin-right: 6px; + content: "\e079"; + font-family: simple-line-icons; + font-style: normal; + font-weight: 400; + speak: none; + display: inline-block; + text-decoration: inherit; + width: 1em; + text-align: center; + font-variant: normal; + text-transform: none; + line-height: 1em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + &:hover { background: white; color: var(--color-secondary); } } -} \ No newline at end of file + + @media (max-width: 768px) { + + &.sm-full { + + input, + button { + width: 100%; + } + } + } +} + +/* Style that already exists in the framework but strangely I can't find it in the inspector. So I duplicate it here */ +.two-lines-ellipsis { + display: -webkit-box !important; +} diff --git a/src/views/page-admin.pug b/src/views/page-admin.pug index 805c28b..6ae6973 100644 --- a/src/views/page-admin.pug +++ b/src/views/page-admin.pug @@ -8,8 +8,17 @@ data-view=`admin-${component.route}` no-render ) - include partials/admin/page-admin-circles.pug - div( + - var page = 'join'; + include partials/admin/page-admin-circles-join.pug + div.text-disable-selection( + id=`admin-${component.route}-leave` + hidden + data-view=`admin-${component.route}-leave` + no-render + ) + - var page = 'leave'; + include partials/admin/page-admin-circles-leave.pug + div.text-disable-selection( id=`admin-${component.route}-create` hidden data-view=`admin-${component.route}-create` diff --git a/src/views/partials/admin/page-admin-circles-create.pug b/src/views/partials/admin/page-admin-circles-create.pug index 0158dce..effa98e 100644 --- a/src/views/partials/admin/page-admin-circles-create.pug +++ b/src/views/partials/admin/page-admin-circles-create.pug @@ -14,27 +14,32 @@ div.segment.full.padding-large.sm-padding-xsmall.sm-padding-top-medium.whitespac solid-form.form( data-src=`${getComponent('circles').endpoints.post}` - fields='status, linebreak, name, subtitle, description, help' + fields='status, community, name, subtitle, description, help' required-status + required-community required-name required-subtitle 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-linebreak='segment half sm-hidden' + 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-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-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' - label-status='' + label-community='' label-name='' label-subtitle='' label-description='' label-help='' + range-community='store://user.communities' + option-label-community="community.name" + widget-status='hubl-status' + widget-community='solid-form-dropdown-autocompletion-label' widget-linebreak='solid-form-hidden' widget-description='solid-form-richtext-label' @@ -45,5 +50,5 @@ div.segment.full.padding-large.sm-padding-xsmall.sm-padding-top-medium.whitespac submit-button='' submit-widget="button" - data-trans='label-status=circle.create.labelStatus;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='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' ) diff --git a/src/views/partials/admin/page-admin-circles-join.pug b/src/views/partials/admin/page-admin-circles-join.pug new file mode 100644 index 0000000..dc2d540 --- /dev/null +++ b/src/views/partials/admin/page-admin-circles-join.pug @@ -0,0 +1,46 @@ +solid-widget(name=`hubl-admin-circle-join-button`) + template + solid-form( + class='join-button sm-full text-xsmall' + data-src='${value}' + + fields='user.username' + value-user.username='hubl-workaround-493' + widget-user.username='solid-form-hidden' + + submit-button='' + submit-widget="button" + data-trans='submit-button=circle.list.buttonJoin' + ) + hubl-reactivity(data-src=`${getComponent('circles').endpoints.get}` target-src='${value}') + hubl-reactivity(data-src=`${getComponent('circles').endpoints.get}joinable/` target-src='${value}') + hubl-reactivity(data-src=`${getComponent('circles').endpoints.post}` target-src='${value}') + hubl-reactivity(data-src=`${getComponent('circles').endpoints.post}joinable/` target-src='${value}') + hubl-reactivity(bind-user nested-field="circles" target-src='${value}') + +include page-admin-circles.pug + +div.segment.full.padding-small.padding-top-xsmall.sm-padding-xsmall.whitespace-normal + 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' + data-src=`${getComponent('circles').endpoints.get}joinable/` + fields='segment1(segment2(community.community.logo), segment3(name, subtitle, counter, members))' + filtered-by=`admin-circle-filter-${page}` + order-by='name' + paginate-by='20' + loader-id=`loader-admin-circles-${page}` + + 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 padding-top-medium sm-padding-medium border-top border-color-grey text-center whitespace-normal' + class-name='segment block text-xlarge text-bold text-color-heading margin-bottom-xsmall whitespace-normal' + class-subtitle='segment two-lines-ellipsis margin-bottom-xlarge sm-margin-bottom-medium whitespace-normal circle-subtitle-custom' + class-counter='segment block margin-bottom-large whitespace-normal' + + widget-community.community.logo='hubl-admin-community-logo' + action-name=`${getRoute(`circles`, true)}-information` + widget-name='hubl-admin-circle-name' + action-counter="counter" + widget-counter='hubl-admin-circle-counter-alternate' + widget-members=`hubl-admin-circle-join-button` + ) diff --git a/src/views/partials/admin/page-admin-circles-leave.pug b/src/views/partials/admin/page-admin-circles-leave.pug new file mode 100644 index 0000000..43a75b2 --- /dev/null +++ b/src/views/partials/admin/page-admin-circles-leave.pug @@ -0,0 +1,57 @@ +solid-widget(name=`leave-circle-reactivity`) + template + hubl-reactivity(data-src=`${getComponent('circles').endpoints.get}` target-src='${value}') + hubl-reactivity(data-src=`${getComponent('circles').endpoints.get}joinable/` target-src='${value}') + hubl-reactivity(data-src=`${getComponent('circles').endpoints.post}` target-src='${value}') + hubl-reactivity(data-src=`${getComponent('circles').endpoints.post}joinable/` target-src='${value}') + hubl-reactivity(bind-user nested-field="circles" target-src='${value}') + +solid-widget(name=`hubl-admin-circle-leave-button`) + template + solid-delete( + class='segment sm-full 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=circle.list.buttonQuit' + ) + hubl-reactivity(data-src=`${getComponent('circles').endpoints.get}` target-src='${src}') + hubl-reactivity(data-src=`${getComponent('circles').endpoints.get}joinable/` target-src='${src}') + hubl-reactivity(data-src=`${getComponent('circles').endpoints.post}` target-src='${src}') + hubl-reactivity(data-src=`${getComponent('circles').endpoints.post}joinable/` target-src='${src}') + hubl-reactivity(bind-user nested-field="circles" target-src='${src}') + solid-display( + data-src="${src}" + fields="circle" + widget-circle=`leave-circle-reactivity` + hidden + ) + +include page-admin-circles.pug + +div.segment.full.padding-small.padding-top-xsmall.sm-padding-xsmall.whitespace-normal + solid-display( + bind-user + nested-field='circles' + 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' + fields='segment1(segment2(circle.community.community.logo), segment3(circle.name, circle.subtitle, counter, leaveButton))' + filtered-by=`admin-circle-filter-${page}` + order-by='name' + paginate-by='20' + loader-id=`loader-admin-circles-${page}` + + 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 padding-top-medium sm-padding-medium border-top border-color-grey text-center whitespace-normal' + class-circle.name='segment block text-xlarge text-bold text-color-heading margin-bottom-xsmall whitespace-normal' + class-circle.subtitle='segment two-lines-ellipsis margin-bottom-xlarge sm-margin-bottom-medium whitespace-normal circle-subtitle-custom' + class-counter='segment block margin-bottom-large whitespace-normal' + + widget-circle.community.community.logo='hubl-admin-community-logo' + action-circle.name=`${getRoute(`circles`, true)}-information` + widget-circle.name='hubl-admin-circle-fix-url-name' + action-counter="counter" + widget-counter='hubl-admin-circle-counter-alternate-fix' + action-leaveButton="joinButton" + widget-leaveButton=`hubl-admin-circle-leave-button` + ) + \ No newline at end of file diff --git a/src/views/partials/admin/page-admin-circles.pug b/src/views/partials/admin/page-admin-circles.pug index 174ece0..2cf0519 100644 --- a/src/views/partials/admin/page-admin-circles.pug +++ b/src/views/partials/admin/page-admin-circles.pug @@ -1,15 +1,15 @@ 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.padding-large.sm-padding-xsmall.sm-padding-top-normal.whitespace-normal +div.segment.full.padding-large.padding-top-medium.padding-bottom-xsmall.sm-padding-xsmall.sm-padding-top-xxsmall.whitespace-normal - div#loader-admin-circles.loader.loader-top + div(id=`loader-admin-circles-${page}`).loader.loader-top div div div div - div.segment.full.margin-bottom-xlarge.whitespace-normal + div.segment.full.margin-bottom-medium.sm-padding-none.whitespace-normal div.segment.half.sm-full h3.text-color-heading.text-semibold.text-letter-spacing-large(data-trans='circle.list.subTitle') div.segment.half.sm-full.text-right @@ -20,119 +20,36 @@ div.segment.full.padding-large.sm-padding-xsmall.sm-padding-top-normal.whitespac data-trans='circle.list.buttonCreate' ) - solid-form-search.form.search-form( - id="admin-circle-filter" + solid-form-search.form.search-form.search-button( + id=`admin-circle-filter-${page}` fields='name' label-name='' widget-name='solid-form-label-text' - class-name="segment margin-bottom-medium third sm-full padding-right-small sm-padding-none text-small text-semibold text-uppercase text-color-heading" + class-name="segment margin-bottom-medium sm-margin-bottom-none third sm-full padding-right-small sm-padding-none text-small text-semibold text-uppercase text-color-heading" submit-button="" submit-widget="button" - data-trans='label-name=circle.list.searchBy;submit-button=goButton' + data-trans='label-name=circle.list.searchBy;submit-button=circle.list.searchButton' ) - .segment.table-wrapper - .table - - div.table-header.bg-color-third.text-color-heading - div.segment.table-cell.third(data-trans='circle.list.tableHeader1') - div.segment.table-cell.third(data-trans='circle.list.tableHeader2') - div.segment.table-cell.third(data-trans='circle.list.tableHeader3') - - solid-widget(name=`leave-circle-reactivity`) - template - hubl-reactivity(data-src=`${getComponent('circles').endpoints.get}` target-src='${value}') - hubl-reactivity(data-src=`${getComponent('circles').endpoints.get}joinable/` target-src='${value}') - hubl-reactivity(data-src=`${getComponent('circles').endpoints.post}` target-src='${value}') - hubl-reactivity(data-src=`${getComponent('circles').endpoints.post}joinable/` target-src='${value}') - hubl-reactivity(bind-user nested-field="circles" target-src='${value}') - - solid-widget(name=`hubl-admin-circle-leave-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='data-label=circle.list.buttonQuit' - ) - hubl-reactivity(data-src=`${getComponent('circles').endpoints.get}` target-src='${src}') - hubl-reactivity(data-src=`${getComponent('circles').endpoints.get}joinable/` target-src='${src}') - hubl-reactivity(data-src=`${getComponent('circles').endpoints.post}` target-src='${src}') - hubl-reactivity(data-src=`${getComponent('circles').endpoints.post}joinable/` target-src='${src}') - hubl-reactivity(bind-user nested-field="circles" target-src='${src}') - solid-display( - data-src="${src}" - fields="circle" - widget-circle=`leave-circle-reactivity` - hidden - ) - - solid-display( - class='table-body' - filtered-by="admin-circle-filter" - bind-user - nested-field='circles' - fields='cell1(name(circle.name), counter, circle.subtitle), cell2(circle.owner), cell3(leaveButton)' - loader-id='loader-admin-circles' - - class-cell1='segment table-cell third whitespace-normal' - class-cell2='segment table-cell third text-center text-left' - class-cell3='segment table-cell third text-center' - - action-circle.name='circle.name' - widget-circle.name='hubl-admin-circle-link-alternate' - class-circle.subtitle='segment full text-ellipsis' - - action-leaveButton="joinButton" - widget-leaveButton=`hubl-admin-circle-leave-button` - widget-circle.owner='hubl-circle-owner' - action-counter="counter" - widget-counter="hubl-admin-circle-counter-alternate" - - order-by="circle.name" - ) - - solid-widget(name=`hubl-admin-circle-join-button`) - template - solid-form( - class='join-button text-xsmall' - data-src='${value}' - - fields='user.username' - value-user.username='hubl-workaround-493' - widget-user.username='solid-form-hidden' - - submit-button='' - submit-widget="button" - data-trans='submit-button=circle.list.buttonJoin' - ) - hubl-reactivity(data-src=`${getComponent('circles').endpoints.get}` target-src='${value}') - hubl-reactivity(data-src=`${getComponent('circles').endpoints.get}joinable/` target-src='${value}') - hubl-reactivity(data-src=`${getComponent('circles').endpoints.post}` target-src='${value}') - hubl-reactivity(data-src=`${getComponent('circles').endpoints.post}joinable/` target-src='${value}') - hubl-reactivity(bind-user nested-field="circles" target-src='${value}') - - solid-display( - class='table-body' - filtered-by="admin-circle-filter" - - data-src=`${getComponent('circles').endpoints.get}joinable/` - fields='cell1(name, counter, subtitle), cell2(owner), cell3(members)' - loader-id='loader-admin-circles' - - class-cell1='segment table-cell third whitespace-normal' - class-cell2='segment table-cell third text-center text-left' - class-cell3='segment table-cell third text-center' - - class-name='segment block margin-bottom-xxsmall text-xlarge text-color-heading text-semibold text-letter-spacing-large text-underline text-ellipsis admin-name-ellipsis' - action-name='name' - widget-name='hubl-admin-circle-link' - class-subtitle='segment full text-ellipsis' - - widget-owner='hubl-circle-owner' - widget-members=`hubl-admin-circle-join-button` - action-counter="counter" - widget-counter="hubl-admin-circle-counter" - - order-by="name" - ) + ul(class='segment full margin-top-xsmall sm-margin-top-none sm-padding-none whitespace-normal tabs text-disable-selection') + li(class='segment sm-full text-xlarge text-color-heading text-letter-spacing-large margin-right-medium sm-margin-right-none sm-margin-bottom-xsmall') + solid-link(class='segment sm-full sm-padding-xsmall tab' next=`admin-${getRoute('circles', true)}`)&attributes({'class': page == 'join' ? 'active' : false}) + span(class='segment lg-hidden icon icon-globe icon-margin-right-xsmall') + span(data-trans='circle.list.tabJoin') + solid-display( + class="margin-left-xxsmall" + data-src=`${getComponent('circles').endpoints.get}joinable/` + fields="" + counter-template="(${counter})" + ) + li(class='segment sm-full text-xlarge text-color-heading text-letter-spacing-large margin-left-medium sm-margin-left-none') + solid-link(class='segment sm-full sm-padding-xsmall tab' next=`admin-${getRoute('circles', true)}-leave`)&attributes({'class': page == 'leave' ? 'active' : false}) + span(class='segment lg-hidden icon icon-check icon-margin-right-xsmall') + span(data-trans='circle.list.tabLeave') + solid-display( + class="margin-left-xxsmall" + bind-user + nested-field="circles" + fields="" + counter-template="(${counter})" + ) diff --git a/src/views/partials/circle/page-circle-edit.pug b/src/views/partials/circle/page-circle-edit.pug index 43ceeba..be7d998 100644 --- a/src/views/partials/circle/page-circle-edit.pug +++ b/src/views/partials/circle/page-circle-edit.pug @@ -25,11 +25,12 @@ div.segment.full.padding-large.whitespace-normal solid-form.form( bind-resources - fields='name, subtitle, description, status, owner' + fields='name, subtitle, description, status, community, owner' required-status required-name required-owner required-subtitle + required-community range-owner=`${component.endpoints.owners}` label-name='' @@ -37,27 +38,33 @@ div.segment.full.padding-large.whitespace-normal label-description='' label-subtitle='' label-status='' + label-community='' 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-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-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-owner='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='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-help='segment full text-small margin-bottom-medium padding-left-small' widget-status='hubl-status' widget-description='solid-form-richtext-label' widget-help='solid-form-hidden-label' + widget-community='solid-form-dropdown-autocompletion-label' widget-owner='solid-form-dropdown-autocompletion-label' + range-community='store://user.communities' + option-label-community="community.name" + partial='' submit-button='' submit-widget="button" next=`${component.route}-information` - data-trans='label-status=circle.edit.labelStatus;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='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' ) 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') diff --git a/src/views/partials/menu-left.pug b/src/views/partials/menu-left.pug index cb1a0f4..fe3563f 100644 --- a/src/views/partials/menu-left.pug +++ b/src/views/partials/menu-left.pug @@ -24,6 +24,7 @@ solid-router#navbar-router(default-route='dashboard') div.segment.text-uppercase.text-letter-spacing-large(data-trans=`${component.name?component.name:"menuLeft.dashboard"}`) div.divider if component.type == "circles" +<<<<<<< HEAD div.jsMenuTab div.menu-header.segment.full.padding-xsmall.text-semibold.text-color-white.bg-color-heading.hover.jsMenuHeader div.segment.margin-right-xxsmall.jsMenuArrow @@ -39,6 +40,23 @@ solid-router#navbar-router(default-route='dashboard') solid-route(name=`admin-${component.route}`, hidden) solid-route(name=`admin-${component.route}-create`, hidden) solid-route(name=`admin-${component.route}-leave`, hidden) +======= + div.menu-wrapper + if componentSet.has("admin") + solid-route.menu.segment.full.padding-small.text-semibold.text-color-white.heading-active.bg-color-heading.hover.active(name=`admin-${component.route}`) + div.segment.margin-right-xxsmall + div.segment.icon.icon-small.icon-folder-alt + div.segment.three-quarter.text-uppercase.text-letter-spacing-large(data-trans=`${component.name?component.name:"menuLeft.circles"}`) + div.menu-chevron.segment + div.menu-icon.icon-arrow-right-circle + solid-route(name=`admin-${component.route}-create`) + solid-route(name=`admin-${component.route}-leave`) + else + div.menu.segment.full.padding-small.text-semibold.text-color-white.heading-active.bg-color-heading + div.segment.margin-right-xxsmall + div.segment.icon.icon-small.icon-folder-alt + div.segment.three-quarter.text-uppercase.text-letter-spacing-large(data-trans=`${component.name?component.name:"menuLeft.circles"}`) +>>>>>>> 4860b20e20e4be6643aaaa0c5f8c1ea3d015ee3b solid-route(name=component.route, rdf-type='hd:circle', use-id='', hidden) solid-route(name=`${component.route}-left`) div.sub-menu.menu-notification.padding-bottom-xxsmall.jsMenuSub diff --git a/src/views/partials/widgets.pug b/src/views/partials/widgets.pug index 201359f..b50b178 100644 --- a/src/views/partials/widgets.pug +++ b/src/views/partials/widgets.pug @@ -1,11 +1,14 @@ //- Import your widgets from the `widget`folder here include widgets/hubl-action-community.pug +include widgets/hubl-admin-circle-counter-alternate-fix.pug include widgets/hubl-admin-circle-counter-alternate.pug include widgets/hubl-admin-circle-counter.pug include widgets/hubl-admin-circle-link-alternate.pug include widgets/hubl-admin-circle-link.pug +include widgets/hubl-admin-circle-name.pug include widgets/hubl-admin-community-counter.pug +include widgets/hubl-admin-community-logo.pug include widgets/hubl-admin-project-counter-alternate.pug include widgets/hubl-admin-project-counter.pug include widgets/hubl-admin-project-link-alternate.pug diff --git a/src/views/partials/widgets/hubl-admin-circle-counter-alternate-fix.pug b/src/views/partials/widgets/hubl-admin-circle-counter-alternate-fix.pug new file mode 100644 index 0000000..dc2e1a0 --- /dev/null +++ b/src/views/partials/widgets/hubl-admin-circle-counter-alternate-fix.pug @@ -0,0 +1,8 @@ +if componentSet.has('admin') && componentSet.has('circles') + solid-widget(name='hubl-admin-circle-counter-alternate-fix') + template + solid-display( + fields='circle' + data-src="${src}" + widget-circle="hubl-admin-circle-counter-alternate" + ) diff --git a/src/views/partials/widgets/hubl-admin-circle-counter-alternate.pug b/src/views/partials/widgets/hubl-admin-circle-counter-alternate.pug index d7c9ae1..1eecc0f 100644 --- a/src/views/partials/widgets/hubl-admin-circle-counter-alternate.pug +++ b/src/views/partials/widgets/hubl-admin-circle-counter-alternate.pug @@ -1,11 +1,12 @@ if componentSet.has('admin') && componentSet.has('circles') solid-widget(name='hubl-admin-circle-counter-alternate') template - div(style='float:right') + div + span.icon.icon-people.icon-third.icon-large.margin-right-xsmall solid-display( fields='' - data-src="${src}" - nested-field="circle.members" + data-src="${src || value}" + nested-field="members" counter-template="\\\${counter}" ) - span.icon.icon-people.icon-xsmall.margin-right-xxsmall + span members diff --git a/src/views/partials/widgets/hubl-admin-circle-name.pug b/src/views/partials/widgets/hubl-admin-circle-name.pug new file mode 100644 index 0000000..1ea5363 --- /dev/null +++ b/src/views/partials/widgets/hubl-admin-circle-name.pug @@ -0,0 +1,26 @@ +if componentSet.has('admin') && componentSet.has('circles') + solid-widget(name='hubl-admin-circle-name-title') + template + div.segment.block.one-line-ellipsis( + title="\${value}" + ) ${value} + + solid-widget(name='hubl-admin-circle-name') + template + solid-link( + data-src="${src || value}" + next=`${getRoute(`circles`, true)}-information` + ) + solid-display( + data-src="${src || value}" + fields="name" + widget-name="hubl-admin-circle-name-title" + ) + + solid-widget(name='hubl-admin-circle-fix-url-name') + template + solid-display( + data-src="${src}" + fields="circle" + widget-circle='hubl-admin-circle-name' + ) diff --git a/src/views/partials/widgets/hubl-admin-community-logo.pug b/src/views/partials/widgets/hubl-admin-community-logo.pug new file mode 100644 index 0000000..8db707e --- /dev/null +++ b/src/views/partials/widgets/hubl-admin-community-logo.pug @@ -0,0 +1,3 @@ +if componentSet.has('admin') && componentSet.has('circles') + solid-widget(name='hubl-admin-community-logo') + template ${value != "" ? `
` : `
`} \ No newline at end of file diff --git a/src/views/partials/widgets/hubl-menu-contact-removed.pug b/src/views/partials/widgets/hubl-menu-contact-removed.pug new file mode 100644 index 0000000..392e52a --- /dev/null +++ b/src/views/partials/widgets/hubl-menu-contact-removed.pug @@ -0,0 +1,4 @@ +if componentSet.has('chat') + solid-widget(name='hubl-menu-contact-removed') + template ${value != "" ? ` + ` : ""}