mirror of
https://github.com/codeninjasllc/discourse.git
synced 2024-11-23 15:48:43 -05:00
FEATURE: Seed a meta category, we want everyone to have it
This commit is contained in:
parent
194081ca47
commit
fc3bad8ff4
4 changed files with 63 additions and 1 deletions
|
@ -191,6 +191,9 @@ en:
|
|||
vip_category_name: "Lounge"
|
||||
vip_category_description: "A category exclusive to members with trust level 3 and higher."
|
||||
|
||||
meta_category_name: "Meta"
|
||||
meta_category_description: "A category to discuss issues related to this forum"
|
||||
|
||||
category:
|
||||
topic_prefix: "Category definition for %{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.]"
|
||||
|
|
|
@ -426,5 +426,7 @@ uncategorized:
|
|||
lounge_category_id:
|
||||
default: -1
|
||||
hidden: true
|
||||
|
||||
meta_category_id:
|
||||
default: -1
|
||||
hidden: true
|
||||
|
||||
|
|
29
db/fixtures/501_meta_category.rb
Normal file
29
db/fixtures/501_meta_category.rb
Normal file
|
@ -0,0 +1,29 @@
|
|||
unless Rails.env.test?
|
||||
meta = Category.where(id: SiteSetting.meta_category_id).first
|
||||
if meta && !meta.topic_id
|
||||
|
||||
creator = PostCreator.new(Discourse.system_user,
|
||||
raw: I18n.t('meta_category_description'),
|
||||
title: I18n.t('category.topic_prefix', category: meta.name),
|
||||
category: meta.name,
|
||||
archetype: Archetype.default
|
||||
)
|
||||
post = creator.create
|
||||
|
||||
unless post && post.id
|
||||
puts post.errors.full_messages if post
|
||||
puts creator.errors.inspect
|
||||
raise "Failed meta topic"
|
||||
end
|
||||
|
||||
meta.set_permissions(:everyone => :full)
|
||||
meta.topic_id = post.topic.id
|
||||
unless meta.save
|
||||
puts meta.errors.full_messages
|
||||
puts "Failed to set the meta description and permission!"
|
||||
end
|
||||
|
||||
# Reset topic count because we don't count the description topic
|
||||
Category.exec_sql "UPDATE categories SET topic_count = 0 WHERE id = #{meta.id}"
|
||||
end
|
||||
end
|
28
db/migrate/20140122043508_add_meta_category.rb
Normal file
28
db/migrate/20140122043508_add_meta_category.rb
Normal file
|
@ -0,0 +1,28 @@
|
|||
class AddMetaCategory < ActiveRecord::Migration
|
||||
def up
|
||||
unless Rails.env.test?
|
||||
result = Category.exec_sql "SELECT 1 FROM site_settings where name = 'meta_category_id'"
|
||||
if result.count == 0
|
||||
description = I18n.t('meta_category_description')
|
||||
|
||||
name = I18n.t('meta_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}', 'EEEEEE', '652D90', 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 ('meta_category_id', 3, #{category_id}, now(), now())"
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def down
|
||||
# Don't reverse this change. There is so much logic around deleting a category that it's messy
|
||||
# to try to do in sql. The up method will just make sure never to create the category twice.
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue