CINXE.COM

plugin:move [DokuWiki]

<!DOCTYPE html> <html lang="en" dir="ltr" class="no-js"> <head> <meta charset="utf-8" /> <title>plugin:move [DokuWiki]</title> <meta name="generator" content="DokuWiki"/> <meta name="theme-color" content="#008800"/> <meta name="robots" content="index,follow"/> <meta name="keywords" content="plugin,move"/> <link rel="search" type="application/opensearchdescription+xml" href="/lib/exe/opensearch.php" title="DokuWiki"/> <link rel="start" href="/"/> <link rel="contents" href="/plugin:move?do=index" title="Sitemap"/> <link rel="manifest" href="/lib/exe/manifest.php"/> <link rel="alternate" type="application/rss+xml" title="Recent Changes" href="/feed.php"/> <link rel="alternate" type="application/rss+xml" title="Current namespace" href="/feed.php?mode=list&amp;ns=plugin"/> <link rel="edit" title="Edit this page" href="/plugin:move?do=edit"/> <link rel="alternate" type="text/html" title="Plain HTML" href="/_export/xhtml/plugin:move"/> <link rel="alternate" type="text/plain" title="Wiki Markup" href="/_export/raw/plugin:move"/> <link rel="canonical" href="https://www.dokuwiki.org/plugin:move"/> <link rel="stylesheet" href="/lib/exe/css.php?t=dokuwiki&amp;tseed=f1005bad3d81fc9c803c7f93d32a390e"/> <script >var NS='plugin';var JSINFO = {"plugins":{"edittable":{"default columnwidth":""}},"id":"plugin:move","namespace":"plugin","ACT":"show","useHeadingNavigation":0,"useHeadingContent":0};(function(H){H.className=H.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js" defer="defer"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.13.2/jquery-ui.min.js" defer="defer"></script> <script src="/lib/exe/js.php?t=dokuwiki&amp;tseed=f1005bad3d81fc9c803c7f93d32a390e&amp;lang=en" defer="defer"></script> <meta name="viewport" content="width=device-width,initial-scale=1" /> <link rel="shortcut icon" href="/lib/tpl/dokuwiki/images/favicon.ico" /> <link rel="apple-touch-icon" href="/lib/tpl/dokuwiki/images/apple-touch-icon.png" /> <meta name="verify-v1" content="OVxl3gsCv2MhZqh1cBQyl0JytWXSwXMjyvwc+4w3WtA=" /> <meta name="google-site-verification" content="YhTVK69hW94ZXUtc2zSLPxTkZKbZIn0zK67mz5WQB-E" /> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-83791-1"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-83791-1', { 'anonymize_ip': true }); </script> </head> <body> <div id="dokuwiki__site"><div id="dokuwiki__top" class="site dokuwiki mode_show tpl_dokuwiki showSidebar hasSidebar"> <!-- ********** HEADER ********** --> <header id="dokuwiki__header"><div class="pad group"> <div class="headings group"> <ul class="a11y skip"> <li><a href="#dokuwiki__content">skip to content</a></li> </ul> <h1 class="logo"><a href="/start" accesskey="h" title="Home [h]"><img src="/lib/tpl/dokuwiki/images/logo.png" width="64" height="64" alt="" /><span>DokuWiki</span></a></h1> <p class="claim">It's better when it's simple</p> </div> <div class="tools group"> <!-- USER TOOLS --> <div id="dokuwiki__usertools"> <h3 class="a11y">User Tools</h3> <ul> <li class="action login"><a href="/plugin:move?do=login&amp;sectok=" title="Log In" rel="nofollow"><span>Log In</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M10 17.25V14H3v-4h7V6.75L15.25 12 10 17.25M8 2h9a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2v-4h2v4h9V4H8v4H6V4a2 2 0 0 1 2-2z"/></svg></a></li> </ul> </div> <!-- SITE TOOLS --> <div id="dokuwiki__sitetools"> <h3 class="a11y">Site Tools</h3> <form action="/start" method="get" role="search" class="search doku_form" id="dw__search" accept-charset="utf-8"><input type="hidden" name="do" value="search" /><input type="hidden" name="id" value="plugin:move" /><div class="no"><input name="q" type="text" class="edit" title="[F]" accesskey="f" placeholder="Search" autocomplete="on" id="qsearch__in" value="" /><button value="1" type="submit" title="Search">Search</button><div id="qsearch__out" class="ajax_qsearch JSpopup"></div></div></form> <div class="mobileTools"> <form action="/doku.php" method="get" accept-charset="utf-8"><div class="no"><input type="hidden" name="id" value="plugin:move" /><select name="do" class="edit quickselect" title="Tools"><option value="">Tools</option><optgroup label="Page Tools"><option value="edit">Edit this page</option><option value="revisions">Old revisions</option><option value="backlink">Backlinks</option></optgroup><optgroup label="Site Tools"><option value="recent">Recent Changes</option><option value="media">Media Manager</option><option value="index">Sitemap</option></optgroup><optgroup label="User Tools"><option value="login">Log In</option></optgroup></select><button type="submit">&gt;</button></div></form> </div> <ul> <li class="action recent"><a href="/plugin:move?do=recent" title="Recent Changes [r]" rel="nofollow" accesskey="r">Recent Changes</a></li><li class="action media"><a href="/plugin:move?do=media&amp;ns=plugin" title="Media Manager" rel="nofollow">Media Manager</a></li><li class="action index"><a href="/plugin:move?do=index" title="Sitemap [x]" rel="nofollow" accesskey="x">Sitemap</a></li> </ul> </div> </div> <!-- BREADCRUMBS --> <div class="breadcrumbs"> <div class="trace"><span class="bchead">Trace:</span> <span class="bcsep">•</span> <span class="curid"><bdi><a href="/plugin:move" class="breadcrumbs" title="plugin:move">move</a></bdi></span></div> </div> <hr class="a11y" /> </div></header><!-- /header --> <div class="wrapper group"> <!-- ********** ASIDE ********** --> <nav id="dokuwiki__aside" aria-label="Sidebar"><div class="pad aside include group"> <h3 class="toggle">Sidebar</h3> <div class="content"><div class="group"> <p> <strong>Learn about DokuWiki</strong> </p> <ul> <li class="level1"><div class="li"> <a href="/features" class="wikilink1" title="features" data-wiki-id="features">Features</a> &amp; <a href="/blogroll" class="wikilink1" title="blogroll" data-wiki-id="blogroll">reviews</a> </div> </li> <li class="level1"><div class="li"> <a href="/install" class="wikilink1" title="install" data-wiki-id="install">Installation guide</a></div> </li> <li class="level1"><div class="li"> <a href="/manual" class="wikilink1" title="manual" data-wiki-id="manual">User manual</a> &amp; <a href="/wiki:syntax" class="wikilink1" title="wiki:syntax" data-wiki-id="wiki:syntax">syntax</a></div> </li> <li class="level1"><div class="li"> <a href="/changes" class="wikilink1" title="changes" data-wiki-id="changes">Release notes</a></div> </li> <li class="level1"><div class="li"> <a href="/faq" class="wikilink1" title="faq" data-wiki-id="faq">FAQ</a></div> </li> </ul> <p> <strong>Advanced Use</strong> </p> <ul> <li class="level1"><div class="li"> <a href="/extensions" class="wikilink1" title="extensions" data-wiki-id="extensions">Extensions</a></div> </li> <li class="level1"><div class="li"> <a href="/development" class="wikilink1" title="development" data-wiki-id="development">Development manual</a></div> </li> </ul> <p> <strong>Corporate Use</strong> </p> <ul> <li class="level1"><div class="li"> <a href="/faq:support" class="wikilink1" title="faq:support" data-wiki-id="faq:support">Get support</a></div> </li> <li class="level1"><div class="li"> <a href="/donate" class="wikilink1" title="donate" data-wiki-id="donate">Donations</a></div> </li> </ul> <p> <strong>Our Community</strong> </p> <ul> <li class="level1"><div class="li"> <a href="/teams:getting_involved" class="wikilink1" title="teams:getting_involved" data-wiki-id="teams:getting_involved">Get involved</a></div> </li> <li class="level1"><div class="li"> <a href="/dokuinstall" class="wikilink1" title="dokuinstall" data-wiki-id="dokuinstall">Users</a></div> </li> <li class="level1"><div class="li"> <a href="http://forum.dokuwiki.org" class="urlextern" title="http://forum.dokuwiki.org">User forum</a></div> </li> <li class="level1"><div class="li"> <a href="/mailinglist" class="wikilink1" title="mailinglist" data-wiki-id="mailinglist">Development mailinglist</a></div> </li> </ul> <hr /> <p> Follow us on <a href="https://phpc.social/@dokuwiki" class="urlextern" title="https://phpc.social/@dokuwiki">Mastodon</a> and other <a href="/social" class="wikilink1" title="social" data-wiki-id="social">social networks</a>. </p> <p> <a href="/privacy" class="wikilink1" title="privacy" data-wiki-id="privacy">Our Privacy Policy</a> </p> </div></div> </div></nav><!-- /aside --> <!-- ********** CONTENT ********** --> <main id="dokuwiki__content"><div class="pad group"> <div class="pageId"><span>plugin:move</span></div> <div class="page group"> <!-- wikipage start --> <!-- TOC START --> <div id="dw__toc" class="dw__toc"> <h3 class="toggle">Table of Contents</h3> <div> <ul class="toc"> <li class="level1"><div class="li"><a href="#move_plugin">Move Plugin</a></div> <ul class="toc"> <li class="level2"><div class="li"><a href="#installation_and_precautions">Installation and Precautions</a></div></li> <li class="level2"><div class="li"><a href="#usage">Usage</a></div> <ul class="toc"> <li class="level3"><div class="li"><a href="#move_current_page_or_namespace">Move current page or namespace</a></div></li> <li class="level3"><div class="li"><a href="#tree_based_move">Tree based move</a></div></li> <li class="level3"><div class="li"><a href="#simple_page_rename">Simple Page Rename</a></div></li> </ul> </li> <li class="level2"><div class="li"><a href="#support_for_other_plugins">Support for other plugins</a></div> <ul class="toc"> <li class="level3"><div class="li"><a href="#for_plugin_authors">For plugin authors</a></div></li> </ul> </li> <li class="level2"><div class="li"><a href="#technical_background">Technical Background</a></div></li> <li class="level2"><div class="li"><a href="#troubleshooting">Troubleshooting</a></div></li> <li class="level2"><div class="li"><a href="#issues_and_feature_requests">Issues and feature requests</a></div></li> </ul></li> </ul> </div> </div> <!-- TOC END --> <h1 class="sectionedit1" id="move_plugin">Move Plugin</h1> <div class="level1"> <div class="pluginrepo_entry"><div class="usageInfo"><div class="compatibility"><p class="label">Compatible with DokuWiki</p><div class="versions"><ul><li class="yes">2024-02-06 "Kaos"&nbsp;<strong><span>yes</span></strong></li><li class="yes">2023-04-04 "Jack Jackrum"&nbsp;<strong><span>yes</span></strong></li><li class="yes">2022-07-31 "Igor"&nbsp;<strong><span>yes</span></strong></li><li class="yes">2020-07-29 "Hogfather"&nbsp;<strong><span>yes</span></strong></li></ul></div></div><ul class="actions"><li><a class="download" href="https://github.com/michitux/dokuwiki-plugin-move/zipball/master">Download</a></li><li><a class="bugs" href="https://github.com/michitux/dokuwiki-plugin-move/issues">Report bugs</a></li></ul><div class="clearer"></div></div><div class="mainInfo"><p class="description"><a class="media" href="/plugins"><img alt="plugin" class="medialeft" src="/lib/plugins/pluginrepo/images/dwplugin.png" width="60" height="60" /></a> Move pages, media files and namespaces while maintaining the link structure</p></div><div class="metaInfo"><dl><dt>Last updated on</dt><dd>2024-05-07</dd><dt>Provides</dt><dd><a href="/plugins?plugintype=16#extension__table" class="wikilink1" title="List all Helper plugins">Helper</a>, <a href="/plugins?plugintype=2#extension__table" class="wikilink1" title="List all Admin plugins">Admin</a>, <a href="/plugins?plugintype=4#extension__table" class="wikilink1" title="List all Action plugins">Action</a></dd><dt>Repository</dt><dd><a class="urlextern" href="https://github.com/michitux/dokuwiki-plugin-move/">Source</a></dd><dt>Conflicts with</dt><dd><a href="/plugin:autolink2" class="wikilink1" title="plugin:autolink2" data-wiki-id="plugin:autolink2">autolink2</a>, <a href="/plugin:snippets" class="wikilink1" title="plugin:snippets" data-wiki-id="plugin:snippets">snippets</a>, <a href="/template:cherokee-based" class="wikilink1" title="template:cherokee-based" data-wiki-id="template:cherokee-based">cherokee-based</a>, <a href="/template:sxs" class="wikilink1" title="template:sxs" data-wiki-id="template:sxs">sxs</a></dd></dl></div><div class="moreInfo"><p class="similar">Similar to <a href="/plugin:editx" class="wikilink1" title="plugin:editx" data-wiki-id="plugin:editx">editx</a>, <a href="/plugin:openas" class="wikilink1" title="plugin:openas" data-wiki-id="plugin:openas">openas</a>, <a href="/plugin:pagemove" class="wikilink1" title="plugin:pagemove" data-wiki-id="plugin:pagemove">pagemove</a></p><p class="tags">Tagged with <a href="/plugins?plugintag=maintenance#extension__table" class="wikilink1" title="List all plugins with this tag">maintenance</a>, <a href="/plugins?plugintag=move#extension__table" class="wikilink1" title="List all plugins with this tag">move</a>, <a href="/plugins?plugintag=namespace#extension__table" class="wikilink1" title="List all plugins with this tag">namespace</a>, <a href="/plugins?plugintag=rename#extension__table" class="wikilink1" title="List all plugins with this tag">rename</a></p></div><div class="authorInfo"><strong>By <a href="mailto:michael%20%5Bat%5D%20content%20%5Bdash%5D%20space%20%5Bdot%5D%20de" class="mail" title="michael [at] content [dash] space [dot] de">Michael Hamann</a></strong><ul><li><a href="/plugin:text" class="wikilink1" title="plugin:text" data-wiki-id="plugin:text">text</a></li> <li><a href="/plugin:searchtext" class="wikilink1" title="plugin:searchtext" data-wiki-id="plugin:searchtext">searchtext</a></li> <li><a href="/plugin:mp3play" class="wikilink1" title="plugin:mp3play" data-wiki-id="plugin:mp3play">mp3play</a></li> <li><a href="/plugin:osm" class="wikilink1" title="plugin:osm" data-wiki-id="plugin:osm">osm</a></li> <li><a href="/plugin:saveandedit" class="wikilink1" title="plugin:saveandedit" data-wiki-id="plugin:saveandedit">saveandedit</a></li> <li><a href="/plugin:variants" class="wikilink1" title="plugin:variants" data-wiki-id="plugin:variants">variants</a></li> <li><a href="/plugin:indextitleonly" class="wikilink1" title="plugin:indextitleonly" data-wiki-id="plugin:indextitleonly">indextitleonly</a></li> <li><a href="/plugin:yql" class="wikilink1" title="plugin:yql" data-wiki-id="plugin:yql">yql</a></li> <li><a href="/plugin:discussion" class="wikilink1" title="plugin:discussion" data-wiki-id="plugin:discussion">discussion</a></li> <li><a href="/plugin:extension" class="wikilink1" title="plugin:extension" data-wiki-id="plugin:extension">extension</a></li> </ul></div></div> <p> This plugin allows to move pages and namespaces including media files and automatically adjusts all links and media references that point to these pages. Unlike the old <a href="/plugin:pagemove" class="wikilink1" title="plugin:pagemove" data-wiki-id="plugin:pagemove">pagemove</a> plugin this plugin uses the DokuWiki parser which allows it to correctly identify all links and nothing else. </p> <p> Parts of this plugin, like some of the translated strings, some parts of the structure of the code and parts of the user interface have been taken from the old <a href="/plugin:pagemove" class="wikilink1" title="plugin:pagemove" data-wiki-id="plugin:pagemove">pagemove</a> plugin by Gary Owen, Arno Puschmann and Christoph Jähnigen. </p> </div> <div class="secedit editbutton_section editbutton_1"><form class="button btn_secedit" method="post" action="/plugin:move"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1715116636" /><input type="hidden" name="summary" value="[Move Plugin] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="move_plugin" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="1-1210" /><button type="submit" title="Move Plugin">Edit</button></div></form></div> <h2 class="sectionedit2" id="installation_and_precautions">Installation and Precautions</h2> <div class="level2"> <p> This plugin moves files inside your DokuWiki data directory and can automatically change a lot of pages. Even though the plugin has been successfully tested it is always possible that something doesn&#039;t work as expected in your case and your wiki might be left in an inconsistent state. This plugin is also still rather new and might behave incorrectly in certain cases. </p> <p> <strong>Please make a backup before using this plugin, especially if you plan to make larger changes!</strong> </p> <p> <strong>Warning</strong>: This plugin does not update <abbr title="Access Control List">ACL</abbr> rules. For example if you had an <abbr title="Access Control List">ACL</abbr> rule that read-protected a certain wiki page this rule won&#039;t have any effect anymore after moving that page. </p> <p> Search and install the plugin using the <a href="/plugin:extension" class="wikilink1" title="plugin:extension" data-wiki-id="plugin:extension">Extension Manager</a>. Refer to <a href="/plugins" class="wikilink1" title="plugins" data-wiki-id="plugins">Plugins</a> on how to install plugins manually. </p> <p> <img src="/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> <strong>When updating an existing installation of this plugin in DokuWiki versions older than Release Summer 2015 “Detritus” it might be necessary to de-install the old plugin version first and re-install the new version thereafter.</strong> Severe problems (e.g. inconsistent application menues with the old plugin screen combined with several unlogical [admin] buttons) have been observed after upating the plugin. For instance when originally installed on Dokuwiki release <em>2014-09-29 “Hrun”</em> and updated onto Dokuwiki release <em>2015-08-10 “Detritus”</em>. </p> <p> If, for any reason, you used an <abbr title="File Transfer Protocol">FTP</abbr> client to upload pages, you should “hit” (open) them in a browser to be sure the index is refreshed, otherwise the move plugins will fail to work on the page, or worse, forget to update link on those page. </p> </div> <div class="secedit editbutton_section editbutton_2"><form class="button btn_secedit" method="post" action="/plugin:move"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1715116636" /><input type="hidden" name="summary" value="[Installation and Precautions] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="installation_and_precautions" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="1211-2847" /><button type="submit" title="Installation and Precautions">Edit</button></div></form></div> <h2 class="sectionedit3" id="usage">Usage</h2> <div class="level2"> <p> Except for the single page rename, the plugin requires <a href="/config:manager" class="wikilink1" title="config:manager" data-wiki-id="config:manager">manager</a> privileges to use it. </p> </div> <div class="secedit editbutton_section editbutton_3"><form class="button btn_secedit" method="post" action="/plugin:move"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1715116636" /><input type="hidden" name="summary" value="[Usage] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="usage" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="2848-2971" /><button type="submit" title="Usage">Edit</button></div></form></div> <h3 class="sectionedit4" id="move_current_page_or_namespace">Move current page or namespace</h3> <div class="level3"> <p> <a href="/lib/exe/fetch.php?tok=48b58d&amp;media=https%3A%2F%2Fcloud.githubusercontent.com%2Fassets%2F86426%2F2829053%2F251df0a6-cf9e-11e3-88d7-76c991483538.png" class="media" title="https://cloud.githubusercontent.com/assets/86426/2829053/251df0a6-cf9e-11e3-88d7-76c991483538.png"><img src="/lib/exe/fetch.php?w=200&amp;tok=6c772d&amp;media=https%3A%2F%2Fcloud.githubusercontent.com%2Fassets%2F86426%2F2829053%2F251df0a6-cf9e-11e3-88d7-76c991483538.png" class="medialeft" loading="lazy" title="Screenshot" alt="Screenshot" width="200" /></a> </p> <p> This is the main part of the plugin. To use it navigate to the page (or page in namespace) you want to change, then open the Admin menu and select the Move plugin from the list of additional plugins. </p> <p> In the box switch between the current page or namespace and give a new location. Clicking start will preview your changes and you can start the move operation. To move a namespace with some pages in subspaces but none directly under the namespace, use the tree based move method. </p> </div> <div class="secedit editbutton_section editbutton_4"><form class="button btn_secedit" method="post" action="/plugin:move"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1715116636" /><input type="hidden" name="summary" value="[Move current page or namespace] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="move_current_page_or_namespace" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="2972-3614" /><button type="submit" title="Move current page or namespace">Edit</button></div></form></div> <h3 class="sectionedit5" id="tree_based_move">Tree based move</h3> <div class="level3"> <p> To plan more complicated restructuring of your wiki, the move plugin comes with a tree-based Move Manager. Open it by clicking on the link in the Move screen, pictured above. </p> <p> <a href="/lib/exe/fetch.php?tok=b2f911&amp;media=https%3A%2F%2Fcloud.githubusercontent.com%2Fassets%2F86426%2F2829055%2F2e6d9ba2-cf9e-11e3-8e8c-f8f43fff468f.png" class="media" title="https://cloud.githubusercontent.com/assets/86426/2829055/2e6d9ba2-cf9e-11e3-8e8c-f8f43fff468f.png"><img src="/lib/exe/fetch.php?tok=b2f911&amp;media=https%3A%2F%2Fcloud.githubusercontent.com%2Fassets%2F86426%2F2829055%2F2e6d9ba2-cf9e-11e3-8e8c-f8f43fff468f.png" class="medialeft" loading="lazy" title="Screenshot" alt="Screenshot" /></a> </p> <p> The Move Manager allows you to plan all moves and renames to be executed by drag&#039;n&#039;drop operations. Simply move pages, media files and namespaces to their desired locations until the tree represents the new layout you want to have. Starting from version 2017-01-07, multiple pages, media files or namespaces can be selected using checkboxes. When one of the selected items is moved, all selected items are moved to the target. The move fails (i.e., nothing is changed) if any of the selected items cannot be moved to the target (due to a naming conflict). </p> <p> As of version 2017-01-07, new namespaces can be created by clicking on the “+”-icon next to the root namespace. Newly created namespaces can then be moved to the desired target location and can also be renamed. Note that only namespaces which contain a page, media file or (non-empty) namespace will be saved. </p> </div> <div class="secedit editbutton_section editbutton_5"><form class="button btn_secedit" method="post" action="/plugin:move"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1715116636" /><input type="hidden" name="summary" value="[Tree based move] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="tree_based_move" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="3615-4800" /><button type="submit" title="Tree based move">Edit</button></div></form></div> <h3 class="sectionedit6" id="simple_page_rename">Simple Page Rename</h3> <div class="level3"> <p> <a href="/lib/exe/fetch.php?tok=35a325&amp;media=https%3A%2F%2Fcloud.githubusercontent.com%2Fassets%2F86426%2F2829067%2F4b7ad5a2-cf9e-11e3-98e8-f6de80ac7277.png" class="media" title="https://cloud.githubusercontent.com/assets/86426/2829067/4b7ad5a2-cf9e-11e3-98e8-f6de80ac7277.png"><img src="/lib/exe/fetch.php?w=150&amp;tok=a884b2&amp;media=https%3A%2F%2Fcloud.githubusercontent.com%2Fassets%2F86426%2F2829067%2F4b7ad5a2-cf9e-11e3-98e8-f6de80ac7277.png" class="medialeft" loading="lazy" title="Screenshot" alt="Screenshot" width="150" /></a> </p> <p> This feature is available to users and groups that have been configured through the <code>allowrename</code> option in the config manager. It is automatically available on all templates that implement the <code>TEMPLATE_PAGETOOLS_DISPLAY</code> event and can be disabled in the config manager. </p> <p> Users can simply rename (or move) the page they are currently on. </p> <p> <a href="/lib/exe/fetch.php?tok=433a23&amp;media=https%3A%2F%2Fcloud.githubusercontent.com%2Fassets%2F86426%2F2829070%2F4ec6c932-cf9e-11e3-8583-b046bd45c081.png" class="media" title="https://cloud.githubusercontent.com/assets/86426/2829070/4ec6c932-cf9e-11e3-8583-b046bd45c081.png"><img src="/lib/exe/fetch.php?w=250&amp;tok=68f674&amp;media=https%3A%2F%2Fcloud.githubusercontent.com%2Fassets%2F86426%2F2829070%2F4ec6c932-cf9e-11e3-8583-b046bd45c081.png" class="media" loading="lazy" title=" Screenshot" alt=" Screenshot" width="250" /></a> </p> </div> <div class="secedit editbutton_section editbutton_6"><form class="button btn_secedit" method="post" action="/plugin:move"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1715116636" /><input type="hidden" name="summary" value="[Simple Page Rename] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="simple_page_rename" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="4801-5412" /><button type="submit" title="Simple Page Rename">Edit</button></div></form></div> <h2 class="sectionedit7" id="support_for_other_plugins">Support for other plugins</h2> <div class="level2"> <p> The move plugin allows plugins to move their own data and to adapt their syntax when a page or media file is moved. Currently the following plugins support this: </p> <ul> <li class="level1"><div class="li"> <a href="/plugin:include" class="wikilink1" title="plugin:include" data-wiki-id="plugin:include">include</a></div> </li> <li class="level1"><div class="li"> <a href="/plugin:struct" class="wikilink1" title="plugin:struct" data-wiki-id="plugin:struct">struct</a></div> </li> <li class="level1"><div class="li"> <a href="/plugin:combo" class="wikilink1" title="plugin:combo" data-wiki-id="plugin:combo">combo</a></div> </li> </ul> <p> Plugins not explicitly stating their compatibility are most probably not adjusted. </p> </div> <div class="secedit editbutton_section editbutton_7"><form class="button btn_secedit" method="post" action="/plugin:move"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1715116636" /><input type="hidden" name="summary" value="[Support for other plugins] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="support_for_other_plugins" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="5413-5745" /><button type="submit" title="Support for other plugins">Edit</button></div></form></div> <h3 class="sectionedit8" id="for_plugin_authors">For plugin authors</h3> <div class="level3"> <p> The move plugin emits the following events: </p> <ul> <li class="level1 node"><div class="li"> <strong>PLUGIN_MOVE_PAGE_RENAME</strong></div> <ul> <li class="level2"><div class="li"> The before action is executed before a single page is moved, if the default action is prevented the move won&#039;t be executed (but it won&#039;t trigger an error/abort the move, <img src="/lib/images/smileys/fixme.svg" class="icon smiley" alt="FIXME" /> this should be changed)</div> </li> <li class="level2"><div class="li"> The after action is executed after the page has been moved. Plugins can use this in order to move their own data that is associated to the page <code>$ID</code> and it can add additional pages whose syntax needs to be adjusted because of this move.</div> </li> <li class="level2 node"><div class="li"> data is an array with the following keys:</div> <ul> <li class="level3"><div class="li"> <code>opts</code> ⇒ array – compatibility to old plugins, shouldn&#039;t be used</div> </li> <li class="level3"><div class="li"> <code>affected_pages</code> ⇒ array – page ids that are (possibly) affected by this move, initially populated from the <code>relation_references</code> metadata index. can be adjusted</div> </li> <li class="level3"><div class="li"> <code>src_id</code> ⇒ string – the original ID of the page</div> </li> <li class="level3"><div class="li"> <code>dst_id</code> ⇒ string – the new ID of the page</div> </li> </ul> </li> </ul> </li> <li class="level1 node"><div class="li"> <strong>PLUGIN_MOVE_MEDIA_RENAME</strong></div> <ul> <li class="level2"><div class="li"> Same as before, but for media files</div> </li> </ul> </li> <li class="level1 node"><div class="li"> <strong>PLUGIN_MOVE_HANDLERS_REGISTER</strong></div> <ul> <li class="level2 node"><div class="li"> This event is called when the page content shall be rewritten. This can either happen</div> <ul> <li class="level3"><div class="li"> if the page itself is moved, then you will get the new id and the page id will also be part of the moves or</div> </li> <li class="level3"><div class="li"> if other moves affect the page and the page is viewed for the first time.</div> </li> </ul> </li> <li class="level2"><div class="li"> Note that before moving the page itself it will be rewritten so it will never be that the page itself is moved while the links are adjusted.</div> </li> <li class="level2 node"><div class="li"> data:</div> <ul> <li class="level3"><div class="li"> <code>id</code> – the id of the page that shall be modified</div> </li> <li class="level3"><div class="li"> <code>moves</code> – the page moves that might affect the page</div> </li> <li class="level3"><div class="li"> <code>media_moves</code> – the media moves that might affect the page</div> </li> <li class="level3"><div class="li"> <code>handlers</code> – the array of handlers, see below for more information</div> </li> </ul> </li> <li class="level2 node"><div class="li"> Plugin handlers can be registered in the <code>$handlers</code> array, the key is the plugin name as it is given to the handler. The handler needs to be a valid callback, it will get the following parameters:</div> <ul> <li class="level4 node"><div class="li"> <code>$match</code>, <code>$state</code>, <code>$pos</code>, <code>$pluginname</code>, <code>$handler</code>. The first three parameters are equivalent to the parameters of the <code>handle()</code>-function of syntax plugins, <code>$pluginname</code> is just the plugin name again so handler functions that handle multiple plugins/plugin parts can distinguish for which the match is. The last parameter is the handler object. It has the following properties and functions that can be used:</div> <ul> <li class="level5"><div class="li"> <code>id</code>, <code>ns</code>: id and namespace of the old page</div> </li> <li class="level5"><div class="li"> <code>new_id</code>, <code>new_ns</code>: new id and namespace (can be identical to id and ns)</div> </li> <li class="level5"><div class="li"> <code>moves</code>: array of page moves, the same as <code>moves</code> in the event</div> </li> <li class="level5"><div class="li"> <code>media_moves</code>: array of media moves, the sames as <code>media_moves</code> in the event</div> </li> <li class="level5"><div class="li"> <code>adaptRelativeId($id)</code>: adapts the relative <code>$id</code> according to the moves</div> </li> </ul> </li> </ul> </li> </ul> </li> </ul> <p> Have a look at the <a href="/plugin:include" class="wikilink1" title="plugin:include" data-wiki-id="plugin:include">include</a> plugin for a relatively simple case of a plugin that handles page moves. These events might be subject to change though I&#039;ll try to keep them as compatible as possible. If you add your plugin to the list of supported plugins I&#039;ll have a look if I could break it before changing anything that might affect plugins. </p> <p> Feel free to open a bug report if your plugin needs additional support from the move plugin. </p> </div> <div class="secedit editbutton_section editbutton_8"><form class="button btn_secedit" method="post" action="/plugin:move"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1715116636" /><input type="hidden" name="summary" value="[For plugin authors] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="for_plugin_authors" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="5746-9055" /><button type="submit" title="For plugin authors">Edit</button></div></form></div> <h2 class="sectionedit9" id="technical_background">Technical Background</h2> <div class="level2"> <p> The move plugin uses the search index of DokuWiki to find pages that contain links to moved pages or media files and then uses DokuWiki&#039;s parser to identify all links to pages or media files in the affected pages and changes them if necessary. Whenever a page is modified, a new revision of the page is created (but changes are batched, so when you move many pages e.g. using the tree-based move manager you should still only see 1-2 new revisions per affected page). </p> <p> In contrast to a simple search and replace this can identify much more complex situations e.g. when a link is [[Foo Bar]] it will be found if the page foo_bar is moved and using DokuWiki&#039;s parser makes sure that e.g. code blocks or special plugin syntax is not modified. </p> <p> Plugins can also add support, so e.g. the syntax of the include plugin will also be adjusted accordingly. </p> <p> When using the admin interface to move whole namespaces or multiple pages and media files, an option to show a preview of the changes is available. You are encouraged to have a look at the preview to check that the plugin will do what you intended. Changes to individual pages can be easily reverted later using the builtin revert functionality of DokuWiki. </p> <p> Both pages and media files have a list of revisions and saved, old versions in attic/media_attic respectively. These files need to be moved, too. Pages also have other metadata. Further, the search index needs to be adjusted (e.g. by re-indexing the page at the new location). The move plugin takes care of all that when you rename or move a page or media file. </p> <p> Depending on the plugins you are using there might be additional data to be moved. Plugins can add support for moving their data when a page is moved using the move plugin, e.g. the struct plugin adapts its database when a page is moved. </p> <p> The plugin moves old revisions together with the page (and a new revision reflecting the move is added). In the recent changes, two changes are added, documenting both the deletion at the old name and the creation at the new name. As only one change per page is displayed in the recent changes, this means that older changes of the page won&#039;t be displayed in the recent changes, but can be seen on the page&#039;s individual “old revisions” view. </p> </div> <div class="secedit editbutton_section editbutton_9"><form class="button btn_secedit" method="post" action="/plugin:move"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1715116636" /><input type="hidden" name="summary" value="[Technical Background] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="technical_background" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="9056-11345" /><button type="submit" title="Technical Background">Edit</button></div></form></div> <h2 class="sectionedit10" id="troubleshooting">Troubleshooting</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> <a href="https://forum.dokuwiki.org/d/20927/6" class="urlextern" title="https://forum.dokuwiki.org/d/20927/6">Forum: DokuWiki repeatedly replaces text of internal link</a> (solved)</div> </li> </ul> </div> <div class="secedit editbutton_section editbutton_10"><form class="button btn_secedit" method="post" action="/plugin:move"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1715116636" /><input type="hidden" name="summary" value="[Troubleshooting] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="troubleshooting" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="11346-11487" /><button type="submit" title="Troubleshooting">Edit</button></div></form></div> <h2 class="sectionedit11" id="issues_and_feature_requests">Issues and feature requests</h2> <div class="level2"> <p> Please report bugs and feature requests in the <a href="https://github.com/michitux/dokuwiki-plugin-move/issues" class="urlextern" title="https://github.com/michitux/dokuwiki-plugin-move/issues">issue tracker</a>. </p> </div> <div class="secedit editbutton_section editbutton_11"><form class="button btn_secedit" method="post" action="/plugin:move"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1715116636" /><input type="hidden" name="summary" value="[Issues and feature requests] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="issues_and_feature_requests" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="11488-" /><button type="submit" title="Issues and feature requests">Edit</button></div></form></div> <!-- wikipage stop --> </div> <div class="docInfo"><bdi>plugin/move.txt</bdi> · Last modified: <time datetime="2024-05-07T23:17:16+0200">2024-05-07 23:17</time> by <bdi>michitux</bdi></div> <hr class="a11y" /> </div></main><!-- /content --> <!-- PAGE ACTIONS --> <nav id="dokuwiki__pagetools" aria-labelledby="dokuwiki__pagetools__heading"> <h3 class="a11y" id="dokuwiki__pagetools__heading">Page Tools</h3> <div class="tools"> <ul> <li class="edit"><a href="/plugin:move?do=edit" title="Edit this page [e]" rel="nofollow" accesskey="e"><span>Edit this page</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"/></svg></a></li><li class="revs"><a href="/plugin:move?do=revisions" title="Old revisions [o]" rel="nofollow" accesskey="o"><span>Old revisions</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M11 7v5.11l4.71 2.79.79-1.28-4-2.37V7m0-5C8.97 2 5.91 3.92 4.27 6.77L2 4.5V11h6.5L5.75 8.25C6.96 5.73 9.5 4 12.5 4a7.5 7.5 0 0 1 7.5 7.5 7.5 7.5 0 0 1-7.5 7.5c-3.27 0-6.03-2.09-7.06-5h-2.1c1.1 4.03 4.77 7 9.16 7 5.24 0 9.5-4.25 9.5-9.5A9.5 9.5 0 0 0 12.5 2z"/></svg></a></li><li class="backlink"><a href="/plugin:move?do=backlink" title="Backlinks" rel="nofollow"><span>Backlinks</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M10.59 13.41c.41.39.41 1.03 0 1.42-.39.39-1.03.39-1.42 0a5.003 5.003 0 0 1 0-7.07l3.54-3.54a5.003 5.003 0 0 1 7.07 0 5.003 5.003 0 0 1 0 7.07l-1.49 1.49c.01-.82-.12-1.64-.4-2.42l.47-.48a2.982 2.982 0 0 0 0-4.24 2.982 2.982 0 0 0-4.24 0l-3.53 3.53a2.982 2.982 0 0 0 0 4.24m2.82-4.24c.39-.39 1.03-.39 1.42 0a5.003 5.003 0 0 1 0 7.07l-3.54 3.54a5.003 5.003 0 0 1-7.07 0 5.003 5.003 0 0 1 0-7.07l1.49-1.49c-.01.82.12 1.64.4 2.43l-.47.47a2.982 2.982 0 0 0 0 4.24 2.982 2.982 0 0 0 4.24 0l3.53-3.53a2.982 2.982 0 0 0 0-4.24.973.973 0 0 1 0-1.42z"/></svg></a></li><li class="top"><a href="#dokuwiki__top" title="Back to top [t]" rel="nofollow" accesskey="t"><span>Back to top</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"/></svg></a></li> </ul> </div> </nav> </div><!-- /wrapper --> <!-- ********** FOOTER ********** --> <footer id="dokuwiki__footer"><div class="pad"> <div class="license">Except where otherwise noted, content on this wiki is licensed under the following license: <bdi><a href="https://creativecommons.org/licenses/by-sa/4.0/deed.en" rel="license" class="urlextern">CC Attribution-Share Alike 4.0 International</a></bdi></div> <div class="buttons"> <a href="https://creativecommons.org/licenses/by-sa/4.0/deed.en" rel="license"><img src="/lib/images/license/button/cc-by-sa.png" alt="CC Attribution-Share Alike 4.0 International" /></a> <a href="https://www.dokuwiki.org/donate" title="Donate" ><img src="/lib/tpl/dokuwiki/images/button-donate.gif" width="80" height="15" alt="Donate" /></a> <a href="https://php.net" title="Powered by PHP" ><img src="/lib/tpl/dokuwiki/images/button-php.gif" width="80" height="15" alt="Powered by PHP" /></a> <a href="//validator.w3.org/check/referer" title="Valid HTML5" ><img src="/lib/tpl/dokuwiki/images/button-html5.png" width="80" height="15" alt="Valid HTML5" /></a> <a href="//jigsaw.w3.org/css-validator/check/referer?profile=css3" title="Valid CSS" ><img src="/lib/tpl/dokuwiki/images/button-css.png" width="80" height="15" alt="Valid CSS" /></a> <a href="https://dokuwiki.org/" title="Driven by DokuWiki" ><img src="/lib/tpl/dokuwiki/images/button-dw.png" width="80" height="15" alt="Driven by DokuWiki" /></a> </div> <div style="margin-top: 2em; font-size:90%" class="dokuwiki"><div style="float:right"><a href="http://www.splitbrain.org/personal#imprint" style="float:right; text-decoration: none; color:#333">Imprint</a></div></div><!-- Include for DokuWiki site wide top bar --> <style type="text/css"> @media screen { body { padding-top: 30px; } #global__header { position: absolute; top: 0; left: 0; text-align: left; vertical-align: middle; line-height: 1.5; background-color: #333; box-shadow: 0 0 8px rgba(0,0,0,0.5); width: 100%; margin: 0; padding: 5px 20px; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; white-space: nowrap; overflow: hidden; } #global__header h2 { position: absolute; left: -99999em; top: 0; overflow: hidden; display: inline; } #global__header ul, #global__header li { margin: 0; padding: 0; list-style: none; display: inline; line-height: 1.5; } #global__header a { color: #bbb; text-decoration: none; margin-right: 20px; font-size: 14px; font-weight: normal; } #global__header a:hover, #global__header a:active, #global__header a:focus { color: #fff; text-decoration: underline; } #global__header form { float: right; margin: 0 0 0 20px; } #global__header input { background-color: #333; background-image: none; border: 1px solid #bbb; color: #fff; box-shadow: none; border-radius: 2px; margin: 0; line-height: normal; padding: 1px 0 1px 0; height: auto; } #global__header input.button { border: none; color: #bbb; } #global__header input.button:hover, #global__header input.button:active, #global__header input.button:focus { color: #fff; text-decoration: underline; } } /* /@media */ @media only screen and (min-width: 601px) { /* changes specific for www.dokuwiki.org */ #dokuwiki__header { padding-top: 3em; } #dokuwiki__usertools { top: 3em; } /* changes specific for bugs.dokuwiki.org */ div#container div#showtask { top: 40px; } } /* /@media */ @media only screen and (max-width: 600px) { body { padding-top: 0; } #global__header { position: static; white-space: normal; overflow: auto; } #global__header form { float: none; display: block; margin: 0 0 .4em; } } /* /@media */ @media print { #global__header { display: none; } } /* /@media */ </style> <div id="global__header"> <h2>Global DokuWiki Links</h2> <form method="get" action="https://search.dokuwiki.org/" target="_top"> <input type="text" name="q" title="Search all DokuWiki sites at once" class="input" /> <input type="submit" title="Search all DokuWiki sites at once" value="Search" class="button" /> </form> <ul> <li><a href="https://download.dokuwiki.org" title="Download the latest release" target="_top">Download</a></li> <li><a href="https://www.dokuwiki.org" title="Read the DokuWiki documentation" target="_top">Wiki</a></li> <li><a href="https://forum.dokuwiki.org" title="Ask questions in the DokuWiki forum" target="_top">Forum</a></li> <li><a href="https://irc.dokuwiki.org" title="Check IRC chat logs or join the chat" target="_top">IRC</a></li> <li><a href="https://github.com/splitbrain/dokuwiki/issues" title="Report and track bugs" target="_top">Bugs</a></li> <li><a href="https://translate.dokuwiki.org/" title="Help translating the DokuWiki interface" target="_top">Translate</a></li> <li><a href="https://github.com/splitbrain/dokuwiki" title="Access the most recent git commits" target="_top">Git</a></li> <li><a href="https://xref.dokuwiki.org/reference/dokuwiki/" title="Cross-Reference of the DokuWiki source code" target="_top">XRef</a></li> <li><a href="https://codesearch.dokuwiki.org/" title="Search through the sources of DokuWiki, plugins and templates" target="_top">Code Search</a></li> </ul> </div> <!-- end of DokuWiki top bar include --> </div></footer><!-- /footer --> </div></div><!-- /site --> <div class="no"><img src="/lib/exe/taskrunner.php?id=plugin%3Amove&amp;1742513519" width="2" height="1" alt="" /></div> <div id="screen__mode" class="no"></div></body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10