From e9c028b94e1b57b308b5d298ab96bb8a6c360bc2 Mon Sep 17 00:00:00 2001 From: Jocelyn Fiat Date: Wed, 6 Sep 2017 16:58:42 +0200 Subject: [PATCH] Improved node feed and recent changes feed by setting proper feed id and feed item id, and set expected author name. --- modules/node/cms_node_module.e | 6 +++++- modules/node/handler/nodes_handler.e | 4 +++- modules/recent_changes/cms_recent_changes_module.e | 4 +++- src/modules/core/cms_user_api.e | 13 +++++++++++++ src/service/cms_api.e | 7 +++++++ 5 files changed, 31 insertions(+), 3 deletions(-) diff --git a/modules/node/cms_node_module.e b/modules/node/cms_node_module.e index b0f42fc..dea5323 100644 --- a/modules/node/cms_node_module.e +++ b/modules/node/cms_node_module.e @@ -329,7 +329,11 @@ feature -- Hooks end end ch.set_information (l_info) - ch.set_author (n.editor) + if n.editor = Void then + ch.set_author (n.author) + else + ch.set_author (n.editor) + end ch.set_summary (n.summary) if attached {CMS_TAXONOMY_API} l_node_api.cms_api.module_api ({CMS_TAXONOMY_MODULE}) as l_taxonomy_api then if attached l_taxonomy_api.terms_of_content (n, Void) as l_terms then diff --git a/modules/node/handler/nodes_handler.e b/modules/node/handler/nodes_handler.e index 604f2bb..b4daa04 100644 --- a/modules/node/handler/nodes_handler.e +++ b/modules/node/handler/nodes_handler.e @@ -86,6 +86,7 @@ feature -- HTTP Methods l_feed_name.append_string ({STRING_32} " : ") l_feed_name.append_string_general (a_content_type.name) create l_feed.make (l_feed_name) + l_feed.set_id (api.absolute_url (req.path_info, Void)) l_feed.set_date (create {DATE_TIME}.make_now_utc) if attached {WSF_STRING} req.query_parameter ("size") as p_size and then p_size.is_integer then @@ -113,9 +114,10 @@ feature -- HTTP Methods if n.is_published then create l_feed_item.make (n.title) if attached n.author as u then - l_feed_item.set_author (create {FEED_AUTHOR}.make (api.user_api.user_display_name (u))) + l_feed_item.set_author (create {FEED_AUTHOR}.make (api.user_api.real_user_display_name (u))) end l_feed_item.set_date (n.publication_date) + l_feed_item.set_id (n.content_type + ":id" + n.id.out + "-rev" + n.revision.out) create lnk.make (req.absolute_script_url ("/" + node_api.node_link (n).location)) l_feed_item.links.force (lnk, "") if attached n.summary as l_summary and then not l_summary.is_whitespace then diff --git a/modules/recent_changes/cms_recent_changes_module.e b/modules/recent_changes/cms_recent_changes_module.e index 16e0888..7f4d84f 100644 --- a/modules/recent_changes/cms_recent_changes_module.e +++ b/modules/recent_changes/cms_recent_changes_module.e @@ -143,10 +143,12 @@ feature -- Hook ch := ic.item create l_feed_item.make (ch.link.title) l_feed_item.set_date (ch.date) - if attached ch.id as l_ch_id then l_feed_item.set_id (l_ch_id) end + if attached ch.author as l_author then + l_feed_item.set_author (create {FEED_AUTHOR}.make (a_response.api.real_user_display_name (l_author))) + end create s.make_empty if attached ch.information as l_information then diff --git a/src/modules/core/cms_user_api.e b/src/modules/core/cms_user_api.e index 72f0b22..6bcc946 100644 --- a/src/modules/core/cms_user_api.e +++ b/src/modules/core/cms_user_api.e @@ -104,6 +104,19 @@ feature -- Query end end + real_user_display_name (u: CMS_USER): READABLE_STRING_32 + -- Display name for user `u`. + do + if + attached {CMS_PARTIAL_USER} u as l_partial and then + attached user_by_id (l_partial.id) as l_user + then + Result := user_display_name (l_user) + else + Result := user_display_name (u) + end + end + feature -- Access: user user_by_id (a_id: like {CMS_USER}.id): detachable CMS_USER diff --git a/src/service/cms_api.e b/src/service/cms_api.e index a5a7511..20d2848 100644 --- a/src/service/cms_api.e +++ b/src/service/cms_api.e @@ -562,10 +562,17 @@ feature -- Helpers: URLs feature -- Helpers: html links user_display_name (u: CMS_USER): READABLE_STRING_32 + -- User profile name or name. do Result := user_api.user_display_name (u) end + real_user_display_name (u: CMS_USER): READABLE_STRING_32 + -- Real user profile name or name, even if `u` has only user `id` value. + do + Result := user_api.real_user_display_name (u) + end + feature -- Settings switch_to_site_mode