fix: various fixes on community directory

This commit is contained in:
Jean-Baptiste Pasquier 2021-04-09 13:28:39 +02:00
parent 3811e74a88
commit 42205d90cd
25 changed files with 200 additions and 133 deletions

View File

@ -295,6 +295,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 includes card generation from HTML. To activate them, you need:

View File

@ -179,7 +179,8 @@
"labelLogo": "Community Logo",
"subTitle": "Pictures",
"subTitle1": "Address",
"buttonSubmit": "Save"
"buttonSubmit": "Save",
"noPermission": "You don't have access to this page"
}
},
"project": {

View File

@ -179,7 +179,8 @@
"labelLogo": "",
"subTitle": "",
"subTitle1": "",
"buttonSubmit": "Guardar"
"buttonSubmit": "Guardar",
"noPermission": ""
}
},
"project": {

View File

@ -177,7 +177,8 @@
"labelLogo": "Logo de la communauté",
"subTitle": "Photos",
"subTitle1": "Adresse",
"buttonSubmit": "Enregistrer"
"buttonSubmit": "Enregistrer",
"noPermission": "Vous n'avez pas la permission"
}
},
"project": {

View File

@ -58,10 +58,15 @@
}
.form.search-button :not(.add-member)+button[type=submit] {
background-color: #E9F2FF;
border: none;
background-color: transparent;
border: 1px solid var(--color-secondary);
color: var(--color-secondary);
&:hover {
background-color: var(--color-secondary);
color: #fff;
}
&:before {
font-size: 15px;
margin-right: 6px;
@ -76,7 +81,7 @@
text-align: center;
font-variant: normal;
text-transform: none;
line-height: 1em;
line-height: 13px;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
@ -96,6 +101,7 @@
.segment.hover:hover {
box-shadow: 0 0 16px 0 rgba(46, 63, 88, 0.34);
bottom: 2px;
cursor: pointer;
}
hubl-admin-circle-name:hover {
@ -106,6 +112,7 @@
height: 76px;
width: 100%;
display: block;
div {
display: block;
width: 100%;
@ -242,4 +249,7 @@
}
}
}
.flex {
display: flex;
}
}

View File

@ -24,7 +24,7 @@
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'
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))'

View File

@ -1,114 +1,138 @@
div.bg-color-white
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.half.sm-full
solid-display.text-color-heading.text-bold.text-xxlarge.text-letter-spacing-large(
bind-resources
fields='name'
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-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
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)'
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=''
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 half sm-full padding-right-small sm-padding-none 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-profile.shortDescription="segment margin-bottom-medium full sm-full padding-right-small sm-padding-none 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='segment margin-bottom-medium half sm-full padding-right-small 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-segment="segment full"
class-logo="segment margin-bottom-medium full sm-full padding-right-small 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'
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
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"
next=`${component.route}-profile`
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'
)
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')
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
solid-form.form(
bind-resources
fields='profile.picture1, profile.picture2, profile.picture3'
fields="profile.picture1, profile.picture2, profile.picture3"
upload-url-profile.picture1
upload-url-profile.picture2
upload-url-profile.picture3
upload-url-profile.picture1=component.endpoints.uploads
upload-url-profile.picture2=component.endpoints.uploads
upload-url-profile.picture3=component.endpoints.uploads
label-profile.picture1=''
label-profile.picture2=''
label-profile.picture3=''
widget-profile.picture1="solid-form-image-label"
widget-profile.picture2="solid-form-image-label"
widget-profile.picture3="solid-form-image-label"
class-profile.picture1='segment margin-bottom-medium third sm-full padding-right-small sm-padding-none text-small text-semibold text-uppercase text-color-heading'
class-profile.picture2='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.picture3='segment margin-bottom-medium third sm-full padding-left-small sm-padding-none text-small text-semibold text-uppercase text-color-heading'
label-profile.picture1=""
label-profile.picture2=""
label-profile.picture3=""
submit-button=''
submit-widget="button"
next=`${component.route}-profile`
class-profile.picture1="segment margin-bottom-medium third sm-full padding-right-small sm-padding-none text-small text-semibold text-uppercase text-color-heading"
class-profile.picture2="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.picture3="segment margin-bottom-medium third sm-full padding-left-small sm-padding-none text-small text-semibold text-uppercase text-color-heading"
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'
)
submit-button=""
submit-widget="button"
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')
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"
)
solid-table.form(
bind-resources
nested-fields='addresses'
fields='address_line1, address_line2'
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")
editable-address_line1
editable-address_line2
solid-form.form(
bind-resources
nested-field="addresses"
fields="address_line1, address_line2"
label-address_line1=''
label-address_line2=''
label-address_line1=""
label-address_line2=""
widget-address_line1='solid-form-label-text'
widget-address_line2='solid-form-label-text'
widget-community="solid-form-hidden"
widget-address_line1="solid-form-label-text"
widget-address_line2="solid-form-label-text"
class-address_line1='segment margin-bottom-medium half sm-full padding-right-small sm-padding-none text-small text-semibold text-uppercase text-color-heading'
class-address_line2='segment margin-bottom-medium half sm-full padding-right-small padding-left-small sm-padding-none text-small text-semibold text-uppercase text-color-heading'
submit-button=""
submit-widget="button"
submit-button=''
submit-widget="button"
next=`${component.route}-profile`
data-trans="label-addresses.address_line1=communities.edit.labelAddressLine1;label-addresses.address_line2=communities.edit.labelAddressLine2"
)
data-trans='label-addresses.address_line1=communities.edit.labelAddressLine1;label-addresses.address_line2=communities.edit.labelAddressLine2'
)
solid-table.form(
selectable
header
bind-resources
nested-fields='addresses'
fields='address_line1, address_line2'
editable-address_line1
editable-address_line2
label-address_line1=''
label-address_line2=''
widget-address_line1='solid-form-label-text'
widget-address_line2='solid-form-label-text'
submit-button=''
submit-widget="button"
next=`${component.route}-profile`
data-trans='label-addresses.address_line1=communities.edit.labelAddressLine1;label-addresses.address_line2=communities.edit.labelAddressLine2'
)
//- solid-ac-checker(no-permission="acl:Write", bind-resources)
//- span(data-trans="communities.edit.noPermission")

View File

@ -5,11 +5,11 @@
div.segment.half.sm-full
solid-form-search.form.search-form.search-button(
id=`communities-filter-map`
fields='name'
search-name='community.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"
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"
@ -20,10 +20,10 @@
span
solid-map.communities-map.margin-right-xsmall.margin-left-xsmall.sm-margin-none.shadow(
data-src=`${component.endpoints.get}`
data-src=`${component.endpoints.addresses}`
loader-id=`loader-${component.route}-map`
nested-field="addresses"
fields="position(community.name, community.profile.shortDescription, address_line1, address_line2)"
class-position="segment"
clustering=""
filtered-by=`communities-filter-map`
style="display:block;height:698px;"

View File

@ -15,11 +15,11 @@ div.community-profile.padding-medium.sm-padding-none
loader-id=`loader-${component.route}-profile`
class-segment0="segment full padding-xlarge sm-padding-none whitespace-normal"
class-segment1="community-profile-logo segment third sm-full margin-top-medium padding-top-medium padding-right-medium sm-margin-top-xsmall sm-padding-medium text-center"
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 two-third 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-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 text-center"
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"
@ -35,18 +35,14 @@ div.community-profile.padding-medium.sm-padding-none
class-profile.description="segment full whitespace-normal"
class-segment10="segment full text-right margin-top-xxlarge"
action-edit=`${component.route}-edit`
class-edit="segment sm-full button text-xsmall text-bold text-uppercase text-center reversed color-secondary bordered icon icon-pencil"
value-edit=""
data-trans='value-edit=communities.profile.edit'
class-segment11="segment full whitespace-normal"
class-segment11="segment full whitespace-normal flex"
class-profile.picture1="communities-profile-picture segment third"
class-profile.picture2="communities-profile-picture segment third"
class-profile.picture3="communities-profile-picture segment third"
widget-logo="hubl-communities-profile-logo"
widget-profile.description="solid-display-richtext-label"
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"
@ -59,6 +55,8 @@ div.community-profile.padding-medium.sm-padding-none
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"
bind-resources
)

View File

@ -21,6 +21,7 @@ include widgets/hubl-circle-owner.pug
include widgets/hubl-circle-team-contact.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-email.pug
include widgets/hubl-communities-edit-website.pug
include widgets/hubl-communities-logo.pug

View File

@ -0,0 +1,13 @@
if componentSet.has('communities') && getRoute('communities')
solid-widget(name='hubl-communities-edit-button')
template
solid-ac-checker(
no-permission='acl:Control'
data-src="${src}"
)
solid-link(
class="segment 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`
)

View File

@ -1,4 +1,4 @@
if componentSet.has('communities')
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")

View File

@ -1,4 +1,4 @@
if componentSet.has('communities')
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')

View File

@ -1,3 +1,3 @@
if componentSet.has('communities')
if componentSet.has('communities') && getRoute('communities')
solid-widget(name='hubl-communities-logo')
template ${value != "" ? `<div \style="background-image:url(${value});" />` : `<div></div>`}

View File

@ -1,4 +1,4 @@
if componentSet.has('communities')
if componentSet.has('communities') && getRoute('communities')
solid-widget(name='hubl-communities-profile-address')
template
| ${await value != "" ? `<span class="icon mdi-map-marker icon-third icon-large icon-margin-right-xsmall">\${await value.adress_line1}<br>\${await value.adress_line2}</span>` : `<span></span>`}
| ${await value.adress_line1 != "" ? `<span class="icon mdi-map-marker icon-third icon-large icon-margin-right-xsmall">\${await value.adress_line1}<br>\${await value.adress_line2 || ""}</span>` : ""}

View File

@ -1,3 +1,3 @@
if componentSet.has('communities')
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" href="mailto:\${value}">\$value</a>` : `<span></span>`}
template ${value != "" ? `<a class="link margin-bottom-xsmall icon mdi-email-outline icon-third icon-large icon-margin-right-xsmall" href="mailto:\${value}">${value}</a>` : ""}

View File

@ -1,3 +1,3 @@
if componentSet.has('communities')
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>` : `<span></span>`}
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>` : ""}

View File

@ -1,3 +1,3 @@
if componentSet.has('communities')
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>` : `<span></span>`}
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>` : ""}

View File

@ -1,3 +1,3 @@
if componentSet.has('communities')
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>` : `<span></span>`}
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>` : ""}

View File

@ -1,3 +1,3 @@
if componentSet.has('communities')
if componentSet.has('communities') && getRoute('communities')
solid-widget(name='hubl-communities-profile-logo')
template ${value != "" ? `<div \style="background-image:url(${value});" />` : `<div></div>`}
template ${value != "" ? `<div \style="background-image:url(${value});" />` : ""}

View File

@ -1,4 +1,4 @@
if componentSet.has('communities')
if componentSet.has('communities') && getRoute('communities')
solid-widget(name='hubl-communities-profile-members-counter')
template
p

View File

@ -1,3 +1,3 @@
if componentSet.has('communities')
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" href="tel:\${value}">\$value</a>` : `<span></span>`}
template ${value != "" ? `<a class="link margin-bottom-xsmall icon mdi-cellphone-iphone icon-third icon-large icon-margin-right-xsmall" href="tel:\${value}">${value}</a>` : ""}

View File

@ -1,3 +1,3 @@
if componentSet.has('communities')
if componentSet.has('communities') && getRoute('communities')
solid-widget(name='hubl-communities-profile-picture')
template ${value != "" ? `<div \style="background-image:url(${value});" />` : `<div class="picture-empty"><object type="image/svg+xml" data="/images/photos.svg"></object></div>`}

View File

@ -1,3 +1,3 @@
if componentSet.has('communities')
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>` : `<span></span>`}
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>` : ""}

View File

@ -1,3 +1,3 @@
if componentSet.has('communities')
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" href="tel:\${value}" target="_blank">$value</a>` : `<span></span>`}
template ${value != "" ? `<a class="link margin-bottom-xsmall icon mdi-link-variant icon-third icon-large icon-margin-right-xsmall" href="tel:\${value}" target="_blank">${value}</a>` : ""}