mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-23 02:41:50 +03:00
66f7bad47b
refs TryGhost/Ghost#7688 - Adds new upload functionality for a blog icon in general settings. - Icons will be uploaded to a new endpoint `uploads/icons` to trigger different validations.
176 lines
9.7 KiB
Handlebars
176 lines
9.7 KiB
Handlebars
<section class="gh-view">
|
|
<header class="view-header">
|
|
{{#gh-view-title openMobileMenu="openMobileMenu"}}<span>General</span>{{/gh-view-title}}
|
|
<section class="view-actions">
|
|
{{#gh-spin-button class="btn btn-blue" action="save" submitting=submitting}}Save{{/gh-spin-button}}
|
|
</section>
|
|
</header>
|
|
|
|
<section class="view-content">
|
|
<form id="settings-general" novalidate="novalidate">
|
|
<fieldset>
|
|
|
|
{{#gh-form-group errors=model.errors hasValidated=model.hasValidated property="title"}}
|
|
<label for="blog-title">Blog Title</label>
|
|
{{gh-input model.title id="blog-title" name="general[title]" type="text" focusOut=(action "validate" "title" target=model) update=(action (mut model.title))}}
|
|
{{gh-error-message errors=model.errors property="title"}}
|
|
<p>The name of your blog</p>
|
|
{{/gh-form-group}}
|
|
|
|
{{#gh-form-group errors=model.errors hasValidated=model.hasValidated property="description" class="description-container"}}
|
|
<label for="blog-description">Blog Description</label>
|
|
{{gh-textarea model.description id="blog-description" name="general[description]" focusOut=(action "validate" "description" target=model) update=(action (mut model.description))}}
|
|
{{gh-error-message errors=model.errors property="description"}}
|
|
<p>
|
|
Describe what your blog is about
|
|
{{gh-count-characters model.description}}
|
|
</p>
|
|
{{/gh-form-group}}
|
|
</fieldset>
|
|
|
|
<div class="form-group">
|
|
<label>Blog Logo</label>
|
|
{{#if model.logo}}
|
|
<img class="blog-logo" src="{{model.logo}}" alt="logo" role="button" {{action "toggleUploadLogoModal"}}>
|
|
{{else}}
|
|
<button type="button" class="btn btn-green js-modal-logo" {{action "toggleUploadLogoModal"}}>Upload Image</button>
|
|
{{/if}}
|
|
<p>Display a logo for your publication</p>
|
|
|
|
{{#if showUploadLogoModal}}
|
|
{{gh-fullscreen-modal "upload-image"
|
|
model=(hash model=model imageProperty="logo" allowUrlInput=true)
|
|
close=(action "toggleUploadLogoModal")
|
|
modifier="action wide"}}
|
|
{{/if}}
|
|
</div>
|
|
|
|
{{#if config.fileStorage}}
|
|
<div class="form-group">
|
|
<label>Blog Icon</label>
|
|
{{#if model.icon}}
|
|
<img class="blog-icon" src="{{model.icon}}" alt="icon" role="button" {{action "toggleUploadIconModal"}}>
|
|
{{else}}
|
|
<button type="button" class="btn btn-green js-modal-logo" {{action "toggleUploadIconModal"}}>Upload Image</button>
|
|
{{/if}}
|
|
<p>Upload a square blog icon ('.ico' or '.png', max. 100kb, 32px * 32px up to 1,000px * 1,000px) for your publication</p>
|
|
|
|
{{#if showUploadIconModal}}
|
|
{{gh-fullscreen-modal "upload-image"
|
|
model=(hash model=model imageProperty="icon" accept=iconMimeTypes extensions=iconExtensions allowUrlInput=false uploadUrl="/uploads/icon/")
|
|
close=(action "toggleUploadIconModal")
|
|
modifier="action wide"}}
|
|
{{/if}}
|
|
</div>
|
|
{{/if}}
|
|
|
|
<div class="form-group">
|
|
<label>Blog Cover</label>
|
|
{{#if model.cover}}
|
|
<img class="blog-cover" src="{{model.cover}}" alt="cover photo" role="button" {{action "toggleUploadCoverModal"}}>
|
|
{{else}}
|
|
<button type="button" class="btn btn-green js-modal-cover" {{action "toggleUploadCoverModal"}}>Upload Image</button>
|
|
{{/if}}
|
|
<p>Display a cover image on your site</p>
|
|
|
|
{{#if showUploadCoverModal}}
|
|
{{gh-fullscreen-modal "upload-image"
|
|
model=(hash model=model imageProperty="cover" allowUrlInput=true)
|
|
close=(action "toggleUploadCoverModal")
|
|
modifier="action wide"}}
|
|
{{/if}}
|
|
</div>
|
|
|
|
<fieldset>
|
|
|
|
<div class="form-group">
|
|
{{#gh-form-group errors=model.errors hasValidated=model.hasValidated property="postsPerPage"}}
|
|
<label for="postsPerPage">Posts per page</label>
|
|
{{! `pattern` brings up numeric keypad allowing any number of digits}}
|
|
{{gh-input model.postsPerPage id="postsPerPage" name="general[postsPerPage]" focusOut=(action "validate" "postsPerPage" target=model) min="1" max="1000" type="number" pattern="[0-9]*" update=(action (mut model.postsPerPage))}}
|
|
{{gh-error-message errors=model.errors property="postsPerPage"}}
|
|
<p>How many posts should be displayed on each page</p>
|
|
{{/gh-form-group}}
|
|
</div>
|
|
|
|
<div class="form-group for-checkbox">
|
|
<label for="permalinks">Dated Permalinks</label>
|
|
<label class="checkbox" for="permalinks">
|
|
{{one-way-checkbox isDatedPermalinks id="permalinks" class="gh-input" name="general[permalinks]" update=(action (mut isDatedPermalinks))}}
|
|
<span class="input-toggle-component"></span>
|
|
<p>Include the date in your post URLs</p>
|
|
</label>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
{{#gh-form-group errors=model.errors hasValidated=model.hasValidated property="facebook"}}
|
|
<label for="facebook">Facebook Page</label>
|
|
<input value={{model.facebook}} oninput={{action (mut _scratchFacebook) value="target.value"}} {{action "validateFacebookUrl" on="focusOut"}} type="url" class="gh-input" id="facebook" name="general[facebook]" placeholder="https://www.facebook.com/ghost" autocorrect="off" />
|
|
{{gh-error-message errors=model.errors property="facebook"}}
|
|
<p>URL of your blog's Facebook Page</p>
|
|
{{/gh-form-group}}
|
|
</div>
|
|
<div class="form-group">
|
|
{{#gh-form-group errors=model.errors hasValidated=model.hasValidated property="twitter"}}
|
|
<label for="twitter">Twitter Profile</label>
|
|
<input value={{model.twitter}} oninput={{action (mut _scratchTwitter) value="target.value"}} {{action "validateTwitterUrl" on="focusOut"}} type="url" class="gh-input" id="facebook" name="general[twitter]" placeholder="https://twitter.com/tryghost" autocorrect="off" />
|
|
{{gh-error-message errors=model.errors property="twitter"}}
|
|
<p>URL of your blog's Twitter profile</p>
|
|
{{/gh-form-group}}
|
|
</div>
|
|
|
|
{{gh-timezone-select
|
|
activeTimezone=model.activeTimezone
|
|
availableTimezones=availableTimezones
|
|
update=(action "setTimezone")}}
|
|
|
|
<div class="form-group for-checkbox">
|
|
<label for="isPrivate">Make this blog private</label>
|
|
<label class="checkbox" for="isPrivate">
|
|
{{one-way-checkbox model.isPrivate id="isPrivate" name="general[isPrivate]" type="checkbox" update=(action (mut model.isPrivate))}}
|
|
<span class="input-toggle-component"></span>
|
|
<p>Enable password protection</p>
|
|
</label>
|
|
</div>
|
|
|
|
{{#if model.isPrivate}}
|
|
{{#gh-form-group errors=model.errors hasValidated=model.hasValidated property="password"}}
|
|
{{gh-input model.password name="general[password]" type="text" focusOut=(action "validate" "password" target=model) update=(action (mut model.password))}}
|
|
{{gh-error-message errors=model.errors property="password"}}
|
|
<p>This password will be needed to access your blog. All search engine optimization and social features are now disabled. This password is stored in plaintext.</p>
|
|
{{/gh-form-group}}
|
|
{{/if}}
|
|
</fieldset>
|
|
|
|
<div class="settings-themes">
|
|
<h3 id="themes">Themes</h3>
|
|
|
|
{{gh-theme-table
|
|
availableThemes=model.availableThemes
|
|
activateTheme=(action "setTheme")
|
|
downloadTheme=(action "downloadTheme")
|
|
deleteTheme=(action "deleteTheme")}}
|
|
|
|
<div class="form-group">
|
|
{{#link-to "settings.general.uploadtheme" class="btn btn-green"}}
|
|
Upload a theme
|
|
{{/link-to}}
|
|
</div>
|
|
|
|
{{#if showDeleteThemeModal}}
|
|
{{gh-fullscreen-modal "delete-theme"
|
|
model=(hash
|
|
theme=themeToDelete
|
|
download=(action "downloadTheme" themeToDelete)
|
|
)
|
|
close=(action "hideDeleteThemeModal")
|
|
confirm=(action "deleteTheme")
|
|
modifier="action wide"}}
|
|
{{/if}}
|
|
</div>
|
|
</form>
|
|
</section>
|
|
</section>
|
|
|
|
{{outlet}}
|