Add a Staff category. Have a topic for assets in the Staff category. Move admin quick start guide to Staff category. Quick start guide is not invisible anymore.

This commit is contained in:
Neil Lalonde 2014-02-27 17:38:01 -05:00
parent 01faf0880b
commit ec7ef21403
5 changed files with 72 additions and 2 deletions

View File

@ -200,6 +200,11 @@ en:
meta_category_name: "Meta"
meta_category_description: "Discussion about this forum, its organization, how it works, and how we can improve it."
staff_category_name: "Staff"
staff_category_description: "Private category for staff discussions. Topics are only visible to admins and moderators."
assets_topic_body: "This is a topic to store forum assets used in the forum design. Don't delete it!"
category:
topic_prefix: "About the %{category} category"
replace_paragraph: "[Replace this first paragraph with a short description of your new category. This guidance will appear in the category selection area, so try to keep it below 200 characters. Until you edit this text or create topics, this category won't appear on the categories page.]"

View File

@ -448,5 +448,8 @@ uncategorized:
meta_category_id:
default: -1
hidden: true
staff_category_id:
default: -1
hidden: true
min_posts_for_search_in_topic: 10

View File

@ -0,0 +1,36 @@
unless Rails.env.test?
staff = Category.where(id: SiteSetting.staff_category_id).first
if staff and !staff.group_ids.include?(Group[:staff].id)
# Add permissions and a description to the Staff category.
staff.group_names = ['staff']
unless staff.save
puts staff.errors.full_messages
raise "Failed to set permissions on the Staff category!"
end
creator = PostCreator.new(Discourse.system_user,
raw: I18n.t('staff_category_description'),
title: I18n.t('category.topic_prefix', category: staff.name),
category: staff.name,
archetype: Archetype.default
)
post = creator.create
unless post && post.id
puts post.errors.full_messages if post
puts creator.errors.inspect
raise "Failed to create description for Staff category!"
end
staff.topic_id = post.topic.id
unless staff.save
puts staff.errors.full_messages
puts "Failed to set the Staff category description topic!"
end
# Reset topic count because we don't count the description topic
Category.exec_sql "UPDATE categories SET topic_count = 0 WHERE id = #{staff.id}"
end
end

View File

@ -5,9 +5,10 @@ Post.reset_column_information
if Topic.where('id NOT IN (SELECT topic_id from categories where topic_id is not null)').count == 0 && !Rails.env.test?
puts "Seeding welcome topics"
staff = Category.where(id: SiteSetting.staff_category_id).first
welcome = File.read(Rails.root + 'docs/ADMIN-QUICK-START-GUIDE.md')
post = PostCreator.create(Discourse.system_user, raw: welcome, title: "Discourse Admin Quick Start Guide", skip_validations: true)
post.topic.update_column('visible', false)
PostCreator.create(Discourse.system_user, raw: welcome, title: "Discourse Admin Quick Start Guide", skip_validations: true, category: staff ? staff.name : nil)
PostCreator.create(Discourse.system_user, raw: I18n.t('assets_topic_body'), title: "Assets for the forum design", skip_validations: true, category: staff ? staff.name : nil)
welcome = File.read(Rails.root + 'docs/WELCOME-TO-DISCOURSE.md')
post = PostCreator.create(Discourse.system_user, raw: welcome, title: "Welcome to Discourse", skip_validations: true)

View File

@ -0,0 +1,25 @@
class AddStaffCategory < ActiveRecord::Migration
def up
unless Rails.env.test?
result = Category.exec_sql "SELECT 1 FROM site_settings where name = 'staff_category_id'"
if result.count == 0
description = I18n.t('staff_category_description')
name = I18n.t('staff_category_name')
if Category.exec_sql("SELECT 1 FROM categories where name ilike '#{name}'").count == 0
result = execute "INSERT INTO categories
(name, color, text_color, created_at, updated_at, user_id, slug, description, read_restricted)
VALUES ('#{name}', '283890', 'FFFFFF', now(), now(), -1, '#{Slug.for(name)}', '#{description}', true)
RETURNING id"
category_id = result[0]["id"].to_i
execute "INSERT INTO site_settings(name, data_type, value, created_at, updated_at)
VALUES ('staff_category_id', 3, #{category_id}, now(), now())"
end
end
end
end
def down
# Do nothing
end
end