✨ (admin/configure-plugin): support multiple kind of plugins
This commit is contained in:
parent
8c6316a2a4
commit
a6d8a8b2f1
15 changed files with 211 additions and 28 deletions
26
bl-kernel/admin/controllers/sidebar.php
Normal file
26
bl-kernel/admin/controllers/sidebar.php
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
<?php defined('KOBLOG') or die('Koblog CMS.');
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
// Check role
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
|
checkRole(array('admin'));
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
// Functions
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
// Main before POST
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
// POST Method
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
// Main after POST
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
|
// Title of the page
|
||||||
|
$layout['title'] .= ' - '.$L->g('Sidebar');
|
|
@ -29,6 +29,16 @@
|
||||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'users' ?>"><span class="fa fa-users fa-fw"></span><?php $L->p('Users') ?></a>
|
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'users' ?>"><span class="fa fa-users fa-fw"></span><?php $L->p('Users') ?></a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li class="nav-item mt-3">
|
||||||
|
<h4><?php $L->p('Customization') ?></h4>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'themes' ?>"><span class="fa fa-desktop fa-fw"></span><?php $L->p('Themes') ?></a>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'sidebar' ?>"><span class="fa fa-list fa-fw"></span><?php $L->p('Sidebar') ?></a>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li class="nav-item mt-3">
|
<li class="nav-item mt-3">
|
||||||
<h4><?php $L->p('Settings') ?></h4>
|
<h4><?php $L->p('Settings') ?></h4>
|
||||||
</li>
|
</li>
|
||||||
|
@ -38,9 +48,6 @@
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'plugins' ?>"><span class="fa fa-puzzle-piece fa-fw"></span><?php $L->p('Plugins') ?></a>
|
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'plugins' ?>"><span class="fa fa-puzzle-piece fa-fw"></span><?php $L->p('Plugins') ?></a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'themes' ?>"><span class="fa fa-desktop fa-fw"></span><?php $L->p('Themes') ?></a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|
||||||
|
|
|
@ -2,12 +2,27 @@
|
||||||
|
|
||||||
<?php echo Bootstrap::formOpen(array('id'=>'jsform', 'class'=>'plugin-form')); ?>
|
<?php echo Bootstrap::formOpen(array('id'=>'jsform', 'class'=>'plugin-form')); ?>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
$returnPage = "plugins";
|
||||||
|
|
||||||
|
switch ($plugin->type()) {
|
||||||
|
case 'theme':
|
||||||
|
$returnPage = "themes";
|
||||||
|
break;
|
||||||
|
case 'widget':
|
||||||
|
$returnPage = "sidebar";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
<div class="d-flex justify-content-between mb-2">
|
<div class="d-flex justify-content-between mb-2">
|
||||||
<?php echo Bootstrap::pageTitle(array('title'=>$plugin->name(), 'icon'=>'cog')); ?>
|
<?php echo Bootstrap::pageTitle(array('title'=>$plugin->name(), 'icon'=>'cog')); ?>
|
||||||
<?php if ($plugin->formButtons()): ?>
|
<?php if ($plugin->formButtons()): ?>
|
||||||
<div>
|
<div>
|
||||||
<button type="submit" class="btn btn-primary" name="save"><?php $L->p('Save') ?></button>
|
<button type="submit" class="btn btn-primary" name="save"><?php $L->p('Save') ?></button>
|
||||||
<a class="btn btn-secondary" href="<?php echo HTML_PATH_ADMIN_ROOT.'plugins' ?>" role="button"><?php $L->p('Cancel') ?></a>
|
<a class="btn btn-secondary" href="<?php echo HTML_PATH_ADMIN_ROOT.$returnPage ?>" role="button"><?php $L->p('Cancel') ?></a>
|
||||||
</div>
|
</div>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3,10 +3,10 @@
|
||||||
<?php echo Bootstrap::formOpen(array('id'=>'jsform', 'class'=>'tab-content')); ?>
|
<?php echo Bootstrap::formOpen(array('id'=>'jsform', 'class'=>'tab-content')); ?>
|
||||||
|
|
||||||
<div class="d-flex justify-content-between mb-2">
|
<div class="d-flex justify-content-between mb-2">
|
||||||
<?php echo Bootstrap::pageTitle(array('title'=>$L->g('Plugins position'), 'icon'=>'tags')); ?>
|
<?php echo Bootstrap::pageTitle(array('title'=>$L->g('Reorder sidebar'), 'icon'=>'list')); ?>
|
||||||
<div>
|
<div>
|
||||||
<button type="button" class="btn btn-primary jsbuttonSave" name="save"><?php $L->p('Save') ?></button>
|
<button type="button" class="btn btn-primary jsbuttonSave" name="save"><?php $L->p('Save') ?></button>
|
||||||
<a class="btn btn-secondary" href="<?php echo HTML_PATH_ADMIN_ROOT.'plugins' ?>" role="button"><?php $L->p('Cancel') ?></a>
|
<a class="btn btn-secondary" href="<?php echo HTML_PATH_ADMIN_ROOT.'sidebar' ?>" role="button"><?php $L->p('Cancel') ?></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -1,20 +1,8 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
echo "<div class='d-flex justify-content-between align-content-center'>";
|
|
||||||
|
|
||||||
echo Bootstrap::pageTitle(array('title' => $L->g('Plugins'), 'icon' => 'puzzle-piece'));
|
echo Bootstrap::pageTitle(array('title' => $L->g('Plugins'), 'icon' => 'puzzle-piece'));
|
||||||
|
|
||||||
echo "<div>";
|
|
||||||
|
|
||||||
echo Bootstrap::link(array(
|
|
||||||
'title' => $L->g('Change the position of the plugins'),
|
|
||||||
'href' => HTML_PATH_ADMIN_ROOT . 'plugins-position',
|
|
||||||
'icon' => 'arrows',
|
|
||||||
'class' => 'btn btn-outline-secondary'
|
|
||||||
));
|
|
||||||
|
|
||||||
echo "</div></div>";
|
|
||||||
|
|
||||||
echo Bootstrap::formTitle(array('title' => $L->g('Search plugins')));
|
echo Bootstrap::formTitle(array('title' => $L->g('Search plugins')));
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
@ -49,7 +37,7 @@ echo ' </h6><table class="table m-0">
|
||||||
// Show installed plugins
|
// Show installed plugins
|
||||||
foreach ($pluginsInstalled as $plugin) {
|
foreach ($pluginsInstalled as $plugin) {
|
||||||
|
|
||||||
if ($plugin->type() == 'theme') {
|
if ($plugin->type() == 'theme' || $plugin->type() == 'widget') {
|
||||||
// Do not display theme's plugins
|
// Do not display theme's plugins
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -98,7 +86,7 @@ echo ' </h6><table class="table m-0">
|
||||||
$pluginsNotInstalled = array_diff_key($plugins['all'], $pluginsInstalled);
|
$pluginsNotInstalled = array_diff_key($plugins['all'], $pluginsInstalled);
|
||||||
foreach ($pluginsNotInstalled as $plugin) {
|
foreach ($pluginsNotInstalled as $plugin) {
|
||||||
|
|
||||||
if ($plugin->type() == 'theme') {
|
if ($plugin->type() == 'theme' || $plugin->type() == 'widget') {
|
||||||
// Do not display theme's plugins
|
// Do not display theme's plugins
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
138
bl-kernel/admin/views/sidebar.php
Normal file
138
bl-kernel/admin/views/sidebar.php
Normal file
|
@ -0,0 +1,138 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
echo "<div class='d-flex justify-content-between align-content-center'>";
|
||||||
|
|
||||||
|
echo Bootstrap::pageTitle(array('title' => $L->g('Sidebar'), 'icon' => 'list'));
|
||||||
|
|
||||||
|
echo "<div>";
|
||||||
|
|
||||||
|
echo Bootstrap::link(array(
|
||||||
|
'title' => $L->g('Reorder sidebar'),
|
||||||
|
'href' => HTML_PATH_ADMIN_ROOT . 'plugins-position',
|
||||||
|
'icon' => 'arrows',
|
||||||
|
'class' => 'btn btn-outline-secondary'
|
||||||
|
));
|
||||||
|
|
||||||
|
echo "</div></div>";
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
<p class="alert alert-info"><?php echo $L->g("Activate or deactivate here plugins that'll be shown in the sidebar") ?></p>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
|
||||||
|
echo Bootstrap::formTitle(array('title' => $L->g('Search plugins')));
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
<input type="text" dir="auto" class="form-control mb-3" id="search" placeholder="<?php $L->p('Search') ?>">
|
||||||
|
<script>
|
||||||
|
$(document).ready(function() {
|
||||||
|
$("#search").on("keyup", function() {
|
||||||
|
var textToSearch = $(this).val().toLowerCase();
|
||||||
|
$(".searchItem").each(function() {
|
||||||
|
var item = $(this);
|
||||||
|
item.hide();
|
||||||
|
item.find(".searchText").each(function() {
|
||||||
|
var element = $(this).text().toLowerCase();
|
||||||
|
if (element.indexOf(textToSearch) != -1) {
|
||||||
|
item.show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
|
||||||
|
echo '<div class="card mb-3"><h6 class="card-header">';
|
||||||
|
echo $L->g('Enabled plugins');
|
||||||
|
echo ' </h6><table class="table m-0">
|
||||||
|
<tbody>
|
||||||
|
';
|
||||||
|
|
||||||
|
// Show installed plugins
|
||||||
|
foreach ($pluginsInstalled as $plugin) {
|
||||||
|
|
||||||
|
if ($plugin->type() != 'widget') {
|
||||||
|
// Do not display theme's plugins
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '<tr id="' . $plugin->className() . '" class="searchItem card-tablebody">';
|
||||||
|
|
||||||
|
echo '<td class="align-middle pt-3 pb-3 w-25">
|
||||||
|
<div class="searchText">' . $plugin->name() . '</div>
|
||||||
|
<div class="mt-1">';
|
||||||
|
if (method_exists($plugin, 'form')) {
|
||||||
|
echo '<a class="me-3" href="' . HTML_PATH_ADMIN_ROOT . 'configure-plugin/' . $plugin->className() . '">' . $L->g('Settings') . '</a>';
|
||||||
|
}
|
||||||
|
echo '<a href="' . HTML_PATH_ADMIN_ROOT . 'uninstall-plugin/' . $plugin->className() . '">' . $L->g('Deactivate') . '</a>';
|
||||||
|
echo '</div>';
|
||||||
|
echo '</td>';
|
||||||
|
|
||||||
|
echo '<td class="searchText align-middle d-none d-sm-table-cell">';
|
||||||
|
echo $plugin->description();
|
||||||
|
echo '</td>';
|
||||||
|
|
||||||
|
echo '<td class="text-center align-middle d-none d-lg-table-cell">';
|
||||||
|
echo '<span>' . $plugin->version() . '</span>';
|
||||||
|
echo '</td>';
|
||||||
|
|
||||||
|
echo '<td class="text-center align-middle d-none d-lg-table-cell">
|
||||||
|
<a target="_blank" href="' . $plugin->website() . '">' . $plugin->author() . '</a>
|
||||||
|
</td>';
|
||||||
|
|
||||||
|
echo '</tr>';
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
';
|
||||||
|
|
||||||
|
|
||||||
|
echo '<div class="card mb-3"><h6 class="card-header">';
|
||||||
|
echo $L->g('Disabled plugins');
|
||||||
|
echo ' </h6><table class="table m-0">
|
||||||
|
<tbody>
|
||||||
|
';
|
||||||
|
|
||||||
|
// Plugins not installed
|
||||||
|
$pluginsNotInstalled = array_diff_key($plugins['all'], $pluginsInstalled);
|
||||||
|
foreach ($pluginsNotInstalled as $plugin) {
|
||||||
|
|
||||||
|
if ($plugin->type() != 'widget') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
echo '<tr id="' . $plugin->className() . '" class="searchItem">';
|
||||||
|
|
||||||
|
echo '<td class="align-middle pt-3 pb-3 w-25">
|
||||||
|
<div class="searchText">' . $plugin->name() . '</div>
|
||||||
|
<div class="mt-1">
|
||||||
|
<a href="' . HTML_PATH_ADMIN_ROOT . 'install-plugin/' . $plugin->className() . '">' . $L->g('Activate') . '</a>
|
||||||
|
</div>
|
||||||
|
</td>';
|
||||||
|
|
||||||
|
echo '<td class="searchText align-middle d-none d-sm-table-cell">';
|
||||||
|
echo $plugin->description();
|
||||||
|
echo '</td>';
|
||||||
|
|
||||||
|
echo '<td class="text-center align-middle d-none d-lg-table-cell">';
|
||||||
|
echo '<span>' . $plugin->version() . '</span>';
|
||||||
|
echo '</td>';
|
||||||
|
|
||||||
|
echo '<td class="text-center align-middle d-none d-lg-table-cell">
|
||||||
|
<a target="_blank" href="' . $plugin->website() . '">' . $plugin->author() . '</a>
|
||||||
|
</td>';
|
||||||
|
|
||||||
|
echo '</tr>';
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
';
|
|
@ -60,6 +60,7 @@
|
||||||
"language": "Langue",
|
"language": "Langue",
|
||||||
"plugin": "Plugin",
|
"plugin": "Plugin",
|
||||||
"plugins": "Plugins",
|
"plugins": "Plugins",
|
||||||
|
"activate-or-deactivate-here-plugins-that'll-be-shown-in-the-sidebar":"Activez ou désactiver ici les plugins qui seront visible dans la sidebar du site",
|
||||||
"developers": "Développeurs",
|
"developers": "Développeurs",
|
||||||
"themes": "Thèmes",
|
"themes": "Thèmes",
|
||||||
"about": "À Propos",
|
"about": "À Propos",
|
||||||
|
|
|
@ -6,5 +6,6 @@
|
||||||
"releaseDate": "2024-08-23",
|
"releaseDate": "2024-08-23",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"compatible": "kb_0.0.1",
|
"compatible": "kb_0.0.1",
|
||||||
"notes": ""
|
"notes": "",
|
||||||
|
"type": "widget"
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,5 +6,6 @@
|
||||||
"releaseDate": "2024-08-23",
|
"releaseDate": "2024-08-23",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"compatible": "kb_0.0.1",
|
"compatible": "kb_0.0.1",
|
||||||
"notes": ""
|
"notes": "",
|
||||||
|
"type": "widget"
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,5 +6,6 @@
|
||||||
"releaseDate": "2024-08-23",
|
"releaseDate": "2024-08-23",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"compatible": "kb_0.0.1",
|
"compatible": "kb_0.0.1",
|
||||||
"notes": ""
|
"notes": "",
|
||||||
|
"type": "widget"
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,5 +6,6 @@
|
||||||
"releaseDate": "2024-08-23",
|
"releaseDate": "2024-08-23",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"compatible": "kb_0.0.1",
|
"compatible": "kb_0.0.1",
|
||||||
"notes": ""
|
"notes": "",
|
||||||
|
"type": "widget"
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,5 +6,6 @@
|
||||||
"releaseDate": "2024-08-23",
|
"releaseDate": "2024-08-23",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"compatible": "kb_0.0.1",
|
"compatible": "kb_0.0.1",
|
||||||
"notes": ""
|
"notes": "",
|
||||||
|
"type": "widget"
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,5 +6,6 @@
|
||||||
"releaseDate": "2024-08-23",
|
"releaseDate": "2024-08-23",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"compatible": "kb_0.0.1",
|
"compatible": "kb_0.0.1",
|
||||||
"notes": ""
|
"notes": "",
|
||||||
|
"type": "widget"
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,5 +6,6 @@
|
||||||
"releaseDate": "2024-08-23",
|
"releaseDate": "2024-08-23",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"compatible": "kb_0.0.1",
|
"compatible": "kb_0.0.1",
|
||||||
"notes": ""
|
"notes": "",
|
||||||
|
"type": "widget"
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,5 +6,6 @@
|
||||||
"releaseDate": "2024-08-23",
|
"releaseDate": "2024-08-23",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"compatible": "kb_0.0.1",
|
"compatible": "kb_0.0.1",
|
||||||
"notes": ""
|
"notes": "",
|
||||||
|
"type": "widget"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue