mirror of
https://github.com/TryGhost/Ghost-Admin.git
synced 2023-12-14 02:33:04 +01:00
no issue Keeps component JS backing files and template files in the same directory which avoids hunting across directories when working with components. Also lets you see all components when looking at one directory, whereas previously template-only or js-only components may not have been obvious without looking at both directories. - ran [codemod](https://github.com/ember-codemods/ember-component-template-colocation-migrator/) for app-level components - manually moved in-repo-addon component templates in `lib/koenig-editor` - removed all explicit `layout` imports as JS/template associations are now made at build-time removing the need for them - updated `.embercli` to default to new flat component structure
102 lines
5 KiB
Handlebars
102 lines
5 KiB
Handlebars
<h4 class="midlightgrey f-small fw5 ttu">Basic settings</h4>
|
||
<div class="pa5 pt4 br4 shadow-1 bg-grouped-table mt2 flex flex-column flex-row-ns items-start justify-between gh-tag-basic-settings-form">
|
||
<div class="order-1 flex flex-column items-start mr5 w-100 w-50-m w-two-thirds-l">
|
||
<GhFormGroup @errors={{this.tag.errors}} @hasValidated={{this.tag.hasValidated}} @property="name">
|
||
<label for="tag-name">Name</label>
|
||
<GhTextInput
|
||
@id="tag-name"
|
||
@name="name"
|
||
@value={{this.scratchTag.name}}
|
||
@tabindex="1"
|
||
@focus-out={{action "setProperty" "name" this.scratchTag.name}}
|
||
/>
|
||
<p class="description">
|
||
Start with # to create internal tags
|
||
<a href="https://ghost.org/docs/concepts/tags/#internal-tag" target="_blank" rel="noreferrer">Learn more</a>
|
||
</p>
|
||
<GhErrorMessage @errors={{this.tag.errors}} @property="name" />
|
||
</GhFormGroup>
|
||
|
||
<GhFormGroup @errors={{this.tag.errors}} @hasValidated={{this.tag.hasValidated}} @property="slug">
|
||
<label for="tag-slug">Slug</label>
|
||
<GhTextInput
|
||
@value={{this.scratchTag.slug}}
|
||
@id="tag-slug"
|
||
@name="slug"
|
||
@tabindex="2"
|
||
@focus-out={{action "setProperty" "slug" this.scratchTag.slug}}
|
||
/>
|
||
<GhUrlPreview @prefix="tag" @slug={{this.scratchTag.slug}} @tagName="p" @classNames="description" />
|
||
<GhErrorMessage @errors={{this.activeTag.errors}} @property="slug" />
|
||
</GhFormGroup>
|
||
|
||
<GhFormGroup @errors={{this.tag.errors}} @hasValidated={{this.tag.hasValidated}} @property="description">
|
||
<label for="tag-description">Description</label>
|
||
<GhTextarea
|
||
@id="tag-description"
|
||
@name="description"
|
||
@class="gh-tag-details-textarea"
|
||
@tabindex="3"
|
||
@value={{this.scratchTag.description}}
|
||
@focus-out={{action "setProperty" "description" this.scratchTag.description}}
|
||
/>
|
||
<GhErrorMessage @errors={{this.tag.errors}} @property="description" />
|
||
<p>Maximum: <b>500</b> characters. You’ve used {{gh-count-down-characters this.scratchTag.description 500}}</p>
|
||
</GhFormGroup>
|
||
</div>
|
||
<div class="order-0 mb6 mb0-ns order-2-ns w-100 w-50-m w-third-l">
|
||
<label for="tag-image">Tag image</label>
|
||
<GhImageUploaderWithPreview
|
||
@image={{this.tag.featureImage}}
|
||
@text="Upload tag image"
|
||
@class="gh-tag-image-uploader"
|
||
@allowUnsplash={{true}}
|
||
@update={{action "setCoverImage"}}
|
||
@remove={{action "clearCoverImage"}}
|
||
/>
|
||
</div>
|
||
</div>
|
||
|
||
<h4 class="midlightgrey f-small fw5 ttu mt15">Meta data</h4>
|
||
<div class="pa5 pt4 br4 shadow-1 bg-grouped-table mt2 flex flex-column flex-row-ns items-start justify-between">
|
||
<div class="flex flex-column items-start mr5 w-100 w-50-m w-two-thirds-l">
|
||
<GhFormGroup @errors={{this.tag.errors}} @hasValidated={{this.tag.hasValidated}} @property="metaTitle">
|
||
<label for="meta-title">Meta Title</label>
|
||
<GhTextInput
|
||
@id="meta-title"
|
||
@name="metaTitle"
|
||
@placeholder={{this.scratchTag.name}}
|
||
@tabindex="4"
|
||
@value={{this.scratchTag.metaTitle}}
|
||
@focus-out={{action "setProperty" "metaTitle" this.scratchTag.metaTitle}}
|
||
/>
|
||
<GhErrorMessage @errors={{this.tag.errors}} @property="metaTitle" />
|
||
<p>Recommended: <b>70</b> characters. You’ve used {{gh-count-down-characters this.scratchTag.metaTitle 70}}</p>
|
||
</GhFormGroup>
|
||
|
||
<GhFormGroup @errors={{this.tag.errors}} @hasValidated={{this.tag.hasValidated}} @property="metaDescription">
|
||
<label for="meta-description">Meta Description</label>
|
||
<GhTextarea
|
||
@id="meta-description"
|
||
@name="metaDescription"
|
||
@class="gh-tag-details-textarea"
|
||
@placeholder={{this.scratchTag.description}}
|
||
@tabindex="5"
|
||
@value={{this.scratchTag.metaDescription}}
|
||
@focus-out={{action "setProperty" "metaDescription" this.scratchTag.metaDescription}}
|
||
/>
|
||
<GhErrorMessage @errors={{this.tag.errors}} @property="metaDescription" />
|
||
<p>Recommended: <b>156</b> characters. You’ve used {{gh-count-down-characters this.scratchTag.metaDescription 156}}</p>
|
||
</GhFormGroup>
|
||
</div>
|
||
<div class="w-100 w-50-m w-third-l">
|
||
<div class="form-group">
|
||
<label>Search Engine Result Preview</label>
|
||
<div class="seo-preview">
|
||
<div class="seo-preview-title">{{this.seoTitle}}</div>
|
||
<div class="seo-preview-link">{{this.seoURL}}</div>
|
||
<div class="seo-preview-description">{{this.seoDescription}}</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div> |