0
0
Fork 1
Spiegel von https://github.com/paviliondev/discourse-custom-wizard.git synchronisiert 2024-11-22 09:20:29 +01:00
Dieser Commit ist enthalten in:
merefield 2023-07-27 09:52:19 +01:00
Commit 72b1a2aca5
84 geänderte Dateien mit 3167 neuen und 1558 gelöschten Zeilen

Datei anzeigen

@ -14,7 +14,8 @@ import { uploadIcon } from "discourse/lib/uploads";
import { dasherize } from "@ember/string"; import { dasherize } from "@ember/string";
import showModal from "discourse/lib/show-modal"; import showModal from "discourse/lib/show-modal";
const IMAGE_MARKDOWN_REGEX = /!\[(.*?)\|(\d{1,4}x\d{1,4})(,\s*\d{1,3}%)?(.*?)\]\((upload:\/\/.*?)\)(?!(.*`))/g; const IMAGE_MARKDOWN_REGEX =
/!\[(.*?)\|(\d{1,4}x\d{1,4})(,\s*\d{1,3}%)?(.*?)\]\((upload:\/\/.*?)\)(?!(.*`))/g;
export default ComposerEditor.extend({ export default ComposerEditor.extend({
classNameBindings: ["fieldClass"], classNameBindings: ["fieldClass"],
@ -116,9 +117,8 @@ export default ComposerEditor.extend({
event.target.closest(".button-wrapper").dataset.imageIndex, event.target.closest(".button-wrapper").dataset.imageIndex,
10 10
); );
const matchingPlaceholder = this.get("composer.reply").match( const matchingPlaceholder =
IMAGE_MARKDOWN_REGEX this.get("composer.reply").match(IMAGE_MARKDOWN_REGEX);
);
this.session.set("wizardEventFieldId", this.field.id); this.session.set("wizardEventFieldId", this.field.id);
this.appEvents.trigger( this.appEvents.trigger(

Datei anzeigen

@ -9,8 +9,7 @@
value=wizardListVal value=wizardListVal
content=wizardList content=wizardList
onChange=(action "changeWizard") onChange=(action "changeWizard")
options=(hash options=(hash none="admin.wizard.select")
none="admin.wizard.select" }}
)}}
</div> </div>
</section> </section>

Datei anzeigen

@ -1,7 +1,10 @@
{{#each site.complete_custom_wizard as |wizard|}} {{#each site.complete_custom_wizard as |wizard|}}
<div class="row"> <div class="row">
<div class="alert alert-info alert-wizard"> <div class="alert alert-info alert-wizard">
<a href={{wizard.url}}>{{i18n "wizard.complete_custom" name=wizard.name}}</a> <a href={{wizard.url}}>{{i18n
"wizard.complete_custom"
name=wizard.name
}}</a>
</div> </div>
</div> </div>
{{/each}} {{/each}}

Datei anzeigen

@ -21,29 +21,8 @@ export default Controller.extend({
"application/x-www-form-urlencoded", "application/x-www-form-urlencoded",
]), ]),
successCodes: selectKitContent([ successCodes: selectKitContent([
100, 100, 101, 102, 200, 201, 202, 203, 204, 205, 206, 207, 208, 226, 300, 301,
101, 302, 303, 303, 304, 305, 306, 307, 308,
102,
200,
201,
202,
203,
204,
205,
206,
207,
208,
226,
300,
301,
302,
303,
303,
304,
305,
306,
307,
308,
]), ]),
@discourseComputed( @discourseComputed(

Datei anzeigen

@ -5,7 +5,10 @@ export default Controller.extend({
title: "admin.wizard.after_time_modal.title", title: "admin.wizard.after_time_modal.title",
setup() { setup() {
this.set("bufferedDateTime", moment(this.model.dateTime)); this.set(
"bufferedDateTime",
this.model.dateTime ? moment(this.model.dateTime) : moment(Date.now())
);
}, },
@discourseComputed("bufferedDateTime") @discourseComputed("bufferedDateTime")

Datei anzeigen

@ -1,14 +1,16 @@
import ApplicationRoute from "discourse/routes/application"; import DiscourseURL from "discourse/lib/url";
import { withPluginApi } from "discourse/lib/plugin-api";
import { dasherize } from "@ember/string";
export default { export default {
name: "custom-wizard-redirect", name: "custom-wizard-redirect",
after: "message-bus", after: "message-bus",
initialize: function (container) { initialize(container) {
const messageBus = container.lookup("service:message-bus"); const messageBus = container.lookup("service:message-bus");
const siteSettings = container.lookup("service:site-settings"); const siteSettings = container.lookup("service:site-settings");
if (!siteSettings.custom_wizard_enabled || !messageBus) { if (!siteSettings.custom_wizard_enabled) {
return; return;
} }
@ -17,28 +19,26 @@ export default {
window.location.href = wizardUrl; window.location.href = wizardUrl;
}); });
ApplicationRoute.reopen({ withPluginApi("0.8.36", (api) => {
actions: { api.onAppEvent("page:changed", (data) => {
willTransition(transition) { const currentUser = api.getCurrentUser();
const redirectToWizard = this.get("currentUser.redirect_to_wizard");
const excludedPaths = this.siteSettings.wizard_redirect_exclude_paths if (currentUser) {
const redirectToWizard = currentUser.redirect_to_wizard;
const excludedPaths = siteSettings.wizard_redirect_exclude_paths
.split("|") .split("|")
.concat(["loading"]); .concat(["loading"]);
if ( if (
redirectToWizard && redirectToWizard &&
(!transition.intent.name || data.currentRouteName !== "customWizardStep" &&
!excludedPaths.find((p) => { !excludedPaths.find((p) => {
return transition.intent.name.indexOf(p) > -1; return data.currentRouteName.indexOf(p) > -1;
})) })
) { ) {
transition.abort(); DiscourseURL.routeTo(`/w/${dasherize(redirectToWizard)}`);
window.location = "/w/" + redirectToWizard.dasherize();
} }
}
return this._super(transition); });
},
},
}); });
}, },
}; };

Datei anzeigen

@ -1,6 +1,7 @@
import { findCustomWizard, updateCachedWizard } from "../models/custom-wizard"; import { findCustomWizard, updateCachedWizard } from "../models/custom-wizard";
import I18n from "I18n"; import I18n from "I18n";
import DiscourseRoute from "discourse/routes/discourse"; import DiscourseRoute from "discourse/routes/discourse";
import bootbox from "bootbox";
export default DiscourseRoute.extend({ export default DiscourseRoute.extend({
titleToken() { titleToken() {

Datei anzeigen

@ -8,7 +8,12 @@
{{/if}} {{/if}}
{{/if}} {{/if}}
{{d-button label="admin.wizard.api.save" action=(action "save") class="btn-primary" disabled=saveDisabled}} {{d-button
label="admin.wizard.api.save"
action=(action "save")
class="btn-primary"
disabled=saveDisabled
}}
{{#if showRemove}} {{#if showRemove}}
{{d-button action=(action "remove") label="admin.wizard.api.remove"}} {{d-button action=(action "remove") label="admin.wizard.api.remove"}}
@ -62,10 +67,12 @@
<span>{{authErrorMessage}}</span> <span>{{authErrorMessage}}</span>
{{/if}} {{/if}}
{{/if}} {{/if}}
{{d-button label="admin.wizard.api.auth.btn" {{d-button
label="admin.wizard.api.auth.btn"
action=(action "authorize") action=(action "authorize")
disabled=authDisabled disabled=authDisabled
class="btn-primary"}} class="btn-primary"
}}
{{/if}} {{/if}}
</div> </div>
@ -99,9 +106,8 @@
value=api.authType value=api.authType
content=authorizationTypes content=authorizationTypes
onChange=(action (mut api.authType)) onChange=(action (mut api.authType))
options=(hash options=(hash none="admin.wizard.api.auth.type_none")
none="admin.wizard.api.auth.type_none" }}
)}}
</div> </div>
</div> </div>
@ -110,9 +116,7 @@
<div class="control-group"> <div class="control-group">
<label>{{i18n "admin.wizard.api.auth.url"}}</label> <label>{{i18n "admin.wizard.api.auth.url"}}</label>
<div class="controls"> <div class="controls">
<Input <Input @value={{this.api.authUrl}} />
@value={{this.api.authUrl}}
/>
</div> </div>
</div> </div>
{{/if}} {{/if}}
@ -120,27 +124,21 @@
<div class="control-group"> <div class="control-group">
<label>{{i18n "admin.wizard.api.auth.token_url"}}</label> <label>{{i18n "admin.wizard.api.auth.token_url"}}</label>
<div class="controls"> <div class="controls">
<Input <Input @value={{this.api.tokenUrl}} />
@value={{this.api.tokenUrl}}
/>
</div> </div>
</div> </div>
<div class="control-group"> <div class="control-group">
<label>{{i18n "admin.wizard.api.auth.client_id"}}</label> <label>{{i18n "admin.wizard.api.auth.client_id"}}</label>
<div class="controls"> <div class="controls">
<Input <Input @value={{this.api.clientId}} />
@value={{this.api.clientId}}
/>
</div> </div>
</div> </div>
<div class="control-group"> <div class="control-group">
<label>{{i18n "admin.wizard.api.auth.client_secret"}}</label> <label>{{i18n "admin.wizard.api.auth.client_secret"}}</label>
<div class="controls"> <div class="controls">
<Input <Input @value={{this.api.clientSecret}} />
@value={{this.api.clientSecret}}
/>
</div> </div>
</div> </div>
@ -157,10 +155,18 @@
@value={{this.param.value}} @value={{this.param.value}}
placeholder={{i18n "admin.wizard.value"}} placeholder={{i18n "admin.wizard.value"}}
/> />
{{d-button action=(action "removeParam") actionParam=param icon="times"}} {{d-button
action=(action "removeParam")
actionParam=param
icon="times"
}}
</div> </div>
{{/each}} {{/each}}
{{d-button label="admin.wizard.api.auth.params.new" icon="plus" action=(action "addParam")}} {{d-button
label="admin.wizard.api.auth.params.new"
icon="plus"
action=(action "addParam")
}}
</div> </div>
</div> </div>
{{/if}} {{/if}}
@ -169,18 +175,14 @@
<div class="control-group"> <div class="control-group">
<label>{{i18n "admin.wizard.api.auth.username"}}</label> <label>{{i18n "admin.wizard.api.auth.username"}}</label>
<div class="controls"> <div class="controls">
<Input <Input @value={{this.api.username}} />
@value={{this.api.username}}
/>
</div> </div>
</div> </div>
<div class="control-group"> <div class="control-group">
<label>{{i18n "admin.wizard.api.auth.password"}}</label> <label>{{i18n "admin.wizard.api.auth.password"}}</label>
<div class="controls"> <div class="controls">
<Input <Input @value={{this.api.password}} />
@value={{this.api.password}}
/>
</div> </div>
</div> </div>
{{/if}} {{/if}}
@ -249,7 +251,11 @@
</div> </div>
<div class="wizard-api-endpoints"> <div class="wizard-api-endpoints">
{{d-button action=(action "addEndpoint") label="admin.wizard.api.endpoint.add" icon="plus"}} {{d-button
action=(action "addEndpoint")
label="admin.wizard.api.endpoint.add"
icon="plus"
}}
{{#if api.endpoints}} {{#if api.endpoints}}
<div class="endpoint-list"> <div class="endpoint-list">
@ -268,33 +274,34 @@
placeholder={{i18n "admin.wizard.api.endpoint.url"}} placeholder={{i18n "admin.wizard.api.endpoint.url"}}
class="endpoint-url" class="endpoint-url"
/> />
{{d-button action=(action "removeEndpoint") {{d-button
action=(action "removeEndpoint")
actionParam=endpoint actionParam=endpoint
icon="times" icon="times"
class="remove-endpoint"}} class="remove-endpoint"
}}
</div> </div>
<div class="bottom"> <div class="bottom">
{{combo-box {{combo-box
content=endpointMethods content=endpointMethods
value=endpoint.method value=endpoint.method
onChange=(action (mut endpoint.method)) onChange=(action (mut endpoint.method))
options=(hash options=(hash none="admin.wizard.api.endpoint.method")
none="admin.wizard.api.endpoint.method" }}
)}}
{{combo-box {{combo-box
content=contentTypes content=contentTypes
value=endpoint.content_type value=endpoint.content_type
onChange=(action (mut endpoint.content_type)) onChange=(action (mut endpoint.content_type))
options=(hash options=(hash none="admin.wizard.api.endpoint.content_type")
none="admin.wizard.api.endpoint.content_type" }}
)}}
{{multi-select {{multi-select
value=endpoint.success_codes value=endpoint.success_codes
content=successCodes content=successCodes
onChange=(action (mut endpoint.success_codes)) onChange=(action (mut endpoint.success_codes))
options=(hash options=(hash
none="admin.wizard.api.endpoint.success_codes" none="admin.wizard.api.endpoint.success_codes"
)}} )
}}
</div> </div>
</div> </div>
</div> </div>
@ -312,7 +319,8 @@
{{d-button {{d-button
action=(action "clearLogs") action=(action "clearLogs")
class="clear-logs" class="clear-logs"
label="admin.wizard.api.log.clear"}} label="admin.wizard.api.log.clear"
}}
</div> </div>
</div> </div>
@ -332,7 +340,10 @@
<td>{{logentry.time}}</td> <td>{{logentry.time}}</td>
<td class="user-image"> <td class="user-image">
<div class="user-image-inner"> <div class="user-image-inner">
<a href={{logentry.userpath}} data-user-card={{logentry.username}}>{{avatar logentry imageSize="medium"}}</a> <a
href={{logentry.userpath}}
data-user-card={{logentry.username}}
>{{avatar logentry imageSize="medium"}}</a>
</div> </div>
</td> </td>
<td>{{logentry.status}}</td> <td>{{logentry.status}}</td>

Datei anzeigen

@ -3,14 +3,14 @@
value=apiName value=apiName
content=apiList content=apiList
onChange=(route-action "changeApi") onChange=(route-action "changeApi")
options=(hash options=(hash none="admin.wizard.api.select")
none="admin.wizard.api.select" }}
)}}
{{d-button {{d-button
action=(route-action "createApi") action=(route-action "createApi")
label="admin.wizard.api.create" label="admin.wizard.api.create"
icon="plus"}} icon="plus"
}}
</div> </div>
<div class="admin-wizard-container"> <div class="admin-wizard-container">

Datei anzeigen

@ -5,7 +5,8 @@
{{d-button {{d-button
label="admin.wizard.custom_field.add" label="admin.wizard.custom_field.add"
icon="plus" icon="plus"
action=(action "addField")}} action=(action "addField")
}}
</div> </div>
</div> </div>
@ -14,7 +15,8 @@
opts=messageOpts opts=messageOpts
type=messageType type=messageType
url=documentationUrl url=documentationUrl
component="custom_fields"}} component="custom_fields"
}}
<div class="admin-wizard-container"> <div class="admin-wizard-container">
{{#if customFields}} {{#if customFields}}
@ -32,7 +34,8 @@
{{custom-field-input {{custom-field-input
field=field field=field
removeField=(action "removeField") removeField=(action "removeField")
saveField=(action "saveField")}} saveField=(action "saveField")
}}
{{/each}} {{/each}}
</tbody> </tbody>
</table> </table>

Datei anzeigen

@ -9,7 +9,8 @@
label="refresh" label="refresh"
icon="sync" icon="sync"
action=(action "refresh") action=(action "refresh")
class="refresh"}} class="refresh"
}}
</div> </div>
</div> </div>
@ -31,7 +32,10 @@
{{#each logs as |log|}} {{#each logs as |log|}}
<tr> <tr>
{{#each-in log as |field value|}} {{#each-in log as |field value|}}
<td class="small">{{wizard-table-field field=field value=value}}</td> <td class="small">{{wizard-table-field
field=field
value=value
}}</td>
{{/each-in}} {{/each-in}}
</tr> </tr>
{{/each}} {{/each}}

Datei anzeigen

@ -3,16 +3,16 @@
value=wizardId value=wizardId
content=wizardList content=wizardList
onChange=(route-action "changeWizard") onChange=(route-action "changeWizard")
options=(hash options=(hash none="admin.wizard.select")
none="admin.wizard.select" }}
)}}
</div> </div>
{{wizard-message {{wizard-message
key=messageKey key=messageKey
opts=messageOpts opts=messageOpts
url=documentationUrl url=documentationUrl
component="logs"}} component="logs"
}}
<div class="admin-wizard-container"> <div class="admin-wizard-container">
{{outlet}} {{outlet}}

Datei anzeigen

@ -20,22 +20,26 @@
{{d-button {{d-button
id="upload-button" id="upload-button"
label="admin.wizard.manager.upload" label="admin.wizard.manager.upload"
action=(action "upload")}} action=(action "upload")
}}
{{d-button {{d-button
id="import-button" id="import-button"
label="admin.wizard.manager.import" label="admin.wizard.manager.import"
action=(action "import") action=(action "import")
disabled=importDisabled}} disabled=importDisabled
}}
{{d-button {{d-button
id="export-button" id="export-button"
label="admin.wizard.manager.export" label="admin.wizard.manager.export"
action=(action "export") action=(action "export")
disabled=exportDisabled}} disabled=exportDisabled
}}
{{d-button {{d-button
id="destroy-button" id="destroy-button"
label="admin.wizard.manager.destroy" label="admin.wizard.manager.destroy"
action=(action "destroy") action=(action "destroy")
disabled=destoryDisabled}} disabled=destoryDisabled
}}
</div> </div>
</div> </div>
@ -46,7 +50,8 @@
opts=messageOpts opts=messageOpts
items=messageItems items=messageItems
loading=loading loading=loading
component="manager"}} component="manager"
}}
<div class="admin-wizard-container"> <div class="admin-wizard-container">
<table class="table grid"> <table class="table grid">

Datei anzeigen

@ -3,16 +3,16 @@
value=wizardId value=wizardId
content=wizardList content=wizardList
onChange=(route-action "changeWizard") onChange=(route-action "changeWizard")
options=(hash options=(hash none="admin.wizard.select")
none="admin.wizard.select" }}
)}}
</div> </div>
{{wizard-message {{wizard-message
key=messageKey key=messageKey
opts=messageOpts opts=messageOpts
url=documentationUrl url=documentationUrl
component="submissions"}} component="submissions"
}}
<div class="admin-wizard-container"> <div class="admin-wizard-container">
{{outlet}} {{outlet}}

Datei anzeigen

@ -9,11 +9,23 @@
<div class="wizard-url"> <div class="wizard-url">
{{#if wizard.name}} {{#if wizard.name}}
{{#if copiedUrl}} {{#if copiedUrl}}
{{d-button class="btn-hover pull-right" icon="copy" label="ip_lookup.copied"}} {{d-button
class="btn-hover pull-right"
icon="copy"
label="ip_lookup.copied"
}}
{{else}} {{else}}
{{d-button action=(action "copyUrl") class="pull-right no-text" icon="copy"}} {{d-button
action=(action "copyUrl")
class="pull-right no-text"
icon="copy"
}}
{{/if}} {{/if}}
<a href={{wizardUrl}} target="_blank" rel="noopener noreferrer">{{wizardUrl}}</a> <a
href={{wizardUrl}}
target="_blank"
rel="noopener noreferrer"
>{{wizardUrl}}</a>
{{/if}} {{/if}}
</div> </div>
</div> </div>
@ -43,9 +55,8 @@
valueProperty="id" valueProperty="id"
value=wizard.theme_id value=wizard.theme_id
onChange=(action (mut wizard.theme_id)) onChange=(action (mut wizard.theme_id))
options=(hash options=(hash none="admin.wizard.no_theme")
none="admin.wizard.no_theme" }}
)}}
</div> </div>
</div> </div>
</div> </div>
@ -60,10 +71,7 @@
<label>{{i18n "admin.wizard.save_submissions"}}</label> <label>{{i18n "admin.wizard.save_submissions"}}</label>
</div> </div>
<div class="setting-value"> <div class="setting-value">
<Input <Input @type="checkbox" @checked={{this.wizard.save_submissions}} />
@type="checkbox"
@checked={{this.wizard.save_submissions}}
/>
<span>{{i18n "admin.wizard.save_submissions_label"}}</span> <span>{{i18n "admin.wizard.save_submissions_label"}}</span>
</div> </div>
</div> </div>
@ -73,10 +81,7 @@
<label>{{i18n "admin.wizard.multiple_submissions"}}</label> <label>{{i18n "admin.wizard.multiple_submissions"}}</label>
</div> </div>
<div class="setting-value"> <div class="setting-value">
<Input <Input @type="checkbox" @checked={{this.wizard.multiple_submissions}} />
@type="checkbox"
@checked={{this.wizard.multiple_submissions}}
/>
<span>{{i18n "admin.wizard.multiple_submissions_label"}}</span> <span>{{i18n "admin.wizard.multiple_submissions_label"}}</span>
</div> </div>
</div> </div>
@ -86,10 +91,7 @@
<label>{{i18n "admin.wizard.after_signup"}}</label> <label>{{i18n "admin.wizard.after_signup"}}</label>
</div> </div>
<div class="setting-value"> <div class="setting-value">
<Input <Input @type="checkbox" @checked={{this.wizard.after_signup}} />
@type="checkbox"
@checked={{this.wizard.after_signup}}
/>
<span>{{i18n "admin.wizard.after_signup_label"}}</span> <span>{{i18n "admin.wizard.after_signup_label"}}</span>
</div> </div>
</div> </div>
@ -99,10 +101,7 @@
<label>{{i18n "admin.wizard.prompt_completion"}}</label> <label>{{i18n "admin.wizard.prompt_completion"}}</label>
</div> </div>
<div class="setting-value"> <div class="setting-value">
<Input <Input @type="checkbox" @checked={{this.wizard.prompt_completion}} />
@type="checkbox"
@checked={{this.wizard.prompt_completion}}
/>
<span>{{i18n "admin.wizard.prompt_completion_label"}}</span> <span>{{i18n "admin.wizard.prompt_completion_label"}}</span>
</div> </div>
</div> </div>
@ -112,16 +111,14 @@
<label>{{i18n "admin.wizard.after_time"}}</label> <label>{{i18n "admin.wizard.after_time"}}</label>
</div> </div>
<div class="setting-value"> <div class="setting-value">
<Input <Input @type="checkbox" @checked={{this.wizard.after_time}} />
@type="checkbox"
@checked={{this.wizard.after_time}}
/>
<span>{{i18n "admin.wizard.after_time_label"}}</span> <span>{{i18n "admin.wizard.after_time_label"}}</span>
{{d-button {{d-button
action=(action "setNextSessionScheduled") action=(action "setNextSessionScheduled")
translatedLabel=nextSessionScheduledLabel translatedLabel=nextSessionScheduledLabel
class="btn-after-time" class="btn-after-time"
icon="far-calendar"}} icon="far-calendar"
}}
</div> </div>
</div> </div>
@ -131,10 +128,7 @@
<label>{{i18n "admin.wizard.required"}}</label> <label>{{i18n "admin.wizard.required"}}</label>
</div> </div>
<div class="setting-value"> <div class="setting-value">
<Input <Input @type="checkbox" @checked={{this.wizard.required}} />
@type="checkbox"
@checked={{this.wizard.required}}
/>
<span>{{i18n "admin.wizard.required_label"}}</span> <span>{{i18n "admin.wizard.required_label"}}</span>
</div> </div>
</div> </div>
@ -144,10 +138,7 @@
<label>{{i18n "admin.wizard.restart_on_revisit"}}</label> <label>{{i18n "admin.wizard.restart_on_revisit"}}</label>
</div> </div>
<div class="setting-value"> <div class="setting-value">
<Input <Input @type="checkbox" @checked={{this.wizard.restart_on_revisit}} />
@type="checkbox"
@checked={{this.wizard.restart_on_revisit}}
/>
<span>{{i18n "admin.wizard.restart_on_revisit_label"}}</span> <span>{{i18n "admin.wizard.restart_on_revisit_label"}}</span>
</div> </div>
</div> </div>
@ -167,16 +158,14 @@
userFieldSelection="key" userFieldSelection="key"
textSelection="value" textSelection="value"
inputConnector="and" inputConnector="and"
)}} )
}}
</div> </div>
</div> </div>
{{/wizard-subscription-container}} {{/wizard-subscription-container}}
</div> </div>
{{wizard-links {{wizard-links itemType="step" current=currentStep items=wizard.steps}}
itemType="step"
current=currentStep
items=wizard.steps}}
{{#if currentStep}} {{#if currentStep}}
{{wizard-custom-step {{wizard-custom-step
@ -185,14 +174,16 @@
currentField=currentField currentField=currentField
wizardFields=wizardFields wizardFields=wizardFields
fieldTypes=filteredFieldTypes fieldTypes=filteredFieldTypes
subscribed=subscribed}} subscribed=subscribed
}}
{{/if}} {{/if}}
{{wizard-links {{wizard-links
itemType="action" itemType="action"
current=currentAction current=currentAction
items=wizard.actions items=wizard.actions
generateLabels=true}} generateLabels=true
}}
{{#each wizard.actions as |wizardAction|}} {{#each wizard.actions as |wizardAction|}}
{{wizard-custom-action {{wizard-custom-action
@ -202,11 +193,17 @@
apis=apis apis=apis
removeAction="removeAction" removeAction="removeAction"
wizardFields=wizardFields wizardFields=wizardFields
fieldTypes=filteredFieldTypes}} fieldTypes=filteredFieldTypes
}}
{{/each}} {{/each}}
<div class="admin-wizard-buttons"> <div class="admin-wizard-buttons">
<button {{action "save"}} disabled={{disableSave}} class="btn btn-primary" type="button"> <button
{{action "save"}}
disabled={{disableSave}}
class="btn btn-primary"
type="button"
>
{{i18n "admin.wizard.save"}} {{i18n "admin.wizard.save"}}
</button> </button>

Datei anzeigen

@ -3,20 +3,17 @@
value=wizardListVal value=wizardListVal
content=wizardList content=wizardList
onChange=(route-action "changeWizard") onChange=(route-action "changeWizard")
options=(hash options=(hash none="admin.wizard.select")
none="admin.wizard.select" }}
)}}
{{d-button {{d-button
action=(route-action "createWizard") action=(route-action "createWizard")
label="admin.wizard.create" label="admin.wizard.create"
icon="plus"}} icon="plus"
}}
</div> </div>
{{wizard-message {{wizard-message key=messageKey url=messageUrl component="wizard"}}
key=messageKey
url=messageUrl
component="wizard"}}
<div class="admin-wizard-container settings"> <div class="admin-wizard-container settings">
{{outlet}} {{outlet}}

Datei anzeigen

@ -1,12 +1,21 @@
{{#admin-nav}} {{#admin-nav}}
{{nav-item route="adminWizardsWizard" label="admin.wizard.nav_label"}} {{nav-item route="adminWizardsWizard" label="admin.wizard.nav_label"}}
{{nav-item route="adminWizardsCustomFields" label="admin.wizard.custom_field.nav_label"}} {{nav-item
{{nav-item route="adminWizardsSubmissions" label="admin.wizard.submissions.nav_label"}} route="adminWizardsCustomFields"
label="admin.wizard.custom_field.nav_label"
}}
{{nav-item
route="adminWizardsSubmissions"
label="admin.wizard.submissions.nav_label"
}}
{{#if showApi}} {{#if showApi}}
{{nav-item route="adminWizardsApi" label="admin.wizard.api.nav_label"}} {{nav-item route="adminWizardsApi" label="admin.wizard.api.nav_label"}}
{{/if}} {{/if}}
{{nav-item route="adminWizardsLogs" label="admin.wizard.log.nav_label"}} {{nav-item route="adminWizardsLogs" label="admin.wizard.log.nav_label"}}
{{nav-item route="adminWizardsManager" label="admin.wizard.manager.nav_label"}} {{nav-item
route="adminWizardsManager"
label="admin.wizard.manager.nav_label"
}}
<div class="admin-actions"> <div class="admin-actions">
{{wizard-subscription-badge}} {{wizard-subscription-badge}}

Datei anzeigen

@ -5,9 +5,8 @@
feature="custom_field" feature="custom_field"
attribute="klass" attribute="klass"
onChange=(action (mut field.klass)) onChange=(action (mut field.klass))
options=(hash options=(hash none="admin.wizard.custom_field.klass.select")
none="admin.wizard.custom_field.klass.select" }}
)}}
</td> </td>
<td> <td>
{{wizard-subscription-selector {{wizard-subscription-selector
@ -15,9 +14,8 @@
feature="custom_field" feature="custom_field"
attribute="type" attribute="type"
onChange=(action (mut field.type)) onChange=(action (mut field.type))
options=(hash options=(hash none="admin.wizard.custom_field.type.select")
none="admin.wizard.custom_field.type.select" }}
)}}
</td> </td>
<td class="input"> <td class="input">
<Input <Input
@ -30,9 +28,8 @@
value=field.serializers value=field.serializers
content=serializerContent content=serializerContent
onChange=(action (mut field.serializers)) onChange=(action (mut field.serializers))
options=(hash options=(hash none="admin.wizard.custom_field.serializers.select")
none="admin.wizard.custom_field.serializers.select" }}
)}}
</td> </td>
<td class="actions"> <td class="actions">
{{#if loading}} {{#if loading}}
@ -46,16 +43,15 @@
action=(action "destroy") action=(action "destroy")
icon="trash-alt" icon="trash-alt"
class="destroy" class="destroy"
disabled=destroyDisabled}} disabled=destroyDisabled
}}
{{d-button {{d-button
icon="save" icon="save"
action=(action "save") action=(action "save")
disabled=saveDisabled disabled=saveDisabled
class="save"}} class="save"
{{d-button }}
action=(action "close") {{d-button action=(action "close") icon="times" disabled=closeDisabled}}
icon="times"
disabled=closeDisabled}}
</td> </td>
{{else}} {{else}}
<td><label>{{field.klass}}</label></td> <td><label>{{field.klass}}</label></td>

Datei anzeigen

@ -14,7 +14,8 @@
wizardComposer=true wizardComposer=true
fieldId=field.id fieldId=field.id
disabled=disableTextarea disabled=disableTextarea
outletArgs=(hash composer=composer editorType="composer")}} outletArgs=(hash composer=composer editorType="composer")
}}
<input <input
type="file" type="file"
@ -22,4 +23,4 @@
class="wizard-composer-upload" class="wizard-composer-upload"
accept={{allowedFileTypes}} accept={{allowedFileTypes}}
multiple multiple
> />

Datei anzeigen

@ -26,9 +26,5 @@
{{/if}} {{/if}}
{{#if clearable}} {{#if clearable}}
{{d-button {{d-button class="clear-date-time" icon="times" action=(action "onClear")}}
class="clear-date-time"
icon="times"
action=(action "onClear")
}}
{{/if}} {{/if}}

Datei anzeigen

@ -2,7 +2,7 @@
<div class="d-editor-container"> <div class="d-editor-container">
{{#if showPreview}} {{#if showPreview}}
<div class="d-editor-preview-wrapper {{if forcePreview "force-preview"}}"> <div class="d-editor-preview-wrapper {{if forcePreview 'force-preview'}}">
<div class="d-editor-preview"> <div class="d-editor-preview">
{{html-safe preview}} {{html-safe preview}}
</div> </div>
@ -18,13 +18,16 @@
onExpand=(action b.action b) onExpand=(action b.action b)
class=b.className class=b.className
content=popupMenuOptions content=popupMenuOptions
options=(hash options=(hash popupTitle=b.title icon=b.icon)
popupTitle=b.title }}
icon=b.icon
)}}
{{else}} {{else}}
<div>{{d.icon}}</div> <div>{{d.icon}}</div>
<button class="wizard-btn {{b.className}}" {{action b.action b}} title={{b.title}} type="button"> <button
class="wizard-btn {{b.className}}"
{{action b.action b}}
title={{b.title}}
type="button"
>
{{d-icon b.icon}} {{d-icon b.icon}}
{{#if b.label}} {{#if b.label}}
<span class="d-button-label">{{i18n b.label}}</span> <span class="d-button-label">{{i18n b.label}}</span>

Datei anzeigen

@ -4,6 +4,5 @@
whitelist=field.content whitelist=field.content
onChange=(action (mut categories)) onChange=(action (mut categories))
tabindex=field.tabindex tabindex=field.tabindex
options=(hash options=(hash maximum=field.limit)
maximum=field.limit }}
)}}

Datei anzeigen

@ -7,10 +7,15 @@
cannotSeeMention=(action "cannotSeeMention") cannotSeeMention=(action "cannotSeeMention")
importQuote=(action "importQuote") importQuote=(action "importQuote")
togglePreview=(action "togglePreview") togglePreview=(action "togglePreview")
afterRefresh=(action "afterRefresh")}} afterRefresh=(action "afterRefresh")
}}
<div class="bottom-bar"> <div class="bottom-bar">
<button class="wizard-btn toggle-preview" {{action "togglePreview"}} type="button"> <button
class="wizard-btn toggle-preview"
{{action "togglePreview"}}
type="button"
>
<span class="d-button-label">{{i18n togglePreviewLabel}}</span> <span class="d-button-label">{{i18n togglePreviewLabel}}</span>
</button> </button>

Datei anzeigen

@ -4,6 +4,5 @@
content=field.content content=field.content
tabindex=field.tabindex tabindex=field.tabindex
onChange=(action "onChangeValue") onChange=(action "onChangeValue")
options=(hash options=(hash none="select_kit.default_header_text")
none="select_kit.default_header_text" }}
)}}

Datei anzeigen

@ -6,6 +6,5 @@
value=field.value value=field.value
tabindex=field.tabindex tabindex=field.tabindex
onChange=(action (mut field.value)) onChange=(action (mut field.value))
options=(hash options=(hash none="select_kit.default_header_text")
none="select_kit.default_header_text" }}
)}}

Datei anzeigen

@ -6,4 +6,3 @@
tabindex={{this.field.tabindex}} tabindex={{this.field.tabindex}}
class={{this.fieldClass}} class={{this.fieldClass}}
/> />

Datei anzeigen

@ -4,7 +4,5 @@
tabindex=field.tabindex tabindex=field.tabindex
tagGroups=field.tag_groups tagGroups=field.tag_groups
everyTag=true everyTag=true
options=(hash options=(hash maximum=field.limit allowAny=field.can_create_tag)
maximum=field.limit }}
allowAny=field.can_create_tag
)}}

Datei anzeigen

@ -1,4 +1,7 @@
<label class="wizard-btn wizard-btn-upload-file {{if uploading "disabled"}}" tabindex={{field.tabindex}}> <label
class="wizard-btn wizard-btn-upload-file {{if uploading 'disabled'}}"
tabindex={{field.tabindex}}
>
{{#if uploading}} {{#if uploading}}
{{i18n "wizard.uploading"}} {{i18n "wizard.uploading"}}
{{else}} {{else}}
@ -6,12 +9,18 @@
{{d-icon "upload"}} {{d-icon "upload"}}
{{/if}} {{/if}}
<input disabled={{uploading}} class="hidden-upload-field" type="file" accept={{field.file_types}} style="visibility: hidden; position: absolute;" > <input
disabled={{uploading}}
class="hidden-upload-field"
type="file"
accept={{field.file_types}}
style="visibility: hidden; position: absolute;"
/>
</label> </label>
{{#if field.value}} {{#if field.value}}
{{#if isImage}} {{#if isImage}}
<img src={{field.value.url}} class="wizard-image-preview"> <img src={{field.value.url}} class="wizard-image-preview" />
{{else}} {{else}}
{{field.value.original_filename}} {{field.value.original_filename}}
{{/if}} {{/if}}

Datei anzeigen

@ -1,4 +1,5 @@
{{custom-user-selector {{custom-user-selector
usernames=field.value usernames=field.value
placeholderKey=field.placeholder placeholderKey=field.placeholder
tabindex=field.tabindex}} tabindex=field.tabindex
}}

Datei anzeigen

@ -3,7 +3,7 @@
</label> </label>
{{#if field.image}} {{#if field.image}}
<div class="field-image"><img src={{field.image}}></div> <div class="field-image"><img src={{field.image}} /></div>
{{/if}} {{/if}}
{{#if field.description}} {{#if field.description}}
@ -13,7 +13,14 @@
{{#field-validators field=field as |validators|}} {{#field-validators field=field as |validators|}}
{{#if inputComponentName}} {{#if inputComponentName}}
<div class="input-area"> <div class="input-area">
{{component inputComponentName field=field step=step fieldClass=fieldClass wizard=wizard autocomplete=validators.autocomplete}} {{component
inputComponentName
field=field
step=step
fieldClass=fieldClass
wizard=wizard
autocomplete=validators.autocomplete
}}
</div> </div>
{{/if}} {{/if}}
{{/field-validators}} {{/field-validators}}
@ -25,5 +32,7 @@
{{/if}} {{/if}}
{{#if field.errorDescription}} {{#if field.errorDescription}}
<div class="field-error-description">{{html-safe field.errorDescription}}</div> <div class="field-error-description">{{html-safe
field.errorDescription
}}</div>
{{/if}} {{/if}}

Datei anzeigen

@ -1,6 +1,10 @@
<div>{{text}}</div> <div>{{text}}</div>
<div class="no-access-gutter"> <div class="no-access-gutter">
<button class="wizard-btn primary return-to-site" {{action "skip"}} type="button"> <button
class="wizard-btn primary return-to-site"
{{action "skip"}}
type="button"
>
{{i18n "wizard.return_to_site" siteName=siteName}} {{i18n "wizard.return_to_site" siteName=siteName}}
{{d-icon "sign-out-alt"}} {{d-icon "sign-out-alt"}}
</button> </button>

Datei anzeigen

@ -1,4 +1,6 @@
<a href={{topic.url}} target="_blank" rel="noopener noreferrer"> <a href={{topic.url}} target="_blank" rel="noopener noreferrer">
<span class="title">{{html-safe topic.fancy_title}}</span> <span class="title">{{html-safe topic.fancy_title}}</span>
<div class="blurb">{{date-node topic.created_at}} - {{html-safe topic.blurb}}</div> <div class="blurb">{{date-node topic.created_at}}
-
{{html-safe topic.blurb}}</div>
</a> </a>

Datei anzeigen

@ -5,7 +5,7 @@
{{#if bannerImage}} {{#if bannerImage}}
<div class="wizard-step-banner"> <div class="wizard-step-banner">
<img src={{bannerImage}}> <img src={{bannerImage}} />
</div> </div>
{{/if}} {{/if}}
@ -26,7 +26,11 @@
<div class="white"></div> <div class="white"></div>
<div class="black" style={{barStyle}}></div> <div class="black" style={{barStyle}}></div>
<div class="screen"></div> <div class="screen"></div>
<span>{{i18n "wizard.step" current=step.displayIndex total=wizard.totalSteps}}</span> <span>{{i18n
"wizard.step"
current=step.displayIndex
total=wizard.totalSteps
}}</span>
</div> </div>
<div class="wizard-buttons"> <div class="wizard-buttons">
@ -34,22 +38,44 @@
{{loading-spinner size="small"}} {{loading-spinner size="small"}}
{{else}} {{else}}
{{#if showQuitButton}} {{#if showQuitButton}}
<a href {{action "quit"}} class="action-link quit" tabindex={{secondaryButtonIndex}}>{{i18n "wizard.quit"}}</a> <a
href
{{action "quit"}}
class="action-link quit"
tabindex={{secondaryButtonIndex}}
>{{i18n "wizard.quit"}}</a>
{{/if}} {{/if}}
{{#if showBackButton}} {{#if showBackButton}}
<a href {{action "backStep"}} class="action-link back" tabindex={{secondaryButtonIndex}}>{{i18n "wizard.back"}}</a> <a
href
{{action "backStep"}}
class="action-link back"
tabindex={{secondaryButtonIndex}}
>{{i18n "wizard.back"}}</a>
{{/if}} {{/if}}
{{/if}} {{/if}}
{{#if showNextButton}} {{#if showNextButton}}
<button type="button" class="wizard-btn next primary" {{action "nextStep"}} disabled={{saving}} tabindex={{primaryButtonIndex}}> <button
type="button"
class="wizard-btn next primary"
{{action "nextStep"}}
disabled={{saving}}
tabindex={{primaryButtonIndex}}
>
{{i18n "wizard.next"}} {{i18n "wizard.next"}}
{{d-icon "chevron-right"}} {{d-icon "chevron-right"}}
</button> </button>
{{/if}} {{/if}}
{{#if showDoneButton}} {{#if showDoneButton}}
<button type="button" class="wizard-btn done" {{action "done"}} disabled={{saving}} tabindex={{primaryButtonIndex}}> <button
type="button"
class="wizard-btn done"
{{action "done"}}
disabled={{saving}}
tabindex={{primaryButtonIndex}}
>
{{i18n "wizard.done_custom"}} {{i18n "wizard.done_custom"}}
</button> </button>
{{/if}} {{/if}}

Datei anzeigen

@ -1,12 +1,22 @@
{{#if field.validations}} {{#if field.validations}}
{{#each-in field.validations.above as |type validation|}} {{#each-in field.validations.above as |type validation|}}
{{component validation.component field=field type=type validation=validation}} {{component
validation.component
field=field
type=type
validation=validation
}}
{{/each-in}} {{/each-in}}
{{yield (hash perform=(action "perform") autocomplete="off")}} {{yield (hash perform=(action "perform") autocomplete="off")}}
{{#each-in field.validations.below as |type validation|}} {{#each-in field.validations.below as |type validation|}}
{{component validation.component field=field type=type validation=validation}} {{component
validation.component
field=field
type=type
validation=validation
}}
{{/each-in}} {{/each-in}}
{{else}} {{else}}
{{yield}} {{yield}}

Datei anzeigen

@ -3,7 +3,8 @@
action=(action "undoChanges") action=(action "undoChanges")
icon=undoIcon icon=undoIcon
label=undoKey label=undoKey
class="undo-changes"}} class="undo-changes"
}}
{{/if}} {{/if}}
<div class="setting"> <div class="setting">
@ -18,9 +19,7 @@
attribute="type" attribute="type"
onChange=(action "changeType") onChange=(action "changeType")
wizard=wizard wizard=wizard
options=(hash options=(hash none="admin.wizard.select_type")
none="admin.wizard.select_type"
)
}} }}
</div> </div>
</div> </div>
@ -34,14 +33,12 @@
{{combo-box {{combo-box
value=action.run_after value=action.run_after
content=runAfterContent content=runAfterContent
onChange=(action (mut action.run_after))}} onChange=(action (mut action.run_after))
}}
</div> </div>
</div> </div>
{{wizard-message {{wizard-message key=messageKey url=messageUrl component="action"}}
key=messageKey
url=messageUrl
component="action"}}
{{#if basicTopicFields}} {{#if basicTopicFields}}
<div class="setting full field-mapper-setting"> <div class="setting full field-mapper-setting">
@ -58,7 +55,8 @@
wizardFieldSelection=true wizardFieldSelection=true
userFieldSelection="key,value" userFieldSelection="key,value"
context="action" context="action"
)}} )
}}
</div> </div>
</div> </div>
@ -76,13 +74,11 @@
options=(hash options=(hash
none="admin.wizard.selector.placeholder.wizard_field" none="admin.wizard.selector.placeholder.wizard_field"
isDisabled=showPostBuilder isDisabled=showPostBuilder
)}} )
}}
<div class="setting-gutter"> <div class="setting-gutter">
<Input <Input @type="checkbox" @checked={{this.action.post_builder}} />
@type="checkbox"
@checked={{this.action.post_builder}}
/>
<span>{{i18n "admin.wizard.action.post_builder.checkbox"}}</span> <span>{{i18n "admin.wizard.action.post_builder.checkbox"}}</span>
</div> </div>
</div> </div>
@ -97,7 +93,8 @@
<div class="setting-value editor"> <div class="setting-value editor">
{{wizard-text-editor {{wizard-text-editor
value=action.post_template value=action.post_template
wizardFields=wizardFields}} wizardFields=wizardFields
}}
</div> </div>
</div> </div>
{{/if}} {{/if}}
@ -122,7 +119,8 @@
wizardActionSelection="output" wizardActionSelection="output"
outputDefaultSelection="category" outputDefaultSelection="category"
context="action" context="action"
)}} )
}}
</div> </div>
</div> </div>
@ -143,7 +141,8 @@
wizardFieldSelection=true wizardFieldSelection=true
userFieldSelection="key,value" userFieldSelection="key,value"
context="action" context="action"
)}} )
}}
</div> </div>
</div> </div>
@ -158,10 +157,9 @@
property="visible" property="visible"
onUpdate=(action "mappedFieldUpdated") onUpdate=(action "mappedFieldUpdated")
options=(hash options=(hash
wizardFieldSelection=true wizardFieldSelection=true userFieldSelection=true context="action"
userFieldSelection=true )
context="action" }}
)}}
</div> </div>
</div> </div>
@ -176,10 +174,8 @@
inputs=action.add_event inputs=action.add_event
property="add_event" property="add_event"
onUpdate=(action "mappedFieldUpdated") onUpdate=(action "mappedFieldUpdated")
options=(hash options=(hash wizardFieldSelection=true context="action")
wizardFieldSelection=true }}
context="action"
)}}
</div> </div>
</div> </div>
{{/if}} {{/if}}
@ -195,10 +191,8 @@
inputs=action.add_location inputs=action.add_location
property="add_location" property="add_location"
onUpdate=(action "mappedFieldUpdated") onUpdate=(action "mappedFieldUpdated")
options=(hash options=(hash wizardFieldSelection=true context="action")
wizardFieldSelection=true }}
context="action"
)}}
</div> </div>
</div> </div>
{{/if}} {{/if}}
@ -223,7 +217,8 @@
userSelection="output" userSelection="output"
outputDefaultSelection="user" outputDefaultSelection="user"
context="action" context="action"
)}} )
}}
</div> </div>
</div> </div>
{{/if}} {{/if}}
@ -246,7 +241,8 @@
wizardActionSelection="value" wizardActionSelection="value"
keyDefaultSelection="userField" keyDefaultSelection="userField"
context="action" context="action"
)}} )
}}
</div> </div>
{{/if}} {{/if}}
@ -264,7 +260,8 @@
options=(hash options=(hash
isDisabled=action.custom_title_enabled isDisabled=action.custom_title_enabled
none="admin.wizard.action.send_to_api.select_an_api" none="admin.wizard.action.send_to_api.select_an_api"
)}} )
}}
</div> </div>
</div> </div>
@ -281,7 +278,8 @@
options=(hash options=(hash
isDisabled=apiEmpty isDisabled=apiEmpty
none="admin.wizard.action.send_to_api.select_an_endpoint" none="admin.wizard.action.send_to_api.select_an_endpoint"
)}} )
}}
</div> </div>
</div> </div>
@ -296,7 +294,8 @@
previewEnabled=false previewEnabled=false
barEnabled=false barEnabled=false
wizardFields=wizardFields wizardFields=wizardFields
placeholder="admin.wizard.action.send_to_api.body_placeholder"}} placeholder="admin.wizard.action.send_to_api.body_placeholder"
}}
</div> </div>
</div> </div>
{{/if}} {{/if}}
@ -320,7 +319,8 @@
groupSelection="value,output" groupSelection="value,output"
outputDefaultSelection="group" outputDefaultSelection="group"
context="action" context="action"
)}} )
}}
</div> </div>
</div> </div>
{{/if}} {{/if}}
@ -343,7 +343,8 @@
groupSelection="key,value" groupSelection="key,value"
categorySelection="key,value" categorySelection="key,value"
userSelection="key,value" userSelection="key,value"
)}} )
}}
</div> </div>
</div> </div>
{{/if}} {{/if}}
@ -366,13 +367,16 @@
userFieldSelection="key,value" userFieldSelection="key,value"
categorySelection="output" categorySelection="output"
context="action" context="action"
)}} )
}}
</div> </div>
</div> </div>
<div class="setting full field-mapper-setting"> <div class="setting full field-mapper-setting">
<div class="setting-label"> <div class="setting-label">
<label>{{i18n "admin.wizard.action.watch_categories.mute_remainder"}}</label> <label>{{i18n
"admin.wizard.action.watch_categories.mute_remainder"
}}</label>
</div> </div>
<div class="setting-value"> <div class="setting-value">
@ -384,13 +388,16 @@
context="action" context="action"
wizardFieldSelection=true wizardFieldSelection=true
userFieldSelection="key,value" userFieldSelection="key,value"
)}} )
}}
</div> </div>
</div> </div>
<div class="setting"> <div class="setting">
<div class="setting-label"> <div class="setting-label">
<label>{{i18n "admin.wizard.action.watch_x.notification_level.label"}}</label> <label>{{i18n
"admin.wizard.action.watch_x.notification_level.label"
}}</label>
</div> </div>
<div class="setting-value"> <div class="setting-value">
@ -401,7 +408,8 @@
options=(hash options=(hash
isDisabled=action.custom_title_enabled isDisabled=action.custom_title_enabled
none="admin.wizard.action.watch_x.select_a_notification_level" none="admin.wizard.action.watch_x.select_a_notification_level"
)}} )
}}
</div> </div>
</div> </div>
@ -411,10 +419,7 @@
</div> </div>
<div class="setting-value"> <div class="setting-value">
<Input <Input @type="checkbox" @checked={{this.action.wizard_user}} />
@type="checkbox"
@checked={{this.action.wizard_user}}
/>
</div> </div>
</div> </div>
@ -433,7 +438,8 @@
wizardFieldSelection=true wizardFieldSelection=true
userFieldSelection="key,value" userFieldSelection="key,value"
userSelection="output" userSelection="output"
)}} )
}}
</div> </div>
</div> </div>
{{/if}} {{/if}}
@ -456,13 +462,16 @@
wizardActionSelection=true wizardActionSelection=true
userFieldSelection="key,value" userFieldSelection="key,value"
context="action" context="action"
)}} )
}}
</div> </div>
</div> </div>
<div class="setting"> <div class="setting">
<div class="setting-label"> <div class="setting-label">
<label>{{i18n "admin.wizard.action.watch_x.notification_level.label"}}</label> <label>{{i18n
"admin.wizard.action.watch_x.notification_level.label"
}}</label>
</div> </div>
<div class="setting-value"> <div class="setting-value">
@ -473,7 +482,8 @@
options=(hash options=(hash
isDisabled=action.custom_title_enabled isDisabled=action.custom_title_enabled
none="admin.wizard.action.watch_x.select_a_notification_level" none="admin.wizard.action.watch_x.select_a_notification_level"
)}} )
}}
</div> </div>
</div> </div>
@ -483,10 +493,7 @@
</div> </div>
<div class="setting-value"> <div class="setting-value">
<Input <Input @type="checkbox" @checked={{this.action.wizard_user}} />
@type="checkbox"
@checked={{this.action.wizard_user}}
/>
</div> </div>
</div> </div>
@ -505,7 +512,8 @@
wizardFieldSelection=true wizardFieldSelection=true
userFieldSelection="key,value" userFieldSelection="key,value"
userSelection="output" userSelection="output"
)}} )
}}
</div> </div>
</div> </div>
{{/if}} {{/if}}
@ -526,7 +534,8 @@
wizardFieldSelection=true wizardFieldSelection=true
userFieldSelection=true userFieldSelection=true
context="action" context="action"
)}} )
}}
</div> </div>
</div> </div>
<div class="setting full field-mapper-setting"> <div class="setting full field-mapper-setting">
@ -544,7 +553,8 @@
wizardFieldSelection=true wizardFieldSelection=true
userFieldSelection=true userFieldSelection=true
context="action" context="action"
)}} )
}}
</div> </div>
</div> </div>
<div class="setting full field-mapper-setting"> <div class="setting full field-mapper-setting">
@ -562,7 +572,8 @@
wizardFieldSelection=true wizardFieldSelection=true
userFieldSelection=true userFieldSelection=true
context="action" context="action"
)}} )
}}
</div> </div>
</div> </div>
<div class="setting full field-mapper-setting"> <div class="setting full field-mapper-setting">
@ -580,7 +591,8 @@
wizardFieldSelection=true wizardFieldSelection=true
userFieldSelection=true userFieldSelection=true
context="action" context="action"
)}} )
}}
</div> </div>
</div> </div>
<div class="setting full field-mapper-setting"> <div class="setting full field-mapper-setting">
@ -599,7 +611,8 @@
userFieldSelection=true userFieldSelection=true
userSelection="output" userSelection="output"
context="action" context="action"
)}} )
}}
</div> </div>
</div> </div>
<div class="setting full field-mapper-setting"> <div class="setting full field-mapper-setting">
@ -618,12 +631,15 @@
userFieldSelection=true userFieldSelection=true
userSelection="output" userSelection="output"
context="action" context="action"
)}} )
}}
</div> </div>
</div> </div>
<div class="setting full field-mapper-setting"> <div class="setting full field-mapper-setting">
<div class="setting-label"> <div class="setting-label">
<label>{{i18n "admin.wizard.action.create_group.grant_trust_level"}}</label> <label>{{i18n
"admin.wizard.action.create_group.grant_trust_level"
}}</label>
</div> </div>
<div class="setting-value"> <div class="setting-value">
@ -636,12 +652,15 @@
wizardFieldSelection=true wizardFieldSelection=true
userFieldSelection=true userFieldSelection=true
context="action" context="action"
)}} )
}}
</div> </div>
</div> </div>
<div class="setting full field-mapper-setting"> <div class="setting full field-mapper-setting">
<div class="setting-label"> <div class="setting-label">
<label>{{i18n "admin.wizard.action.create_group.mentionable_level"}}</label> <label>{{i18n
"admin.wizard.action.create_group.mentionable_level"
}}</label>
</div> </div>
<div class="setting-value"> <div class="setting-value">
@ -654,12 +673,15 @@
wizardFieldSelection=true wizardFieldSelection=true
userFieldSelection=true userFieldSelection=true
context="action" context="action"
)}} )
}}
</div> </div>
</div> </div>
<div class="setting full field-mapper-setting"> <div class="setting full field-mapper-setting">
<div class="setting-label"> <div class="setting-label">
<label>{{i18n "admin.wizard.action.create_group.messageable_level"}}</label> <label>{{i18n
"admin.wizard.action.create_group.messageable_level"
}}</label>
</div> </div>
<div class="setting-value"> <div class="setting-value">
@ -672,12 +694,15 @@
wizardFieldSelection=true wizardFieldSelection=true
userFieldSelection=true userFieldSelection=true
context="action" context="action"
)}} )
}}
</div> </div>
</div> </div>
<div class="setting full field-mapper-setting"> <div class="setting full field-mapper-setting">
<div class="setting-label"> <div class="setting-label">
<label>{{i18n "admin.wizard.action.create_group.visibility_level"}}</label> <label>{{i18n
"admin.wizard.action.create_group.visibility_level"
}}</label>
</div> </div>
<div class="setting-value"> <div class="setting-value">
@ -690,12 +715,15 @@
wizardFieldSelection=true wizardFieldSelection=true
userFieldSelection=true userFieldSelection=true
context="action" context="action"
)}} )
}}
</div> </div>
</div> </div>
<div class="setting full field-mapper-setting"> <div class="setting full field-mapper-setting">
<div class="setting-label"> <div class="setting-label">
<label>{{i18n "admin.wizard.action.create_group.members_visibility_level"}}</label> <label>{{i18n
"admin.wizard.action.create_group.members_visibility_level"
}}</label>
</div> </div>
<div class="setting-value"> <div class="setting-value">
@ -708,7 +736,8 @@
wizardFieldSelection=true wizardFieldSelection=true
userFieldSelection=true userFieldSelection=true
context="action" context="action"
)}} )
}}
</div> </div>
</div> </div>
{{/if}} {{/if}}
@ -729,7 +758,8 @@
wizardFieldSelection=true wizardFieldSelection=true
userFieldSelection="key,value" userFieldSelection="key,value"
context="action" context="action"
)}} )
}}
</div> </div>
</div> </div>
@ -748,7 +778,8 @@
wizardFieldSelection=true wizardFieldSelection=true
userFieldSelection="key,value" userFieldSelection="key,value"
context="action" context="action"
)}} )
}}
</div> </div>
</div> </div>
@ -767,7 +798,8 @@
wizardFieldSelection=true wizardFieldSelection=true
userFieldSelection="key,value" userFieldSelection="key,value"
context="action" context="action"
)}} )
}}
</div> </div>
</div> </div>
@ -786,13 +818,16 @@
wizardFieldSelection=true wizardFieldSelection=true
userFieldSelection="key,value" userFieldSelection="key,value"
context="action" context="action"
)}} )
}}
</div> </div>
</div> </div>
<div class="setting full field-mapper-setting"> <div class="setting full field-mapper-setting">
<div class="setting-label"> <div class="setting-label">
<label>{{i18n "admin.wizard.action.create_category.parent_category"}}</label> <label>{{i18n
"admin.wizard.action.create_category.parent_category"
}}</label>
</div> </div>
<div class="setting-value"> <div class="setting-value">
@ -806,7 +841,8 @@
userFieldSelection="key,value" userFieldSelection="key,value"
categorySelection="output" categorySelection="output"
context="action" context="action"
)}} )
}}
</div> </div>
</div> </div>
@ -828,7 +864,8 @@
userFieldSelection=true userFieldSelection=true
groupSelection="key" groupSelection="key"
context="action" context="action"
)}} )
}}
</div> </div>
</div> </div>
{{/if}} {{/if}}
@ -852,7 +889,8 @@
userFieldSelection="value" userFieldSelection="value"
keyPlaceholder="admin.wizard.action.custom_fields.key" keyPlaceholder="admin.wizard.action.custom_fields.key"
context=customFieldsContext context=customFieldsContext
)}} )
}}
</div> </div>
</div> </div>
{{/if}} {{/if}}
@ -874,7 +912,8 @@
userFieldSelection=true userFieldSelection=true
groupSelection=true groupSelection=true
context="action" context="action"
)}} )
}}
</div> </div>
</div> </div>
{{/if}} {{/if}}
@ -886,10 +925,7 @@
</div> </div>
<div class="setting-value"> <div class="setting-value">
<Input <Input @type="checkbox" @checked={{this.action.skip_redirect}} />
@type="checkbox"
@checked={{this.action.skip_redirect}}
/>
<span> <span>
{{i18n "admin.wizard.action.skip_redirect.description" type="topic"}} {{i18n "admin.wizard.action.skip_redirect.description" type="topic"}}
@ -903,13 +939,13 @@
</div> </div>
<div class="setting-value"> <div class="setting-value">
<Input <Input @type="checkbox" @checked={{this.action.suppress_notifications}} />
@type="checkbox"
@checked={{this.action.suppress_notifications}}
/>
<span> <span>
{{i18n "admin.wizard.action.suppress_notifications.description" type="topic"}} {{i18n
"admin.wizard.action.suppress_notifications.description"
type="topic"
}}
</span> </span>
</div> </div>
</div> </div>

Datei anzeigen

@ -3,7 +3,8 @@
action=(action "undoChanges") action=(action "undoChanges")
icon=undoIcon icon=undoIcon
label=undoKey label=undoKey
class="undo-changes"}} class="undo-changes"
}}
{{/if}} {{/if}}
<div class="setting"> <div class="setting">
@ -11,10 +12,7 @@
<label>{{i18n "admin.wizard.field.label"}}</label> <label>{{i18n "admin.wizard.field.label"}}</label>
</div> </div>
<div class="setting-value"> <div class="setting-value">
<Input <Input name="label" @value={{this.field.label}} />
name="label"
@value={{this.field.label}}
/>
</div> </div>
</div> </div>
@ -25,10 +23,7 @@
<div class="setting-value"> <div class="setting-value">
<span>{{i18n "admin.wizard.field.required_label"}}</span> <span>{{i18n "admin.wizard.field.required_label"}}</span>
<Input <Input @type="checkbox" @checked={{this.field.required}} />
@type="checkbox"
@checked={{this.field.required}}
/>
</div> </div>
</div> </div>
@ -37,10 +32,7 @@
<label>{{i18n "admin.wizard.field.description"}}</label> <label>{{i18n "admin.wizard.field.description"}}</label>
</div> </div>
<div class="setting-value"> <div class="setting-value">
<Textarea <Textarea name="description" @value={{this.field.description}} />
name="description"
@value={{this.field.description}}
/>
</div> </div>
</div> </div>
@ -55,7 +47,8 @@
onUploadDeleted=(action "imageUploadDeleted") onUploadDeleted=(action "imageUploadDeleted")
type="wizard-field-image" type="wizard-field-image"
class="no-repeat contain-image" class="no-repeat contain-image"
id=(concat "wizard-field-" field.id "-image-upload")}} id=(concat "wizard-field-" field.id "-image-upload")
}}
</div> </div>
</div> </div>
@ -71,17 +64,12 @@
attribute="type" attribute="type"
onChange=(action "changeType") onChange=(action "changeType")
wizard=wizard wizard=wizard
options=(hash options=(hash none="admin.wizard.select_type")
none="admin.wizard.select_type"
)
}} }}
</div> </div>
</div> </div>
{{wizard-message {{wizard-message key=messageKey url=messageUrl component="field"}}
key=messageKey
url=messageUrl
component="field"}}
{{#if isTextType}} {{#if isTextType}}
<div class="setting"> <div class="setting">
@ -121,10 +109,7 @@
<div class="setting-value"> <div class="setting-value">
<span>{{i18n "admin.wizard.field.char_counter_placeholder"}}</span> <span>{{i18n "admin.wizard.field.char_counter_placeholder"}}</span>
<Input <Input @type="checkbox" @checked={{this.field.char_counter}} />
@type="checkbox"
@checked={{this.field.char_counter}}
/>
</div> </div>
</div> </div>
@ -166,10 +151,7 @@
</div> </div>
<div class="setting-value"> <div class="setting-value">
<Input <Input @value={{this.field.file_types}} class="medium" />
@value={{this.field.file_types}}
class="medium"
/>
</div> </div>
</div> </div>
{{/if}} {{/if}}
@ -181,11 +163,7 @@
</div> </div>
<div class="setting-value"> <div class="setting-value">
<Input <Input @type="number" @value={{this.field.limit}} class="small" />
@type="number"
@value={{this.field.limit}}
class="small"
/>
</div> </div>
</div> </div>
{{/if}} {{/if}}
@ -193,15 +171,16 @@
{{#if isDateTime}} {{#if isDateTime}}
<div class="setting"> <div class="setting">
<div class="setting-label"> <div class="setting-label">
<label>{{html-safe (i18n "admin.wizard.field.date_time_format.label")}}</label> <label>{{html-safe
(i18n "admin.wizard.field.date_time_format.label")
}}</label>
</div> </div>
<div class="setting-value"> <div class="setting-value">
<Input <Input @value={{this.field.format}} class="medium" />
@value={{this.field.format}} <label>{{html-safe
class="medium" (i18n "admin.wizard.field.date_time_format.instructions")
/> }}</label>
<label>{{html-safe (i18n "admin.wizard.field.date_time_format.instructions")}}</label>
</div> </div>
</div> </div>
{{/if}} {{/if}}
@ -217,7 +196,8 @@
inputs=field.prefill inputs=field.prefill
property="prefill" property="prefill"
onUpdate=(action "mappedFieldUpdated") onUpdate=(action "mappedFieldUpdated")
options=prefillOptions}} options=prefillOptions
}}
</div> </div>
</div> </div>
{{/if}} {{/if}}
@ -233,7 +213,8 @@
inputs=field.content inputs=field.content
property="content" property="content"
onUpdate=(action "mappedFieldUpdated") onUpdate=(action "mappedFieldUpdated")
options=contentOptions}} options=contentOptions
}}
</div> </div>
</div> </div>
{{/if}} {{/if}}
@ -259,10 +240,7 @@
</div> </div>
<div class="setting-value"> <div class="setting-value">
<Input <Input @type="checkbox" @checked={{this.field.can_create_tag}} />
@type="checkbox"
@checked={{this.field.can_create_tag}}
/>
</div> </div>
</div> </div>
{{/if}} {{/if}}
@ -274,9 +252,7 @@
</div> </div>
<div class="setting-value"> <div class="setting-value">
{{wizard-mapper {{wizard-mapper inputs=field.condition options=fieldConditionOptions}}
inputs=field.condition
options=fieldConditionOptions}}
</div> </div>
</div> </div>
@ -286,9 +262,7 @@
</div> </div>
<div class="setting-value"> <div class="setting-value">
{{wizard-mapper {{wizard-mapper inputs=field.index options=fieldIndexOptions}}
inputs=field.index
options=fieldIndexOptions}}
</div> </div>
</div> </div>
@ -303,9 +277,8 @@
value=field.property value=field.property
content=categoryPropertyTypes content=categoryPropertyTypes
onChange=(action (mut field.property)) onChange=(action (mut field.property))
options=(hash options=(hash none="admin.wizard.selector.placeholder.property")
none="admin.wizard.selector.placeholder.property" }}
)}}
</div> </div>
</div> </div>
{{/if}} {{/if}}

Datei anzeigen

@ -3,10 +3,7 @@
<label>{{i18n "admin.wizard.step.title"}}</label> <label>{{i18n "admin.wizard.step.title"}}</label>
</div> </div>
<div class="setting-value"> <div class="setting-value">
<Input <Input name="title" @value={{this.step.title}} />
name="title"
@value={{this.step.title}}
/>
</div> </div>
</div> </div>
@ -21,7 +18,8 @@
onUploadDeleted=(action "bannerUploadDeleted") onUploadDeleted=(action "bannerUploadDeleted")
type="wizard-step-banner" type="wizard-step-banner"
class="no-repeat contain-image" class="no-repeat contain-image"
id=(concat "wizard-step-" step.id "-banner-upload")}} id=(concat "wizard-step-" step.id "-banner-upload")
}}
</div> </div>
</div> </div>
@ -30,8 +28,7 @@
<label>{{i18n "admin.wizard.step.description"}}</label> <label>{{i18n "admin.wizard.step.description"}}</label>
</div> </div>
<div class="setting-value"> <div class="setting-value">
{{wizard-text-editor {{wizard-text-editor value=step.raw_description}}
value=step.raw_description}}
</div> </div>
</div> </div>
@ -42,9 +39,7 @@
</div> </div>
<div class="setting-value"> <div class="setting-value">
{{wizard-mapper {{wizard-mapper inputs=step.condition options=stepConditionOptions}}
inputs=step.condition
options=stepConditionOptions}}
</div> </div>
</div> </div>
@ -52,10 +47,7 @@
<div class="setting-label"></div> <div class="setting-label"></div>
<div class="setting-value force-final"> <div class="setting-value force-final">
<h4>{{i18n "admin.wizard.step.force_final.label"}}</h4> <h4>{{i18n "admin.wizard.step.force_final.label"}}</h4>
<Input <Input @type="checkbox" @checked={{this.step.force_final}} />
@type="checkbox"
@checked={{this.step.force_final}}
/>
<span>{{i18n "admin.wizard.step.force_final.description"}}</span> <span>{{i18n "admin.wizard.step.force_final.description"}}</span>
</div> </div>
</div> </div>
@ -75,15 +67,14 @@
userFieldSelection="value" userFieldSelection="value"
keyPlaceholder="admin.wizard.submission_key" keyPlaceholder="admin.wizard.submission_key"
context="step" context="step"
)}} )
}}
{{#if step.required_data}} {{#if step.required_data}}
<div class="required-data-message"> <div class="required-data-message">
<div class="label"> <div class="label">
{{i18n "admin.wizard.step.required_data.not_permitted_message"}} {{i18n "admin.wizard.step.required_data.not_permitted_message"}}
</div> </div>
<Input <Input @value={{this.step.required_data_message}} />
@value={{this.step.required_data_message}}
/>
</div> </div>
{{/if}} {{/if}}
</div> </div>
@ -102,7 +93,8 @@
keyPlaceholder="admin.wizard.param_key" keyPlaceholder="admin.wizard.param_key"
valuePlaceholder="admin.wizard.submission_key" valuePlaceholder="admin.wizard.submission_key"
context="step" context="step"
)}} )
}}
</div> </div>
</div> </div>
{{/wizard-subscription-container}} {{/wizard-subscription-container}}
@ -111,7 +103,8 @@
itemType="field" itemType="field"
current=currentField current=currentField
items=step.fields items=step.fields
parentId=step.id}} parentId=step.id
}}
{{#each step.fields as |field|}} {{#each step.fields as |field|}}
{{wizard-custom-field {{wizard-custom-field
@ -122,5 +115,6 @@
fieldTypes=fieldTypes fieldTypes=fieldTypes
removeField="removeField" removeField="removeField"
wizardFields=wizardFields wizardFields=wizardFields
subscribed=subscribed}} subscribed=subscribed
}}
{{/each}} {{/each}}

Datei anzeigen

@ -4,14 +4,34 @@
{{#if anyLinks}} {{#if anyLinks}}
{{#each links as |link|}} {{#each links as |link|}}
<div data-id={{link.id}}> <div data-id={{link.id}}>
{{d-button action=(action "change") actionParam=link.id translatedLabel=link.label class=link.classes}} {{d-button
action=(action "change")
actionParam=link.id
translatedLabel=link.label
class=link.classes
}}
{{#unless link.first}} {{#unless link.first}}
{{d-button action=(action "back") actionParam=link icon="arrow-left" class="back"}} {{d-button
action=(action "back")
actionParam=link
icon="arrow-left"
class="back"
}}
{{/unless}} {{/unless}}
{{#unless link.last}} {{#unless link.last}}
{{d-button action=(action "forward") actionParam=link icon="arrow-right" class="forward"}} {{d-button
action=(action "forward")
actionParam=link
icon="arrow-right"
class="forward"
}}
{{/unless}} {{/unless}}
{{d-button action=(action "remove") actionParam=link.id icon="times" class="remove"}} {{d-button
action=(action "remove")
actionParam=link.id
icon="times"
class="remove"
}}
</div> </div>
{{/each}} {{/each}}
{{/if}} {{/if}}

Datei anzeigen

@ -2,7 +2,8 @@
{{combo-box {{combo-box
value=connector value=connector
content=connectors content=connectors
onChange=(action "changeConnector")}} onChange=(action "changeConnector")
}}
{{else}} {{else}}
{{#if connector}} {{#if connector}}
<span class="connector-single"> <span class="connector-single">

Datei anzeigen

@ -5,7 +5,8 @@
inputType=inputType inputType=inputType
connectorType="type" connectorType="type"
options=options options=options
onUpdate=onUpdate}} onUpdate=onUpdate
}}
{{#if hasPairs}} {{#if hasPairs}}
<div class="mapper-pairs mapper-block"> <div class="mapper-pairs mapper-block">
@ -16,7 +17,8 @@
inputType=inputType inputType=inputType
options=options options=options
removePair=(action "removePair") removePair=(action "removePair")
onUpdate=onUpdate}} onUpdate=onUpdate
}}
{{/each}} {{/each}}
{{#if canAddPair}} {{#if canAddPair}}
@ -35,7 +37,8 @@
connectorType="output" connectorType="output"
inputType=inputType inputType=inputType
options=options options=options
onUpdate=onUpdate}} onUpdate=onUpdate
}}
{{/if}} {{/if}}
<div class="output mapper-block"> <div class="output mapper-block">
@ -45,7 +48,8 @@
value=input.output value=input.output
activeType=input.output_type activeType=input.output_type
options=options options=options
onUpdate=onUpdate}} onUpdate=onUpdate
}}
</div> </div>
{{/if}} {{/if}}

Datei anzeigen

@ -5,7 +5,8 @@
value=pair.key value=pair.key
activeType=pair.key_type activeType=pair.key_type
options=options options=options
onUpdate=onUpdate}} onUpdate=onUpdate
}}
</div> </div>
{{wizard-mapper-connector {{wizard-mapper-connector
@ -14,7 +15,8 @@
connectorType="pair" connectorType="pair"
inputType=inputType inputType=inputType
options=options options=options
onUpdate=onUpdate}} onUpdate=onUpdate
}}
<div class="value mapper-block"> <div class="value mapper-block">
{{wizard-mapper-selector {{wizard-mapper-selector
@ -24,7 +26,8 @@
activeType=pair.value_type activeType=pair.value_type
options=options options=options
onUpdate=onUpdate onUpdate=onUpdate
connector=pair.connector}} connector=pair.connector
}}
</div> </div>
{{#if showJoin}} {{#if showJoin}}
@ -32,5 +35,7 @@
{{/if}} {{/if}}
{{#if showRemove}} {{#if showRemove}}
<a role="button" {{action removePair pair}} class="remove-pair">{{d-icon "times"}}</a> <a role="button" {{action removePair pair}} class="remove-pair">{{d-icon
"times"
}}</a>
{{/if}} {{/if}}

Datei anzeigen

@ -10,7 +10,8 @@
{{wizard-mapper-selector-type {{wizard-mapper-selector-type
activeType=activeType activeType=activeType
item=item item=item
toggle=(action "toggleType")}} toggle=(action "toggleType")
}}
{{/each}} {{/each}}
</div> </div>
{{/if}} {{/if}}
@ -34,10 +35,8 @@
value=value value=value
content=comboBoxContent content=comboBoxContent
onChange=(action "changeValue") onChange=(action "changeValue")
options=(hash options=(hash none=placeholderKey allowAny=comboBoxAllowAny)
none=placeholderKey }}
allowAny=comboBoxAllowAny
)}}
{{/if}} {{/if}}
{{#if showMultiSelect}} {{#if showMultiSelect}}
@ -45,14 +44,16 @@
content=multiSelectContent content=multiSelectContent
value=value value=value
onChange=(action "changeValue") onChange=(action "changeValue")
options=multiSelectOptions}} options=multiSelectOptions
}}
{{/if}} {{/if}}
{{#if showList}} {{#if showList}}
{{wizard-value-list {{wizard-value-list
values=value values=value
addKey=placeholderKey addKey=placeholderKey
onChange=(action "changeValue")}} onChange=(action "changeValue")
}}
{{/if}} {{/if}}
{{#if showTag}} {{#if showTag}}
@ -60,10 +61,8 @@
tags=value tags=value
onChange=(action "changeValue") onChange=(action "changeValue")
everyTag=true everyTag=true
options=(hash options=(hash none=placeholderKey filterable=true)
none=placeholderKey }}
filterable=true
)}}
{{/if}} {{/if}}
{{#if showUser}} {{#if showUser}}
@ -72,8 +71,7 @@
value=value value=value
autocomplete="discourse" autocomplete="discourse"
onChange=(action "changeUserValue") onChange=(action "changeUserValue")
options=(hash options=(hash includeMessageableGroups="true")
includeMessageableGroups="true" }}
)}}
{{/if}} {{/if}}
</div> </div>

Datei anzeigen

@ -3,14 +3,16 @@
{{wizard-mapper-connector {{wizard-mapper-connector
connector=input.connector connector=input.connector
connectorType="input" connectorType="input"
onUpdate=(action "inputUpdated")}} onUpdate=(action "inputUpdated")
}}
{{/if}} {{/if}}
{{wizard-mapper-input {{wizard-mapper-input
input=input input=input
options=inputOptions options=inputOptions
remove=(action "remove") remove=(action "remove")
onUpdate=(action "inputUpdated")}} onUpdate=(action "inputUpdated")
}}
{{/each}} {{/each}}
{{#if canAdd}} {{#if canAdd}}

Datei anzeigen

@ -7,27 +7,31 @@
<li> <li>
<span class="setting-title"> <span class="setting-title">
<h4>{{i18n (concat "admin.wizard.field.validations." type)}}</h4> <h4>{{i18n (concat "admin.wizard.field.validations." type)}}</h4>
<Input <Input @type="checkbox" @checked={{this.props.status}} />
@type="checkbox"
@checked={{this.props.status}}
/>
{{i18n "admin.wizard.field.validations.enabled"}} {{i18n "admin.wizard.field.validations.enabled"}}
</span> </span>
<div class="validation-container"> <div class="validation-container">
<div class="validation-section"> <div class="validation-section">
<div class="setting-label"> <div class="setting-label">
<label>{{i18n "admin.wizard.field.validations.categories"}}</label> <label>{{i18n
"admin.wizard.field.validations.categories"
}}</label>
</div> </div>
<div class="setting-value"> <div class="setting-value">
{{category-selector {{category-selector
categories=(get this (concat "validationBuffer." type ".categories")) categories=(get
this (concat "validationBuffer." type ".categories")
)
onChange=(action "updateValidationCategories" type props) onChange=(action "updateValidationCategories" type props)
class="wizard"}} class="wizard"
}}
</div> </div>
</div> </div>
<div class="validation-section"> <div class="validation-section">
<div class="setting-label"> <div class="setting-label">
<label>{{i18n "admin.wizard.field.validations.max_topic_age"}}</label> <label>{{i18n
"admin.wizard.field.validations.max_topic_age"
}}</label>
</div> </div>
<div class="setting-value"> <div class="setting-value">
<Input <Input
@ -39,7 +43,8 @@
value=(readonly props.time_unit) value=(readonly props.time_unit)
content=timeUnits content=timeUnits
class="time-unit-selector" class="time-unit-selector"
onChange=(action (mut props.time_unit))}} onChange=(action (mut props.time_unit))
}}
</div> </div>
</div> </div>
<div class="validation-section"> <div class="validation-section">
@ -47,9 +52,17 @@
<label>{{i18n "admin.wizard.field.validations.position"}}</label> <label>{{i18n "admin.wizard.field.validations.position"}}</label>
</div> </div>
<div class="setting-value"> <div class="setting-value">
{{radio-button name=(concat type field.id) value="above" selection=props.position}} {{radio-button
name=(concat type field.id)
value="above"
selection=props.position
}}
<span>{{i18n "admin.wizard.field.validations.above"}}</span> <span>{{i18n "admin.wizard.field.validations.above"}}</span>
{{radio-button name=(concat type field.id) value="below" selection=props.position}} {{radio-button
name=(concat type field.id)
value="below"
selection=props.position
}}
<span>{{i18n "admin.wizard.field.validations.below"}}</span> <span>{{i18n "admin.wizard.field.validations.below"}}</span>
</div> </div>
</div> </div>

Datei anzeigen

@ -1,6 +1,24 @@
<svg width="300px" height="300px" viewBox="0 0 300 300" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg
<g id="pavilion-logo" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> width="300px"
<path id="Combined-Shape" stroke="currentColor" stroke-width="35" d="M41.1381822,291.00006 L40.5778853,130.009744 M258.850727,291.638415 L259.290397,130.37133 M36.0002279,140.721678 L139.995368,36.2122772 M263.350577,141.009083 L138.927245,16.2478517"></path> height="300px"
viewBox="0 0 300 300"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
>
<g
id="pavilion-logo"
stroke="none"
stroke-width="1"
fill="none"
fill-rule="evenodd"
>
<path
id="Combined-Shape"
stroke="currentColor"
stroke-width="35"
d="M41.1381822,291.00006 L40.5778853,130.009744 M258.850727,291.638415 L259.290397,130.37133 M36.0002279,140.721678 L139.995368,36.2122772 M263.350577,141.009083 L138.927245,16.2478517"
></path>
</g> </g>
</svg> </svg>
<span>{{label}}</span> <span>{{label}}</span>

Vorher

Breite:  |  Höhe:  |  Größe: 538 B

Nachher

Breite:  |  Höhe:  |  Größe: 602 B

Datei anzeigen

@ -1,6 +1,7 @@
<div class="select-kit-header-wrapper"> <div class="select-kit-header-wrapper">
{{component selectKit.options.selectedNameComponent {{component
selectKit.options.selectedNameComponent
tabindex=tabindex tabindex=tabindex
item=selectedContent item=selectedContent
selectKit=selectKit selectKit=selectKit

Datei anzeigen

@ -16,7 +16,10 @@
{{#if isComposer}} {{#if isComposer}}
<div class="wizard-table-long-text"> <div class="wizard-table-long-text">
<p class="wizard-table-composer-text wizard-table-long-text-content {{textState}}"> <p
class="wizard-table-composer-text wizard-table-long-text-content
{{textState}}"
>
{{value.value}} {{value.value}}
</p> </p>
<a href {{action "expandText"}}> <a href {{action "expandText"}}>
@ -28,7 +31,8 @@
{{#if isComposerPreview}} {{#if isComposerPreview}}
{{d-icon "comment-alt"}} {{d-icon "comment-alt"}}
<span class="wizard-table-composer-text"> <span class="wizard-table-composer-text">
{{i18n "admin.wizard.submissions.composer_preview"}}: {{value.value}} {{i18n "admin.wizard.submissions.composer_preview"}}:
{{value.value}}
</span> </span>
{{/if}} {{/if}}
@ -146,7 +150,12 @@
{{/if}} {{/if}}
{{#if showUsername}} {{#if showUsername}}
<a target="_blank" rel="noopener noreferrer" href={{userProfileUrl}} title={{username}}> <a
target="_blank"
rel="noopener noreferrer"
href={{userProfileUrl}}
title={{username}}
>
{{username}} {{username}}
</a> </a>
{{/if}} {{/if}}

Datei anzeigen

@ -1,19 +1,12 @@
{{d-editor {{d-editor value=value forcePreview=forcePreview placeholder=placeholder}}
value=value
forcePreview=forcePreview
placeholder=placeholder}}
<div class="wizard-editor-gutter"> <div class="wizard-editor-gutter">
{{#if previewEnabled}} {{#if previewEnabled}}
{{d-button {{d-button action=(action "togglePreview") translatedLabel=previewLabel}}
action=(action "togglePreview")
translatedLabel=previewLabel}}
{{/if}} {{/if}}
{{#if fieldsEnabled}} {{#if fieldsEnabled}}
{{d-button {{d-button action=(action "togglePopover") translatedLabel=popoverLabel}}
action=(action "togglePopover")
translatedLabel=popoverLabel}}
{{#if showPopover}} {{#if showPopover}}
<div class="wizard-editor-gutter-popover"> <div class="wizard-editor-gutter-popover">

Datei anzeigen

@ -1,3 +1,7 @@
{{#if noAccess}} {{#if noAccess}}
{{custom-wizard-no-access text=(i18n noAccessI18nKey) wizardId=wizardId reason=noAccessReason}} {{custom-wizard-no-access
text=(i18n noAccessI18nKey)
wizardId=wizardId
reason=noAccessReason
}}
{{/if}} {{/if}}

Datei anzeigen

@ -16,5 +16,6 @@
wizard=wizard wizard=wizard
goNext=(action "goNext") goNext=(action "goNext")
goBack=(action "goBack") goBack=(action "goBack")
showMessage=(action "showMessage")}} showMessage=(action "showMessage")
}}
{{/if}} {{/if}}

Datei anzeigen

@ -4,7 +4,10 @@
</div> </div>
<div class="wizard-footer"> <div class="wizard-footer">
{{#if customWizard}} {{#if customWizard}}
<img src={{logoUrl}} style="background-image: initial; width: 33px; height: 33px;" > <img
src={{logoUrl}}
style="background-image: initial; width: 33px; height: 33px;"
/>
{{else}} {{else}}
<div class="discourse-logo"></div> <div class="discourse-logo"></div>
{{/if}} {{/if}}

Datei anzeigen

@ -8,7 +8,10 @@
<div class="left-content"> <div class="left-content">
<label class="column-name"> <label class="column-name">
{{input type="checkbox" checked=column.enabled}} {{input type="checkbox" checked=column.enabled}}
{{directory-table-header-title field=column.label translated=true}} {{directory-table-header-title
field=column.label
translated=true
}}
</label> </label>
</div> </div>
</div> </div>

Datei anzeigen

@ -12,5 +12,6 @@
action=(action "submit") action=(action "submit")
class="btn-primary" class="btn-primary"
label="admin.wizard.after_time_modal.done" label="admin.wizard.after_time_modal.done"
disabled=submitDisabled}} disabled=submitDisabled
}}
</div> </div>

Datei anzeigen

@ -64,6 +64,8 @@ class CustomWizard::Template
ensure_wizard_upload_references!(wizard_id) ensure_wizard_upload_references!(wizard_id)
PluginStore.remove(CustomWizard::PLUGIN_NAME, wizard.id) PluginStore.remove(CustomWizard::PLUGIN_NAME, wizard.id)
clear_user_wizard_redirect(wizard_id, after_time: !!wizard.after_time) clear_user_wizard_redirect(wizard_id, after_time: !!wizard.after_time)
related_custom_fields = CategoryCustomField.where(name: 'create_topic_wizard', value: wizard.name.parameterize(separator: "_"))
related_custom_fields.destroy_all
end end
clear_cache_keys clear_cache_keys

Datei anzeigen

@ -5,7 +5,7 @@
"author": "Pavilion", "author": "Pavilion",
"license": "GPL V2", "license": "GPL V2",
"devDependencies": { "devDependencies": {
"eslint-config-discourse": "^1.1.8", "eslint-config-discourse": "^3.4.0",
"semver": "^7.3.5" "semver": "^7.3.5"
} }
} }

Datei anzeigen

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
# name: discourse-custom-wizard # name: discourse-custom-wizard
# about: Forms for Discourse. Better onboarding, structured posting, data enrichment, automated actions and much more. # about: Forms for Discourse. Better onboarding, structured posting, data enrichment, automated actions and much more.
# version: 2.4.10 # version: 2.4.16
# authors: Angus McLeod, Faizaan Gagan, Robert Barrow, Keegan George, Kaitlin Maddever, Juan Marcos Gutierrez Ramos # authors: Angus McLeod, Faizaan Gagan, Robert Barrow, Keegan George, Kaitlin Maddever, Juan Marcos Gutierrez Ramos
# url: https://github.com/paviliondev/discourse-custom-wizard # url: https://github.com/paviliondev/discourse-custom-wizard
# contact_emails: development@pavilion.tech # contact_emails: development@pavilion.tech

Datei anzeigen

@ -5,6 +5,7 @@ describe CustomWizard::AdminWizardController do
fab!(:user1) { Fabricate(:user) } fab!(:user1) { Fabricate(:user) }
fab!(:user2) { Fabricate(:user) } fab!(:user2) { Fabricate(:user) }
let(:template) { get_wizard_fixture("wizard") } let(:template) { get_wizard_fixture("wizard") }
let(:category) { Fabricate(:category, custom_fields: { create_topic_wizard: template['name'].parameterize(separator: "_") }) }
before do before do
CustomWizard::Template.save(template, skip_jobs: true) CustomWizard::Template.save(template, skip_jobs: true)
@ -39,10 +40,12 @@ describe CustomWizard::AdminWizardController do
expect(response.parsed_body['steps'].length).to eq(3) expect(response.parsed_body['steps'].length).to eq(3)
end end
it "removes wizard templates" do it "removes wizard templates whilst making sure create_topic_wizard settings for that wizard are removed from Categories" do
expect(CategoryCustomField.find_by(category_id: category.id, name: 'create_topic_wizard', value: template['name'].parameterize(separator: "_"))).not_to eq(nil)
delete "/admin/wizards/wizard/#{template['id']}.json" delete "/admin/wizards/wizard/#{template['id']}.json"
expect(response.status).to eq(200) expect(response.status).to eq(200)
expect(CustomWizard::Template.exists?(template['id'])).to eq(false) expect(CustomWizard::Template.exists?(template['id'])).to eq(false)
expect(CategoryCustomField.find_by(name: 'create_topic_wizard', value: template['name'].parameterize(separator: "_"))).to eq(nil)
end end
it "saves wizard templates" do it "saves wizard templates" do

Datei anzeigen

@ -4,7 +4,7 @@ import {
visible, visible,
} from "discourse/tests/helpers/qunit-helpers"; } from "discourse/tests/helpers/qunit-helpers";
import { test } from "qunit"; import { test } from "qunit";
import { click, findAll, visit, waitUntil } from "@ember/test-helpers"; import { click, fillIn, findAll, visit, waitUntil } from "@ember/test-helpers";
import selectKit from "discourse/tests/helpers/select-kit-helper"; import selectKit from "discourse/tests/helpers/select-kit-helper";
import { import {
getCustomFields, getCustomFields,

Datei anzeigen

@ -1,6 +1,6 @@
import { acceptance, query } from "discourse/tests/helpers/qunit-helpers"; import { acceptance, query } from "discourse/tests/helpers/qunit-helpers";
import { test } from "qunit"; import { test } from "qunit";
import { click, visit } from "@ember/test-helpers"; import { click, currentURL, fillIn, visit } from "@ember/test-helpers";
import selectKit from "discourse/tests/helpers/select-kit-helper"; import selectKit from "discourse/tests/helpers/select-kit-helper";
import { import {
getBusinessAdminWizard, getBusinessAdminWizard,
@ -73,11 +73,11 @@ acceptance("Admin | API tab", function (needs) {
await fieldTypeDropdown.expand(); await fieldTypeDropdown.expand();
await fieldTypeDropdown.selectRowByValue("basic"); await fieldTypeDropdown.selectRowByValue("basic");
await fillIn( await fillIn(
".wizard-api-authentication .settings .control-group:eq(1) .controls input", ".wizard-api-authentication .settings .control-group:nth-child(3) .controls input",
"some_username" "some_username"
); );
await fillIn( await fillIn(
".wizard-api-authentication .settings .control-group:eq(2) .controls input", ".wizard-api-authentication .settings .control-group:nth-child(4) .controls input",
"some_password" "some_password"
); );
await click(".wizard-api-endpoints button"); await click(".wizard-api-endpoints button");

Datei anzeigen

@ -4,7 +4,7 @@ import {
visible, visible,
} from "discourse/tests/helpers/qunit-helpers"; } from "discourse/tests/helpers/qunit-helpers";
import { test } from "qunit"; import { test } from "qunit";
import { click, findAll, visit } from "@ember/test-helpers"; import { click, currentURL, fillIn, findAll, visit } from "@ember/test-helpers";
import selectKit from "discourse/tests/helpers/select-kit-helper"; import selectKit from "discourse/tests/helpers/select-kit-helper";
import { import {
getAdminTestingWizard, getAdminTestingWizard,

Datei anzeigen

@ -4,7 +4,7 @@ import {
visible, visible,
} from "discourse/tests/helpers/qunit-helpers"; } from "discourse/tests/helpers/qunit-helpers";
import { test } from "qunit"; import { test } from "qunit";
import { click, findAll, visit } from "@ember/test-helpers"; import { click, currentURL, fillIn, findAll, visit } from "@ember/test-helpers";
import selectKit from "discourse/tests/helpers/select-kit-helper"; import selectKit from "discourse/tests/helpers/select-kit-helper";
import { import {
getAdminTestingWizard, getAdminTestingWizard,

Datei anzeigen

@ -5,7 +5,7 @@ import {
visible, visible,
} from "discourse/tests/helpers/qunit-helpers"; } from "discourse/tests/helpers/qunit-helpers";
import { test } from "qunit"; import { test } from "qunit";
import { click, findAll, visit } from "@ember/test-helpers"; import { click, currentURL, fillIn, findAll, visit } from "@ember/test-helpers";
import selectKit from "discourse/tests/helpers/select-kit-helper"; import selectKit from "discourse/tests/helpers/select-kit-helper";
import { import {
getAdminTestingWizard, getAdminTestingWizard,
@ -90,6 +90,16 @@ acceptance("Admin | Custom Wizard Unsuscribed", function (needs) {
); );
const wizardLink = find("div.wizard-url a"); const wizardLink = find("div.wizard-url a");
assert.equal(wizardLink.length, 1, "Wizard link was created"); assert.equal(wizardLink.length, 1, "Wizard link was created");
await click(".btn-after-time");
assert.ok(
exists(".d-date-time-input .d-time-input span.name"),
"a time selector is shown"
);
let timeText = query(
".d-date-time-input .d-time-input span.name"
).innerText;
const regex = /\d\d\:\d\d/;
assert.ok(regex.test(timeText));
assert.equal( assert.equal(
$.trim($("a[title='Subscribe to use these features']").text()), $.trim($("a[title='Subscribe to use these features']").text()),
"Not Subscribed", "Not Subscribed",

Datei anzeigen

@ -13,6 +13,8 @@ import {
wizardNoUser, wizardNoUser,
wizardNotPermitted, wizardNotPermitted,
} from "../helpers/wizard"; } from "../helpers/wizard";
import DiscourseURL from "discourse/lib/url";
import sinon from "sinon";
acceptance("Wizard | Not logged in", function (needs) { acceptance("Wizard | Not logged in", function (needs) {
needs.pretender((server, helper) => { needs.pretender((server, helper) => {
@ -54,6 +56,26 @@ acceptance("Wizard | Completed", function (needs) {
}); });
}); });
acceptance("Wizard | Redirect", function (needs) {
needs.user({
redirect_to_wizard: "wizard",
});
needs.pretender((server, helper) => {
server.get("/w/wizard.json", () => {
return helper.response(wizard);
});
});
test("Redirect to pending Wizard", async function (assert) {
sinon.stub(DiscourseURL, "routeTo");
await visit("/latest");
assert.ok(
DiscourseURL.routeTo.calledWith("/w/wizard"),
"pending wizard routing works"
);
});
});
acceptance("Wizard | Wizard", function (needs) { acceptance("Wizard | Wizard", function (needs) {
needs.user(); needs.user();
needs.pretender((server, helper) => { needs.pretender((server, helper) => {

2654
yarn.lock

Datei-Diff unterdrückt, da er zu groß ist Diff laden