Added default path alias for node.
Fixed set path alias, when alias already exists in the history.
This commit is contained in:
@@ -107,10 +107,14 @@ feature -- Forms ...
|
||||
populate_form_with_path_alias (response: NODE_RESPONSE; f: CMS_FORM; a_node: detachable CMS_NODE)
|
||||
local
|
||||
ti: WSF_FORM_TEXT_INPUT
|
||||
thi: WSF_FORM_HIDDEN_INPUT
|
||||
l_uri: detachable READABLE_STRING_8
|
||||
l_iri: detachable READABLE_STRING_32
|
||||
l_auto_path_alias: READABLE_STRING_8
|
||||
do
|
||||
-- Path alias
|
||||
l_auto_path_alias := node_api.path_alias_uri_suggestion (a_node, content_type)
|
||||
|
||||
create ti.make ("path_alias")
|
||||
ti.set_label ("Path")
|
||||
ti.set_pattern ("^([A-Za-z0-9-_+ ]).+")
|
||||
@@ -119,13 +123,19 @@ feature -- Forms ...
|
||||
if a_node /= Void and then a_node.has_id then
|
||||
if attached a_node.link as lnk then
|
||||
l_uri := lnk.location
|
||||
if l_uri.same_string (node_api.node_path (a_node)) then
|
||||
l_uri := ""
|
||||
end
|
||||
else
|
||||
l_iri := percent_encoder.percent_decoded_string (response.api.location_alias (response.node_api.node_path (a_node)))
|
||||
l_uri := l_iri.to_string_8
|
||||
end
|
||||
ti.set_text_value (l_uri)
|
||||
ti.set_description ("Optionally specify an alternative URL path by which this content can be accessed. For example, type 'about' when writing an about page. Use a relative path or the URL alias won't work.")
|
||||
ti.set_description ("Optionally specify an alternative URL path by which this content can be accessed.<br/>%NFor example, type 'about' when writing an about page. Use a relative path or the URL alias won't work.")
|
||||
else
|
||||
l_uri := ""
|
||||
end
|
||||
ti.set_text_value (l_uri)
|
||||
ti.set_placeholder (l_auto_path_alias)
|
||||
ti.set_validation_action (agent (fd: WSF_FORM_DATA; ia_response: NODE_RESPONSE; ia_node: detachable CMS_NODE)
|
||||
do
|
||||
if
|
||||
@@ -163,6 +173,11 @@ feature -- Forms ...
|
||||
else
|
||||
f.extend (ti)
|
||||
end
|
||||
-- Auto path alias / suggestion
|
||||
create thi.make ("auto_path_alias")
|
||||
thi.set_text_value (l_auto_path_alias)
|
||||
thi.set_is_readonly (True)
|
||||
f.insert_after (thi, ti)
|
||||
end
|
||||
|
||||
update_node (response: NODE_RESPONSE; fd: WSF_FORM_DATA; a_node: CMS_NODE)
|
||||
@@ -443,6 +458,4 @@ feature -- Output
|
||||
end
|
||||
a_output.append ("</li>")
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user