mirror of
https://github.com/codeninjasllc/discourse.git
synced 2024-11-27 01:26:18 -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() {
|
||||
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() {
|
||||
|
|
|
@ -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 {
|
||||
input {
|
||||
width: 100%;
|
||||
|
|
|
@ -3238,6 +3238,15 @@ en:
|
|||
label: "How would you describe your community in one sentence?"
|
||||
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:
|
||||
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."
|
||||
|
|
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 Builder
|
||||
|
||||
|
@ -40,6 +42,22 @@ class Wizard
|
|||
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|
|
||||
locked = SiteSetting.login_required? && SiteSetting.invite_only?
|
||||
privacy = step.add_field(id: 'privacy',
|
||||
|
|
|
@ -38,6 +38,21 @@ describe Wizard::StepUpdater do
|
|||
expect(wizard.completed_steps?('forum-title')).to eq(true)
|
||||
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
|
||||
updater = wizard.create_updater('forum_title', title: SiteSetting.title, site_description: 'neat place')
|
||||
updater.update
|
||||
|
|
Loading…
Reference in a new issue