Spiegel von
https://github.com/paviliondev/discourse-custom-wizard.git
synchronisiert 2024-11-22 17:30:29 +01:00
Update to select-kit-2
Dieser Commit ist enthalten in:
Ursprung
3825d2dba9
Commit
e293a3f5e9
10 geänderte Dateien mit 154 neuen und 65 gelöschten Zeilen
|
@ -1,4 +1,5 @@
|
|||
import { default as computed, observes, on } from 'ember-addons/ember-computed-decorators';
|
||||
import { generateSelectKitContent } from '../lib/custom-wizard';
|
||||
|
||||
export default Ember.Component.extend({
|
||||
classNames: 'wizard-custom-field',
|
||||
|
@ -6,11 +7,11 @@ export default Ember.Component.extend({
|
|||
isUpload: Ember.computed.equal('field.type', 'upload'),
|
||||
isCategory: Ember.computed.equal('field.type', 'category'),
|
||||
disableId: Ember.computed.not('field.isNew'),
|
||||
choicesTypes: ['translation', 'preset', 'custom'],
|
||||
choicesTypes: generateSelectKitContent(['translation', 'preset', 'custom']),
|
||||
choicesTranslation: Ember.computed.equal('field.choices_type', 'translation'),
|
||||
choicesPreset: Ember.computed.equal('field.choices_type', 'preset'),
|
||||
choicesCustom: Ember.computed.equal('field.choices_type', 'custom'),
|
||||
categoryPropertyTypes: ['id', 'slug'],
|
||||
categoryPropertyTypes: generateSelectKitContent(['id', 'slug']),
|
||||
|
||||
@computed('field.type')
|
||||
isInput: (type) => type === 'text' || type === 'textarea',
|
||||
|
|
|
@ -2,17 +2,18 @@ import { ajax } from 'discourse/lib/ajax';
|
|||
import { popupAjaxError } from 'discourse/lib/ajax-error';
|
||||
import CustomWizardApi from '../models/custom-wizard-api';
|
||||
import { default as computed } from 'ember-addons/ember-computed-decorators';
|
||||
import { generateSelectKitContent } from '../lib/custom-wizard';
|
||||
|
||||
export default Ember.Controller.extend({
|
||||
queryParams: ['refresh_list'],
|
||||
loadingSubscriptions: false,
|
||||
notAuthorized: Ember.computed.not('api.authorized'),
|
||||
endpointMethods: ['GET', 'PUT', 'POST', 'PATCH', 'DELETE'],
|
||||
endpointMethods: generateSelectKitContent(['GET', 'PUT', 'POST', 'PATCH', 'DELETE']),
|
||||
showRemove: Ember.computed.not('isNew'),
|
||||
showRedirectUri: Ember.computed.and('threeLeggedOauth', 'api.name'),
|
||||
responseIcon: null,
|
||||
contentTypes: ['application/json', 'application/x-www-form-urlencoded'],
|
||||
successCodes: [100, 101, 102, 200, 201, 202, 203, 204, 205, 206, 207, 208, 226, 300, 301, 302, 303, 303, 304, 305, 306, 307, 308],
|
||||
contentTypes: generateSelectKitContent(['application/json', 'application/x-www-form-urlencoded']),
|
||||
successCodes: generateSelectKitContent([100, 101, 102, 200, 201, 202, 203, 204, 205, 206, 207, 208, 226, 300, 301, 302, 303, 303, 304, 305, 306, 307, 308]),
|
||||
|
||||
@computed('saveDisabled', 'api.authType', 'api.authUrl', 'api.tokenUrl', 'api.clientId', 'api.clientSecret', 'threeLeggedOauth')
|
||||
authDisabled(saveDisabled, authType, authUrl, tokenUrl, clientId, clientSecret, threeLeggedOauth) {
|
||||
|
@ -26,7 +27,7 @@ export default Ember.Controller.extend({
|
|||
return !name || !authType;
|
||||
},
|
||||
|
||||
authorizationTypes: ['none', 'basic', 'oauth_2', 'oauth_3'],
|
||||
authorizationTypes: generateSelectKitContent(['none', 'basic', 'oauth_2', 'oauth_3']),
|
||||
isBasicAuth: Ember.computed.equal('api.authType', 'basic'),
|
||||
|
||||
@computed('api.authType')
|
||||
|
|
5
assets/javascripts/discourse/lib/custom-wizard.js.es6
Normale Datei
5
assets/javascripts/discourse/lib/custom-wizard.js.es6
Normale Datei
|
@ -0,0 +1,5 @@
|
|||
function generateSelectKitContent(content) {
|
||||
return content.map(i => ({id: i, name: i}))
|
||||
}
|
||||
|
||||
export { generateSelectKitContent };
|
|
@ -1,5 +1,6 @@
|
|||
import CustomWizard from '../models/custom-wizard';
|
||||
import { ajax } from 'discourse/lib/ajax';
|
||||
import { generateSelectKitContent } from '../lib/custom-wizard';
|
||||
|
||||
export default Discourse.Route.extend({
|
||||
beforeModel() {
|
||||
|
@ -40,7 +41,12 @@ export default Discourse.Route.extend({
|
|||
|
||||
_getFieldTypes(model) {
|
||||
return ajax('/admin/wizards/field-types')
|
||||
.then((result) => model.set('fieldTypes', result.types));
|
||||
.then((result) => {
|
||||
model.set(
|
||||
'fieldTypes',
|
||||
generateSelectKitContent([...result.types])
|
||||
)
|
||||
});
|
||||
},
|
||||
|
||||
_getThemes(model) {
|
||||
|
|
|
@ -107,7 +107,13 @@
|
|||
<h3>{{i18n 'admin.wizard.theme_id'}}</h3>
|
||||
</div>
|
||||
<div class="setting-value">
|
||||
{{combo-box content=model.themes valueAttribute='id' value=model.theme_id none='admin.wizard.no_theme'}}
|
||||
{{combo-box
|
||||
content=model.themes
|
||||
valueProperty='id'
|
||||
value=model.theme_id
|
||||
options=(hash
|
||||
none='admin.wizard.no_theme'
|
||||
)}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -89,7 +89,12 @@
|
|||
<div class="control-group auth-type">
|
||||
<label>{{i18n 'admin.wizard.api.auth.type'}}</label>
|
||||
<div class="controls">
|
||||
{{combo-box value=api.authType content=authorizationTypes none='admin.wizard.api.auth.type_none'}}
|
||||
{{combo-box
|
||||
value=api.authType
|
||||
content=authorizationTypes
|
||||
options=(hash
|
||||
none='admin.wizard.api.auth.type_none'
|
||||
)}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -240,15 +245,24 @@
|
|||
class='remove-endpoint'}}
|
||||
</div>
|
||||
<div class="bottom">
|
||||
{{combo-box content=endpointMethods
|
||||
value=endpoint.method
|
||||
none="admin.wizard.api.endpoint.method"}}
|
||||
{{combo-box content=contentTypes
|
||||
value=endpoint.content_type
|
||||
none="admin.wizard.api.endpoint.content_type"}}
|
||||
{{multi-select content=successCodes
|
||||
values=endpoint.success_codes
|
||||
none="admin.wizard.api.endpoint.success_codes"}}
|
||||
{{combo-box
|
||||
content=endpointMethods
|
||||
value=endpoint.method
|
||||
options=(hash
|
||||
none="admin.wizard.api.endpoint.method"
|
||||
)}}
|
||||
{{combo-box
|
||||
content=contentTypes
|
||||
value=endpoint.content_type
|
||||
options=(hash
|
||||
none="admin.wizard.api.endpoint.content_type"
|
||||
)}}
|
||||
{{multi-select
|
||||
content=successCodes
|
||||
values=endpoint.success_codes
|
||||
options=(hash
|
||||
none="admin.wizard.api.endpoint.success_codes"
|
||||
)}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -12,7 +12,12 @@
|
|||
<h3>{{i18n "admin.wizard.type"}}</h3>
|
||||
</div>
|
||||
<div class="setting-value">
|
||||
{{combo-box value=action.type content=types none="admin.wizard.field.type"}}
|
||||
{{combo-box
|
||||
value=action.type
|
||||
content=types
|
||||
options=(hash
|
||||
none="admin.wizard.field.type"
|
||||
)}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -22,11 +27,14 @@
|
|||
<h3>{{i18n "admin.wizard.action.title"}}</h3>
|
||||
</div>
|
||||
<div class="setting-value">
|
||||
{{combo-box value=action.title
|
||||
content=availableFields
|
||||
nameProperty="label"
|
||||
none='admin.wizard.select_field'
|
||||
isDisabled=action.custom_title_enabled}}
|
||||
{{combo-box
|
||||
value=action.title
|
||||
content=availableFields
|
||||
nameProperty="label"
|
||||
isDisabled=action.custom_title_enabled
|
||||
options=(hash
|
||||
none='admin.wizard.select_field'
|
||||
)}}
|
||||
<div class="setting-gutter">
|
||||
{{input type='checkbox' checked=action.custom_title_enabled}}
|
||||
<span>{{i18n 'admin.wizard.action.custom_title'}}</span>
|
||||
|
@ -42,10 +50,14 @@
|
|||
<h3>{{i18n "admin.wizard.action.post"}}</h3>
|
||||
</div>
|
||||
<div class="setting-value">
|
||||
{{combo-box value=action.post content=availableFields
|
||||
nameProperty='label'
|
||||
none='admin.wizard.select_field'
|
||||
isDisabled=action.post_builder}}
|
||||
{{combo-box
|
||||
value=action.post
|
||||
content=availableFields
|
||||
nameProperty='label'
|
||||
isDisabled=action.post_builder
|
||||
options=(hash
|
||||
none='admin.wizard.select_field'
|
||||
)}}
|
||||
<div class="setting-gutter">
|
||||
{{input type='checkbox' checked=action.post_builder}}
|
||||
<span>{{i18n 'admin.wizard.action.post_builder.checkbox'}}</span>
|
||||
|
@ -77,7 +89,9 @@
|
|||
<h3>{{i18n "admin.wizard.action.create_topic.category"}}</h3>
|
||||
</div>
|
||||
<div class="setting-value">
|
||||
{{category-chooser value=action.category_id isDisabled=action.custom_category_enabled}}
|
||||
{{category-chooser
|
||||
value=action.category_id
|
||||
isDisabled=action.custom_category_enabled}}
|
||||
<div class="setting-gutter">
|
||||
{{input type='checkbox' checked=action.custom_category_enabled}}
|
||||
<span>{{i18n 'admin.wizard.action.custom_category.label'}}</span>
|
||||
|
@ -87,10 +101,13 @@
|
|||
{{input type='checkbox' checked=action.custom_category_wizard_field}}
|
||||
<span>{{i18n 'admin.wizard.action.custom_category.wizard_field'}}</span>
|
||||
{{#if action.custom_category_wizard_field}}
|
||||
{{combo-box value=action.category_id
|
||||
content=categoryFields
|
||||
nameProperty="label"
|
||||
none='admin.wizard.select_field'}}
|
||||
{{combo-box
|
||||
value=action.category_id
|
||||
content=categoryFields
|
||||
nameProperty="label"
|
||||
options=(hash
|
||||
none='admin.wizard.select_field'
|
||||
)}}
|
||||
{{/if}}
|
||||
</div>
|
||||
<div>
|
||||
|
@ -111,19 +128,23 @@
|
|||
<h3>{{i18n "admin.wizard.action.create_topic.tags"}}</h3>
|
||||
</div>
|
||||
<div class="setting-value">
|
||||
{{tag-chooser tags=action.tags
|
||||
filterable=true
|
||||
allowCreate=true
|
||||
isDisabled=action.custom_tag_enabled}}
|
||||
{{tag-chooser
|
||||
tags=action.tags
|
||||
filterable=true
|
||||
allowCreate=true
|
||||
isDisabled=action.custom_tag_enabled}}
|
||||
<div class="setting-gutter">
|
||||
{{input type='checkbox' checked=action.custom_tag_enabled}}
|
||||
<span>{{i18n 'admin.wizard.action.custom_tag.label'}}</span>
|
||||
{{#if action.custom_tag_enabled}}
|
||||
<div class="custom-tag">
|
||||
{{combo-box value=action.custom_tag_field
|
||||
content=tagFields
|
||||
nameProperty="label"
|
||||
none='admin.wizard.select_field'}}
|
||||
{{combo-box
|
||||
value=action.custom_tag_field
|
||||
content=tagFields
|
||||
nameProperty="label"
|
||||
options=(hash
|
||||
none='admin.wizard.select_field'
|
||||
)}}
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
@ -160,10 +181,13 @@
|
|||
<h3>{{i18n 'admin.wizard.required'}}</h3>
|
||||
</div>
|
||||
<div class="setting-value">
|
||||
{{combo-box content=availableFields
|
||||
nameProperty='label'
|
||||
none='admin.wizard.select_field'
|
||||
value=action.required}}
|
||||
{{combo-box
|
||||
value=action.required
|
||||
content=availableFields
|
||||
nameProperty='label'
|
||||
options=(hash
|
||||
none='admin.wizard.select_field'
|
||||
)}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="setting">
|
||||
|
@ -204,10 +228,13 @@
|
|||
<h3>{{i18n "admin.wizard.action.send_to_api.api"}}</h3>
|
||||
</div>
|
||||
<div class="setting-value">
|
||||
{{combo-box value=action.api
|
||||
content=availableApis
|
||||
none='admin.wizard.action.send_to_api.select_an_api'
|
||||
isDisabled=action.custom_title_enabled}}
|
||||
{{combo-box
|
||||
value=action.api
|
||||
content=availableApis
|
||||
isDisabled=action.custom_title_enabled
|
||||
options=(hash
|
||||
none='admin.wizard.action.send_to_api.select_an_api'
|
||||
)}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -216,10 +243,13 @@
|
|||
<h3>{{i18n "admin.wizard.action.send_to_api.endpoint"}}</h3>
|
||||
</div>
|
||||
<div class="setting-value">
|
||||
{{combo-box value=action.api_endpoint
|
||||
content=availableEndpoints
|
||||
none='admin.wizard.action.send_to_api.select_an_endpoint'
|
||||
isDisabled=apiEmpty}}
|
||||
{{combo-box
|
||||
value=action.api_endpoint
|
||||
content=availableEndpoints
|
||||
isDisabled=apiEmpty
|
||||
options=(hash
|
||||
none='admin.wizard.action.send_to_api.select_an_endpoint'
|
||||
)}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -242,11 +272,14 @@
|
|||
<h3>{{i18n "admin.wizard.action.add_to_group.group_selection"}}</h3>
|
||||
</div>
|
||||
<div class="setting-value">
|
||||
{{combo-box value=action.group_id
|
||||
content=availableFields
|
||||
nameProperty="label"
|
||||
none='admin.wizard.select_field'
|
||||
isDisabled=action.custom_group_enabled}}
|
||||
{{combo-box
|
||||
value=action.group_id
|
||||
content=availableFields
|
||||
isDisabled=action.custom_group_enabled
|
||||
nameProperty="label"
|
||||
options=(hash
|
||||
none='admin.wizard.select_field'
|
||||
)}}
|
||||
<div class="setting-gutter">
|
||||
{{input type='checkbox' checked=action.custom_group_enabled}}
|
||||
<span>{{i18n 'admin.wizard.action.add_to_group.custom_group'}}</span>
|
||||
|
|
|
@ -48,7 +48,12 @@
|
|||
<h3>{{i18n 'admin.wizard.type'}}</h3>
|
||||
</div>
|
||||
<div class="setting-value">
|
||||
{{combo-box value=field.type content=types none="admin.wizard.field.type"}}
|
||||
{{combo-box
|
||||
value=field.type
|
||||
content=types
|
||||
options=(hash
|
||||
none="admin.wizard.field.type"
|
||||
)}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -79,7 +84,12 @@
|
|||
{{i18n 'admin.wizard.field.choices_label'}}
|
||||
</div>
|
||||
|
||||
{{combo-box value=field.choices_type content=choicesTypes none="admin.wizard.field.choices_type"}}
|
||||
{{combo-box
|
||||
value=field.choices_type
|
||||
content=choicesTypes
|
||||
options=(hash
|
||||
none="admin.wizard.field.choices_type"
|
||||
)}}
|
||||
|
||||
{{#if choicesTranslation}}
|
||||
<div class="wizard-header small">
|
||||
|
@ -92,7 +102,12 @@
|
|||
<div class="wizard-header small">
|
||||
{{i18n 'admin.wizard.field.choices_preset.label'}}
|
||||
</div>
|
||||
{{combo-box value=field.choices_preset content=presetChoices none='admin.wizard.none'}}
|
||||
{{combo-box
|
||||
value=field.choices_preset
|
||||
content=presetChoices
|
||||
options=(hash
|
||||
none='admin.wizard.none'
|
||||
)}}
|
||||
<div class="wizard-header small">
|
||||
{{i18n 'admin.wizard.field.choices_preset.filter'}}
|
||||
</div>
|
||||
|
@ -141,7 +156,9 @@
|
|||
<h3>{{i18n 'admin.wizard.field.property'}}</h3>
|
||||
</div>
|
||||
<div class="setting-value">
|
||||
{{combo-box content=categoryPropertyTypes value=field.property}}
|
||||
{{combo-box
|
||||
content=categoryPropertyTypes
|
||||
value=field.property}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
|
|
@ -64,6 +64,9 @@
|
|||
//= require discourse/helpers/category-link
|
||||
//= require discourse/helpers/user-avatar
|
||||
//= require discourse/helpers/format-username
|
||||
//= require discourse/helpers/component-for-collection
|
||||
//= require discourse/helpers/component-for-row
|
||||
//= require discourse/helpers/discourse-tag
|
||||
|
||||
//= require discourse/services/app-events
|
||||
//= require discourse/services/emoji-store
|
||||
|
@ -97,6 +100,7 @@
|
|||
//= require jquery.putcursoratend.js
|
||||
//= require template_include.js
|
||||
//= require caret_position.js
|
||||
//= require popper.js
|
||||
|
||||
//= require ./wizard/custom-wizard
|
||||
//= require_tree ./wizard/components
|
||||
|
|
|
@ -16,10 +16,12 @@
|
|||
{{toolbar-popup-menu-options
|
||||
onPopupMenuAction=onPopupMenuAction
|
||||
onExpand=(action b.action b)
|
||||
title=b.title
|
||||
headerIcon=b.icon
|
||||
class=b.className
|
||||
content=popupMenuOptions}}
|
||||
content=popupMenuOptions
|
||||
options=(hash
|
||||
popupTitle=b.title
|
||||
icon=b.icon
|
||||
)}}
|
||||
{{else}}
|
||||
<div>{{d.icon}}</div>
|
||||
<button class='wizard-btn {{b.className}}' {{action b.action b}} title="{{b.title}}">
|
||||
|
|
Laden …
In neuem Issue referenzieren