xref: /plugin/dev/www/index.php (revision abd1c9ca53d9277abe50b454c70fce6b83d8bf9f)
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">
2389e2f9d1SAndreas Gohr        const ACTION_EVENTS = <?php echo json_encode($WIZ->getEvents()); ?>;
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>
108*abd1c9caSAndreas Gohr                    <input type="checkbox" name="use_tests" value="1" checked="checked" disabled="disabled"/>
10989e2f9d1SAndreas Gohr                    <span>Use unit tests</span>
110*abd1c9caSAndreas 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