mirror of
https://github.com/discourse/discourse.git
synced 2024-12-15 14:53:43 +08:00
68b4fe4cf8
See https://github.com/discourse/discourse/security/advisories/GHSA-rcc5-28r3-23rr Co-authored-by: OsamaSayegh <asooomaasoooma90@gmail.com> Co-authored-by: Daniel Waterworth <me@danielwaterworth.com>
113 lines
4.7 KiB
Handlebars
113 lines
4.7 KiB
Handlebars
<DModalBody @class="install-theme" @title="admin.customize.theme.install">
|
|
{{#unless this.directRepoInstall}}
|
|
<div class="install-theme-items">
|
|
<InstallThemeItem @value="popular" @selection={{this.selection}} @label="admin.customize.theme.install_popular" />
|
|
<InstallThemeItem @value="local" @selection={{this.selection}} @label="admin.customize.theme.install_upload" />
|
|
<InstallThemeItem @value="remote" @selection={{this.selection}} @label="admin.customize.theme.install_git_repo" />
|
|
<InstallThemeItem @value="create" @selection={{this.selection}} @label="admin.customize.theme.install_create" @showIcon={{true}} />
|
|
</div>
|
|
{{/unless}}
|
|
<div class="install-theme-content">
|
|
{{#if this.popular}}
|
|
<div class="popular-theme-items">
|
|
{{#each this.themes as |theme|}}
|
|
<div class="popular-theme-item" data-name={{theme.name}}>
|
|
<div class="popular-theme-name">
|
|
<a href={{theme.meta_url}} rel="noopener noreferrer" target="_blank">
|
|
{{#if theme.component}}
|
|
{{d-icon "puzzle-piece" title="admin.customize.theme.component"}}
|
|
{{/if}}
|
|
{{theme.name}}
|
|
</a>
|
|
<div class="popular-theme-description">
|
|
{{theme.description}}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="popular-theme-buttons">
|
|
{{#if theme.installed}}
|
|
<span>{{i18n "admin.customize.theme.installed"}}</span>
|
|
{{else}}
|
|
<DButton @class="btn-small" @label="admin.customize.theme.install" @disabled={{this.installDisabled}} @icon="upload" @action={{action "installThemeFromList" theme.value}} />
|
|
|
|
{{#if theme.preview}}
|
|
<a href={{theme.preview}} rel="noopener noreferrer" target="_blank">{{d-icon "desktop"}} {{i18n "admin.customize.theme.preview"}}</a>
|
|
{{/if}}
|
|
{{/if}}
|
|
</div>
|
|
</div>
|
|
{{/each}}
|
|
</div>
|
|
{{/if}}
|
|
|
|
{{#if this.local}}
|
|
<div class="inputs">
|
|
<input onchange={{action "uploadLocaleFile"}} type="file" id="file-input" accept=".dcstyle.json,application/json,.tar.gz,application/x-gzip,.zip,application/zip"><br>
|
|
<span class="description">{{i18n "admin.customize.theme.import_file_tip"}}</span>
|
|
</div>
|
|
{{/if}}
|
|
|
|
{{#if this.remote}}
|
|
<div class="inputs">
|
|
<div class="repo">
|
|
<div class="label">{{i18n "admin.customize.theme.import_web_tip"}}</div>
|
|
<Input @value={{this.uploadUrl}} placeholder={{this.urlPlaceholder}} />
|
|
</div>
|
|
|
|
<DButton @class="btn-small advanced-repo" @action={{action "toggleAdvanced"}} @label="admin.customize.theme.import_web_advanced" />
|
|
|
|
{{#if this.advancedVisible}}
|
|
<div class="branch">
|
|
<div class="label">{{i18n "admin.customize.theme.remote_branch"}}</div>
|
|
<Input @value={{this.branch}} placeholder="main" />
|
|
</div>
|
|
{{/if}}
|
|
|
|
{{#if this.showPublicKey}}
|
|
<div class="public-key">
|
|
<div class="label">{{i18n "admin.customize.theme.public_key"}}</div>
|
|
<div class="public-key-text-wrapper">
|
|
<Textarea class="public-key-value" readonly={{true}} @value={{this.publicKey}} /> <CopyButton @selector="textarea.public-key-value" />
|
|
</div>
|
|
</div>
|
|
{{/if}}
|
|
</div>
|
|
{{/if}}
|
|
|
|
{{#if this.create}}
|
|
<div class="inputs">
|
|
<div class="label">{{i18n "admin.customize.theme.create_name"}}</div>
|
|
<Input @value={{this.name}} placeholder={{this.placeholder}} />
|
|
|
|
<div class="label">{{i18n "admin.customize.theme.create_type"}}</div>
|
|
<ComboBox @valueProperty="value" @content={{this.createTypes}} @value={{this.selectedType}} @onChange={{action (mut this.selectedType)}} />
|
|
</div>
|
|
{{/if}}
|
|
|
|
{{#if this.directRepoInstall}}
|
|
<div class="repo">
|
|
<div class="label">{{html-safe (i18n "admin.customize.theme.direct_install_tip" name=this.uploadName)}}</div>
|
|
<pre><code>{{this.uploadUrl}}</code></pre>
|
|
</div>
|
|
{{/if}}
|
|
</div>
|
|
|
|
</DModalBody>
|
|
|
|
{{#unless this.popular}}
|
|
<div class="modal-footer">
|
|
{{#if this.duplicateRemoteThemeWarning}}
|
|
<div class="install-theme-warning">
|
|
⚠️ {{this.duplicateRemoteThemeWarning}}
|
|
</div>
|
|
{{/if}}
|
|
{{#if this.themeCannotBeInstalled}}
|
|
<div class="install-theme-warning">
|
|
⚠️ {{this.themeCannotBeInstalled}}
|
|
</div>
|
|
{{/if}}
|
|
<DButton @action={{action "installTheme"}} @disabled={{this.installDisabled}} @class="btn {{if this.themeCannotBeInstalled "btn-danger" "btn-primary"}}" @label={{this.submitLabel}} />
|
|
<DModalCancel @close={{route-action "closeModal"}} />
|
|
</div>
|
|
{{/unless}}
|