mirror of
https://github.com/codeninjasllc/discourse.git
synced 2024-11-27 09:36:19 -05:00
Add new welcome message step
This commit is contained in:
parent
ff17950993
commit
2545c2ffa6
8 changed files with 106 additions and 1 deletions
|
@ -0,0 +1,5 @@
|
||||||
|
export default Ember.Component.extend({
|
||||||
|
keyPress(e) {
|
||||||
|
e.stopPropagation();
|
||||||
|
}
|
||||||
|
});
|
|
@ -74,7 +74,7 @@ export default Ember.Component.extend({
|
||||||
},
|
},
|
||||||
|
|
||||||
animateInvalidFields() {
|
animateInvalidFields() {
|
||||||
Ember.run.scheduleOnce('afterRender', () => $('.invalid input[type=text]').wiggle(2, 100));
|
Ember.run.scheduleOnce('afterRender', () => $('.invalid input[type=text], .invalid textarea').wiggle(2, 100));
|
||||||
},
|
},
|
||||||
|
|
||||||
advance() {
|
advance() {
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
{{textarea elementId=field.id value=field.value class=fieldClass placeholder=field.placeholder}}
|
|
@ -334,6 +334,21 @@ body.wizard {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.textarea-field {
|
||||||
|
textarea {
|
||||||
|
width: 100%;
|
||||||
|
height: 10em;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.invalid {
|
||||||
|
textarea {
|
||||||
|
padding: 3px;
|
||||||
|
border: 4px solid red;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.text-field {
|
.text-field {
|
||||||
input {
|
input {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
|
@ -3238,6 +3238,15 @@ en:
|
||||||
label: "How would you describe your community in one sentence?"
|
label: "How would you describe your community in one sentence?"
|
||||||
placeholder: "A place for Jane and her friends to discuss cool stuff"
|
placeholder: "A place for Jane and her friends to discuss cool stuff"
|
||||||
|
|
||||||
|
introduction:
|
||||||
|
title: "Introduction"
|
||||||
|
|
||||||
|
fields:
|
||||||
|
welcome:
|
||||||
|
label: "Welcome Topic"
|
||||||
|
description: 'Think of this as your "elevator pitch" – how would you describe this site to a stranger on an elevator when you had about 1 minute to talk?'
|
||||||
|
one_paragraph: "Please restrict your welcome message to one paragraph."
|
||||||
|
|
||||||
privacy:
|
privacy:
|
||||||
title: "Access"
|
title: "Access"
|
||||||
description: "Is your community open to everyone, or is it restricted by membership, invitation, or approval? If you prefer, you can set things up privately, then switch to public later."
|
description: "Is your community open to everyone, or is it restricted by membership, invitation, or approval? If you prefer, you can set things up privately, then switch to public later."
|
||||||
|
|
42
lib/introduction_updater.rb
Normal file
42
lib/introduction_updater.rb
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
class IntroductionUpdater
|
||||||
|
|
||||||
|
def initialize(user)
|
||||||
|
@user = user
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_summary
|
||||||
|
summary_from_post(find_welcome_post)
|
||||||
|
end
|
||||||
|
|
||||||
|
def update_summary(new_value)
|
||||||
|
post = find_welcome_post
|
||||||
|
return unless post
|
||||||
|
|
||||||
|
previous_value = summary_from_post(post).strip
|
||||||
|
|
||||||
|
if previous_value != new_value
|
||||||
|
revisor = PostRevisor.new(post)
|
||||||
|
|
||||||
|
remaining = post.raw.split("\n")[1..-1]
|
||||||
|
revisor.revise!(@user, raw: "#{new_value}\n#{remaining.join("\n")}")
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
protected
|
||||||
|
|
||||||
|
def summary_from_post(post)
|
||||||
|
return post ? post.raw.split("\n").first : nil
|
||||||
|
end
|
||||||
|
|
||||||
|
def find_welcome_post
|
||||||
|
welcome_topic = Topic.where(slug: 'welcome-to-discourse').first
|
||||||
|
return nil unless welcome_topic.present?
|
||||||
|
|
||||||
|
post = welcome_topic.posts.where(post_number: 1).first
|
||||||
|
return nil unless post.present?
|
||||||
|
|
||||||
|
post
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -1,3 +1,5 @@
|
||||||
|
require_dependency 'introduction_updater'
|
||||||
|
|
||||||
class Wizard
|
class Wizard
|
||||||
class Builder
|
class Builder
|
||||||
|
|
||||||
|
@ -40,6 +42,22 @@ class Wizard
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@wizard.append_step('introduction') do |step|
|
||||||
|
introduction = IntroductionUpdater.new(@wizard.user)
|
||||||
|
|
||||||
|
step.add_field(id: 'welcome', type: 'textarea', required: true, value: introduction.get_summary)
|
||||||
|
|
||||||
|
step.on_update do |updater|
|
||||||
|
value = updater.fields[:welcome].strip
|
||||||
|
|
||||||
|
if value.index("\n")
|
||||||
|
updater.errors.add(:welcome, I18n.t("wizard.step.introduction.fields.welcome.one_paragraph"))
|
||||||
|
else
|
||||||
|
introduction.update_summary(value)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
@wizard.append_step('privacy') do |step|
|
@wizard.append_step('privacy') do |step|
|
||||||
locked = SiteSetting.login_required? && SiteSetting.invite_only?
|
locked = SiteSetting.login_required? && SiteSetting.invite_only?
|
||||||
privacy = step.add_field(id: 'privacy',
|
privacy = step.add_field(id: 'privacy',
|
||||||
|
|
|
@ -38,6 +38,21 @@ describe Wizard::StepUpdater do
|
||||||
expect(wizard.completed_steps?('forum-title')).to eq(true)
|
expect(wizard.completed_steps?('forum-title')).to eq(true)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "updates the introduction step" do
|
||||||
|
topic = Fabricate(:topic, title: "Welcome to Discourse")
|
||||||
|
welcome_post = Fabricate(:post, topic: topic, raw: "this will be the welcome topic post\n\ncool!")
|
||||||
|
|
||||||
|
updater = wizard.create_updater('introduction', welcome: "Welcome to my new awesome forum!")
|
||||||
|
updater.update
|
||||||
|
|
||||||
|
expect(updater.success?).to eq(true)
|
||||||
|
welcome_post.reload
|
||||||
|
expect(welcome_post.raw).to eq("Welcome to my new awesome forum!\n\ncool!")
|
||||||
|
|
||||||
|
expect(wizard.completed_steps?('introduction')).to eq(true)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
it "won't allow updates to the default value, when required" do
|
it "won't allow updates to the default value, when required" do
|
||||||
updater = wizard.create_updater('forum_title', title: SiteSetting.title, site_description: 'neat place')
|
updater = wizard.create_updater('forum_title', title: SiteSetting.title, site_description: 'neat place')
|
||||||
updater.update
|
updater.update
|
||||||
|
|
Loading…
Reference in a new issue