189e2f9d1SAndreas Gohr<?php 289e2f9d1SAndreas Gohrrequire __DIR__ . '/../vendor/autoload.php'; 389e2f9d1SAndreas Gohr 489e2f9d1SAndreas Gohr$WIZ = new dokuwiki\plugin\dev\www\PluginWizard(); 589e2f9d1SAndreas Gohrtry { 689e2f9d1SAndreas Gohr $archive = $WIZ->handle(); 789e2f9d1SAndreas Gohr if ($archive) { 889e2f9d1SAndreas Gohr header('Content-Type: application/zip'); 989e2f9d1SAndreas Gohr header('Content-Disposition: attachment; filename="plugin.zip"'); 1089e2f9d1SAndreas Gohr echo $archive; 1189e2f9d1SAndreas Gohr exit; 1289e2f9d1SAndreas Gohr } 13cde324c2SAndreas Gohr} catch (Exception $ignored) { 14cde324c2SAndreas Gohr // errors should only happen when the frontend validation is ignored 1589e2f9d1SAndreas Gohr} 1689e2f9d1SAndreas Gohr 1789e2f9d1SAndreas Gohrheader('Content-Type: text/html; charset=utf-8'); 1889e2f9d1SAndreas Gohr?> 1989e2f9d1SAndreas Gohr<html lang="en"> 2089e2f9d1SAndreas Gohr<head> 2189e2f9d1SAndreas Gohr <title>DokuWiki Plugin Wizard</title> 2289e2f9d1SAndreas Gohr <script type="text/javascript"> 23*c2c589bcSAndreas Gohr const ACTION_EVENTS = <?php echo json_encode($WIZ->getEvents(), JSON_THROW_ON_ERROR); ?>; 2489e2f9d1SAndreas Gohr </script> 2589e2f9d1SAndreas Gohr 2689e2f9d1SAndreas Gohr <link rel="stylesheet" href="style.css"/> 27cde324c2SAndreas Gohr <link rel="stylesheet" href="awesomplete.css" 28cde324c2SAndreas Gohr / 2989e2f9d1SAndreas Gohr</head> 3089e2f9d1SAndreas Gohr<body> 3189e2f9d1SAndreas Gohr<main> 3289e2f9d1SAndreas Gohr <h1>DokuWiki Plugin Wizard</h1> 3389e2f9d1SAndreas Gohr 3489e2f9d1SAndreas Gohr 3589e2f9d1SAndreas Gohr <div class="intro"> 3689e2f9d1SAndreas Gohr <p> 3789e2f9d1SAndreas Gohr This wizard generates a <a href="https://www.dokuwiki.org/devel:plugins">DokuWiki plugin</a> 3889e2f9d1SAndreas Gohr skeleton to help you get started with coding your plugin. 39f57a6a5cSAndreas Gohr Before using it, you should familiarize your self with how plugins in DokuWiki work 4089e2f9d1SAndreas Gohr and determine what components your plugin will need. 4189e2f9d1SAndreas Gohr </p> 4289e2f9d1SAndreas Gohr 4389e2f9d1SAndreas Gohr <p> 4489e2f9d1SAndreas Gohr To use it, fill in the general plugin info and add plugin components. Once you're 4589e2f9d1SAndreas Gohr done, click "create" and download your plugin skeleton. 4689e2f9d1SAndreas Gohr </p> 4789e2f9d1SAndreas Gohr 4889e2f9d1SAndreas Gohr <p> 4989e2f9d1SAndreas Gohr Alternatively you can also use the <a href="https://www.dokuwiki.org/plugin:dev">dev plugin</a>. 5089e2f9d1SAndreas Gohr This plugin will also come in handy when editing and extending your plugin later. 5189e2f9d1SAndreas Gohr </p> 5289e2f9d1SAndreas Gohr </div> 5389e2f9d1SAndreas Gohr 5489e2f9d1SAndreas Gohr <noscript> 5589e2f9d1SAndreas Gohr <div class="nojs"> 5689e2f9d1SAndreas Gohr Sorry, this wizard needs JavaScript to do its magic. It will not work with your 5789e2f9d1SAndreas Gohr current setup. 5889e2f9d1SAndreas Gohr </div> 5989e2f9d1SAndreas Gohr </noscript> 6089e2f9d1SAndreas Gohr 6189e2f9d1SAndreas Gohr 6289e2f9d1SAndreas Gohr <form action="index.php" method="post" id="ajax__plugin_wiz"> 6389e2f9d1SAndreas Gohr 6489e2f9d1SAndreas Gohr <section> 6589e2f9d1SAndreas Gohr <div id="plugin_info"> 6689e2f9d1SAndreas Gohr <h2>Plugin Information</h2> 6789e2f9d1SAndreas Gohr 6889e2f9d1SAndreas Gohr <label> 6989e2f9d1SAndreas Gohr <span>Plugin base name:</span> 7089e2f9d1SAndreas Gohr <input type="text" name="base" required="required" pattern="^[a-z0-9]+$" 7189e2f9d1SAndreas Gohr placeholder="yourplugin"> 7289e2f9d1SAndreas Gohr <small>(lowercase, no special chars)</small> 7389e2f9d1SAndreas Gohr </label> 7489e2f9d1SAndreas Gohr 7589e2f9d1SAndreas Gohr <label> 7689e2f9d1SAndreas Gohr <span>A short description of what the plugin does:</span> 7789e2f9d1SAndreas Gohr <input type="text" name="desc" required="required" 7889e2f9d1SAndreas Gohr placeholder="A plugin to flurb the blarg"> 7989e2f9d1SAndreas Gohr </label> 8089e2f9d1SAndreas Gohr 8189e2f9d1SAndreas Gohr <label> 8289e2f9d1SAndreas Gohr <span>Your name:</span> 8389e2f9d1SAndreas Gohr <input type="text" name="author" required="required" placeholder="Jane Doe"> 8489e2f9d1SAndreas Gohr </label> 8589e2f9d1SAndreas Gohr 8689e2f9d1SAndreas Gohr <label> 8789e2f9d1SAndreas Gohr <span>Your E-Mail address:</span> 8889e2f9d1SAndreas Gohr <input type="text" name="mail" required="required" placeholder="jane@example.com"> 8989e2f9d1SAndreas Gohr </label> 9089e2f9d1SAndreas Gohr 9189e2f9d1SAndreas Gohr <label> 9289e2f9d1SAndreas Gohr <span>URL for the plugin:</span> 9389e2f9d1SAndreas Gohr <input type="text" name="url" placeholder="https://www.dokuwiki.org/plugin:yourplugin"> 9489e2f9d1SAndreas Gohr <small>(leave empty for default dokuwiki.org location)</small> 9589e2f9d1SAndreas Gohr </label> 9689e2f9d1SAndreas Gohr 9789e2f9d1SAndreas Gohr <label> 9889e2f9d1SAndreas Gohr <input type="checkbox" name="use_lang" value="1"/> 9989e2f9d1SAndreas Gohr <span>Use localization</span> 10089e2f9d1SAndreas Gohr </label> 10189e2f9d1SAndreas Gohr 10289e2f9d1SAndreas Gohr <label> 10389e2f9d1SAndreas Gohr <input type="checkbox" name="use_conf" value="1"/> 10489e2f9d1SAndreas Gohr <span>Use configuration</span> 10589e2f9d1SAndreas Gohr </label> 10689e2f9d1SAndreas Gohr 10789e2f9d1SAndreas Gohr <label> 108abd1c9caSAndreas Gohr <input type="checkbox" name="use_tests" value="1" checked="checked" disabled="disabled"/> 10989e2f9d1SAndreas Gohr <span>Use unit tests</span> 110abd1c9caSAndreas Gohr <small>(now always enabled)</small> 11189e2f9d1SAndreas Gohr </label> 11289e2f9d1SAndreas Gohr </div> 11389e2f9d1SAndreas Gohr 11489e2f9d1SAndreas Gohr <div id="plugin_components"> 11589e2f9d1SAndreas Gohr <h2>Add Plugin Components</h2> 11689e2f9d1SAndreas Gohr 11789e2f9d1SAndreas Gohr <label> 11889e2f9d1SAndreas Gohr <span>Type:</span> 11989e2f9d1SAndreas Gohr <select> 12089e2f9d1SAndreas Gohr <?php foreach ($WIZ->getPluginTypes() as $type) : ?> 12189e2f9d1SAndreas Gohr <option value="<?php echo $type ?>"><?php echo ucfirst($type) ?></option> 12289e2f9d1SAndreas Gohr <?php endforeach; ?> 12389e2f9d1SAndreas Gohr </select> 12489e2f9d1SAndreas Gohr </label> 12589e2f9d1SAndreas Gohr 12689e2f9d1SAndreas Gohr <label> 12789e2f9d1SAndreas Gohr <span>Add as a Sub-Component:</span> 12889e2f9d1SAndreas Gohr <input type="text" value="" pattern="^[a-z0-9]+$" placeholder="subcomponent"/> 12989e2f9d1SAndreas Gohr <small>(leave empty to add top level)</small> 13089e2f9d1SAndreas Gohr </label> 13189e2f9d1SAndreas Gohr 13289e2f9d1SAndreas Gohr <button type="button">Add Component</button> 13389e2f9d1SAndreas Gohr 13489e2f9d1SAndreas Gohr <ul id="output"></ul> 13589e2f9d1SAndreas Gohr 13689e2f9d1SAndreas Gohr </div> 13789e2f9d1SAndreas Gohr </section> 13889e2f9d1SAndreas Gohr 13989e2f9d1SAndreas Gohr <button type="submit" name="plugin_wiz_create">Create and Download<br>Plugin Skeleton</button> 14089e2f9d1SAndreas Gohr 14189e2f9d1SAndreas Gohr </form> 14289e2f9d1SAndreas Gohr 14389e2f9d1SAndreas Gohr</main> 14489e2f9d1SAndreas Gohr<script src="awesomplete.min.js"></script> 14589e2f9d1SAndreas Gohr<script src="script.js"></script> 14689e2f9d1SAndreas Gohr</body> 14789e2f9d1SAndreas Gohr</html> 148