Added default path alias for node.

Fixed set path alias, when alias already exists in the history.
This commit is contained in:
2017-02-28 17:35:18 +01:00
parent a341bd98eb
commit 13d0927c58
6 changed files with 133 additions and 12 deletions

View File

@@ -253,7 +253,7 @@ feature -- Form
l_node: detachable CMS_NODE
s: STRING
l_node_path: READABLE_STRING_8
l_path_alias, l_existing_path_alias: detachable READABLE_STRING_8
l_path_alias, l_existing_path_alias, l_auto_path_alias: detachable READABLE_STRING_8
do
fixme ("Refactor code per operacion: Preview, Save")
l_preview := attached {WSF_STRING} fd.item ("op") as l_op and then l_op.same_string ("Preview")
@@ -301,10 +301,13 @@ feature -- Form
add_success_message ("Node #" + l_node.id.out + " saved.")
end
-- Path aliase
l_node_path := node_api.node_path (l_node)
l_existing_path_alias := api.location_alias (l_node_path)
l_auto_path_alias := node_api.path_alias_uri_suggestion (l_node, a_type)
if attached fd.string_item ("path_alias") as f_path_alias then
l_node_path := node_api.node_path (l_node)
l_path_alias := percent_encoder.partial_encoded_string (f_path_alias, <<'/'>>)
l_existing_path_alias := api.location_alias (l_node_path)
if
l_existing_path_alias /= Void and then
l_path_alias.same_string (l_existing_path_alias)
@@ -314,7 +317,10 @@ feature -- Form
elseif l_existing_path_alias /= Void and then l_path_alias.is_whitespace then
-- Reset to builtin alias.
if api.has_permission ("edit path_alias") then
api.set_path_alias (l_node_path, l_node_path, True)
api.set_path_alias (l_node_path, l_auto_path_alias, True)
elseif l_existing_path_alias.same_string (l_node_path) then
-- not aliased! Use default.
api.set_path_alias (l_node_path, l_auto_path_alias, True)
else
add_error_message ("Permission denied to reset path alias on node #" + l_node.id.out + "!")
end
@@ -329,6 +335,12 @@ feature -- Form
l_node.set_link (node_api.node_link (l_node))
end
end
elseif l_existing_path_alias /= Void then
l_node.set_link (create {CMS_LOCAL_LINK}.make (l_node.title, l_existing_path_alias))
elseif l_auto_path_alias /= Void then
-- Use auto path alias
api.set_path_alias (l_node_path, l_auto_path_alias, True)
l_node.set_link (create {CMS_LOCAL_LINK}.make (l_node.title, l_auto_path_alias))
else
l_node.set_link (node_api.node_link (l_node))
end