Spiegel von
https://github.com/paviliondev/discourse-custom-wizard.git
synchronisiert 2024-11-09 20:02:54 +01:00
merge in main
Dieser Commit ist enthalten in:
Commit
72b1a2aca5
84 geänderte Dateien mit 3167 neuen und 1558 gelöschten Zeilen
|
@ -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(
|
||||||
|
|
|
@ -4,4 +4,4 @@
|
||||||
{{#if wizardErrorNotice}}
|
{{#if wizardErrorNotice}}
|
||||||
{{d-icon "exclaimation-circle"}}
|
{{d-icon "exclaimation-circle"}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
|
@ -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>
|
|
@ -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}}
|
|
@ -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(
|
||||||
|
|
|
@ -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")
|
||||||
|
|
|
@ -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);
|
});
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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
|
||||||
action=(action "authorize")
|
label="admin.wizard.api.auth.btn"
|
||||||
disabled=authDisabled
|
action=(action "authorize")
|
||||||
class="btn-primary"}}
|
disabled=authDisabled
|
||||||
|
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
|
||||||
actionParam=endpoint
|
action=(action "removeEndpoint")
|
||||||
icon="times"
|
actionParam=endpoint
|
||||||
class="remove-endpoint"}}
|
icon="times"
|
||||||
|
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>
|
||||||
|
@ -343,4 +354,4 @@
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
|
@ -3,16 +3,16 @@
|
||||||
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">
|
||||||
{{outlet}}
|
{{outlet}}
|
||||||
</div>
|
</div>
|
|
@ -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,9 +34,10 @@
|
||||||
{{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>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
|
@ -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}}
|
||||||
|
@ -42,4 +46,4 @@
|
||||||
{{conditional-loading-spinner condition=refreshing}}
|
{{conditional-loading-spinner condition=refreshing}}
|
||||||
{{/load-more}}
|
{{/load-more}}
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
|
@ -3,17 +3,17 @@
|
||||||
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}}
|
||||||
</div>
|
</div>
|
|
@ -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">
|
||||||
|
@ -83,4 +88,4 @@
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
|
@ -58,4 +58,4 @@
|
||||||
{{conditional-loading-spinner condition=loadingMore}}
|
{{conditional-loading-spinner condition=loadingMore}}
|
||||||
{{/load-more}}
|
{{/load-more}}
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
|
@ -3,17 +3,17 @@
|
||||||
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}}
|
||||||
</div>
|
</div>
|
|
@ -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>
|
||||||
|
|
||||||
|
@ -222,4 +219,4 @@
|
||||||
<span class="error">{{d-icon "times"}}{{error}}</span>
|
<span class="error">{{d-icon "times"}}{{error}}</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
|
@ -3,21 +3,18 @@
|
||||||
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}}
|
||||||
</div>
|
</div>
|
|
@ -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}}
|
||||||
|
@ -16,4 +25,4 @@
|
||||||
|
|
||||||
<div class="admin-container">
|
<div class="admin-container">
|
||||||
{{outlet}}
|
{{outlet}}
|
||||||
</div>
|
</div>
|
|
@ -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>
|
||||||
|
@ -81,4 +77,4 @@
|
||||||
{{d-button action=(action "edit") icon="pencil-alt"}}
|
{{d-button action=(action "edit") icon="pencil-alt"}}
|
||||||
</td>
|
</td>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
|
@ -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
|
||||||
>
|
/>
|
|
@ -8,4 +8,4 @@
|
||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<div class="picker-container"></div>
|
<div class="picker-container"></div>
|
|
@ -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"
|
{{/if}}
|
||||||
icon="times"
|
|
||||||
action=(action "onClear")
|
|
||||||
}}
|
|
||||||
{{/if}}
|
|
|
@ -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>
|
||||||
|
@ -48,4 +51,4 @@
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
|
@ -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
|
}}
|
||||||
)}}
|
|
|
@ -4,4 +4,4 @@
|
||||||
@checked={{this.field.value}}
|
@checked={{this.field.value}}
|
||||||
tabindex={{this.field.tabindex}}
|
tabindex={{this.field.tabindex}}
|
||||||
class={{this.fieldClass}}
|
class={{this.fieldClass}}
|
||||||
/>
|
/>
|
|
@ -2,4 +2,4 @@
|
||||||
<div class="d-editor-preview">
|
<div class="d-editor-preview">
|
||||||
{{html-safe field.preview_template}}
|
{{html-safe field.preview_template}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
|
@ -7,14 +7,19 @@
|
||||||
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>
|
||||||
|
|
||||||
{{#if field.char_counter}}
|
{{#if field.char_counter}}
|
||||||
{{wizard-char-counter field.value field.max_length}}
|
{{wizard-char-counter field.value field.max_length}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
|
@ -2,4 +2,4 @@
|
||||||
date=dateTime
|
date=dateTime
|
||||||
onChange=(action "onChange")
|
onChange=(action "onChange")
|
||||||
tabindex=field.tabindex
|
tabindex=field.tabindex
|
||||||
}}
|
}}
|
|
@ -3,4 +3,4 @@
|
||||||
onChange=(action "onChange")
|
onChange=(action "onChange")
|
||||||
tabindex=field.tabindex
|
tabindex=field.tabindex
|
||||||
format=field.format
|
format=field.format
|
||||||
}}
|
}}
|
|
@ -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"
|
}}
|
||||||
)}}
|
|
|
@ -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"
|
}}
|
||||||
)}}
|
|
|
@ -5,5 +5,4 @@
|
||||||
@value={{this.field.value}}
|
@value={{this.field.value}}
|
||||||
tabindex={{this.field.tabindex}}
|
tabindex={{this.field.tabindex}}
|
||||||
class={{this.fieldClass}}
|
class={{this.fieldClass}}
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -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
|
|
||||||
)}}
|
|
|
@ -5,4 +5,4 @@
|
||||||
class={{this.fieldClass}}
|
class={{this.fieldClass}}
|
||||||
placeholder={{this.field.translatedPlaceholder}}
|
placeholder={{this.field.translatedPlaceholder}}
|
||||||
autocomplete={{this.autocomplete}}
|
autocomplete={{this.autocomplete}}
|
||||||
/>
|
/>
|
|
@ -4,4 +4,4 @@
|
||||||
tabindex={{this.field.tabindex}}
|
tabindex={{this.field.tabindex}}
|
||||||
class={{this.fieldClass}}
|
class={{this.fieldClass}}
|
||||||
placeholder={{this.field.translatedPlaceholder}}
|
placeholder={{this.field.translatedPlaceholder}}
|
||||||
/>
|
/>
|
|
@ -2,4 +2,4 @@
|
||||||
date=time
|
date=time
|
||||||
onChange=(action "onChange")
|
onChange=(action "onChange")
|
||||||
tabindex=field.tabindex
|
tabindex=field.tabindex
|
||||||
}}
|
}}
|
|
@ -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,13 +9,19 @@
|
||||||
{{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}}
|
||||||
{{/if}}
|
{{/if}}
|
|
@ -3,4 +3,4 @@
|
||||||
@value={{this.field.value}}
|
@value={{this.field.value}}
|
||||||
tabindex={{this.field.tabindex}}
|
tabindex={{this.field.tabindex}}
|
||||||
class={{this.fieldClass}}
|
class={{this.fieldClass}}
|
||||||
/>
|
/>
|
|
@ -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
|
||||||
|
}}
|
|
@ -1,29 +1,38 @@
|
||||||
<label for={{field.id}} class="field-label">
|
<label for={{field.id}} class="field-label">
|
||||||
{{html-safe field.translatedLabel}}
|
{{html-safe field.translatedLabel}}
|
||||||
</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}}
|
||||||
<div class="field-description">{{cookedDescription}}</div>
|
<div class="field-description">{{cookedDescription}}</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#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
|
||||||
</div>
|
inputComponentName
|
||||||
{{/if}}
|
field=field
|
||||||
{{/field-validators}}
|
step=step
|
||||||
|
fieldClass=fieldClass
|
||||||
{{#if field.char_counter}}
|
wizard=wizard
|
||||||
{{#if textType}}
|
autocomplete=validators.autocomplete
|
||||||
{{wizard-char-counter field.value field.max_length}}
|
}}
|
||||||
{{/if}}
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
{{/field-validators}}
|
||||||
{{#if field.errorDescription}}
|
|
||||||
<div class="field-error-description">{{html-safe field.errorDescription}}</div>
|
{{#if field.char_counter}}
|
||||||
{{/if}}
|
{{#if textType}}
|
||||||
|
{{wizard-char-counter field.value field.max_length}}
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if field.errorDescription}}
|
||||||
|
<div class="field-error-description">{{html-safe
|
||||||
|
field.errorDescription
|
||||||
|
}}</div>
|
||||||
|
{{/if}}
|
|
@ -1,7 +1,11 @@
|
||||||
<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>
|
||||||
</div>
|
</div>
|
|
@ -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}}
|
||||||
</a>
|
-
|
||||||
|
{{html-safe topic.blurb}}</div>
|
||||||
|
</a>
|
|
@ -1,11 +1,11 @@
|
||||||
{{#if showTopics}}
|
{{#if showTopics}}
|
||||||
<ul>
|
<ul>
|
||||||
{{#each topics as |topic|}}
|
{{#each topics as |topic|}}
|
||||||
<li>{{custom-wizard-similar-topic topic=topic}}</li>
|
<li>{{custom-wizard-similar-topic topic=topic}}</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
{{else}}
|
{{else}}
|
||||||
<a role="button" class="show-topics" {{action "toggleShowTopics"}}>
|
<a role="button" class="show-topics" {{action "toggleShowTopics"}}>
|
||||||
{{i18n "realtime_validations.similar_topics.show"}}
|
{{i18n "realtime_validations.similar_topics.show"}}
|
||||||
</a>
|
</a>
|
||||||
{{/if}}
|
{{/if}}
|
|
@ -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,25 +38,47 @@
|
||||||
{{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}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
|
@ -10,4 +10,4 @@
|
||||||
autoInsertNoneItem=false
|
autoInsertNoneItem=false
|
||||||
translatedFilterPlaceholder="--:--"
|
translatedFilterPlaceholder="--:--"
|
||||||
)
|
)
|
||||||
}}
|
}}
|
|
@ -1,13 +1,23 @@
|
||||||
{{#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
|
||||||
{{/each-in}}
|
validation.component
|
||||||
|
field=field
|
||||||
{{yield (hash perform=(action "perform") autocomplete="off")}}
|
type=type
|
||||||
|
validation=validation
|
||||||
{{#each-in field.validations.below as |type validation|}}
|
}}
|
||||||
{{component validation.component field=field type=type validation=validation}}
|
{{/each-in}}
|
||||||
{{/each-in}}
|
|
||||||
{{else}}
|
{{yield (hash perform=(action "perform") autocomplete="off")}}
|
||||||
{{yield}}
|
|
||||||
{{/if}}
|
{{#each-in field.validations.below as |type validation|}}
|
||||||
|
{{component
|
||||||
|
validation.component
|
||||||
|
field=field
|
||||||
|
type=type
|
||||||
|
validation=validation
|
||||||
|
}}
|
||||||
|
{{/each-in}}
|
||||||
|
{{else}}
|
||||||
|
{{yield}}
|
||||||
|
{{/if}}
|
|
@ -10,4 +10,4 @@
|
||||||
|
|
||||||
{{#if showSimilarTopics}}
|
{{#if showSimilarTopics}}
|
||||||
{{custom-wizard-similar-topics topics=similarTopics}}
|
{{custom-wizard-similar-topics topics=similarTopics}}
|
||||||
{{/if}}
|
{{/if}}
|
|
@ -2,4 +2,4 @@
|
||||||
{{i18n validMessageKey}}
|
{{i18n validMessageKey}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{i18n invalidMessageKey}}
|
{{i18n invalidMessageKey}}
|
||||||
{{/if}}
|
{{/if}}
|
|
@ -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>
|
||||||
|
@ -925,4 +961,4 @@
|
||||||
<Input @value={{this.action.code}} />
|
<Input @value={{this.action.code}} />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
|
@ -1,316 +1,289 @@
|
||||||
{{#if showUndo}}
|
{{#if showUndo}}
|
||||||
{{d-button
|
{{d-button
|
||||||
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-label">
|
<div class="setting">
|
||||||
<label>{{i18n "admin.wizard.field.label"}}</label>
|
<div class="setting-label">
|
||||||
</div>
|
<label>{{i18n "admin.wizard.field.label"}}</label>
|
||||||
<div class="setting-value">
|
</div>
|
||||||
<Input
|
<div class="setting-value">
|
||||||
name="label"
|
<Input name="label" @value={{this.field.label}} />
|
||||||
@value={{this.field.label}}
|
</div>
|
||||||
/>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
<div class="setting">
|
||||||
|
<div class="setting-label">
|
||||||
<div class="setting">
|
<label>{{i18n "admin.wizard.field.required"}}</label>
|
||||||
<div class="setting-label">
|
</div>
|
||||||
<label>{{i18n "admin.wizard.field.required"}}</label>
|
|
||||||
</div>
|
<div class="setting-value">
|
||||||
|
<span>{{i18n "admin.wizard.field.required_label"}}</span>
|
||||||
<div class="setting-value">
|
<Input @type="checkbox" @checked={{this.field.required}} />
|
||||||
<span>{{i18n "admin.wizard.field.required_label"}}</span>
|
</div>
|
||||||
<Input
|
</div>
|
||||||
@type="checkbox"
|
|
||||||
@checked={{this.field.required}}
|
<div class="setting">
|
||||||
/>
|
<div class="setting-label">
|
||||||
</div>
|
<label>{{i18n "admin.wizard.field.description"}}</label>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="setting-value">
|
||||||
<div class="setting">
|
<Textarea name="description" @value={{this.field.description}} />
|
||||||
<div class="setting-label">
|
</div>
|
||||||
<label>{{i18n "admin.wizard.field.description"}}</label>
|
</div>
|
||||||
</div>
|
|
||||||
<div class="setting-value">
|
<div class="setting">
|
||||||
<Textarea
|
<div class="setting-label">
|
||||||
name="description"
|
<label>{{i18n "admin.wizard.field.image"}}</label>
|
||||||
@value={{this.field.description}}
|
</div>
|
||||||
/>
|
<div class="setting-value">
|
||||||
</div>
|
{{uppy-image-uploader
|
||||||
</div>
|
imageUrl=field.image
|
||||||
|
onUploadDone=(action "imageUploadDone")
|
||||||
<div class="setting">
|
onUploadDeleted=(action "imageUploadDeleted")
|
||||||
<div class="setting-label">
|
type="wizard-field-image"
|
||||||
<label>{{i18n "admin.wizard.field.image"}}</label>
|
class="no-repeat contain-image"
|
||||||
</div>
|
id=(concat "wizard-field-" field.id "-image-upload")
|
||||||
<div class="setting-value">
|
}}
|
||||||
{{uppy-image-uploader
|
</div>
|
||||||
imageUrl=field.image
|
</div>
|
||||||
onUploadDone=(action "imageUploadDone")
|
|
||||||
onUploadDeleted=(action "imageUploadDeleted")
|
<div class="setting">
|
||||||
type="wizard-field-image"
|
<div class="setting-label">
|
||||||
class="no-repeat contain-image"
|
<label>{{i18n "admin.wizard.type"}}</label>
|
||||||
id=(concat "wizard-field-" field.id "-image-upload")}}
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
<div class="setting-value">
|
||||||
|
{{wizard-subscription-selector
|
||||||
<div class="setting">
|
value=field.type
|
||||||
<div class="setting-label">
|
feature="field"
|
||||||
<label>{{i18n "admin.wizard.type"}}</label>
|
attribute="type"
|
||||||
</div>
|
onChange=(action "changeType")
|
||||||
|
wizard=wizard
|
||||||
<div class="setting-value">
|
options=(hash none="admin.wizard.select_type")
|
||||||
{{wizard-subscription-selector
|
}}
|
||||||
value=field.type
|
</div>
|
||||||
feature="field"
|
</div>
|
||||||
attribute="type"
|
|
||||||
onChange=(action "changeType")
|
{{wizard-message key=messageKey url=messageUrl component="field"}}
|
||||||
wizard=wizard
|
|
||||||
options=(hash
|
{{#if isTextType}}
|
||||||
none="admin.wizard.select_type"
|
<div class="setting">
|
||||||
)
|
<div class="setting-label">
|
||||||
}}
|
<label>{{i18n "admin.wizard.field.min_length"}}</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
<div class="setting-value">
|
||||||
{{wizard-message
|
<Input
|
||||||
key=messageKey
|
@type="number"
|
||||||
url=messageUrl
|
name="min_length"
|
||||||
component="field"}}
|
@value={{this.field.min_length}}
|
||||||
|
class="small"
|
||||||
{{#if isTextType}}
|
/>
|
||||||
<div class="setting">
|
</div>
|
||||||
<div class="setting-label">
|
</div>
|
||||||
<label>{{i18n "admin.wizard.field.min_length"}}</label>
|
|
||||||
</div>
|
<div class="setting full">
|
||||||
|
<div class="setting-label">
|
||||||
<div class="setting-value">
|
<label>{{i18n "admin.wizard.field.max_length"}}</label>
|
||||||
<Input
|
</div>
|
||||||
@type="number"
|
|
||||||
name="min_length"
|
<div class="setting-value">
|
||||||
@value={{this.field.min_length}}
|
<Input
|
||||||
class="small"
|
@type="number"
|
||||||
/>
|
name="max_length"
|
||||||
</div>
|
@value={{this.field.max_length}}
|
||||||
</div>
|
class="small"
|
||||||
|
/>
|
||||||
<div class="setting full">
|
</div>
|
||||||
<div class="setting-label">
|
</div>
|
||||||
<label>{{i18n "admin.wizard.field.max_length"}}</label>
|
|
||||||
</div>
|
<div class="setting">
|
||||||
|
<div class="setting-label">
|
||||||
<div class="setting-value">
|
<label>{{i18n "admin.wizard.field.char_counter"}}</label>
|
||||||
<Input
|
</div>
|
||||||
@type="number"
|
|
||||||
name="max_length"
|
<div class="setting-value">
|
||||||
@value={{this.field.max_length}}
|
<span>{{i18n "admin.wizard.field.char_counter_placeholder"}}</span>
|
||||||
class="small"
|
<Input @type="checkbox" @checked={{this.field.char_counter}} />
|
||||||
/>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
<div class="setting full">
|
||||||
<div class="setting">
|
<div class="setting-label">
|
||||||
<div class="setting-label">
|
<label>{{i18n "admin.wizard.field.field_placeholder"}}</label>
|
||||||
<label>{{i18n "admin.wizard.field.char_counter"}}</label>
|
</div>
|
||||||
</div>
|
|
||||||
|
<div class="setting-value">
|
||||||
<div class="setting-value">
|
<Textarea
|
||||||
<span>{{i18n "admin.wizard.field.char_counter_placeholder"}}</span>
|
name="field_placeholder"
|
||||||
<Input
|
class="medium"
|
||||||
@type="checkbox"
|
@value={{this.field.placeholder}}
|
||||||
@checked={{this.field.char_counter}}
|
/>
|
||||||
/>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
{{/if}}
|
||||||
|
|
||||||
<div class="setting full">
|
{{#if isComposerPreview}}
|
||||||
<div class="setting-label">
|
<div class="setting full">
|
||||||
<label>{{i18n "admin.wizard.field.field_placeholder"}}</label>
|
<div class="setting-label">
|
||||||
</div>
|
<label>{{i18n "admin.wizard.field.preview_template"}}</label>
|
||||||
|
</div>
|
||||||
<div class="setting-value">
|
|
||||||
<Textarea
|
<div class="setting-value">
|
||||||
name="field_placeholder"
|
<Textarea
|
||||||
class="medium"
|
name="preview-template"
|
||||||
@value={{this.field.placeholder}}
|
class="preview-template"
|
||||||
/>
|
@value={{this.field.preview_template}}
|
||||||
</div>
|
/>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
</div>
|
||||||
|
{{/if}}
|
||||||
{{#if isComposerPreview}}
|
|
||||||
<div class="setting full">
|
{{#if isUpload}}
|
||||||
<div class="setting-label">
|
<div class="setting">
|
||||||
<label>{{i18n "admin.wizard.field.preview_template"}}</label>
|
<div class="setting-label">
|
||||||
</div>
|
<label>{{i18n "admin.wizard.field.file_types"}}</label>
|
||||||
|
</div>
|
||||||
<div class="setting-value">
|
|
||||||
<Textarea
|
<div class="setting-value">
|
||||||
name="preview-template"
|
<Input @value={{this.field.file_types}} class="medium" />
|
||||||
class="preview-template"
|
</div>
|
||||||
@value={{this.field.preview_template}}
|
</div>
|
||||||
/>
|
{{/if}}
|
||||||
</div>
|
|
||||||
</div>
|
{{#if showLimit}}
|
||||||
{{/if}}
|
<div class="setting">
|
||||||
|
<div class="setting-label">
|
||||||
{{#if isUpload}}
|
<label>{{i18n "admin.wizard.field.limit"}}</label>
|
||||||
<div class="setting">
|
</div>
|
||||||
<div class="setting-label">
|
|
||||||
<label>{{i18n "admin.wizard.field.file_types"}}</label>
|
<div class="setting-value">
|
||||||
</div>
|
<Input @type="number" @value={{this.field.limit}} class="small" />
|
||||||
|
</div>
|
||||||
<div class="setting-value">
|
</div>
|
||||||
<Input
|
{{/if}}
|
||||||
@value={{this.field.file_types}}
|
|
||||||
class="medium"
|
{{#if isDateTime}}
|
||||||
/>
|
<div class="setting">
|
||||||
</div>
|
<div class="setting-label">
|
||||||
</div>
|
<label>{{html-safe
|
||||||
{{/if}}
|
(i18n "admin.wizard.field.date_time_format.label")
|
||||||
|
}}</label>
|
||||||
{{#if showLimit}}
|
</div>
|
||||||
<div class="setting">
|
|
||||||
<div class="setting-label">
|
<div class="setting-value">
|
||||||
<label>{{i18n "admin.wizard.field.limit"}}</label>
|
<Input @value={{this.field.format}} class="medium" />
|
||||||
</div>
|
<label>{{html-safe
|
||||||
|
(i18n "admin.wizard.field.date_time_format.instructions")
|
||||||
<div class="setting-value">
|
}}</label>
|
||||||
<Input
|
</div>
|
||||||
@type="number"
|
</div>
|
||||||
@value={{this.field.limit}}
|
{{/if}}
|
||||||
class="small"
|
|
||||||
/>
|
{{#if showPrefill}}
|
||||||
</div>
|
<div class="setting full field-mapper-setting">
|
||||||
</div>
|
<div class="setting-label">
|
||||||
{{/if}}
|
<label>{{i18n "admin.wizard.field.prefill"}}</label>
|
||||||
|
</div>
|
||||||
{{#if isDateTime}}
|
|
||||||
<div class="setting">
|
<div class="setting-value">
|
||||||
<div class="setting-label">
|
{{wizard-mapper
|
||||||
<label>{{html-safe (i18n "admin.wizard.field.date_time_format.label")}}</label>
|
inputs=field.prefill
|
||||||
</div>
|
property="prefill"
|
||||||
|
onUpdate=(action "mappedFieldUpdated")
|
||||||
<div class="setting-value">
|
options=prefillOptions
|
||||||
<Input
|
}}
|
||||||
@value={{this.field.format}}
|
</div>
|
||||||
class="medium"
|
</div>
|
||||||
/>
|
{{/if}}
|
||||||
<label>{{html-safe (i18n "admin.wizard.field.date_time_format.instructions")}}</label>
|
|
||||||
</div>
|
{{#if showContent}}
|
||||||
</div>
|
<div class="setting full field-mapper-setting">
|
||||||
{{/if}}
|
<div class="setting-label">
|
||||||
|
<label>{{i18n "admin.wizard.field.content"}}</label>
|
||||||
{{#if showPrefill}}
|
</div>
|
||||||
<div class="setting full field-mapper-setting">
|
|
||||||
<div class="setting-label">
|
<div class="setting-value">
|
||||||
<label>{{i18n "admin.wizard.field.prefill"}}</label>
|
{{wizard-mapper
|
||||||
</div>
|
inputs=field.content
|
||||||
|
property="content"
|
||||||
<div class="setting-value">
|
onUpdate=(action "mappedFieldUpdated")
|
||||||
{{wizard-mapper
|
options=contentOptions
|
||||||
inputs=field.prefill
|
}}
|
||||||
property="prefill"
|
</div>
|
||||||
onUpdate=(action "mappedFieldUpdated")
|
</div>
|
||||||
options=prefillOptions}}
|
{{/if}}
|
||||||
</div>
|
|
||||||
</div>
|
{{#if isTag}}
|
||||||
{{/if}}
|
<div class="setting full field-mapper-setting">
|
||||||
|
<div class="setting-label">
|
||||||
{{#if showContent}}
|
<label>{{i18n "admin.wizard.field.tag_groups"}}</label>
|
||||||
<div class="setting full field-mapper-setting">
|
</div>
|
||||||
<div class="setting-label">
|
|
||||||
<label>{{i18n "admin.wizard.field.content"}}</label>
|
<div class="setting-value">
|
||||||
</div>
|
{{tag-group-chooser
|
||||||
|
id=(concat field.id "-tag-groups")
|
||||||
<div class="setting-value">
|
tagGroups=field.tag_groups
|
||||||
{{wizard-mapper
|
onChange=(action (mut field.tag_groups))
|
||||||
inputs=field.content
|
}}
|
||||||
property="content"
|
</div>
|
||||||
onUpdate=(action "mappedFieldUpdated")
|
</div>
|
||||||
options=contentOptions}}
|
|
||||||
</div>
|
<div class="setting">
|
||||||
</div>
|
<div class="setting-label">
|
||||||
{{/if}}
|
<label>{{i18n "admin.wizard.field.can_create_tag"}}</label>
|
||||||
|
</div>
|
||||||
{{#if isTag}}
|
|
||||||
<div class="setting full field-mapper-setting">
|
<div class="setting-value">
|
||||||
<div class="setting-label">
|
<Input @type="checkbox" @checked={{this.field.can_create_tag}} />
|
||||||
<label>{{i18n "admin.wizard.field.tag_groups"}}</label>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{{/if}}
|
||||||
<div class="setting-value">
|
|
||||||
{{tag-group-chooser
|
{{#wizard-subscription-container}}
|
||||||
id=(concat field.id "-tag-groups")
|
<div class="setting full field-mapper-setting">
|
||||||
tagGroups=field.tag_groups
|
<div class="setting-label">
|
||||||
onChange=(action (mut field.tag_groups))
|
<label>{{i18n "admin.wizard.condition"}}</label>
|
||||||
}}
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
<div class="setting-value">
|
||||||
|
{{wizard-mapper inputs=field.condition options=fieldConditionOptions}}
|
||||||
<div class="setting">
|
</div>
|
||||||
<div class="setting-label">
|
</div>
|
||||||
<label>{{i18n "admin.wizard.field.can_create_tag"}}</label>
|
|
||||||
</div>
|
<div class="setting full field-mapper-setting">
|
||||||
|
<div class="setting-label">
|
||||||
<div class="setting-value">
|
<label>{{i18n "admin.wizard.index"}}</label>
|
||||||
<Input
|
</div>
|
||||||
@type="checkbox"
|
|
||||||
@checked={{this.field.can_create_tag}}
|
<div class="setting-value">
|
||||||
/>
|
{{wizard-mapper inputs=field.index options=fieldIndexOptions}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
|
||||||
|
{{#if isCategory}}
|
||||||
{{#wizard-subscription-container}}
|
<div class="setting">
|
||||||
<div class="setting full field-mapper-setting">
|
<div class="setting-label">
|
||||||
<div class="setting-label">
|
<label>{{i18n "admin.wizard.field.property"}}</label>
|
||||||
<label>{{i18n "admin.wizard.condition"}}</label>
|
</div>
|
||||||
</div>
|
|
||||||
|
<div class="setting-value">
|
||||||
<div class="setting-value">
|
{{combo-box
|
||||||
{{wizard-mapper
|
value=field.property
|
||||||
inputs=field.condition
|
content=categoryPropertyTypes
|
||||||
options=fieldConditionOptions}}
|
onChange=(action (mut field.property))
|
||||||
</div>
|
options=(hash none="admin.wizard.selector.placeholder.property")
|
||||||
</div>
|
}}
|
||||||
|
</div>
|
||||||
<div class="setting full field-mapper-setting">
|
</div>
|
||||||
<div class="setting-label">
|
{{/if}}
|
||||||
<label>{{i18n "admin.wizard.index"}}</label>
|
|
||||||
</div>
|
{{#if validations}}
|
||||||
|
{{wizard-realtime-validations field=field validations=validations}}
|
||||||
<div class="setting-value">
|
{{/if}}
|
||||||
{{wizard-mapper
|
{{/wizard-subscription-container}}
|
||||||
inputs=field.index
|
|
||||||
options=fieldIndexOptions}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{{#if isCategory}}
|
|
||||||
<div class="setting">
|
|
||||||
<div class="setting-label">
|
|
||||||
<label>{{i18n "admin.wizard.field.property"}}</label>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="setting-value">
|
|
||||||
{{combo-box
|
|
||||||
value=field.property
|
|
||||||
content=categoryPropertyTypes
|
|
||||||
onChange=(action (mut field.property))
|
|
||||||
options=(hash
|
|
||||||
none="admin.wizard.selector.placeholder.property"
|
|
||||||
)}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
{{#if validations}}
|
|
||||||
{{wizard-realtime-validations field=field validations=validations}}
|
|
||||||
{{/if}}
|
|
||||||
{{/wizard-subscription-container}}
|
|
|
@ -1,126 +1,120 @@
|
||||||
<div class="setting">
|
<div class="setting">
|
||||||
<div class="setting-label">
|
<div class="setting-label">
|
||||||
<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"
|
</div>
|
||||||
@value={{this.step.title}}
|
</div>
|
||||||
/>
|
|
||||||
</div>
|
<div class="setting full">
|
||||||
</div>
|
<div class="setting-label">
|
||||||
|
<label>{{i18n "admin.wizard.step.banner"}}</label>
|
||||||
<div class="setting full">
|
</div>
|
||||||
<div class="setting-label">
|
<div class="setting-value">
|
||||||
<label>{{i18n "admin.wizard.step.banner"}}</label>
|
{{uppy-image-uploader
|
||||||
</div>
|
imageUrl=step.banner
|
||||||
<div class="setting-value">
|
onUploadDone=(action "bannerUploadDone")
|
||||||
{{uppy-image-uploader
|
onUploadDeleted=(action "bannerUploadDeleted")
|
||||||
imageUrl=step.banner
|
type="wizard-step-banner"
|
||||||
onUploadDone=(action "bannerUploadDone")
|
class="no-repeat contain-image"
|
||||||
onUploadDeleted=(action "bannerUploadDeleted")
|
id=(concat "wizard-step-" step.id "-banner-upload")
|
||||||
type="wizard-step-banner"
|
}}
|
||||||
class="no-repeat contain-image"
|
</div>
|
||||||
id=(concat "wizard-step-" step.id "-banner-upload")}}
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
<div class="setting full">
|
||||||
|
<div class="setting-label">
|
||||||
<div class="setting full">
|
<label>{{i18n "admin.wizard.step.description"}}</label>
|
||||||
<div class="setting-label">
|
</div>
|
||||||
<label>{{i18n "admin.wizard.step.description"}}</label>
|
<div class="setting-value">
|
||||||
</div>
|
{{wizard-text-editor value=step.raw_description}}
|
||||||
<div class="setting-value">
|
</div>
|
||||||
{{wizard-text-editor
|
</div>
|
||||||
value=step.raw_description}}
|
|
||||||
</div>
|
{{#wizard-subscription-container}}
|
||||||
</div>
|
<div class="setting full field-mapper-setting">
|
||||||
|
<div class="setting-label">
|
||||||
{{#wizard-subscription-container}}
|
<label>{{i18n "admin.wizard.condition"}}</label>
|
||||||
<div class="setting full field-mapper-setting">
|
</div>
|
||||||
<div class="setting-label">
|
|
||||||
<label>{{i18n "admin.wizard.condition"}}</label>
|
<div class="setting-value">
|
||||||
</div>
|
{{wizard-mapper inputs=step.condition options=stepConditionOptions}}
|
||||||
|
</div>
|
||||||
<div class="setting-value">
|
</div>
|
||||||
{{wizard-mapper
|
|
||||||
inputs=step.condition
|
<div class="setting full">
|
||||||
options=stepConditionOptions}}
|
<div class="setting-label"></div>
|
||||||
</div>
|
<div class="setting-value force-final">
|
||||||
</div>
|
<h4>{{i18n "admin.wizard.step.force_final.label"}}</h4>
|
||||||
|
<Input @type="checkbox" @checked={{this.step.force_final}} />
|
||||||
<div class="setting full">
|
<span>{{i18n "admin.wizard.step.force_final.description"}}</span>
|
||||||
<div class="setting-label"></div>
|
</div>
|
||||||
<div class="setting-value force-final">
|
</div>
|
||||||
<h4>{{i18n "admin.wizard.step.force_final.label"}}</h4>
|
|
||||||
<Input
|
<div class="setting full field-mapper-setting">
|
||||||
@type="checkbox"
|
<div class="setting-label">
|
||||||
@checked={{this.step.force_final}}
|
<label>{{i18n "admin.wizard.step.required_data.label"}}</label>
|
||||||
/>
|
</div>
|
||||||
<span>{{i18n "admin.wizard.step.force_final.description"}}</span>
|
|
||||||
</div>
|
<div class="setting-value">
|
||||||
</div>
|
{{wizard-mapper
|
||||||
|
inputs=step.required_data
|
||||||
<div class="setting full field-mapper-setting">
|
options=(hash
|
||||||
<div class="setting-label">
|
inputTypes="validation"
|
||||||
<label>{{i18n "admin.wizard.step.required_data.label"}}</label>
|
inputConnector="and"
|
||||||
</div>
|
wizardFieldSelection="value"
|
||||||
|
userFieldSelection="value"
|
||||||
<div class="setting-value">
|
keyPlaceholder="admin.wizard.submission_key"
|
||||||
{{wizard-mapper
|
context="step"
|
||||||
inputs=step.required_data
|
)
|
||||||
options=(hash
|
}}
|
||||||
inputTypes="validation"
|
{{#if step.required_data}}
|
||||||
inputConnector="and"
|
<div class="required-data-message">
|
||||||
wizardFieldSelection="value"
|
<div class="label">
|
||||||
userFieldSelection="value"
|
{{i18n "admin.wizard.step.required_data.not_permitted_message"}}
|
||||||
keyPlaceholder="admin.wizard.submission_key"
|
</div>
|
||||||
context="step"
|
<Input @value={{this.step.required_data_message}} />
|
||||||
)}}
|
</div>
|
||||||
{{#if step.required_data}}
|
{{/if}}
|
||||||
<div class="required-data-message">
|
</div>
|
||||||
<div class="label">
|
</div>
|
||||||
{{i18n "admin.wizard.step.required_data.not_permitted_message"}}
|
|
||||||
</div>
|
<div class="setting full field-mapper-setting">
|
||||||
<Input
|
<div class="setting-label">
|
||||||
@value={{this.step.required_data_message}}
|
<label>{{i18n "admin.wizard.step.permitted_params.label"}}</label>
|
||||||
/>
|
</div>
|
||||||
</div>
|
<div class="setting-value">
|
||||||
{{/if}}
|
{{wizard-mapper
|
||||||
</div>
|
inputs=step.permitted_params
|
||||||
</div>
|
options=(hash
|
||||||
|
pairConnector="set"
|
||||||
<div class="setting full field-mapper-setting">
|
inputTypes="association"
|
||||||
<div class="setting-label">
|
keyPlaceholder="admin.wizard.param_key"
|
||||||
<label>{{i18n "admin.wizard.step.permitted_params.label"}}</label>
|
valuePlaceholder="admin.wizard.submission_key"
|
||||||
</div>
|
context="step"
|
||||||
<div class="setting-value">
|
)
|
||||||
{{wizard-mapper
|
}}
|
||||||
inputs=step.permitted_params
|
</div>
|
||||||
options=(hash
|
</div>
|
||||||
pairConnector="set"
|
{{/wizard-subscription-container}}
|
||||||
inputTypes="association"
|
|
||||||
keyPlaceholder="admin.wizard.param_key"
|
{{wizard-links
|
||||||
valuePlaceholder="admin.wizard.submission_key"
|
itemType="field"
|
||||||
context="step"
|
current=currentField
|
||||||
)}}
|
items=step.fields
|
||||||
</div>
|
parentId=step.id
|
||||||
</div>
|
}}
|
||||||
{{/wizard-subscription-container}}
|
|
||||||
|
{{#each step.fields as |field|}}
|
||||||
{{wizard-links
|
{{wizard-custom-field
|
||||||
itemType="field"
|
field=field
|
||||||
current=currentField
|
step=step
|
||||||
items=step.fields
|
wizard=wizard
|
||||||
parentId=step.id}}
|
currentFieldId=currentField.id
|
||||||
|
fieldTypes=fieldTypes
|
||||||
{{#each step.fields as |field|}}
|
removeField="removeField"
|
||||||
{{wizard-custom-field
|
wizardFields=wizardFields
|
||||||
field=field
|
subscribed=subscribed
|
||||||
step=step
|
}}
|
||||||
wizard=wizard
|
{{/each}}
|
||||||
currentFieldId=currentField.id
|
|
||||||
fieldTypes=fieldTypes
|
|
||||||
removeField="removeField"
|
|
||||||
wizardFields=wizardFields
|
|
||||||
subscribed=subscribed}}
|
|
||||||
{{/each}}
|
|
|
@ -4,16 +4,36 @@
|
||||||
{{#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}}
|
||||||
{{d-button action=(action "add") label="admin.wizard.add" icon="plus"}}
|
{{d-button action=(action "add") label="admin.wizard.add" icon="plus"}}
|
||||||
</div>
|
</div>
|
|
@ -2,11 +2,12 @@
|
||||||
{{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">
|
||||||
{{connectorLabel}}
|
{{connectorLabel}}
|
||||||
</span>
|
</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
|
@ -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,10 +48,11 @@
|
||||||
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}}
|
||||||
|
|
||||||
<a role="button" class="remove-input" {{action remove input}}>
|
<a role="button" class="remove-input" {{action remove input}}>
|
||||||
{{d-icon "times"}}
|
{{d-icon "times"}}
|
||||||
</a>
|
</a>
|
|
@ -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
|
||||||
{{/if}}
|
"times"
|
||||||
|
}}</a>
|
||||||
|
{{/if}}
|
|
@ -1 +1 @@
|
||||||
{{item.label}}
|
{{item.label}}
|
|
@ -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>
|
|
@ -3,18 +3,20 @@
|
||||||
{{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}}
|
||||||
<span class="add-mapper-input">
|
<span class="add-mapper-input">
|
||||||
{{d-button action=(action "add") label="admin.wizard.add" icon="plus"}}
|
{{d-button action=(action "add") label="admin.wizard.add" icon="plus"}}
|
||||||
</span>
|
</span>
|
||||||
{{/if}}
|
{{/if}}
|
|
@ -23,4 +23,4 @@
|
||||||
{{documentation}}
|
{{documentation}}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
|
@ -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
|
||||||
onChange=(action "updateValidationCategories" type props)
|
this (concat "validationBuffer." type ".categories")
|
||||||
class="wizard"}}
|
)
|
||||||
|
onChange=(action "updateValidationCategories" type props)
|
||||||
|
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
|
||||||
|
@ -36,10 +40,11 @@
|
||||||
class="time-n-value"
|
class="time-n-value"
|
||||||
/>
|
/>
|
||||||
{{combo-box
|
{{combo-box
|
||||||
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>
|
||||||
|
@ -57,4 +70,4 @@
|
||||||
</li>
|
</li>
|
||||||
{{/each-in}}
|
{{/each-in}}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
|
@ -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 |
|
@ -9,4 +9,4 @@
|
||||||
|
|
||||||
<div class="subscription-settings">
|
<div class="subscription-settings">
|
||||||
{{yield}}
|
{{yield}}
|
||||||
</div>
|
</div>
|
|
@ -1 +1 @@
|
||||||
{{d-icon icon}}{{label}}
|
{{d-icon icon}}{{label}}
|
|
@ -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
|
||||||
|
@ -12,4 +13,4 @@
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{d-icon caretIcon class="caret-icon"}}
|
{{d-icon caretIcon class="caret-icon"}}
|
||||||
</div>
|
</div>
|
|
@ -12,4 +12,4 @@
|
||||||
{{#if item.subscriptionRequired}}
|
{{#if item.subscriptionRequired}}
|
||||||
<span class="subscription-label">{{i18n item.selectorLabel}}</span>
|
<span class="subscription-label">{{i18n item.selectorLabel}}</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
|
@ -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}}
|
||||||
|
@ -158,4 +167,4 @@
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else}}
|
{{else}}
|
||||||
—
|
—
|
||||||
{{/if}}
|
{{/if}}
|
|
@ -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">
|
||||||
|
@ -38,4 +31,4 @@
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
|
@ -1,3 +1,7 @@
|
||||||
{{#if noAccess}}
|
{{#if noAccess}}
|
||||||
{{custom-wizard-no-access text=(i18n noAccessI18nKey) wizardId=wizardId reason=noAccessReason}}
|
{{custom-wizard-no-access
|
||||||
{{/if}}
|
text=(i18n noAccessI18nKey)
|
||||||
|
wizardId=wizardId
|
||||||
|
reason=noAccessReason
|
||||||
|
}}
|
||||||
|
{{/if}}
|
|
@ -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}}
|
|
@ -4,9 +4,12 @@
|
||||||
</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}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
|
@ -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>
|
||||||
|
@ -29,4 +32,4 @@
|
||||||
label="directory.edit_columns.reset_to_default"
|
label="directory.edit_columns.reset_to_default"
|
||||||
action=(action "resetToDefault")
|
action=(action "resetToDefault")
|
||||||
}}
|
}}
|
||||||
</div>
|
</div>
|
|
@ -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>
|
|
@ -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
|
||||||
|
|
|
@ -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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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");
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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
2654
yarn.lock
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
Laden …
In neuem Issue referenzieren