Spiegel von
https://github.com/paviliondev/discourse-custom-wizard.git
synchronisiert 2024-11-22 09:20:29 +01:00
Merge branch 'master' into pr/125
Dieser Commit ist enthalten in:
Commit
20c8ec1202
11 geänderte Dateien mit 61 neuen und 8 gelöschten Zeilen
|
@ -111,6 +111,18 @@
|
|||
checked=field.char_counter}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="setting full">
|
||||
<div class="setting-label">
|
||||
<label>{{i18n "admin.wizard.field.field_placeholder"}}</label>
|
||||
</div>
|
||||
|
||||
<div class="setting-value">
|
||||
{{textarea
|
||||
name="field_placeholder"
|
||||
value=field.placeholder}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if isUpload}}
|
||||
|
|
|
@ -26,7 +26,11 @@ export default {
|
|||
const setDefaultOwner = requirejs("discourse-common/lib/get-owner")
|
||||
.setDefaultOwner;
|
||||
const messageBus = requirejs("message-bus-client").default;
|
||||
|
||||
const getToken = requirejs("wizard/lib/ajax").getToken;
|
||||
const setEnvironment = requirejs("discourse-common/config/environment")
|
||||
.setEnvironment;
|
||||
const isDevelopment = requirejs("discourse-common/config/environment")
|
||||
.isDevelopment;
|
||||
const container = app.__container__;
|
||||
Discourse.Model = EmberObject.extend();
|
||||
Discourse.__container__ = container;
|
||||
|
@ -89,6 +93,7 @@ export default {
|
|||
const session = container.lookup("session:main");
|
||||
const setupData = document.getElementById("data-discourse-setup").dataset;
|
||||
session.set("highlightJsPath", setupData.highlightJsPath);
|
||||
setEnvironment(setupData.environment);
|
||||
|
||||
Router.reopen({
|
||||
rootURL: getUrl("/w/"),
|
||||
|
@ -107,5 +112,11 @@ export default {
|
|||
},
|
||||
model() {},
|
||||
});
|
||||
|
||||
$.ajaxPrefilter(function (_, __, jqXHR) {
|
||||
if (isDevelopment()) {
|
||||
jqXHR.setRequestHeader("X-CSRF-Token", getToken());
|
||||
}
|
||||
});
|
||||
},
|
||||
};
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{{d-editor
|
||||
tabindex=field.tabindex
|
||||
value=composer.reply
|
||||
placeholder=replyPlaceholder
|
||||
placeholderTranslated=replyPlaceholder
|
||||
previewUpdated=(action "previewUpdated")
|
||||
markdownOptions=markdownOptions
|
||||
extraButtons=(action "extraButtons")
|
||||
|
|
|
@ -162,4 +162,15 @@
|
|||
.text-field input {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.text-field,
|
||||
.textarea-field,
|
||||
.composer-field {
|
||||
input[type="text"],
|
||||
textarea {
|
||||
&:focus::placeholder {
|
||||
color: transparent;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -173,6 +173,7 @@ en:
|
|||
max_length_placeholder: "Maximum length in characters"
|
||||
char_counter: "Character Counter"
|
||||
char_counter_placeholder: "Display Character Counter"
|
||||
field_placeholder: "Field Placeholder"
|
||||
file_types: "File Types"
|
||||
limit: "Limit"
|
||||
property: "Property"
|
||||
|
|
|
@ -109,6 +109,7 @@ class CustomWizard::AdminWizardController < CustomWizard::AdminController
|
|||
:format,
|
||||
:limit,
|
||||
:property,
|
||||
:placeholder,
|
||||
prefill: mapped_params,
|
||||
content: mapped_params,
|
||||
condition: mapped_params,
|
||||
|
|
|
@ -186,6 +186,16 @@ class CustomWizard::Builder
|
|||
)
|
||||
end
|
||||
|
||||
if field_template['placeholder'].present?
|
||||
params[:placeholder] = mapper.interpolate(
|
||||
field_template['placeholder'],
|
||||
user: true,
|
||||
value: true,
|
||||
wizard: true,
|
||||
template: true
|
||||
)
|
||||
end
|
||||
|
||||
field = step.add_field(params)
|
||||
end
|
||||
|
||||
|
|
|
@ -20,7 +20,8 @@ class CustomWizard::Field
|
|||
:format,
|
||||
:limit,
|
||||
:property,
|
||||
:content
|
||||
:content,
|
||||
:placeholder
|
||||
|
||||
attr_accessor :index,
|
||||
:step
|
||||
|
@ -44,6 +45,7 @@ class CustomWizard::Field
|
|||
@limit = attrs[:limit]
|
||||
@property = attrs[:property]
|
||||
@content = attrs[:content]
|
||||
@placeholder = attrs[:placeholder]
|
||||
end
|
||||
|
||||
def label
|
||||
|
@ -63,18 +65,21 @@ class CustomWizard::Field
|
|||
max_length: nil,
|
||||
prefill: nil,
|
||||
char_counter: nil,
|
||||
validations: nil
|
||||
validations: nil,
|
||||
placeholder: nil
|
||||
},
|
||||
textarea: {
|
||||
min_length: nil,
|
||||
max_length: nil,
|
||||
prefill: nil,
|
||||
char_counter: nil
|
||||
char_counter: nil,
|
||||
placeholder: nil
|
||||
},
|
||||
composer: {
|
||||
min_length: nil,
|
||||
max_length: nil,
|
||||
char_counter: nil
|
||||
char_counter: nil,
|
||||
placeholder: nil
|
||||
},
|
||||
text_only: {},
|
||||
date: {
|
||||
|
|
|
@ -32,11 +32,11 @@ class ::CustomWizard::UpdateValidator
|
|||
@updater.errors.add(field_id, I18n.t('wizard.field.required', label: label))
|
||||
end
|
||||
|
||||
if min_length && value.is_a?(String) && value.strip.length < min_length.to_i
|
||||
if min_length.present? && value.is_a?(String) && value.strip.length < min_length.to_i
|
||||
@updater.errors.add(field_id, I18n.t('wizard.field.too_short', label: label, min: min_length.to_i))
|
||||
end
|
||||
|
||||
if max_length && value.is_a?(String) && value.strip.length > max_length.to_i
|
||||
if max_length.present? && value.is_a?(String) && value.strip.length > max_length.to_i
|
||||
@updater.errors.add(field_id, I18n.t('wizard.field.too_long', label: label, max: max_length.to_i))
|
||||
end
|
||||
|
||||
|
|
|
@ -71,6 +71,7 @@ class CustomWizard::FieldSerializer < ::ApplicationSerializer
|
|||
end
|
||||
|
||||
def placeholder
|
||||
return object.placeholder if object.placeholder.present?
|
||||
I18n.t("#{object.key || i18n_key}.placeholder", default: '')
|
||||
end
|
||||
|
||||
|
|
|
@ -199,6 +199,7 @@ describe CustomWizard::Wizard do
|
|||
end
|
||||
|
||||
it "lists the site categories" do
|
||||
Site.clear_cache
|
||||
expect(@wizard.categories.length).to eq(1)
|
||||
end
|
||||
|
||||
|
|
Laden …
In neuem Issue referenzieren