Feature Proposal: The rename topic operation to have option not to replace web internal references
Motivation
When you move a topic to a different web, links to other topics on the same web (e.g. TopicName) are updated to OldWeb.TopicName so that the links are kept working.
There are times when you want to prevent this link adaptation from happening.
Let's assume that you are splitting a web into two webs as follows.
Also assume Mars* topics are linking each other and Jupiter* topics are linking each other but no inter-planetary links between Mars* and Jupiter*.
In the splitting, here's what happens.
- MarsPhobos is moved from Planets to Mars
- On Mars.MarsPhobos, links to MarsDeimos are changed to Planets.MarsDeimos
- On Planets.MarsDeimos, links to MarsPhobos are changed to Mars.MarsPhobos
- MarsDeimos is moved from Planets to Mars
- On Mars.MarsDeimos, links to Mars.Phobos are not changed because it's already fully qualified
- On Mars.MarsPhobos, links to Planets.MarsDeimos are changed to Mars.MarsDeimos
Both Mars.MarsPhobos and Mars.MarsDeimos end up having fully qualified links to Mars.MarsPhobos and Mars.MarsDeimos.
Those links should be MarsPhobos and MarsDeimos.
Things get worse if you have thousands of webs and
NoInAllPublicWebsOption is in effect (you cannot use "in all public webs" on "More topic actions" page because it would time out). The step 2.b doesn't happen.
To cope with this kind of situation, you may want to avoid link adaptation entirely.
With link adaptation of topics referring to the moved topic, you have control (the check boxes on the rename page).
But there is no option to prevent link adaptation on the moved topic from happening.
Description and Documentation
If
disablefixlinks URL parameter is true when the
rename script is called for a topic rename, in TWiki::UI::Manage::move(), TWiki::Render::replaceWebInternalReferences() is not called.
Since this feature is esoteric, the
rename page doesn't show the checkbox for the
disablefixlinks URL parameter by default.
The checkbox is displayed only if
DISABLEFIXLINKSCHECKBOX is
'on'.
Examples
Impact
Implementation
--
Contributors: HideyoImazu - 2012-11-08
Discussion
I see the need. I am concerned about the UI, and the complexity to explain it to the user.
I think a more intuitive way is a mass-move feature:
- Show a flat checkbox list of all topics in a web, with "check all" and "uncheck all" buttons.
- A selector of destination web.
- On submit, all selected topics are moved logically as a set, not touching the inter-links, but fixing other links as needed.
See
GlobalReplacePlugin for inspiration.
--
PeterThoeny - 2012-11-14
This topic is renamed because it was very long.
--
HideyoImazu - 2012-11-15
Ideally:
- The
rename script recognizes the bulk action
- The rename script page given
action=bulk parameter looks somewhat similar to the rename topic page
- A link to
rename?action=bulk page is placed on the "More topic action" page. The link title is "Move topics en masse"
- It has a target web selection
- All topics the user can rename are listed with a checkbox.
- The topic list is accompanied with the "check all" and "uncheck all" buttons
- When the "Move" button is clicked, all topics check are plainly moved to the destination web
- success/failure of each move operation is displayed
- "Copy topics en masse" feature is also provided (c.f. CopyScript)
This deserves a feature proposal in its own right.
Is it OK to implement
noreplintrefs=on with a corresponding check box on the
rename page?
The "ideal" takes much more effort to implment than the original proposal.
--
HideyoImazu - 2012-11-15
For the last 4 years I try to improve the usability of TWiki. This additional checkbox in the "more topic action" screen or rename screen is confusing to users IMHO. As a compromise, how about adding a configure setting to enable this feature, and to show the checkbox only when enabled? Default would be disabled. What do you think?
--
PeterThoeny - 2012-11-21
I agree it would be confusing.
So I'm fine making the checkbox not displayed by default.
What should be the preference variable to enable it? NOREPLINTREFSCHECKBOX?
--
HideyoImazu - 2012-11-22
The preference variable we agreed in the release meeting is now mentioned in the Description section.
The URL parameter name is renamed to fit the preference variable name.
--
HideyoImazu - 2012-11-22
Accepted by release meeting at
JerusalemReleaseMeeting2012x11x22: New NOWEBPREFIXONMOVECHECKBOX settings shows a "don't prefix topic with web name when topic is moved to another web" (or the like) checkbox.
--
PeterThoeny - 2012-11-22
I renamed this proposal from RenameTopicNoReplIntRefs to RenameTopicWithNoWebPrefix.
--
PeterThoeny - 2012-11-25
I've realized that
%INCLUDE{...}% has the
disablefixlinks parameter, which does the same thing.
How about using the same parameter name and
DISABLEFIXLINKSCHECKBOX ?
--
HideyoImazu - 2012-12-18
Good point, makes sense.
--
PeterThoeny - 2012-12-21
The proposal description is updated accordingly.
--
HideyoImazu - 2012-12-21