q-page.admin-general
.row.q-pa-md.items-center
.col-auto
img.admin-icon.animated.fadeInLeft(src='/_assets/icons/fluent-web.svg')
.col.q-pl-md
.text-h5.text-primary.animated.fadeInLeft {{ t('admin.general.title') }}
.text-subtitle1.text-grey.animated.fadeInLeft.wait-p2s {{ t('admin.general.subtitle') }}
.col-auto
q-btn.q-mr-sm.acrylic-btn(
icon='las la-question-circle'
flat
color='grey'
:href='siteStore.docsBase + `/admin/sites#general`'
target='_blank'
type='a'
)
q-btn.q-mr-sm.acrylic-btn(
icon='las la-redo-alt'
flat
color='secondary'
:loading='state.loading > 0'
@click='load'
)
q-btn(
unelevated
icon='mdi-check'
:label='t(`common.actions.apply`)'
color='secondary'
@click='save'
:disabled='state.loading > 0'
)
q-separator(inset)
.row.q-pa-md.q-col-gutter-md
.col-12.col-lg-7
//- -----------------------
//- Site Info
//- -----------------------
q-card.shadow-1.q-pb-sm
q-card-section
.text-subtitle1 {{t('admin.general.siteInfo')}}
q-item
blueprint-icon(icon='home')
q-item-section
q-item-label {{t(`admin.general.siteTitle`)}}
q-item-label(caption) {{t(`admin.general.siteTitleHint`)}}
q-item-section
q-input(
outlined
v-model='state.config.title'
dense
:rules='rulesTitle'
hide-bottom-space
:aria-label='t(`admin.general.siteTitle`)'
)
q-separator.q-my-sm(inset)
q-item
blueprint-icon(icon='select-all')
q-item-section
q-item-label {{t(`admin.general.siteDescription`)}}
q-item-label(caption) {{t(`admin.general.siteDescriptionHint`)}}
q-item-section
q-input(
outlined
v-model='state.config.description'
dense
:aria-label='t(`admin.general.siteDescription`)'
)
q-separator.q-my-sm(inset)
q-item
blueprint-icon(icon='dns')
q-item-section
q-item-label {{t(`admin.general.siteHostname`)}}
q-item-label(caption) {{t(`admin.general.siteHostnameHint`)}}
q-item-section
q-input(
outlined
v-model='state.config.hostname'
dense
:rules='rulesHostname'
hide-bottom-space
:aria-label='t(`admin.general.siteHostname`)'
)
//- -----------------------
//- Footer / Copyright
//- -----------------------
q-card.shadow-1.q-pb-sm.q-mt-md
q-card-section
.text-subtitle1 {{t('admin.general.footerCopyright')}}
q-item
blueprint-icon(icon='building')
q-item-section
q-item-label {{t(`admin.general.companyName`)}}
q-item-label(caption) {{t(`admin.general.companyNameHint`)}}
q-item-section
q-input(
outlined
v-model='state.config.company'
dense
:aria-label='t(`admin.general.companyName`)'
)
q-separator.q-my-sm(inset)
q-item
blueprint-icon(icon='copyright')
q-item-section
q-item-label {{t(`admin.general.contentLicense`)}}
q-item-label(caption) {{t(`admin.general.contentLicenseHint`)}}
q-item-section
q-select(
outlined
v-model='state.config.contentLicense'
:options='contentLicenses'
option-value='value'
option-label='text'
emit-value
map-options
dense
:aria-label='t(`admin.general.contentLicense`)'
)
q-separator.q-my-sm(inset)
q-item
blueprint-icon(icon='subtitles')
q-item-section
q-item-label {{t(`admin.general.footerExtra`)}}
q-item-label(caption) {{t(`admin.general.footerExtraHint`)}}
q-item-section
q-input(
outlined
v-model='state.config.footerExtra'
dense
:aria-label='t(`admin.general.footerExtra`)'
)
//- -----------------------
//- FEATURES
//- -----------------------
q-card.shadow-1.q-pb-sm.q-mt-md
q-card-section
.text-subtitle1 {{t('admin.general.features')}}
q-item(tag='label')
blueprint-icon(icon='discussion-forum')
q-item-section
q-item-label {{t(`admin.general.allowComments`)}}
q-item-label(caption) {{t(`admin.general.allowCommentsHint`)}}
q-item-section(avatar)
q-toggle(
v-model='state.config.features.comments'
color='primary'
checked-icon='las la-check'
unchecked-icon='las la-times'
:aria-label='t(`admin.general.allowComments`)'
)
q-separator.q-my-sm(inset)
q-item(tag='label')
blueprint-icon(icon='pen')
q-item-section
q-item-label {{t(`admin.general.allowContributions`)}}
q-item-label(caption) {{t(`admin.general.allowContributionsHint`)}}
q-item-section(avatar)
q-toggle(
v-model='state.config.features.contributions'
color='primary'
checked-icon='las la-check'
unchecked-icon='las la-times'
:aria-label='t(`admin.general.allowContributions`)'
)
q-separator.q-my-sm(inset)
q-item(tag='label')
blueprint-icon(icon='administrator-male')
q-item-section
q-item-label {{t(`admin.general.allowProfile`)}}
q-item-label(caption) {{t(`admin.general.allowProfileHint`)}}
q-item-section(avatar)
q-toggle(
v-model='state.config.features.profile'
color='primary'
checked-icon='las la-check'
unchecked-icon='las la-times'
:aria-label='t(`admin.general.allowProfile`)'
)
q-separator.q-my-sm(inset)
q-item
blueprint-icon(icon='star-half-empty')
q-item-section
q-item-label {{t(`admin.general.allowRatings`)}}
q-item-label(caption) {{t(`admin.general.allowRatingsHint`)}}
q-item-section.col-auto
q-btn-toggle(
v-model='state.config.features.ratingsMode'
push
glossy
no-caps
toggle-color='primary'
:options='ratingsModes'
)
q-separator.q-my-sm(inset)
q-item(tag='label')
blueprint-icon(icon='search')
q-item-section
q-item-label {{t(`admin.general.allowSearch`)}}
q-item-label(caption) {{t(`admin.general.allowSearchHint`)}}
q-item-section(avatar)
q-toggle(
v-model='state.config.features.search'
color='primary'
checked-icon='las la-check'
unchecked-icon='las la-times'
:aria-label='t(`admin.general.allowSearch`)'
)
q-separator.q-my-sm(inset)
q-item(tag='label')
blueprint-icon(icon='confusion')
q-item-section
q-item-label {{t(`admin.general.reasonForChange`)}}
q-item-label(caption) {{t(`admin.general.reasonForChangeHint`)}}
q-item-section(avatar)
q-btn-toggle(
v-model='state.config.features.reasonForChange'
push
glossy
no-caps
toggle-color='primary'
:options='reasonForChangeModes'
)
//- -----------------------
//- URL Handling
//- -----------------------
q-card.shadow-1.q-pb-sm.q-mt-md
q-card-section
.text-subtitle1 {{t('admin.general.urlHandling')}}
q-item
blueprint-icon(icon='sort-by-follow-up-date')
q-item-section
q-item-label {{t(`admin.general.pageExtensions`)}}
q-item-label(caption) {{t(`admin.general.pageExtensionsHint`)}}
q-item-section
q-input(
outlined
v-model='state.config.pageExtensions'
dense
:aria-label='t(`admin.general.pageExtensions`)'
)
.col-12.col-lg-5
//- -----------------------
//- Logo
//- -----------------------
q-card.shadow-1.q-pb-sm
q-card-section
.text-subtitle1 {{t('admin.general.logo')}}
q-item
blueprint-icon.self-start(icon='butterfly', indicator, :indicator-text='t(`admin.extensions.requiresSharp`)')
q-item-section
.flex
q-item-section
q-item-label {{t(`admin.general.logoUpl`)}}
q-item-label(caption) {{t(`admin.general.logoUplHint`)}}
q-item-section.col-auto
q-btn(
label='Upload'
unelevated
icon='las la-upload'
color='primary'
text-color='white'
@click='uploadLogo'
)
q-toolbar.bg-header.q-mt-md.rounded-borders.text-white(
dark
style='height: 64px;'
)
q-btn(dense, flat, v-if='adminStore.currentSiteId')
q-avatar(
v-if='state.config.logoText'
size='34px'
square
)
img(:src='`/_site/` + adminStore.currentSiteId + `/logo?` + state.assetTimestamp')
img(
v-else
:src='`/_site/` + adminStore.currentSiteId + `/logo?` + state.assetTimestamp'
style='height: 34px;'
)
q-toolbar-title.text-h6(v-if='state.config.logoText') {{state.config.title}}
q-separator.q-my-sm(inset)
q-item(tag='label')
blueprint-icon(icon='information')
q-item-section
q-item-label {{t(`admin.general.displaySiteTitle`)}}
q-item-label(caption) {{t(`admin.general.displaySiteTitleHint`)}}
q-item-section(avatar)
q-toggle(
v-model='state.config.logoText'
color='primary'
checked-icon='las la-check'
unchecked-icon='las la-times'
:aria-label='t(`admin.general.displaySiteTitle`)'
)
q-separator.q-my-sm(inset)
q-item
blueprint-icon.self-start(icon='starfish', indicator, :indicator-text='t(`admin.extensions.requiresSharp`)')
q-item-section
.flex
q-item-section
q-item-label {{t(`admin.general.favicon`)}}
q-item-label(caption) {{t(`admin.general.faviconHint`)}}
q-item-section.col-auto
q-btn(
label='Upload'
unelevated
icon='las la-upload'
color='primary'
text-color='white'
@click='uploadFavicon'
)
.admin-general-favicontabs.q-mt-md
div
q-avatar(
v-if='adminStore.currentSiteId'
size='24px'
square
)
img(:src='`/_site/` + adminStore.currentSiteId + `/favicon?` + state.assetTimestamp')
.text-caption.q-ml-sm {{state.config.title}}
div
q-icon(name='las la-otter', size='24px', color='grey')
.text-caption.q-ml-sm Lorem ipsum
div
q-icon(name='las la-mountain', size='24px', color='grey')
.text-caption.q-ml-sm Dolor sit amet...
//- -----------------------
//- Defaults
//- -----------------------
q-card.shadow-1.q-pb-sm.q-mt-md(v-if='state.config.defaults')
q-card-section
.text-subtitle1 {{t('admin.general.defaults')}}
q-item
blueprint-icon(icon='timezone')
q-item-section
q-item-label {{t(`admin.general.defaultTimezone`)}}
q-item-label(caption) {{t(`admin.general.defaultTimezoneHint`)}}
q-item-section
q-select(
outlined
v-model='state.config.defaults.timezone'
:options='timezones'
option-value='value'
option-label='text'
emit-value
map-options
dense
options-dense
:virtual-scroll-slice-size='1000'
:aria-label='t(`admin.general.defaultTimezone`)'
)
q-separator.q-my-sm(inset)
q-item
blueprint-icon(icon='calendar')
q-item-section
q-item-label {{t(`admin.general.defaultDateFormat`)}}
q-item-label(caption) {{t(`admin.general.defaultDateFormatHint`)}}
q-item-section
q-select(
outlined
v-model='state.config.defaults.dateFormat'
emit-value
map-options
dense
:aria-label='t(`admin.general.defaultDateFormat`)'
:options='dateFormats'
)
q-separator.q-my-sm(inset)
q-item
blueprint-icon(icon='clock')
q-item-section
q-item-label {{t(`admin.general.defaultTimeFormat`)}}
q-item-label(caption) {{t(`admin.general.defaultTimeFormatHint`)}}
q-item-section.col-auto
q-btn-toggle(
v-model='state.config.defaults.timeFormat'
push
glossy
no-caps
toggle-color='primary'
:options='timeFormats'
)
q-separator.q-my-sm(inset)
q-item
blueprint-icon(icon='depth')
q-item-section
q-item-label {{t(`admin.general.defaultTocDepth`)}}
q-item-label(caption) {{t(`admin.general.defaultTocDepthHint`)}}
q-item-section.col-auto.q-pl-sm(style='min-width: 180px;')
.text-caption {{t('editor.props.tocMinMaxDepth')}} #[strong (H{{state.config.defaults.tocDepth.min}} → H{{state.config.defaults.tocDepth.max}})]
q-range(
v-model='state.config.defaults.tocDepth'
:min='1'
:max='6'
color='primary'
:left-label-value='`H` + state.config.defaults.tocDepth.min'
:right-label-value='`H` + state.config.defaults.tocDepth.max'
snap
label
markers
)
//- -----------------------
//- Uploads
//- -----------------------
q-card.shadow-1.q-pb-sm.q-mt-md(v-if='state.config.uploads')
q-card-section
.text-subtitle1 {{t('admin.general.uploads')}}
q-item
blueprint-icon(icon='merge-files')
q-item-section
q-item-label {{t(`admin.general.uploadConflictBehavior`)}}
q-item-label(caption) {{t(`admin.general.uploadConflictBehaviorHint`)}}
q-item-section
q-select(
outlined
v-model='state.config.uploads.conflictBehavior'
:options='uploadConflictBehaviors'
option-value='value'
option-label='label'
emit-value
map-options
dense
options-dense
:virtual-scroll-slice-size='1000'
:aria-label='t(`admin.general.uploadConflictBehavior`)'
)
q-separator.q-my-sm(inset)
q-item(tag='label')
blueprint-icon(icon='rename')
q-item-section
q-item-label {{t(`admin.general.uploadNormalizeFilename`)}}
q-item-label(caption) {{t(`admin.general.uploadNormalizeFilenameHint`)}}
q-item-section(avatar)
q-toggle(
v-model='state.config.uploads.normalizeFilename'
color='primary'
checked-icon='las la-check'
unchecked-icon='las la-times'
:aria-label='t(`admin.general.uploadNormalizeFilename`)'
)
//- -----------------------
//- SEO
//- -----------------------
q-card.shadow-1.q-pb-sm.q-mt-md(v-if='state.config.robots')
q-card-section
.text-subtitle1 SEO
q-item(tag='label')
blueprint-icon(icon='bot')
q-item-section
q-item-label {{t(`admin.general.searchAllowIndexing`)}}
q-item-label(caption) {{t(`admin.general.searchAllowIndexingHint`)}}
q-item-section(avatar)
q-toggle(
v-model='state.config.robots.index'
color='primary'
checked-icon='las la-check'
unchecked-icon='las la-times'
:aria-label='t(`admin.general.searchAllowIndexing`)'
)
q-separator.q-my-sm(inset)
q-item(tag='label')
blueprint-icon(icon='polyline')
q-item-section
q-item-label {{t(`admin.general.searchAllowFollow`)}}
q-item-label(caption) {{t(`admin.general.searchAllowFollowHint`)}}
q-item-section(avatar)
q-toggle(
v-model='state.config.robots.follow'
color='primary'
checked-icon='las la-check'
unchecked-icon='las la-times'
:aria-label='t(`admin.general.searchAllowFollow`)'
)
q-separator.q-my-sm(inset)
q-item(tag='label')
blueprint-icon(icon='genealogy')
q-item-section
q-item-label {{t(`admin.general.sitemap`)}}
q-item-label(caption) {{t(`admin.general.sitemapHint`)}}
q-item-section(avatar)
q-toggle(
v-model='state.config.sitemap'
color='primary'
checked-icon='las la-check'
unchecked-icon='las la-times'
:aria-label='t(`admin.general.sitemap`)'
)