818b3193ff
With the new routes, all pages are not all at the same folder level anymore (e.g. /shaare and /shaare/123), so we can't just use './' everywhere. The most consistent way to handle this is to prefix all path with the proper variable, and handle the actual path in controllers.
205 lines
5.7 KiB
HTML
205 lines
5.7 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>{include="includes"}</head>
|
|
<body>
|
|
<div id="pageheader">
|
|
{include="page.header"}
|
|
</div>
|
|
|
|
<noscript>
|
|
<div>
|
|
<ul class="errors">
|
|
<li>You need to enable Javascript to change plugin loading order.</li>
|
|
</ul>
|
|
</div>
|
|
<div class="clear"></div>
|
|
</noscript>
|
|
|
|
<div id="pluginsadmin">
|
|
<form action="{$base_path}/?do=save_pluginadmin" method="POST">
|
|
<section id="enabled_plugins">
|
|
<h1>Enabled Plugins</h1>
|
|
|
|
<div>
|
|
{if="count($enabledPlugins)==0"}
|
|
<p>No plugin enabled.</p>
|
|
{else}
|
|
<table id="plugin_table">
|
|
<thead>
|
|
<tr>
|
|
<th class="center">Disable</th>
|
|
<th class="center">Order</th>
|
|
<th>Name</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{loop="$enabledPlugins"}
|
|
<tr data-line="{$key}" data-order="{$counter}">
|
|
<td class="center"><input type="checkbox" name="{$key}" id="{$key}" checked="checked"></td>
|
|
<td class="center">
|
|
<a href="#" class="arrow"
|
|
onclick="return orderUp(this.parentNode.parentNode.getAttribute('data-order'));">
|
|
▲
|
|
</a>
|
|
<a href="#" class="arrow"
|
|
onclick="return orderDown(this.parentNode.parentNode.getAttribute('data-order'));">
|
|
▼
|
|
</a>
|
|
<input type="hidden" name="order_{$key}" value="{$counter}">
|
|
</td>
|
|
<td><label for="{$key}">{function="str_replace('_', ' ', $key)"}</label></td>
|
|
<td><label for="{$key}">{$value.description}</label></td>
|
|
</tr>
|
|
{/loop}
|
|
</tbody>
|
|
</table>
|
|
{/if}
|
|
</div>
|
|
</section>
|
|
|
|
<section id="disabled_plugins">
|
|
<h1>Disabled Plugins</h1>
|
|
|
|
<div>
|
|
{if="count($disabledPlugins)==0"}
|
|
<p>No plugin disabled.</p>
|
|
{else}
|
|
<table>
|
|
<tr>
|
|
<th class="center">Enable</th>
|
|
<th>Name</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
{loop="$disabledPlugins"}
|
|
<tr>
|
|
<td class="center"><input type="checkbox" name="{$key}" id="{$key}"></td>
|
|
<td><label for="{$key}">{function="str_replace('_', ' ', $key)"}</label></td>
|
|
<td><label for="{$key}">{$value.description}</label></td>
|
|
</tr>
|
|
{/loop}
|
|
</table>
|
|
{/if}
|
|
</div>
|
|
|
|
<div class="center">
|
|
<input type="submit" value="Save"/>
|
|
</div>
|
|
</section>
|
|
</form>
|
|
|
|
<form action="{$base_path}/?do=save_pluginadmin" method="POST">
|
|
<section id="plugin_parameters">
|
|
<h1>Enabled Plugin Parameters</h1>
|
|
|
|
<div>
|
|
{if="count($enabledPlugins)==0"}
|
|
<p>No plugin enabled.</p>
|
|
{else}
|
|
{loop="$enabledPlugins"}
|
|
{if="count($value.parameters) > 0"}
|
|
<div class="plugin_parameters">
|
|
<h2>{function="str_replace('_', ' ', $key)"}</h2>
|
|
{loop="$value.parameters"}
|
|
<div class="plugin_parameter">
|
|
<div class="float_label">
|
|
<label for="{$key}">
|
|
<code>{$key}</code><br>
|
|
{if="isset($value.desc)"}
|
|
{$value.desc}
|
|
{/if}
|
|
</label>
|
|
</div>
|
|
<div class="float_input">
|
|
<input name="{$key}" value="{$value.value}" id="{$key}"/>
|
|
</div>
|
|
</div>
|
|
{/loop}
|
|
</div>
|
|
{/if}
|
|
{/loop}
|
|
{/if}
|
|
<div class="center">
|
|
<input type="submit" name="parameters_form" value="Save"/>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</form>
|
|
|
|
</div>
|
|
{include="page.footer"}
|
|
|
|
<script>
|
|
/**
|
|
* Change the position counter of a row.
|
|
*
|
|
* @param elem Element Node to change.
|
|
* @param toPos int New position.
|
|
*/
|
|
function changePos(elem, toPos) {
|
|
var elemName = elem.getAttribute('data-line');
|
|
|
|
elem.setAttribute('data-order', toPos);
|
|
var hiddenInput = document.querySelector('[name="order_' + elemName + '"]');
|
|
hiddenInput.setAttribute('value', toPos);
|
|
}
|
|
|
|
/**
|
|
* Move a row up or down.
|
|
*
|
|
* @param pos Element Node to move.
|
|
* @param move int Move: +1 (down) or -1 (up)
|
|
*/
|
|
function changeOrder(pos, move) {
|
|
var newpos = parseInt(pos) + move;
|
|
var lines = document.querySelectorAll('[data-order="' + pos + '"]');
|
|
var changelines = document.querySelectorAll('[data-order="' + newpos + '"]');
|
|
|
|
// If we go down reverse lines to preserve the rows order
|
|
if (move > 0) {
|
|
lines = [].slice.call(lines).reverse();
|
|
}
|
|
|
|
for (var i = 0; i < lines.length; i++) {
|
|
var parent = changelines[0].parentNode;
|
|
changePos(lines[i], newpos);
|
|
changePos(changelines[i], parseInt(pos));
|
|
var changeItem = move < 0 ? changelines[0] : changelines[changelines.length - 1].nextSibling;
|
|
parent.insertBefore(lines[i], changeItem);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Move a row up in the table.
|
|
*
|
|
* @param pos int row counter.
|
|
*
|
|
* @returns false
|
|
*/
|
|
function orderUp(pos) {
|
|
if (pos == 0) {
|
|
return false;
|
|
}
|
|
changeOrder(pos, -1);
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Move a row down in the table.
|
|
*
|
|
* @param pos int row counter.
|
|
*
|
|
* @returns false
|
|
*/
|
|
function orderDown(pos) {
|
|
var lastpos = document.querySelector('[data-order]:last-child').getAttribute('data-order');
|
|
if (pos == lastpos) {
|
|
return false;
|
|
}
|
|
|
|
changeOrder(pos, +1);
|
|
return false;
|
|
}
|
|
</script>
|
|
</body>
|
|
</html>
|