CINXE.COM
plugin:farmer [DokuWiki]
<!DOCTYPE html> <html lang="en" dir="ltr" class="no-js"> <head> <meta charset="utf-8" /> <title>plugin:farmer [DokuWiki]</title> <meta name="generator" content="DokuWiki"/> <meta name="theme-color" content="#008800"/> <meta name="robots" content="index,follow"/> <meta name="keywords" content="plugin,farmer"/> <link rel="search" type="application/opensearchdescription+xml" href="/lib/exe/opensearch.php" title="DokuWiki"/> <link rel="start" href="/"/> <link rel="contents" href="/plugin:farmer?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&ns=plugin"/> <link rel="edit" title="Edit this page" href="/plugin:farmer?do=edit"/> <link rel="alternate" type="text/html" title="Plain HTML" href="/_export/xhtml/plugin:farmer"/> <link rel="alternate" type="text/plain" title="Wiki Markup" href="/_export/raw/plugin:farmer"/> <link rel="canonical" href="https://www.dokuwiki.org/plugin:farmer"/> <link rel="stylesheet" href="/lib/exe/css.php?t=dokuwiki&tseed=f1005bad3d81fc9c803c7f93d32a390e"/> <script >var NS='plugin';var JSINFO = {"plugins":{"edittable":{"default columnwidth":""}},"id":"plugin:farmer","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&tseed=f1005bad3d81fc9c803c7f93d32a390e&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:farmer?do=login&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:farmer" /><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:farmer" /><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">></button></div></form> </div> <ul> <li class="action recent"><a href="/plugin:farmer?do=recent" title="Recent Changes [r]" rel="nofollow" accesskey="r">Recent Changes</a></li><li class="action media"><a href="/plugin:farmer?do=media&ns=plugin" title="Media Manager" rel="nofollow">Media Manager</a></li><li class="action index"><a href="/plugin:farmer?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:farmer" class="breadcrumbs" title="plugin:farmer">farmer</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> & <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> & <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:farmer</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="#farmer_plugin">Farmer Plugin</a></div> <ul class="toc"> <li class="level2"><div class="li"><a href="#installation">Installation</a></div></li> <li class="level2"><div class="li"><a href="#features">Features</a></div></li> <li class="level2"><div class="li"><a href="#glossary">Glossary</a></div> <ul class="toc"> <li class="level3"><div class="li"><a href="#farmer">Farmer</a></div></li> <li class="level3"><div class="li"><a href="#animal">Animal</a></div></li> <li class="level3"><div class="li"><a href="#inheritance">Inheritance</a></div></li> </ul> </li> <li class="level2"><div class="li"><a href="#farm_setup">Farm Setup</a></div> <ul class="toc"> <li class="level3"><div class="li"><a href="#converting_a_manual_farm">Converting a manual Farm</a></div></li> </ul> </li> <li class="level2"><div class="li"><a href="#configuration">Configuration</a></div></li> <li class="level2"><div class="li"><a href="#usage">Usage</a></div></li> <li class="level2"><div class="li"><a href="#remote_api">Remote API</a></div></li> <li class="level2"><div class="li"><a href="#screenshots">Screenshots</a></div></li> <li class="level2"><div class="li"><a href="#development">Development</a></div></li> </ul></li> </ul> </div> </div> <!-- TOC END --> <h1 class="sectionedit1" id="farmer_plugin">Farmer 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="">2024-02-06 "Kaos" <strong><span>unknown</span></strong></li><li class="yes">2023-04-04 "Jack Jackrum" <strong><span>yes</span></strong></li><li class="yes">2022-07-31 "Igor" <strong><span>yes</span></strong></li><li class="yes">2020-07-29 "Hogfather" <strong><span>yes</span></strong></li></ul></div></div><ul class="actions"><li><a class="download" href="https://github.com/cosmocode/dokuwiki-plugin-farmer/zipball/master">Download</a></li><li><a class="bugs" href="https://github.com/cosmocode/dokuwiki-plugin-farmer/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> Easier creation and maintenance of animals in a dokuwiki farm</p><a href="/_media/plugin:farmer:03_create.png" class="media screenshot" title="Screenshot of farmer" rel="lightbox" data-url="/_media/plugin:farmer:03_create.png"><img src="/_media/plugin:farmer:03_create.png?w=220&tok=5ce209" alt="" width="220" /></a></div><div class="metaInfo"><dl><dt>Last updated on</dt><dd>2024-11-12</dd><dt>Provides</dt><dd><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/cosmocode/dokuwiki-plugin-farmer">Source</a></dd></dl></div><div class="moreInfo"><p class="similar">Similar to <a href="/plugin:farm" class="wikilink1" title="plugin:farm" data-wiki-id="plugin:farm">farm</a></p><p class="tags">Tagged with <a href="/plugins?plugintag=farm#extension__table" class="wikilink1" title="List all plugins with this tag">farm</a></p><p class="needed">Needed for <a href="/plugin:farmsync" class="wikilink1" title="plugin:farmsync" data-wiki-id="plugin:farmsync">farmsync</a></p></div><div class="authorInfo"><strong>By <a href="mailto:dokuwiki%20%5Bat%5D%20cosmocode%20%5Bdot%5D%20de" class="mail" title="dokuwiki [at] cosmocode [dot] de">Michael Große, Andreas Gohr</a></strong><ul><li><a href="/plugin:csv" class="wikilink1" title="plugin:csv" data-wiki-id="plugin:csv">csv</a></li> <li><a href="/plugin:clearhistory" class="wikilink1" title="plugin:clearhistory" data-wiki-id="plugin:clearhistory">clearhistory</a></li> <li><a href="/plugin:preview" class="wikilink1" title="plugin:preview" data-wiki-id="plugin:preview">preview</a></li> <li><a href="/plugin:explain" class="wikilink1" title="plugin:explain" data-wiki-id="plugin:explain">explain</a></li> <li><a href="/plugin:logstats" class="wikilink1" title="plugin:logstats" data-wiki-id="plugin:logstats">logstats</a></li> <li><a href="/plugin:oiddelegate" class="wikilink1" title="plugin:oiddelegate" data-wiki-id="plugin:oiddelegate">oiddelegate</a></li> <li><a href="/plugin:labeled" class="wikilink1" title="plugin:labeled" data-wiki-id="plugin:labeled">labeled</a></li> <li><a href="/plugin:slider" class="wikilink1" title="plugin:slider" data-wiki-id="plugin:slider">slider</a></li> <li><a href="/plugin:groupusers" class="wikilink1" title="plugin:groupusers" data-wiki-id="plugin:groupusers">groupusers</a></li> <li><a href="/plugin:navi" class="wikilink1" title="plugin:navi" data-wiki-id="plugin:navi">navi</a></li> <li>and 126 more</li></ul></div></div> <p> This plugin allows you to set up a “DokuWiki Farm” – a single DokuWiki installation that can be used for many different Wikis (“animals”) sharing the same code base but having different content. The plugin is similar to what's described in <a href="/farms" class="wikilink1" title="farms" data-wiki-id="farms">DokuWiki Farms</a> but offers more features and sometimes takes a slightly more opinionated approach<sup><a href="#fn__1" id="fnt__1" class="fn_top">1)</a></sup>. </p> <p> <a href="https://www.cosmocode.de/en/open-source/dokuwiki-plugins/" class="media" title="https://www.cosmocode.de/en/open-source/dokuwiki-plugins/"><img src="/lib/exe/fetch.php?cache=recache&tok=a307b5&media=https%3A%2F%2Fwww.cosmocode.de%2Fstatic%2Fimg%2Fdokuwiki%2Fdwplugins.png" class="mediaright" loading="lazy" title="A CosmoCode Plugin" alt="A CosmoCode Plugin" /></a> </p> </div> <div class="secedit editbutton_section editbutton_1"><form class="button btn_secedit" method="post" action="/plugin:farmer"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1731451857" /><input type="hidden" name="summary" value="[Farmer Plugin] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="farmer_plugin" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="1-1302" /><button type="submit" title="Farmer Plugin">Edit</button></div></form></div> <h2 class="sectionedit2" id="installation">Installation</h2> <div class="level2"> <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> </div> <div class="secedit editbutton_section editbutton_2"><form class="button btn_secedit" method="post" action="/plugin:farmer"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1731451857" /><input type="hidden" name="summary" value="[Installation] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="installation" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="1303-1467" /><button type="submit" title="Installation">Edit</button></div></form></div> <h2 class="sectionedit3" id="features">Features</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> setup the farm</div> </li> <li class="level1"><div class="li"> create or delete animals</div> </li> <li class="level1"><div class="li"> copy data from other animals on creation</div> </li> <li class="level1"><div class="li"> manage animal plugins</div> </li> <li class="level1"><div class="li"> let animals inherit settings from the farmer</div> </li> <li class="level1"><div class="li"> automatically generate a logo and favicon for new animals</div> </li> <li class="level1"><div class="li"> list existing animals</div> </li> <li class="level1"><div class="li"> handle unknown animals</div> </li> </ul> </div> <div class="secedit editbutton_section editbutton_3"><form class="button btn_secedit" method="post" action="/plugin:farmer"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1731451857" /><input type="hidden" name="summary" value="[Features] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="features" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="1468-1773" /><button type="submit" title="Features">Edit</button></div></form></div> <h2 class="sectionedit4" id="glossary">Glossary</h2> <div class="level2"> <p> A farm setup is recommended for experienced Wiki administrators only. This plugin makes things easier, but a general idea of what you're doing is helpful. Best read <a href="/farms" class="wikilink1" title="farms" data-wiki-id="farms">DokuWiki Farms</a> on how farms are usually set up manually first to understand what this plugin does in the setup phase. </p> </div> <div class="secedit editbutton_section editbutton_4"><form class="button btn_secedit" method="post" action="/plugin:farmer"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1731451857" /><input type="hidden" name="summary" value="[Glossary] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="glossary" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="1774-2090" /><button type="submit" title="Glossary">Edit</button></div></form></div> <h3 class="sectionedit5" id="farmer">Farmer</h3> <div class="level3"> <p> The Farmer is the “main” wiki. It is a normal DokuWiki installation containing all the PHP code that makes DokuWiki. It also contains all Plugins and Templates you may want to use in the animals. </p> <p> The Farmer is where you configure the whole farm setup (using the farmer plugin). Animals can inherit settings from the farmer. New animals are created from here. </p> <p> The Farmer is a completely functional wiki. You can use it for it's own content, though generally it's recommended to keep the farmer mostly empty and have animals for each topic. </p> <p> The Farmer is the only wiki you need to upgrade and the only wiki where you install and upgrade plugins and templates in. </p> </div> <div class="secedit editbutton_section editbutton_5"><form class="button btn_secedit" method="post" action="/plugin:farmer"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1731451857" /><input type="hidden" name="summary" value="[Farmer] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="farmer" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="2091-2773" /><button type="submit" title="Farmer">Edit</button></div></form></div> <h3 class="sectionedit6" id="animal">Animal</h3> <div class="level3"> <p> A farm setup can have as many Animals as you wish. Each behaves like a real DokuWiki installation with it's own content and media data. It can inherit settings and users from the Farmer or have it's own unique configuration. </p> <p> You can not install Templates or Plugins in an Animal – that's done in the Farmer only. But you can have different Templates and Plugins activated for different Animals. </p> <p> There are two ways to access an animal: </p> </div> <h4 id="rewrite-based">Rewrite-Based</h4> <div class="level4"> <p> This is the poor man's version of farming. All animals are accessible under the same domain as the farmer, identified by a !parameter in the <abbr title="Uniform Resource Locator">URL</abbr>. </p> <p> For example, if your farmer is available on <code>http://yourdomain.com/dokukwiki/</code>, an animal called <code>foo</code> would be accessible under <code>http://yourdomain.com/dokukwiki/!foo/</code>. </p> <p> To have this working certain rewrite rules have to be set up. The farmer plugin offers to create these rules in your <code>.htaccess</code> file for you (requires an Apache webserver). </p> <p> The !bang <abbr title="Uniform Resource Locator">URL</abbr> is a restriction of the farmer plugin - manual farms offer more flexibility here. </p> </div> <h4 id="sub-_-domain-based">(Sub-)-Domain-Based</h4> <div class="level4"> <p> This is the cooler method, but requires a certain setup in your <abbr title="Domain Name System">DNS</abbr>. Animals are recognized by the domain name. That could be a full qualified domain or a subdomain. To make this work, the domain's web root has to point to the directory the farmer is installed in. </p> <p> So if your farmer is available on <code>http://yourdomain.com/</code>, an animal could be accessible under <code>http://foo.yourdomain.com/</code> or even <code>http://www.thefoo.wiki/</code>. </p> <p> Setting up a wildcard sub domain in your <abbr title="Domain Name System">DNS</abbr> makes it easy to create new animals with a button click using the farmer plugin. </p> <p> If you don't understand this section at all, it's probably not for you <img src="/lib/images/smileys/wink.svg" class="icon smiley" alt=";-)" />. </p> </div> <div class="secedit editbutton_section editbutton_6"><form class="button btn_secedit" method="post" action="/plugin:farmer"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1731451857" /><input type="hidden" name="summary" value="[Animal] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="animal" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="2774-4537" /><button type="submit" title="Animal">Edit</button></div></form></div> <h3 class="sectionedit7" id="inheritance">Inheritance</h3> <div class="level3"> <p> One cool feature of the farmer plugin is that it manages how animals load their configuration info allowing you to set up inheritance. This means you can configure the default of all animals centrally in the farmer. Eg. you could configure to use a certain template in the farmer and all animals would automatically use the same template. </p> <p> Of course each animal can then overwrite these configurations in their own settings. </p> </div> <div class="secedit editbutton_section editbutton_7"><form class="button btn_secedit" method="post" action="/plugin:farmer"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1731451857" /><input type="hidden" name="summary" value="[Inheritance] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="inheritance" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="4538-4986" /><button type="submit" title="Inheritance">Edit</button></div></form></div> <h2 class="sectionedit8" id="farm_setup">Farm Setup</h2> <div class="level2"> <p> Once installed, you'll find a new “Farming” entry in the <a href="/admin_window" class="wikilink1" title="admin_window" data-wiki-id="admin_window">Admin window</a>. When a farm hasn't been set up yet, the Farm Setup dialog will occur automatically. It allows you to specify where your animals should be stored. Completing this setup will make your Wiki the Farmer. </p> <p> The setup can also modify your .htaccess to use rewrite based farms. </p> </div> <div class="secedit editbutton_section editbutton_8"><form class="button btn_secedit" method="post" action="/plugin:farmer"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1731451857" /><input type="hidden" name="summary" value="[Farm Setup] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="farm_setup" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="4987-5370" /><button type="submit" title="Farm Setup">Edit</button></div></form></div> <h3 class="sectionedit9" id="converting_a_manual_farm">Converting a manual Farm</h3> <div class="level3"> <p> If you're already running a manual farm, you have to jump a little hoop. </p> <p> First make sure your inc/preload.php does not contain anything that's unrelated to farming - if it does, backup those parts and readd them later. </p> <p> Next give an empty/non-existing directory as the animal part and complete the setup. When done, edit the newly created <code>conf/farm.ini</code> in your Farmer and point <code>farmdir</code> to where your old animals reside. </p> <p> From that point on your farm should be up and running again. You might want to manually clean up your animal directories and make use of the inheritance feature for most settings. </p> </div> <div class="secedit editbutton_section editbutton_9"><form class="button btn_secedit" method="post" action="/plugin:farmer"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1731451857" /><input type="hidden" name="summary" value="[Converting a manual Farm] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="converting_a_manual_farm" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="5371-6017" /><button type="submit" title="Converting a manual Farm">Edit</button></div></form></div> <h2 class="sectionedit10" id="configuration">Configuration</h2> <div class="level2"> <p> The configuration tab of the farmer plugin allows you to setup some basic info and what settings should be inherited from the farmer. The integrated help text should get you started there. </p> </div> <div class="secedit editbutton_section editbutton_10"><form class="button btn_secedit" method="post" action="/plugin:farmer"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1731451857" /><input type="hidden" name="summary" value="[Configuration] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="configuration" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="6018-6234" /><button type="submit" title="Configuration">Edit</button></div></form></div> <h2 class="sectionedit11" id="usage">Usage</h2> <div class="level2"> <p> Additional tabs in the farmer plugin allow you to: </p> <ul> <li class="level1"><div class="li"> create new animals – including the option to copy data from one animal to another (so you could have template animals)</div> </li> <li class="level1"><div class="li"> configure plugins for animals – animal administrators are not able to install or enable plugins, this has to be done by the Farmer admin</div> </li> <li class="level1"><div class="li"> delete animals</div> </li> </ul> </div> <div class="secedit editbutton_section editbutton_11"><form class="button btn_secedit" method="post" action="/plugin:farmer"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1731451857" /><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="6235-6591" /><button type="submit" title="Usage">Edit</button></div></form></div> <h2 class="sectionedit12" id="remote_api">Remote API</h2> <div class="level2"> <p> The plugin provides a few endpoints via the <a href="/devel:remote_api" class="wikilink1" title="devel:remote_api" data-wiki-id="devel:remote_api">Remote API</a> to inspect the farm configuration and available animals. This can be used to auto-setup reverse proxy routes or Kubernetes ingress. Check the <abbr title="Application Programming Interface">API</abbr> explorer for details on the available endpoints. </p> </div> <div class="secedit editbutton_section editbutton_12"><form class="button btn_secedit" method="post" action="/plugin:farmer"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1731451857" /><input type="hidden" name="summary" value="[Remote API] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="remote_api" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="6592-6887" /><button type="submit" title="Remote API">Edit</button></div></form></div> <h2 class="sectionedit13" id="screenshots">Screenshots</h2> <div class="level2"> <div id="plugin__gallery_d001" class="plugin-gallery align-full"><div class="gallery-page" id="gallery__d001_0" style="grid-template-columns: repeat(3, 1fr)"><figure class="gallery-image"><a href="/_media/plugin:farmer:01_info.png" title="01 Info" data-caption="<b>01 Info</b>" class="lightbox JSnocheck" rel="lightbox[gal-126b2d842f547af4833553a2572d]" data-url="/_media/plugin:farmer:01_info.png?w=923&h=1200&tok=74eec3"><img width="180" height="240" src="/_media/plugin:farmer:01_info.png?w=180&h=240&tok=5289d7" alt="01_info.png" loading="lazy" /></a></figure><figure class="gallery-image"><a href="/_media/plugin:farmer:02_config.png" title="02 Config" data-caption="<b>02 Config</b>" class="lightbox JSnocheck" rel="lightbox[gal-126b2d842f547af4833553a2572d]" data-url="/_media/plugin:farmer:02_config.png?w=836&h=1200&tok=5105a7"><img width="180" height="240" src="/_media/plugin:farmer:02_config.png?w=180&h=240&tok=fc02fd" alt="02_config.png" loading="lazy" /></a></figure><figure class="gallery-image"><a href="/_media/plugin:farmer:03_create.png" title="03 Create" data-caption="<b>03 Create</b>" class="lightbox JSnocheck" rel="lightbox[gal-126b2d842f547af4833553a2572d]" data-url="/_media/plugin:farmer:03_create.png?w=849&h=1200&tok=eb7702"><img width="180" height="240" src="/_media/plugin:farmer:03_create.png?w=180&h=240&tok=20e863" alt="03_create.png" loading="lazy" /></a></figure><figure class="gallery-image"><a href="/_media/plugin:farmer:04_plugins.png" title="04 Plugins" data-caption="<b>04 Plugins</b>" class="lightbox JSnocheck" rel="lightbox[gal-126b2d842f547af4833553a2572d]" data-url="/_media/plugin:farmer:04_plugins.png"><img width="180" height="240" src="/_media/plugin:farmer:04_plugins.png?w=180&h=240&tok=53ad06" alt="04_plugins.png" loading="lazy" /></a></figure><figure class="gallery-image"><a href="/_media/plugin:farmer:05_delete.png" title="05 Delete" data-caption="<b>05 Delete</b>" class="lightbox JSnocheck" rel="lightbox[gal-126b2d842f547af4833553a2572d]" data-url="/_media/plugin:farmer:05_delete.png"><img width="180" height="240" src="/_media/plugin:farmer:05_delete.png?w=180&h=240&tok=a41d8b" alt="05_delete.png" loading="lazy" /></a></figure></div></div> </div> <div class="secedit editbutton_section editbutton_13"><form class="button btn_secedit" method="post" action="/plugin:farmer"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1731451857" /><input type="hidden" name="summary" value="[Screenshots] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="screenshots" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="6888-6961" /><button type="submit" title="Screenshots">Edit</button></div></form></div> <h2 class="sectionedit14" id="development">Development</h2> <div class="level2"> </div> <h4 id="change_log">Change Log</h4> <div class="level4"> <ul class="rss"><li><div class="li"><a href="https://github.com/cosmocode/dokuwiki-plugin-farmer/commit/197a8fc649267f81177af07b0f4a1564ce3decbc" class="urlextern" title="https://github.com/cosmocode/dokuwiki-plugin-farmer/commit/197a8fc649267f81177af07b0f4a1564ce3decbc">Version upped</a> (2024-11-12 23:50)</div></li><li><div class="li"><a href="https://github.com/cosmocode/dokuwiki-plugin-farmer/commit/9707bb503d893a905512f1aa63cb256a2aee66ce" class="urlextern" title="https://github.com/cosmocode/dokuwiki-plugin-farmer/commit/9707bb503d893a905512f1aa63cb256a2aee66ce">Merge pull request #83 from kossmac/master</a> (2024-11-12 20:13)</div></li><li><div class="li"><a href="https://github.com/cosmocode/dokuwiki-plugin-farmer/commit/760fd51ab0b0a5f7cabaedb65a536b245514ae87" class="urlextern" title="https://github.com/cosmocode/dokuwiki-plugin-farmer/commit/760fd51ab0b0a5f7cabaedb65a536b245514ae87">limit remote access to superuser</a> (2024-11-12 20:08)</div></li><li><div class="li"><a href="https://github.com/cosmocode/dokuwiki-plugin-farmer/commit/fab4b5150c00b907c981a36b6ad56e7b4a58aea0" class="urlextern" title="https://github.com/cosmocode/dokuwiki-plugin-farmer/commit/fab4b5150c00b907c981a36b6ad56e7b4a58aea0">return animals as list</a> (2024-11-12 13:42)</div></li><li><div class="li"><a href="https://github.com/cosmocode/dokuwiki-plugin-farmer/commit/7a001063b70ed5fc71ed264f34a36ba8f7d7d3a4" class="urlextern" title="https://github.com/cosmocode/dokuwiki-plugin-farmer/commit/7a001063b70ed5fc71ed264f34a36ba8f7d7d3a4">add function to get entire farm config with one rpc request</a> (2024-11-11 19:49)</div></li><li><div class="li"><a href="https://github.com/cosmocode/dokuwiki-plugin-farmer/commit/107b329db3411678bd8cfaafd4a6b07c4c60e833" class="urlextern" title="https://github.com/cosmocode/dokuwiki-plugin-farmer/commit/107b329db3411678bd8cfaafd4a6b07c4c60e833">add doc blocks</a> (2024-11-11 19:48)</div></li><li><div class="li"><a href="https://github.com/cosmocode/dokuwiki-plugin-farmer/commit/6180f6b653062d5852cd15b64c6e77c892d1ae90" class="urlextern" title="https://github.com/cosmocode/dokuwiki-plugin-farmer/commit/6180f6b653062d5852cd15b64c6e77c892d1ae90">add initial remote capabilty</a> (2024-11-11 14:44)</div></li><li><div class="li"><a href="https://github.com/cosmocode/dokuwiki-plugin-farmer/commit/6beadf022895532f0fc6cd43981d647f005737a3" class="urlextern" title="https://github.com/cosmocode/dokuwiki-plugin-farmer/commit/6beadf022895532f0fc6cd43981d647f005737a3">Version upped</a> (2024-04-16 23:50)</div></li></ul> </div> <h4 id="known_bugs_and_issues">Known Bugs and Issues</h4> <div class="level4"> <p> Please report bugs and issues at: <a href="https://github.com/cosmocode/dokuwiki-plugin-farmer/issues" class="urlextern" title="https://github.com/cosmocode/dokuwiki-plugin-farmer/issues">https://github.com/cosmocode/dokuwiki-plugin-farmer/issues</a> </p> </div> <div class="secedit editbutton_section editbutton_14"><form class="button btn_secedit" method="post" action="/plugin:farmer"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1731451857" /><input type="hidden" name="summary" value="[Development] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="development" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="6962-" /><button type="submit" title="Development">Edit</button></div></form></div><div class="footnotes"> <div class="fn"><sup><a href="#fnt__1" id="fn__1" class="fn_bot">1)</a></sup> <div class="content">it does not use <code>inc/farm.php</code> but manages the farming on it's own</div></div> </div> <!-- wikipage stop --> </div> <div class="docInfo"><bdi>plugin/farmer.txt</bdi> · Last modified: <time datetime="2024-11-12T23:50:57+0100">2024-11-12 23:50</time> by <bdi>andi</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:farmer?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:farmer?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:farmer?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%3Afarmer&1742533954" width="2" height="1" alt="" /></div> <div id="screen__mode" class="no"></div></body> </html>