mirror of
https://github.com/discourse/discourse.git
synced 2025-02-26 19:37:39 +08:00
DEV: Add local_dates post custom field
This commit is contained in:
parent
f13c34aaed
commit
f0dab5a5e4
@ -1,6 +1,4 @@
|
|||||||
module ::DiscourseLocalDates
|
module ::DiscourseLocalDates
|
||||||
PLUGIN_NAME = "discourse-local-dates"
|
|
||||||
|
|
||||||
class Engine < ::Rails::Engine
|
class Engine < ::Rails::Engine
|
||||||
engine_name DiscourseLocalDates::PLUGIN_NAME
|
engine_name DiscourseLocalDates::PLUGIN_NAME
|
||||||
isolate_namespace DiscourseLocalDates
|
isolate_namespace DiscourseLocalDates
|
||||||
|
@ -12,6 +12,42 @@ register_asset "moment-timezone.js", :vendored_core_pretty_text
|
|||||||
enabled_site_setting :discourse_local_dates_enabled
|
enabled_site_setting :discourse_local_dates_enabled
|
||||||
|
|
||||||
after_initialize do
|
after_initialize do
|
||||||
|
module ::DiscourseLocalDates
|
||||||
|
PLUGIN_NAME ||= "discourse-local-dates".freeze
|
||||||
|
POST_CUSTOM_FIELD ||= "local_dates".freeze
|
||||||
|
end
|
||||||
|
|
||||||
|
[
|
||||||
|
"../lib/discourse_local_dates/engine.rb",
|
||||||
|
].each { |path| load File.expand_path(path, __FILE__) }
|
||||||
|
|
||||||
|
register_post_custom_field_type(DiscourseLocalDates::POST_CUSTOM_FIELD, :json)
|
||||||
|
|
||||||
|
on(:post_process_cooked) do |doc, post|
|
||||||
|
dates = doc.css('span.discourse-local-date').map do |cooked_date|
|
||||||
|
date = {}
|
||||||
|
cooked_date.attributes.values.each do |attribute|
|
||||||
|
if attribute.name && ['data-date', 'data-time'].include?(attribute.name)
|
||||||
|
unless attribute.value == 'undefined'
|
||||||
|
date[attribute.name.gsub('data-', '')] = CGI.escapeHTML(attribute.value || "")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
date
|
||||||
|
end
|
||||||
|
|
||||||
|
if dates.present?
|
||||||
|
post.custom_fields[DiscourseLocalDates::POST_CUSTOM_FIELD] = dates.to_json
|
||||||
|
post.save_custom_fields
|
||||||
|
elsif post.custom_fields[DiscourseLocalDates::POST_CUSTOM_FIELD].present?
|
||||||
|
PostCustomField.where(post_id: post.id, name: DiscourseLocalDates::POST_CUSTOM_FIELD).destroy_all
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
add_to_class(:post, :local_dates) do
|
||||||
|
custom_fields[DiscourseLocalDates::POST_CUSTOM_FIELD] || []
|
||||||
|
end
|
||||||
|
|
||||||
on(:reduce_cooked) do |fragment|
|
on(:reduce_cooked) do |fragment|
|
||||||
container = fragment.css(".discourse-local-date").first
|
container = fragment.css(".discourse-local-date").first
|
||||||
|
|
||||||
@ -21,5 +57,3 @@ after_initialize do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
load File.expand_path('../lib/discourse_local_dates/engine.rb', __FILE__)
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user