Rework the admin panel #34
177 changed files with 79695 additions and 4302 deletions
CHANGELOG.md
bl-kernel
admin
controllers
themes
booty
koblog
views
boot
css
bootstrap.min.css
line-awesome
helpers
js
login.class.phpsite.class.phpvendors
bootstrap5
css
bootstrap-grid.cssbootstrap-grid.css.mapbootstrap-grid.min.cssbootstrap-grid.min.css.mapbootstrap-grid.rtl.cssbootstrap-grid.rtl.css.mapbootstrap-grid.rtl.min.cssbootstrap-grid.rtl.min.css.mapbootstrap-reboot.cssbootstrap-reboot.css.mapbootstrap-reboot.min.cssbootstrap-reboot.min.css.mapbootstrap-reboot.rtl.cssbootstrap-reboot.rtl.css.mapbootstrap-reboot.rtl.min.cssbootstrap-reboot.rtl.min.css.mapbootstrap-utilities.cssbootstrap-utilities.css.mapbootstrap-utilities.min.cssbootstrap-utilities.min.css.mapbootstrap-utilities.rtl.cssbootstrap-utilities.rtl.css.mapbootstrap-utilities.rtl.min.cssbootstrap-utilities.rtl.min.css.mapbootstrap.cssbootstrap.css.mapbootstrap.min.cssbootstrap.min.css.mapbootstrap.rtl.cssbootstrap.rtl.css.mapbootstrap.rtl.min.cssbootstrap.rtl.min.css.map
js
fontawesome6/css
22
CHANGELOG.md
Normal file
22
CHANGELOG.md
Normal file
|
@ -0,0 +1,22 @@
|
|||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
First forked version from bludit
|
||||
|
||||
### Added
|
||||
|
||||
- Admin: Added a sidebar panel that show all sidebar widget to be activated/deactivated
|
||||
- Admin: Show some pages only if the theme support their features
|
||||
|
||||
### Changed
|
||||
|
||||
- Bootstrap: updated to bootstrap 5
|
||||
- Icons: replaced linearicons by fontawesome
|
||||
- Admin: reworked the theme
|
||||
- Admin/content: The sidebar is now always visible
|
|
@ -12,15 +12,16 @@ checkRole(array('admin'));
|
|||
|
||||
// This function is used on the VIEW to show the tables
|
||||
function printTable($title, $array) {
|
||||
echo '<h2 class="mb-2 mt-4">'.$title.'</h2>';
|
||||
echo '<table class="table table-striped mt-3">
|
||||
echo '<h2 class="mb-2">'.$title.'</h2>';
|
||||
echo '<div class="card mb-4">';
|
||||
echo '<table class="table m-0">
|
||||
<tbody>
|
||||
';
|
||||
|
||||
foreach ($array as $key=>$value) {
|
||||
if($value===false) { $value = 'false'; }
|
||||
elseif($value===true) { $value = 'true'; }
|
||||
echo '<tr>';
|
||||
echo '<tr class="card-tablebody">';
|
||||
echo '<td>'.$key.'</td>';
|
||||
if (is_array($value)) {
|
||||
echo '<td>'.json_encode($value).'</td>';
|
||||
|
@ -33,6 +34,7 @@ function printTable($title, $array) {
|
|||
echo '
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
';
|
||||
}
|
||||
|
||||
|
|
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');
|
|
@ -18,7 +18,5 @@ checkRole(array('admin'));
|
|||
// Main after POST
|
||||
// ============================================================================
|
||||
|
||||
$themes = buildThemes();
|
||||
|
||||
// Title of the page
|
||||
$layout['title'] .= ' - '.$L->g('Themes');
|
|
@ -1,58 +0,0 @@
|
|||
a {
|
||||
color: #0078D4;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #003f6f;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.bg-success {
|
||||
background-color: #8BC34A!important;
|
||||
}
|
||||
|
||||
.text-primary {
|
||||
color: #0078D4!important;
|
||||
}
|
||||
|
||||
.text-danger {
|
||||
color: #D40000!important;
|
||||
}
|
||||
a.text-danger:focus,
|
||||
a.text-danger:hover {
|
||||
color: #790000!important;
|
||||
}
|
||||
|
||||
/* Buttons */
|
||||
.btn-primary {
|
||||
background-color: #0078D4;
|
||||
border-color: #0078D4;
|
||||
}
|
||||
|
||||
.btn-primary:hover {
|
||||
background-color: #4585CF;
|
||||
border-color: #4a90e2;
|
||||
}
|
||||
|
||||
.btn-light.focus, .btn-light:focus {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.btn.focus, .btn:focus {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
/* Form */
|
||||
.form-control:focus {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
/* Tables */
|
||||
.table-striped tbody tr:nth-of-type(odd) {
|
||||
background-color: rgba(0, 0, 0, 0.02);
|
||||
}
|
||||
|
||||
.table thead th {
|
||||
font-size: 0.8em;
|
||||
text-transform: uppercase!important;
|
||||
}
|
|
@ -1,77 +0,0 @@
|
|||
<nav class="navbar navbar-expand-lg navbar-dark bg-dark text-uppercase d-block d-lg-none">
|
||||
<div class="container">
|
||||
<span class="navbar-brand">
|
||||
<?php echo (defined('KOBLOG_PRO'))?'KOBLOG PRO':'KOBLOG' ?></span>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false"
|
||||
aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarNav">
|
||||
<ul class="navbar-nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'dashboard' ?>">
|
||||
<?php $L->p('Dashboard') ?></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ROOT ?>">
|
||||
<?php $L->p('Website') ?></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'new-content' ?>">
|
||||
<?php $L->p('New content') ?></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'content' ?>">
|
||||
<?php $L->p('Content') ?></a>
|
||||
</li>
|
||||
<?php if (!checkRole(array('admin'),false)): ?>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'edit-user/'.$login->username() ?>">
|
||||
<?php $L->p('Profile') ?></a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
<?php if (checkRole(array('admin'),false)): ?>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'categories' ?>">
|
||||
<?php $L->p('Categories') ?></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'users' ?>">
|
||||
<?php $L->p('Users') ?></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'settings' ?>">
|
||||
<?php $L->p('Settings') ?></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'plugins' ?>">
|
||||
<?php $L->p('Plugins') ?></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'themes' ?>">
|
||||
<?php $L->p('Themes') ?></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'about' ?>">
|
||||
<?php $L->p('About') ?></a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
<?php if (checkRole(array('admin'),false)): ?>
|
||||
<?php
|
||||
if (!empty($plugins['adminSidebar'])) {
|
||||
foreach ($plugins['adminSidebar'] as $pluginSidebar) {
|
||||
echo '<li class="nav-item">';
|
||||
echo $pluginSidebar->adminSidebar();
|
||||
echo '</li>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
<?php endif; ?>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'logout' ?>">
|
||||
<?php $L->p('Logout') ?></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
|
@ -1,80 +0,0 @@
|
|||
<!-- Use .flex-column to set a vertical direction -->
|
||||
<ul class="nav flex-column pt-4">
|
||||
|
||||
<li class="nav-item mb-4" style="margin-left: -4px;">
|
||||
<img src="<?php echo HTML_PATH_CORE_IMG ?>logo.svg" width="20" height="20" alt="koblog-logo"><span class="ml-2 align-middle"><?php echo (defined('KOBLOG_PRO'))?'KOBLOG PRO':'KOBLOG' ?></span>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'dashboard' ?>"><span class="fa fa-dashboard"></span><?php $L->p('Dashboard') ?></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" target="_blank" href="<?php echo HTML_PATH_ROOT ?>"><span class="fa fa-home"></span><?php $L->p('Website') ?></a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item mt-3">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'new-content' ?>"><span style="color: #0078D4;" class="fa fa-plus-circle"></span><?php $L->p('New content') ?></a>
|
||||
</li>
|
||||
|
||||
<?php if (!checkRole(array('admin'),false)): ?>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'content' ?>"><span class="fa fa-archive"></span><?php $L->p('Content') ?></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'edit-user/'.$login->username() ?>"><span class="fa fa-user"></span><?php $L->p('Profile') ?></a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if (checkRole(array('admin'),false)): ?>
|
||||
|
||||
<li class="nav-item mt-3">
|
||||
<h4><?php $L->p('Manage') ?></h4>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'content' ?>"><span class="fa fa-folder"></span><?php $L->p('Content') ?></a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'categories' ?>"><span class="fa fa-bookmark"></span><?php $L->p('Categories') ?></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'users' ?>"><span class="fa fa-users"></span><?php $L->p('Users') ?></a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item mt-3">
|
||||
<h4><?php $L->p('Settings') ?></h4>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'settings' ?>"><span class="fa fa-gear"></span><?php $L->p('General') ?></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'plugins' ?>"><span class="fa fa-puzzle-piece"></span><?php $L->p('Plugins') ?></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'themes' ?>"><span class="fa fa-desktop"></span><?php $L->p('Themes') ?></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'about' ?>"><span class="fa fa-info"></span><?php $L->p('About') ?></a>
|
||||
</li>
|
||||
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if (checkRole(array('admin', 'editor'),false)): ?>
|
||||
|
||||
<?php
|
||||
if (!empty($plugins['adminSidebar'])) {
|
||||
echo '<li class="nav-item"><hr></li>';
|
||||
foreach ($plugins['adminSidebar'] as $pluginSidebar) {
|
||||
echo '<li class="nav-item">';
|
||||
echo $pluginSidebar->adminSidebar();
|
||||
echo '</li>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<?php endif; ?>
|
||||
|
||||
<li class="nav-item mt-5">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'logout' ?>"><span class="fa fa-arrow-circle-right"></span><?php $L->p('Logout') ?></a>
|
||||
</li>
|
||||
</ul>
|
128
bl-kernel/admin/themes/koblog/css/koblog.bootstrap.css
Normal file
128
bl-kernel/admin/themes/koblog/css/koblog.bootstrap.css
Normal file
|
@ -0,0 +1,128 @@
|
|||
@charset "UTF-8";
|
||||
|
||||
body {
|
||||
background-color: var(--bs-light);
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
#main-area {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
#main-area>.container {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.admin-sidebar {
|
||||
min-height: 100vh;
|
||||
width: 240px;
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
.dropdown-item:focus, .dropdown-item:hover {
|
||||
background-color: rgba(0,0,0,0.1);
|
||||
}
|
||||
|
||||
.admin-sidebar h4 {
|
||||
font-weight: bolder;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.admin-sidebar ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
margin-bottom: 1.5rem;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
.admin-sidebar a {
|
||||
padding: .5rem .75rem;
|
||||
display: block;
|
||||
color: white!important;
|
||||
border-radius: 6px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.admin-sidebar a:hover {
|
||||
background-color: rgba(255, 255, 255, 0.2);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.admin-sidebar a i.fa {
|
||||
display: inline-block;
|
||||
width: 1.5rem;
|
||||
}
|
||||
|
||||
.card-connection {
|
||||
margin: auto;
|
||||
max-width: 360px;
|
||||
}
|
||||
|
||||
.container-password {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* Composant de la page d'accueil */
|
||||
.nav-link.nav-title {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.nav-link.nav-title:hover {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.card-header .nav-tabs {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.card-stats tr:first-child td,
|
||||
.card-stats tr:first-child th {
|
||||
border-top: 0;
|
||||
}
|
||||
|
||||
.modifier-listelement-line {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
/* Fonctionnalités globale : tableau dont la première ligne est fusionné à un card-header */
|
||||
tr.card-header td,
|
||||
tr.card-header th {
|
||||
border: 0;
|
||||
background-color: transparent!important;
|
||||
}
|
||||
|
||||
tr.card-tablebody td,
|
||||
tr.card-tablebody th {
|
||||
/* on va plutôt gérer les border au niveau des tr pour éviter les soucis */
|
||||
border: 0;
|
||||
background-color: transparent!important;
|
||||
padding: 0.5rem;
|
||||
}
|
||||
|
||||
tr.card-tablebody:not(:last-child) {
|
||||
border-bottom: 1px solid #dee2e6;
|
||||
}
|
||||
|
||||
.td-id {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.card {
|
||||
box-shadow: 0px 1px 1px 0px rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
#main-area a.nav-link:not(.active):hover,
|
||||
#main-area button.nav-link:not(.active):hover {
|
||||
background-color: rgba(0,0,0,0.1)!important;
|
||||
}
|
||||
|
||||
.navbar .nav-link {
|
||||
border-radius: 6px;
|
||||
}
|
|
@ -1,11 +1,6 @@
|
|||
html {
|
||||
height: 100%;
|
||||
font-size: 0.9rem;
|
||||
background: #fcfcfc;
|
||||
}
|
||||
|
||||
body {
|
||||
background: #fcfcfc;
|
||||
}
|
||||
|
||||
/* Prevent events in iframes */
|
||||
|
@ -224,7 +219,8 @@ body.login {
|
|||
PLUGINS
|
||||
*/
|
||||
|
||||
.plugin-form label {
|
||||
.plugin-form label:not(:first-child),
|
||||
.plugin-form > div:not(:first-child) > label {
|
||||
display: block;
|
||||
margin-top: 1rem !important;
|
||||
}
|
||||
|
@ -364,4 +360,4 @@ img.profilePicture {
|
|||
|
||||
.switch-icon-publish {
|
||||
color: #1cb11c;
|
||||
}
|
||||
}
|
|
@ -107,9 +107,9 @@ function displayFiles(files, numberOfPages = <?= $numberOfPages ?>) {
|
|||
'<td class="information">'+
|
||||
'<div class="text-secondary pb-2">'+filename+'<\/div>'+
|
||||
'<div>'+
|
||||
'<a href="#" class="mr-3 text-primary" onClick="editorInsertMedia(\''+image+'\'); closeMediaManager();"><i class="fa fa-plus-circle"></i><?php $L->p('Insert') ?><\/a>'+
|
||||
'<a href="#" class="mr-3 text-primary" onClick="editorInsertMedia(\''+thumbnail+'\'); closeMediaManager();"><i class="fa fa-image"></i><?php $L->p('Insert thumbnail') ?><\/a>'+
|
||||
'<a href="#" class="mr-3 text-primary" onClick="editorInsertLinkedMedia(\''+thumbnail+'\',\''+image+'\'); closeMediaManager();"><i class="fa fa-link"></i><?php $L->p('Insert linked thumbnail') ?><\/a>'+
|
||||
'<a href="#" class="me-3 text-primary" onClick="editorInsertMedia(\''+image+'\'); closeMediaManager();"><i class="fa fa-plus-circle"></i><?php $L->p('Insert') ?><\/a>'+
|
||||
'<a href="#" class="me-3 text-primary" onClick="editorInsertMedia(\''+thumbnail+'\'); closeMediaManager();"><i class="fa fa-image"></i><?php $L->p('Insert thumbnail') ?><\/a>'+
|
||||
'<a href="#" class="me-3 text-primary" onClick="editorInsertLinkedMedia(\''+thumbnail+'\',\''+image+'\'); closeMediaManager();"><i class="fa fa-link"></i><?php $L->p('Insert linked thumbnail') ?><\/a>'+
|
||||
'<a href="#" class="text-primary" onClick="setCoverImage(\''+filename+'\'); closeMediaManager();"><i class="fa fa-desktop"></i><?php $L->p('Set as cover image') ?><\/button>'+
|
||||
'<a href="#" class="float-right text-danger" onClick="deleteMedia(\''+filename+'\')"><i class="fa fa-trash-o"></i><?php $L->p('Delete') ?><\/a>'+
|
||||
'<\/div>'+
|
109
bl-kernel/admin/themes/koblog/html/navbar.php
Normal file
109
bl-kernel/admin/themes/koblog/html/navbar.php
Normal file
|
@ -0,0 +1,109 @@
|
|||
<nav class="navbar navbar-expand-lg bg-body-tertiary mb-3">
|
||||
<div class="container-fluid">
|
||||
<span class="navbar-brand text-uppercase">🦎 KOBLOG</span>
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarNav">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0 align-items-center">
|
||||
<li class="nav-item d-lg-none">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'dashboard' ?>">
|
||||
<?php $L->p('Dashboard') ?></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" target="_blank" href="<?php echo HTML_PATH_ROOT ?>">
|
||||
<?php $L->p('Website') ?></a>
|
||||
</li>
|
||||
<li class="nav-item d-lg-none">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'content' ?>">
|
||||
<?php $L->p('Content') ?></a>
|
||||
</li>
|
||||
<?php if (!checkRole(array('admin'),false)): ?>
|
||||
<li class="nav-item d-lg-none">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'edit-user/'.$login->username() ?>">
|
||||
<?php $L->p('Profile') ?></a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
<?php if (checkRole(array('admin'),false)): ?>
|
||||
<li class="nav-item d-lg-none">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'categories' ?>">
|
||||
<?php $L->p('Categories') ?></a>
|
||||
</li>
|
||||
<li class="nav-item d-lg-none">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'users' ?>">
|
||||
<?php $L->p('Users') ?></a>
|
||||
</li>
|
||||
<li class="nav-item d-lg-none">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'settings' ?>">
|
||||
<?php $L->p('Settings') ?></a>
|
||||
</li>
|
||||
<li class="nav-item d-lg-none">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'plugins' ?>">
|
||||
<?php $L->p('Plugins') ?></a>
|
||||
</li>
|
||||
<li class="nav-item d-lg-none">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'themes' ?>">
|
||||
<?php $L->p('Themes') ?></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'about' ?>">
|
||||
<?php $L->p('About') ?></a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
<?php if (checkRole(array('admin'),false)): ?>
|
||||
<?php
|
||||
if (!empty($plugins['adminSidebar'])) {
|
||||
foreach ($plugins['adminSidebar'] as $pluginSidebar) {
|
||||
echo '<li class="nav-item d-lg-none">';
|
||||
echo $pluginSidebar->adminSidebar();
|
||||
echo '</li>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
<?php endif; ?>
|
||||
<li class="nav-item d-lg-none">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'logout' ?>">
|
||||
<?php $L->p('Logout') ?></a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="navbar-nav mb-2 mb-lg-0 align-items-center d-none d-lg-flex">
|
||||
<li class="nav-item mx-1">
|
||||
<div class="btn-group dropdown">
|
||||
<a class="btn btn-sm btn-outline-primary" href="<?php echo HTML_PATH_ADMIN_ROOT.'new-content' ?>"><span class="fa fa-plus-circle"></span><?php $L->p('New') ?></a>
|
||||
<button type="button" class="btn btn-sm btn-outline-primary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
<span class="visually-hidden">Toggle Dropdown</span>
|
||||
</button>
|
||||
<ul class="dropdown-menu dropdown-menu-end">
|
||||
<li>
|
||||
<a class="dropdown-item" href="<?php echo HTML_PATH_ADMIN_ROOT.'new-content' ?>">
|
||||
<?php $L->p('New content') ?></a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item" href="<?php echo HTML_PATH_ADMIN_ROOT.'new-category' ?>">
|
||||
<?php $L->p('New category') ?></a>
|
||||
</li>
|
||||
<?php if (checkRole(array('admin'),false)): ?>
|
||||
<li><hr class="dropdown-divider"></li>
|
||||
<li>
|
||||
<a class="dropdown-item" href="<?php echo HTML_PATH_ADMIN_ROOT.'new-user' ?>">
|
||||
<?php $L->p('New user') ?></a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
<li class="nav-item dropdown ms-1">
|
||||
<a class="nav-link dropdown-toggle p-1" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
<?php echo '<img class="profilePicture me-1" alt="" src="'.(Sanitize::pathFile(PATH_UPLOADS_PROFILES.$login->getUserData()->username().'.png')?DOMAIN_UPLOADS_PROFILES.$login->getUserData()->username().'.png':HTML_PATH_CORE_IMG.'default.svg').'" />'; ?>
|
||||
<?php echo $login->getUserData()->displayName(); ?>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-menu-end">
|
||||
<li><a class="dropdown-item" href="<?php echo HTML_PATH_ADMIN_ROOT.'edit-user/'.$login->username() ?>"><?php $L->p('Profile') ?></a></a></li>
|
||||
<li><hr class="dropdown-divider"></li>
|
||||
<li><a class="dropdown-item" href="<?php echo HTML_PATH_ADMIN_ROOT.'logout' ?>"><?php $L->p('Logout') ?></a></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
70
bl-kernel/admin/themes/koblog/html/sidebar.php
Normal file
70
bl-kernel/admin/themes/koblog/html/sidebar.php
Normal file
|
@ -0,0 +1,70 @@
|
|||
<!-- Use .flex-column to set a vertical direction -->
|
||||
<ul class="nav flex-column pt-4">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'dashboard' ?>"><span class="fa fa-globe fa-fw"></span><?php $L->p('Dashboard') ?></a>
|
||||
</li>
|
||||
|
||||
<?php if (!checkRole(array('admin'),false)): ?>
|
||||
<li class="nav-item mt-3">
|
||||
<h4><?php $L->p('Content') ?></h4>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'content' ?>"><span class="fa fa-archive fa-fw"></span><?php $L->p('Articles and pages') ?></a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if (checkRole(array('admin'),false)): ?>
|
||||
|
||||
<li class="nav-item mt-3">
|
||||
<h4><?php $L->p('Content') ?></h4>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'content' ?>"><span class="fa fa-archive fa-fw"></span><?php $L->p('Articles and pages') ?></a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'categories' ?>"><span class="fa fa-tags fa-fw"></span><?php $L->p('Categories') ?></a>
|
||||
</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>
|
||||
<?php if (Theme::supports("sidebar", false)): ?>
|
||||
<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>
|
||||
<?php endif; ?>
|
||||
|
||||
<li class="nav-item mt-3">
|
||||
<h4><?php $L->p('Settings') ?></h4>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo HTML_PATH_ADMIN_ROOT.'settings' ?>"><span class="fa fa-gear fa-fw"></span><?php $L->p('General') ?></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<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 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>
|
||||
</li>
|
||||
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if (checkRole(array('admin', 'editor'),false)): ?>
|
||||
|
||||
<?php
|
||||
if (!empty($plugins['adminSidebar'])) {
|
||||
echo '<li class="nav-item"><hr></li>';
|
||||
foreach ($plugins['adminSidebar'] as $pluginSidebar) {
|
||||
echo '<li class="nav-item">';
|
||||
echo $pluginSidebar->adminSidebar();
|
||||
echo '</li>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<?php endif; ?>
|
||||
</ul>
|
|
@ -8,12 +8,12 @@
|
|||
<meta name="generator" content="Koblog">
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="shortcut icon" type="image/x-icon" href="<?php echo HTML_PATH_CORE_IMG.'favicon.png?version='.KOBLOG_VERSION ?>">
|
||||
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>🦎</text></svg>">
|
||||
|
||||
<!-- CSS -->
|
||||
<?php
|
||||
echo Theme::cssBootstrap();
|
||||
echo Theme::cssLineAwesome();
|
||||
echo Theme::cssFontAwesome();
|
||||
echo Theme::css(array(
|
||||
'koblog.css',
|
||||
'koblog.bootstrap.css'
|
||||
|
@ -41,7 +41,7 @@
|
|||
<?php Theme::plugins('adminHead') ?>
|
||||
|
||||
</head>
|
||||
<body class="h-100">
|
||||
<body>
|
||||
|
||||
<!-- Plugins -->
|
||||
<?php Theme::plugins('adminBodyBegin') ?>
|
||||
|
@ -60,23 +60,24 @@
|
|||
<!-- Overlay background -->
|
||||
<div id="jsshadow"></div>
|
||||
|
||||
<!-- Alert -->
|
||||
<?php include('html/alert.php'); ?>
|
||||
|
||||
<!-- Navbar, only for small devices -->
|
||||
<?php include('html/navbar.php'); ?>
|
||||
<!-- LEFT SIDEBAR - Display only on large devices -->
|
||||
<div class="bg-dark admin-sidebar text-white d-none d-lg-block">
|
||||
<?php include('html/sidebar.php'); ?>
|
||||
</div>
|
||||
|
||||
<div class="container h-100">
|
||||
<div class="h-100" id="main-area">
|
||||
<!-- 25%/75% split on large devices, small, medium devices hide -->
|
||||
<div class="row h-100">
|
||||
<div class="h-100">
|
||||
|
||||
<!-- LEFT SIDEBAR - Display only on large devices -->
|
||||
<div class="sidebar col-lg-2 d-none d-lg-block">
|
||||
<?php include('html/sidebar.php'); ?>
|
||||
</div>
|
||||
<!-- Alert -->
|
||||
<?php include('html/alert.php'); ?>
|
||||
|
||||
<!-- Navbar -->
|
||||
<?php include('html/navbar.php'); ?>
|
||||
|
||||
<!-- RIGHT MAIN -->
|
||||
<div class="col-lg-10 pt-3 pb-1 h-100">
|
||||
<div class="container h-100">
|
||||
<?php
|
||||
if (Sanitize::pathFile(PATH_ADMIN_VIEWS, $layout['view'].'.php')) {
|
||||
include(PATH_ADMIN_VIEWS.$layout['view'].'.php');
|
|
@ -26,7 +26,7 @@ class Bootstrap
|
|||
<p>$modalText</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn $buttonSecondaryClass" data-dismiss="modal">$buttonSecondary</button>
|
||||
<button type="button" class="btn $buttonSecondaryClass" data-bs-dismiss="modal">$buttonSecondary</button>
|
||||
<button type="button" class="btn $buttonPrimaryClass">$buttonPrimary</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -35,6 +35,21 @@ class Bootstrap
|
|||
EOF;
|
||||
}
|
||||
|
||||
public static function cardBegin($title) {
|
||||
return <<<EOF
|
||||
<div class="card mb-3">
|
||||
<h6 class="card-header">$title</h6>
|
||||
<div class="card-body">
|
||||
EOF;
|
||||
}
|
||||
|
||||
public static function cardEnd() {
|
||||
return <<<EOF
|
||||
</div>
|
||||
</div>
|
||||
EOF;
|
||||
}
|
||||
|
||||
public static function link($args)
|
||||
{
|
||||
$options = 'href="' . $args['href'] . '"';
|
||||
|
@ -97,8 +112,9 @@ EOF;
|
|||
public static function formTitle($args)
|
||||
{
|
||||
$title = $args['title'];
|
||||
$mt = $args['mt'] ?? 'mt-2';
|
||||
return <<<EOF
|
||||
<h6 class="mt-4 mb-2 pb-2 border-bottom text-uppercase">$title</h6>
|
||||
<h6 class="$mt mb-0 pb-1 text-uppercase">$title</h6>
|
||||
EOF;
|
||||
}
|
||||
|
||||
|
@ -119,12 +135,13 @@ EOF;
|
|||
$tip = '<small class="form-text text-muted">' . $args['tip'] . '</small>';
|
||||
}
|
||||
|
||||
$class = 'form-group m-0';
|
||||
$class = 'form-group m-0 mb-2';
|
||||
if (isset($args['class'])) {
|
||||
$class = $args['class'];
|
||||
}
|
||||
|
||||
$labelClass = 'mt-4 mb-2 pb-2 border-bottom text-uppercase w-100';
|
||||
$mt = $args['mt'] ?? 'mt-2';
|
||||
$labelClass = $mt.' mb-0 pb-1 text-uppercase w-100';
|
||||
if (isset($args['labelClass'])) {
|
||||
$labelClass = $args['labelClass'];
|
||||
}
|
||||
|
@ -155,13 +172,13 @@ EOF;
|
|||
$id = $args['id'];
|
||||
}
|
||||
|
||||
$class = 'custom-file';
|
||||
$class = 'custom-file mb-2';
|
||||
if (isset($args['class'])) {
|
||||
$class = $class . ' ' . $args['class'];
|
||||
}
|
||||
|
||||
$html = '<div class="' . $class . '">';
|
||||
$html .= '<input type="file" class="custom-file-input" id="' . $id . '">';
|
||||
$html .= '<input type="file" class="form-control custom-file-input" id="' . $id . '">';
|
||||
$html .= '<label class="custom-file-label" for="' . $id . '">' . $args['label'] . '</label>';
|
||||
$html .= '</div>';
|
||||
|
||||
|
@ -180,7 +197,7 @@ EOF;
|
|||
$class = $class . ' ' . $args['class'];
|
||||
}
|
||||
|
||||
$html = '<div class="form-group row">';
|
||||
$html = '<div class="form-group row mb-2">';
|
||||
|
||||
if (!empty($args['label'])) {
|
||||
$html .= '<label for="' . $id . '" class="col-sm-2 col-form-label">' . $args['label'] . '</label>';
|
||||
|
@ -209,9 +226,10 @@ EOF;
|
|||
$class = $class . ' ' . $args['class'];
|
||||
}
|
||||
|
||||
$html = '<div class="form-group m-0">';
|
||||
$html = '<div class="form-group m-0 mb-2">';
|
||||
if (!empty($args['label'])) {
|
||||
$html .= '<label class="mt-4 mb-2 pb-2 border-bottom text-uppercase w-100" for="' . $id . '">' . $args['label'] . '</label>';
|
||||
$mt = $args['mt'] ?? 'mt-2';
|
||||
$html .= '<label class="'.$mt.' mb-0 pb-1 text-uppercase w-100" for="' . $id . '">' . $args['label'] . '</label>';
|
||||
}
|
||||
|
||||
$html .= '<textarea class="' . $class . '" id="' . $id . '" name="' . $args['name'] . '" rows="' . $args['rows'] . '" placeholder="' . $args['placeholder'] . '">' . $args['value'] . '</textarea>';
|
||||
|
@ -257,7 +275,7 @@ EOF;
|
|||
}
|
||||
|
||||
return <<<EOF
|
||||
<div class="form-group row">
|
||||
<div class="form-group row mb-2">
|
||||
$label
|
||||
<div class="col-sm-10">
|
||||
<input class="$class" id="$id" name="$name" value="$value" placeholder="$placeholder" type="$type" dir="auto" $disabled $readonly>
|
||||
|
@ -285,7 +303,8 @@ EOF;
|
|||
$class = $args['class'];
|
||||
}
|
||||
|
||||
$labelClass = 'mt-4 mb-2 pb-2 border-bottom text-uppercase w-100';
|
||||
$mt = $args['mt'] ?? 'mt-2';
|
||||
$labelClass = $mt.' mb-0 pb-1 text-uppercase w-100';
|
||||
if (isset($args['labelClass'])) {
|
||||
$labelClass = $args['labelClass'];
|
||||
}
|
||||
|
@ -322,12 +341,12 @@ EOF;
|
|||
$id = $args['id'];
|
||||
}
|
||||
|
||||
$class = 'custom-select';
|
||||
$class = 'form-select custom-select';
|
||||
if (isset($args['class'])) {
|
||||
$class = $class . ' ' . $args['class'];
|
||||
}
|
||||
|
||||
$html = '<div class="form-group row">';
|
||||
$html = '<div class="form-group row mb-2">';
|
||||
|
||||
if (isset($args['label'])) {
|
||||
$html .= '<label for="' . $id . '" class="col-sm-2 col-form-label">' . $args['label'] . '</label>';
|
||||
|
@ -355,15 +374,16 @@ EOF;
|
|||
$id = $args['id'];
|
||||
}
|
||||
|
||||
$class = 'custom-select';
|
||||
$class = 'custom-select form-select';
|
||||
if (!empty($args['class'])) {
|
||||
$class = $class . ' ' . $args['class'];
|
||||
}
|
||||
|
||||
$html = '<div class="form-group m-0">';
|
||||
$html = '<div class="form-group m-0 mb-2">';
|
||||
|
||||
if (!empty($args['label'])) {
|
||||
$html .= '<label class="mt-4 mb-2 pb-2 border-bottom text-uppercase w-100" for="' . $id . '">' . $args['label'] . '</label>';
|
||||
$mt = $args['mt'] ?? 'mt-2';
|
||||
$html .= '<label class="'.$mt.' mb-0 pb-1 text-uppercase w-100" for="' . $id . '">' . $args['label'] . '</label>';
|
||||
}
|
||||
|
||||
$html .= '<select id="' . $id . '" name="' . $args['name'] . '" class="' . $class . '">';
|
|
@ -3,36 +3,37 @@
|
|||
echo Bootstrap::pageTitle(array('title'=>$L->g('About'), 'icon'=>'info-circle'));
|
||||
|
||||
echo '
|
||||
<table class="table table-striped mt-3">
|
||||
<div class="card">
|
||||
<table class="table m-0">
|
||||
<tbody>
|
||||
';
|
||||
|
||||
echo '<tr>';
|
||||
echo '<tr class="card-tablebody">';
|
||||
echo '<td>Engine</td>';
|
||||
echo '<td>KOBLOG</td>';
|
||||
echo '</tr>';
|
||||
|
||||
echo '<tr>';
|
||||
echo '<tr class="card-tablebody">';
|
||||
echo '<td>Koblog Version</td>';
|
||||
echo '<td>'.KOBLOG_VERSION.'</td>';
|
||||
echo '</tr>';
|
||||
|
||||
echo '<tr>';
|
||||
echo '<tr class="card-tablebody">';
|
||||
echo '<td>Koblog Codename</td>';
|
||||
echo '<td>'.KOBLOG_CODENAME.'</td>';
|
||||
echo '</tr>';
|
||||
|
||||
echo '<tr>';
|
||||
echo '<tr class="card-tablebody">';
|
||||
echo '<td>Koblog Build Number</td>';
|
||||
echo '<td>'.KOBLOG_BUILD.'</td>';
|
||||
echo '</tr>';
|
||||
|
||||
echo '<tr>';
|
||||
echo '<tr class="card-tablebody">';
|
||||
echo '<td>Disk usage</td>';
|
||||
echo '<td>'.Filesystem::bytesToHumanFileSize(Filesystem::getSize(PATH_ROOT)).'</td>';
|
||||
echo '</tr>';
|
||||
|
||||
echo '<tr>';
|
||||
echo '<tr class="card-tablebody">';
|
||||
echo '<td><a href="'.HTML_PATH_ADMIN_ROOT.'developers'.'">Koblog Developers</a></td>';
|
||||
echo '<td></td>';
|
||||
echo '</tr>';
|
||||
|
@ -40,4 +41,5 @@ echo '</tr>';
|
|||
echo '
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
';
|
||||
|
|
|
@ -1,17 +1,23 @@
|
|||
<?php defined('KOBLOG') or die('Koblog CMS.');
|
||||
|
||||
echo "<div class='d-flex justify-content-between align-content-center'>";
|
||||
|
||||
echo Bootstrap::pageTitle(array('title'=>$L->g('Categories'), 'icon'=>'tags'));
|
||||
|
||||
echo "<div>";
|
||||
echo Bootstrap::link(array(
|
||||
'title'=>$L->g('Add a new category'),
|
||||
'title'=>$L->g('New category'),
|
||||
'href'=>HTML_PATH_ADMIN_ROOT.'new-category',
|
||||
'icon'=>'plus'
|
||||
'icon'=>'plus',
|
||||
'class'=>'btn btn-outline-success'
|
||||
));
|
||||
echo "</div></div>";
|
||||
|
||||
echo '
|
||||
<table class="table table-striped mt-3">
|
||||
<div class="card mt-3">
|
||||
<table class="table m-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="card-header">
|
||||
<th class="border-bottom-0" scope="col">'.$L->g('Name').'</th>
|
||||
<th class="border-bottom-0" scope="col">'.$L->g('URL').'</th>
|
||||
</tr>
|
||||
|
@ -21,7 +27,7 @@ echo '
|
|||
|
||||
foreach ($categories->keys() as $key) {
|
||||
$category = new Category($key);
|
||||
echo '<tr>';
|
||||
echo '<tr class="card-tablebody">';
|
||||
echo '<td><a href="'.HTML_PATH_ADMIN_ROOT.'edit-category/'.$key.'">'.$category->name().'</a></td>';
|
||||
echo '<td><a href="'.$category->permalink().'">'.$url->filters('category', false).$key.'</a></td>';
|
||||
echo '</tr>';
|
||||
|
@ -30,4 +36,5 @@ foreach ($categories->keys() as $key) {
|
|||
echo '
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
';
|
||||
|
|
|
@ -2,25 +2,53 @@
|
|||
|
||||
<?php echo Bootstrap::formOpen(array('id'=>'jsform', 'class'=>'plugin-form')); ?>
|
||||
|
||||
<div class="align-middle">
|
||||
<?php if ($plugin->formButtons()): ?>
|
||||
<div class="float-right mt-1">
|
||||
<button type="submit" class="btn btn-primary btn-sm" name="save"><?php $L->p('Save') ?></button>
|
||||
<a class="btn btn-secondary btn-sm" href="<?php echo HTML_PATH_ADMIN_ROOT.'plugins' ?>" role="button"><?php $L->p('Cancel') ?></a>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<?php echo Bootstrap::pageTitle(array('title'=>$plugin->name(), 'icon'=>'cog')); ?>
|
||||
</div>
|
||||
<?php
|
||||
$returnPage = "plugins";
|
||||
|
||||
<?php
|
||||
// Token CSRF
|
||||
echo Bootstrap::formInputHidden(array(
|
||||
'name'=>'tokenCSRF',
|
||||
'value'=>$security->getTokenCSRF()
|
||||
));
|
||||
|
||||
// Print the plugin form
|
||||
echo $plugin->form();
|
||||
switch ($plugin->type()) {
|
||||
case 'theme':
|
||||
$returnPage = "themes";
|
||||
break;
|
||||
case 'widget':
|
||||
$returnPage = "sidebar";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
?>
|
||||
|
||||
<?php echo Bootstrap::formClose(); ?>
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<?php echo Bootstrap::pageTitle(array('title'=>$plugin->name(), 'icon'=>'cog')); ?>
|
||||
<?php if ($plugin->formButtons()): ?>
|
||||
<div>
|
||||
<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.$returnPage ?>" role="button"><?php $L->p('Cancel') ?></a>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
||||
<?php if ($plugin->description()): ?>
|
||||
<p class="alert alert-primary">
|
||||
<?php echo $plugin->description(); ?>
|
||||
</p>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php
|
||||
// Token CSRF
|
||||
echo Bootstrap::formInputHidden(array(
|
||||
'name'=>'tokenCSRF',
|
||||
'value'=>$security->getTokenCSRF()
|
||||
));
|
||||
?>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body plugin-form">
|
||||
<?php
|
||||
|
||||
// Print the plugin form
|
||||
echo $plugin->form();
|
||||
?>
|
||||
|
||||
<?php echo Bootstrap::formClose(); ?>
|
||||
</div>
|
||||
</div>
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
echo Bootstrap::pageTitle(array('title'=>$L->g('Content'), 'icon'=>'archive'));
|
||||
echo Bootstrap::pageTitle(array('title'=>$L->g('Articles and pages'), 'icon'=>'archive'));
|
||||
|
||||
function table($type) {
|
||||
global $url;
|
||||
|
@ -15,7 +15,7 @@ function table($type) {
|
|||
if ($type=='published') {
|
||||
$list = $published;
|
||||
if (empty($list)) {
|
||||
echo '<p class="mt-4 text-muted">';
|
||||
echo '<p class="alert alert-warning">';
|
||||
echo $L->g('There are no pages at this moment.');
|
||||
echo '</p>';
|
||||
return false;
|
||||
|
@ -23,7 +23,7 @@ function table($type) {
|
|||
} elseif ($type=='draft') {
|
||||
$list = $drafts;
|
||||
if (empty($list)) {
|
||||
echo '<p class="mt-4 text-muted">';
|
||||
echo '<p class="alert alert-warning">';
|
||||
echo $L->g('There are no draft pages at this moment.');
|
||||
echo '</p>';
|
||||
return false;
|
||||
|
@ -31,7 +31,7 @@ function table($type) {
|
|||
} elseif ($type=='scheduled') {
|
||||
$list = $scheduled;
|
||||
if (empty($list)) {
|
||||
echo '<p class="mt-4 text-muted">';
|
||||
echo '<p class="alert alert-warning">';
|
||||
echo $L->g('There are no scheduled pages at this moment.');
|
||||
echo '</p>';
|
||||
return false;
|
||||
|
@ -39,7 +39,7 @@ function table($type) {
|
|||
} elseif ($type=='static') {
|
||||
$list = $static;
|
||||
if (empty($list)) {
|
||||
echo '<p class="mt-4 text-muted">';
|
||||
echo '<p class="alert alert-warning">';
|
||||
echo $L->g('There are no static pages at this moment.');
|
||||
echo '</p>';
|
||||
return false;
|
||||
|
@ -47,7 +47,7 @@ function table($type) {
|
|||
} elseif ($type=='sticky') {
|
||||
$list = $sticky;
|
||||
if (empty($list)) {
|
||||
echo '<p class="mt-4 text-muted">';
|
||||
echo '<p class="alert alert-warning">';
|
||||
echo $L->g('There are no sticky pages at this moment.');
|
||||
echo '</p>';
|
||||
return false;
|
||||
|
@ -57,9 +57,10 @@ function table($type) {
|
|||
}
|
||||
|
||||
echo '
|
||||
<table class="table mt-3">
|
||||
<div class="card">
|
||||
<table class="table m-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="card-header">
|
||||
<th class="border-0" scope="col">'.$L->g('Title').'</th>
|
||||
';
|
||||
|
||||
|
@ -67,7 +68,7 @@ function table($type) {
|
|||
echo '<th class="border-0 d-none d-lg-table-cell" scope="col">'.$L->g('URL').'</th>';
|
||||
}
|
||||
|
||||
echo ' <th class="border-0 text-center d-sm-table-cell" scope="col">'.$L->g('Actions').'</th>
|
||||
echo ' <th class="border-0 text-end d-sm-table-cell" scope="col">'.$L->g('Actions').'</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -78,7 +79,7 @@ function table($type) {
|
|||
try {
|
||||
$page = new Page($pageKey);
|
||||
if (!$page->isChild()) {
|
||||
echo '<tr>
|
||||
echo '<tr class="card-tablebody">
|
||||
<td>
|
||||
<div>
|
||||
<a style="font-size: 1.1em" href="'.HTML_PATH_ADMIN_ROOT.'edit-content/'.$page->key().'">'
|
||||
|
@ -95,11 +96,11 @@ function table($type) {
|
|||
echo '<td class="d-none d-lg-table-cell"><a target="_blank" href="'.$page->permalink().'">'.$friendlyURL.'</a></td>';
|
||||
}
|
||||
|
||||
echo '<td class="contentTools pt-3 text-center d-sm-table-cell">'.PHP_EOL;
|
||||
echo '<a class="text-secondary d-none d-md-inline" target="_blank" href="'.$page->permalink().'"><i class="fa fa-desktop"></i>'.$L->g('View').'</a>'.PHP_EOL;
|
||||
echo '<a class="text-secondary d-none d-md-inline ml-2" href="'.HTML_PATH_ADMIN_ROOT.'edit-content/'.$page->key().'"><i class="fa fa-edit"></i>'.$L->g('Edit').'</a>'.PHP_EOL;
|
||||
echo '<td class="contentTools pt-3 text-end d-sm-table-cell">'.PHP_EOL;
|
||||
echo '<a class="btn btn-sm btn-secondary d-none d-md-inline" target="_blank" href="'.$page->permalink().'"><i class="fa fa-desktop"></i>'.$L->g('View').'</a>'.PHP_EOL;
|
||||
echo '<a class="btn btn-sm btn-secondary d-none d-md-inline ms-2" href="'.HTML_PATH_ADMIN_ROOT.'edit-content/'.$page->key().'"><i class="fa fa-edit"></i>'.$L->g('Edit').'</a>'.PHP_EOL;
|
||||
if (count($page->children())==0) {
|
||||
echo '<a href="#" class="ml-2 text-danger deletePageButton d-block d-sm-inline" data-toggle="modal" data-target="#jsdeletePageModal" data-key="'.$page->key().'"><i class="fa fa-trash"></i>'.$L->g('Delete').'</a>'.PHP_EOL;
|
||||
echo '<a href="#" class="ms-2 btn btn-sm btn-danger deletePageButton d-block d-sm-inline" data-toggle="modal" data-target="#jsdeletePageModal" data-key="'.$page->key().'"><i class="fa fa-trash"></i>'.$L->g('Delete').'</a>'.PHP_EOL;
|
||||
}
|
||||
echo '</td>';
|
||||
|
||||
|
@ -107,7 +108,7 @@ function table($type) {
|
|||
|
||||
foreach ($page->children() as $child) {
|
||||
//if ($child->published()) {
|
||||
echo '<tr>
|
||||
echo '<tr class="card-tablebody">
|
||||
<td class="child">
|
||||
<div>
|
||||
<a style="font-size: 1.1em" href="'.HTML_PATH_ADMIN_ROOT.'edit-content/'.$child->key().'">'
|
||||
|
@ -124,12 +125,12 @@ function table($type) {
|
|||
echo '<td class="d-none d-lg-table-cell"><a target="_blank" href="'.$child->permalink().'">'.$friendlyURL.'</a></td>';
|
||||
}
|
||||
|
||||
echo '<td class="contentTools pt-3 text-center d-sm-table-cell">'.PHP_EOL;
|
||||
echo '<td class="contentTools pt-3 text-end d-sm-table-cell">'.PHP_EOL;
|
||||
if ($type=='published' || $type=='static' || $type=='sticky') {
|
||||
echo '<a class="text-secondary d-none d-md-inline" target="_blank" href="'.$child->permalink().'"><i class="fa fa-desktop"></i>'.$L->g('View').'</a>'.PHP_EOL;
|
||||
echo '<a class="btn btn-sm btn-secondary d-none d-md-inline" target="_blank" href="'.$child->permalink().'"><i class="fa fa-desktop"></i>'.$L->g('View').'</a>'.PHP_EOL;
|
||||
}
|
||||
echo '<a class="text-secondary d-none d-md-inline ml-2" href="'.HTML_PATH_ADMIN_ROOT.'edit-content/'.$child->key().'"><i class="fa fa-edit"></i>'.$L->g('Edit').'</a>'.PHP_EOL;
|
||||
echo '<a class="ml-2 text-danger deletePageButton d-block d-sm-inline" href="#" data-toggle="modal" data-target="#jsdeletePageModal" data-key="'.$child->key().'"><i class="fa fa-trash"></i>'.$L->g('Delete').'</a>'.PHP_EOL;
|
||||
echo '<a class="btn btn-sm btn-secondary d-none d-md-inline ms-2" href="'.HTML_PATH_ADMIN_ROOT.'edit-content/'.$child->key().'"><i class="fa fa-edit"></i>'.$L->g('Edit').'</a>'.PHP_EOL;
|
||||
echo '<a class="ms-2 btn btn-sm btn-danger deletePageButton d-block d-sm-inline" href="#" data-toggle="modal" data-target="#jsdeletePageModal" data-key="'.$child->key().'"><i class="fa fa-trash"></i>'.$L->g('Delete').'</a>'.PHP_EOL;
|
||||
echo '</td>';
|
||||
|
||||
echo '</tr>';
|
||||
|
@ -144,7 +145,7 @@ function table($type) {
|
|||
foreach ($list as $pageKey) {
|
||||
try {
|
||||
$page = new Page($pageKey);
|
||||
echo '<tr>';
|
||||
echo '<tr class="card-tablebody">';
|
||||
echo '<td class="pt-3">
|
||||
<div>
|
||||
<a style="font-size: 1.1em" href="'.HTML_PATH_ADMIN_ROOT.'edit-content/'.$page->key().'">'
|
||||
|
@ -161,13 +162,13 @@ function table($type) {
|
|||
echo '<td class="pt-3 d-none d-lg-table-cell"><a target="_blank" href="'.$page->permalink().'">'.$friendlyURL.'</a></td>';
|
||||
}
|
||||
|
||||
echo '<td class="contentTools pt-3 text-center d-sm-table-cell">'.PHP_EOL;
|
||||
echo '<td class="contentTools pt-3 text-end d-sm-table-cell">'.PHP_EOL;
|
||||
if ($type=='published' || $type=='static' || $type=='sticky') {
|
||||
echo '<a class="text-secondary d-none d-md-inline" target="_blank" href="'.$page->permalink().'"><i class="fa fa-desktop"></i>'.$L->g('View').'</a>'.PHP_EOL;
|
||||
echo '<a class="btn btn-sm btn-secondary d-none d-md-inline" target="_blank" href="'.$page->permalink().'"><i class="fa fa-desktop"></i>'.$L->g('View').'</a>'.PHP_EOL;
|
||||
}
|
||||
echo '<a class="text-secondary d-none d-md-inline ml-2" href="'.HTML_PATH_ADMIN_ROOT.'edit-content/'.$page->key().'"><i class="fa fa-edit"></i>'.$L->g('Edit').'</a>'.PHP_EOL;
|
||||
echo '<a class="btn btn-sm btn-secondary d-none d-md-inline ms-2" href="'.HTML_PATH_ADMIN_ROOT.'edit-content/'.$page->key().'"><i class="fa fa-edit"></i>'.$L->g('Edit').'</a>'.PHP_EOL;
|
||||
if (count($page->children())==0) {
|
||||
echo '<a href="#" class="ml-2 text-danger deletePageButton d-block d-sm-inline" data-toggle="modal" data-target="#jsdeletePageModal" data-key="'.$page->key().'"><i class="fa fa-trash"></i>'.$L->g('Delete').'</a>'.PHP_EOL;
|
||||
echo '<a href="#" class="ms-2 btn btn-sm btn-danger deletePageButton d-block d-sm-inline" data-bs-toggle="modal" data-bs-target="#jsdeletePageModal" data-key="'.$page->key().'"><i class="fa fa-trash"></i>'.$L->g('Delete').'</a>'.PHP_EOL;
|
||||
}
|
||||
echo '</td>';
|
||||
|
||||
|
@ -181,31 +182,32 @@ function table($type) {
|
|||
echo '
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
';
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<!-- TABS -->
|
||||
<ul class="nav nav-tabs" role="tablist">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" id="pages-tab" data-toggle="tab" href="#pages" role="tab"><?php $L->p('Pages') ?></a>
|
||||
<ul class="nav nav-pills mb-3" role="tablist">
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link active" id="pages-tab" data-bs-toggle="tab" data-bs-target="#pages" role="tab"><?php $L->p('Pages') ?></button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" id="static-tab" data-toggle="tab" href="#static" role="tab"><?php $L->p('Static') ?></a>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" id="static-tab" data-bs-toggle="tab" data-bs-target="#static" role="tab"><?php $L->p('Static') ?></button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" id="sticky-tab" data-toggle="tab" href="#sticky" role="tab"><?php $L->p('Sticky') ?></a>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" id="sticky-tab" data-bs-toggle="tab" data-bs-target="#sticky" role="tab"><?php $L->p('Sticky') ?></button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" id="scheduled-tab" data-toggle="tab" href="#scheduled" role="tab"><?php $L->p('Scheduled') ?> <?php if (count($scheduled)>0) { echo '<span class="badge badge-danger">'.count($scheduled).'</span>'; } ?></a>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" id="scheduled-tab" data-bs-toggle="tab" data-bs-target="#scheduled" role="tab"><?php $L->p('Scheduled') ?> <?php if (count($scheduled)>0) { echo '<span class="badge bg-primary">'.count($scheduled).'</span>'; } ?></button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" id="draft-tab" data-toggle="tab" href="#draft" role="tab"><?php $L->p('Draft') ?></a>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" id="draft-tab" data-bs-toggle="tab" data-bs-target="#draft" role="tab"><?php $L->p('Draft') ?></button>
|
||||
</li>
|
||||
<?php if (!empty($autosave)): ?>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" id="autosave-tab" data-toggle="tab" href="#autosave" role="tab"><?php $L->p('Autosave') ?></a>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" id="autosave-tab" data-bs-toggle="tab" data-bs-target="#autosave" role="tab"><?php $L->p('Autosave') ?></button>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
</ul>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<div id="dashboard" class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-7">
|
||||
<div class="col-md-8">
|
||||
|
||||
<!-- Good message -->
|
||||
<div>
|
||||
|
@ -9,13 +9,13 @@
|
|||
$username = $login->username();
|
||||
$user = new User($username);
|
||||
$name = '';
|
||||
if ($user->nickname()) {
|
||||
$name = $user->nickname();
|
||||
if ($user->displayName()) {
|
||||
$name = $user->displayName();
|
||||
} elseif ($user->firstName()) {
|
||||
$name = $user->firstName();
|
||||
}
|
||||
?>
|
||||
<span class="fa fa-hand-spock-o"></span><span><?php echo $L->g('welcome') ?></span>
|
||||
<span class="fa fa-hand-spock"></span><span><?php echo $L->g('welcome') ?></span>
|
||||
</h2>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
@ -23,13 +23,13 @@
|
|||
var date = new Date()
|
||||
var hours = date.getHours()
|
||||
if (hours >= 6 && hours < 12) {
|
||||
$(this).html('<span class="fa fa-sun-o"></span><?php echo $L->g('good-morning') . ', ' . $name ?>');
|
||||
$(this).html('<span class="fa fa-sun"></span><?php echo $L->g('good-morning') . ', ' . $name ?>');
|
||||
} else if (hours >= 12 && hours < 18) {
|
||||
$(this).html('<span class="fa fa-sun-o"></span><?php echo $L->g('good-afternoon') . ', ' . $name ?>');
|
||||
$(this).html('<span class="fa fa-sun"></span><?php echo $L->g('good-afternoon') . ', ' . $name ?>');
|
||||
} else if (hours >= 18 && hours < 22) {
|
||||
$(this).html('<span class="fa fa-moon-o"></span><?php echo $L->g('good-evening') . ', ' . $name ?>');
|
||||
$(this).html('<span class="fa fa-moon"></span><?php echo $L->g('good-evening') . ', ' . $name ?>');
|
||||
} else {
|
||||
$(this).html('<span class="fa fa-moon-o"></span><span><?php echo $L->g('good-night') . ', ' . $name ?></span>');
|
||||
$(this).html('<span class="fa fa-moon"></span><span><?php echo $L->g('good-night') . ', ' . $name ?></span>');
|
||||
}
|
||||
}).fadeIn(1000);
|
||||
});
|
||||
|
@ -88,7 +88,7 @@
|
|||
html += '<div class="search-suggestion-item">' + data.text + ' <span class="badge badge-pill badge-light">' + data.type + '</span></div>';
|
||||
html += '<div class="search-suggestion-options">';
|
||||
html += '<a target="_blank" href="' + DOMAIN_PAGES + data.id + '"><?php $L->p('view') ?></a>';
|
||||
html += '<a class="ml-2" href="' + DOMAIN_ADMIN + 'edit-content/' + data.id + '"><?php $L->p('edit') ?></a>';
|
||||
html += '<a class="ms-2" href="' + DOMAIN_ADMIN + 'edit-content/' + data.id + '"><?php $L->p('edit') ?></a>';
|
||||
html += '</div></div>';
|
||||
}
|
||||
|
||||
|
@ -110,30 +110,30 @@
|
|||
|
||||
<?php Theme::plugins('dashboard') ?>
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<div class="col-md-4">
|
||||
|
||||
<!-- Notifications -->
|
||||
<ul class="list-group list-group-striped b-0">
|
||||
<li class="list-group-item pt-0">
|
||||
<h4 class="m-0"><?php $L->p('Notifications') ?></h4>
|
||||
</li>
|
||||
<?php
|
||||
$logs = array_slice($syslog->db, 0, NOTIFICATIONS_AMOUNT);
|
||||
foreach ($logs as $log) {
|
||||
$phrase = $L->g($log['dictionaryKey']);
|
||||
echo '<li class="list-group-item">';
|
||||
echo $phrase;
|
||||
if (!empty($log['notes'])) {
|
||||
echo ' « <b>' . $log['notes'] . '</b> »';
|
||||
<div class="card">
|
||||
<h4 class="card-header"><?php $L->p('Notifications') ?></h4>
|
||||
<!-- Notifications -->
|
||||
<ul class="list-group list-group-striped b-0">
|
||||
<?php
|
||||
$logs = array_slice($syslog->db, 0, NOTIFICATIONS_AMOUNT);
|
||||
foreach ($logs as $log) {
|
||||
$phrase = $L->g($log['dictionaryKey']);
|
||||
echo '<li class="list-group-item">';
|
||||
echo $phrase;
|
||||
if (!empty($log['notes'])) {
|
||||
echo ' « <b>' . $log['notes'] . '</b> »';
|
||||
}
|
||||
echo '<br><span class="notification-date"><small>';
|
||||
echo Date::format($log['date'], DB_DATE_FORMAT, NOTIFICATIONS_DATE_FORMAT);
|
||||
echo ' [ ' . $log['username'] . ' ]';
|
||||
echo '</small></span>';
|
||||
echo '</li>';
|
||||
}
|
||||
echo '<br><span class="notification-date"><small>';
|
||||
echo Date::format($log['date'], DB_DATE_FORMAT, NOTIFICATIONS_DATE_FORMAT);
|
||||
echo ' [ ' . $log['username'] . ' ]';
|
||||
echo '</small></span>';
|
||||
echo '</li>';
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
?>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -2,15 +2,16 @@
|
|||
|
||||
<?php echo Bootstrap::formOpen(array('id'=>'jsform')); ?>
|
||||
|
||||
<div class="align-middle">
|
||||
<div class="float-right mt-1">
|
||||
<button type="submit" class="btn btn-primary btn-sm" name="save"><?php $L->p('Save') ?></button>
|
||||
<button type="button" class="btn btn-danger btn-sm" data-toggle="modal" data-target="#jsdeleteModal"><?php $L->p('Delete') ?></button>
|
||||
<a class="btn btn-secondary btn-sm" href="<?php echo HTML_PATH_ADMIN_ROOT.'dashboard' ?>" role="button"><?php $L->p('Cancel') ?></a>
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<?php echo Bootstrap::pageTitle(array('title'=>$L->g('Edit Category'), 'icon'=>'tag')); ?>
|
||||
<div>
|
||||
<button type="submit" class="btn btn-primary" name="save"><?php $L->p('Save') ?></button>
|
||||
<button type="button" class="btn btn-danger" data-bs-toggle="modal" data-bs-target="#jsdeleteModal"><?php $L->p('Delete') ?></button>
|
||||
<a class="btn btn-secondary" href="<?php echo HTML_PATH_ADMIN_ROOT.'dashboard' ?>" role="button"><?php $L->p('Cancel') ?></a>
|
||||
</div>
|
||||
<?php echo Bootstrap::pageTitle(array('title'=>$L->g('Edit Category'), 'icon'=>'cog')); ?>
|
||||
</div>
|
||||
|
||||
<div class="card"><div class="card-body">
|
||||
<?php
|
||||
// Token CSRF
|
||||
echo Bootstrap::formInputHidden(array(
|
||||
|
@ -68,6 +69,8 @@
|
|||
echo Bootstrap::formClose();
|
||||
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Modal for delete category -->
|
||||
<?php
|
||||
|
|
|
@ -46,51 +46,84 @@ echo Bootstrap::formInputHidden(array(
|
|||
));
|
||||
?>
|
||||
|
||||
<!-- TOOLBAR -->
|
||||
<div id="jseditorToolbar" class="mb-1">
|
||||
<div id="jseditorToolbarRight" class="btn-group btn-group-sm float-right" role="group" aria-label="Toolbar right">
|
||||
<button type="button" class="btn btn-light" id="jsmediaManagerOpenModal" data-toggle="modal" data-target="#jsmediaManagerModal"><span class="fa fa-image"></span> <?php $L->p('Images') ?></button>
|
||||
<button type="button" class="btn btn-light" id="jsoptionsSidebar" style="z-index:30"><span class="fa fa-cog"></span> <?php $L->p('Options') ?></button>
|
||||
</div>
|
||||
<div class="row">
|
||||
|
||||
<div id="jseditorToolbarLeft">
|
||||
<button type="button" class="btn btn-sm btn-primary" id="jsbuttonSave"><?php echo $L->g('Save') ?></button>
|
||||
<button id="jsbuttonPreview" type="button" class="btn btn-sm btn-secondary"><?php $L->p('Preview') ?></button>
|
||||
<span id="jsswitchButton" data-switch="<?php echo ($page->draft() ? 'draft' : 'publish') ?>" class="ml-2 text-secondary switch-button"><i class="fa fa-square switch-icon-<?php echo ($page->draft() ? 'draft' : 'publish') ?>"></i> <?php echo ($page->draft() ? $L->g('Draft') : $L->g('Publish')) ?></span>
|
||||
</div>
|
||||
<!-- TOOLBAR -->
|
||||
<div class="mb-3 col-lg-6">
|
||||
<button type="button" class="btn btn-light" data-bs-toggle="modal" data-bs-target="#jsmediaManagerModal"><span class="fa fa-image"></span> <?php $L->p('Images') ?></button>
|
||||
<span id="jsswitchButton" data-switch="<?php echo ($page->draft() ? 'draft' : 'publish') ?>" class="ms-2 btn-outline-<?php echo ($page->draft() ? 'light' : 'success') ?> btn"><?php echo ($page->draft() ? $L->g('Draft') : $L->g('Publish')) ?></span>
|
||||
|
||||
<?php if ($page->scheduled()) : ?>
|
||||
<div class="alert alert-warning p-1 mt-1 mb-0"><?php $L->p('scheduled') ?>: <?php echo $page->date(SCHEDULED_DATE_FORMAT) ?></div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$("#jsoptionsSidebar").on("click", function() {
|
||||
$("#jseditorSidebar").toggle();
|
||||
$("#jsshadow").toggle();
|
||||
});
|
||||
|
||||
$("#jsshadow").on("click", function() {
|
||||
$("#jseditorSidebar").toggle();
|
||||
$("#jsshadow").toggle();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<div class="col-lg-6 text-end">
|
||||
<button id="jsbuttonPreview" type="button" class="btn btn-secondary"><?php $L->p('Preview') ?></button>
|
||||
<button type="button" class="btn btn-primary" id="jsbuttonSave"><?php echo $L->g('Save') ?></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-lg-9">
|
||||
<!-- Title -->
|
||||
<div class="form-group mb-2">
|
||||
<input id="jstitle" name="title" type="text" dir="auto" class="form-control form-control-lg" value="<?php echo $page->title() ?>" placeholder="<?php $L->p('Enter title') ?>">
|
||||
</div>
|
||||
|
||||
<!-- Editor -->
|
||||
<textarea id="jseditor" class="editable h-100" style=""><?php echo $page->contentRaw(true) ?></textarea>
|
||||
|
||||
<!-- Custom fields: BOTTOM -->
|
||||
<?php
|
||||
$customFields = $site->customFields();
|
||||
foreach ($customFields as $field => $options) {
|
||||
if (isset($options['position']) && ($options['position'] == 'bottom')) {
|
||||
if ($options['type'] == "string") {
|
||||
echo Bootstrap::formInputTextBlock(array(
|
||||
'name' => 'custom[' . $field . ']',
|
||||
'label' => (isset($options['label']) ? $options['label'] : ''),
|
||||
'value' => $page->custom($field),
|
||||
'tip' => (isset($options['tip']) ? $options['tip'] : ''),
|
||||
'placeholder' => (isset($options['placeholder']) ? $options['placeholder'] : ''),
|
||||
'class' => 'mt-2',
|
||||
'labelClass' => 'mb-0 pb-1 text-uppercase w-100'
|
||||
|
||||
));
|
||||
} elseif ($options['type'] == "bool") {
|
||||
echo Bootstrap::formCheckbox(array(
|
||||
'name' => 'custom[' . $field . ']',
|
||||
'label' => (isset($options['label']) ? $options['label'] : ''),
|
||||
'placeholder' => (isset($options['placeholder']) ? $options['placeholder'] : ''),
|
||||
'checked' => $page->custom($field),
|
||||
'labelForCheckbox' => (isset($options['tip']) ? $options['tip'] : ''),
|
||||
'class' => 'mt-2',
|
||||
'labelClass' => 'mb-0 pb-1 text-uppercase w-100'
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<!-- SIDEBAR OPTIONS -->
|
||||
<div id="jseditorSidebar">
|
||||
<nav>
|
||||
<div class="nav nav-tabs" id="nav-tab" role="tablist">
|
||||
<a class="nav-link active show" id="nav-general-tab" data-toggle="tab" href="#nav-general" role="tab" aria-controls="general"><?php $L->p('General') ?></a>
|
||||
<a class="nav-link" id="nav-advanced-tab" data-toggle="tab" href="#nav-advanced" role="tab" aria-controls="advanced"><?php $L->p('Advanced') ?></a>
|
||||
<div class="col-lg-3">
|
||||
<nav class="mb-2">
|
||||
<div class="nav nav-pills" id="nav-tab" role="tablist">
|
||||
<a class="nav-link active show" id="nav-general-tab" data-bs-toggle="tab" data-bs-target="#nav-general" role="tab" aria-controls="general"><?php $L->p('General') ?></a>
|
||||
<a class="nav-link" id="nav-advanced-tab" data-bs-toggle="tab" data-bs-target="#nav-advanced" role="tab" aria-controls="advanced"><?php $L->p('Advanced') ?></a>
|
||||
<?php if (!empty($site->customFields())) : ?>
|
||||
<a class="nav-link" id="nav-custom-tab" data-toggle="tab" href="#nav-custom" role="tab" aria-controls="custom"><?php $L->p('Custom') ?></a>
|
||||
<a class="nav-link" id="nav-custom-tab" data-bs-toggle="tab" data-bs-target="#nav-custom" role="tab" aria-controls="custom"><?php $L->p('Custom') ?></a>
|
||||
<?php endif ?>
|
||||
<a class="nav-link" id="nav-seo-tab" data-toggle="tab" href="#nav-seo" role="tab" aria-controls="seo"><?php $L->p('SEO') ?></a>
|
||||
<a class="nav-link" id="nav-seo-tab" data-bs-toggle="tab" data-bs-target="#nav-seo" role="tab" aria-controls="seo"><?php $L->p('SEO') ?></a>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="tab-content pr-3 pl-3 pb-3">
|
||||
<div class="card">
|
||||
<div class="tab-content pr-3 pl-3 pb-3 card-body">
|
||||
<div id="nav-general" class="tab-pane fade show active" role="tabpanel" aria-labelledby="general-tab">
|
||||
<?php
|
||||
// Category
|
||||
|
@ -100,7 +133,17 @@ echo Bootstrap::formInputHidden(array(
|
|||
'selected' => $page->categoryKey(),
|
||||
'class' => '',
|
||||
'emptyOption' => '- ' . $L->g('Uncategorized') . ' -',
|
||||
'options' => $categories->getKeyNameArray()
|
||||
'options' => $categories->getKeyNameArray(),
|
||||
'mt'=>'mt-0'
|
||||
));
|
||||
|
||||
// Tags
|
||||
echo Bootstrap::formInputTextBlock(array(
|
||||
'name' => 'tags',
|
||||
'label' => $L->g('Tags'),
|
||||
'placeholder' => '',
|
||||
'tip' => $L->g('Write the tags separated by comma'),
|
||||
'value' => $page->tags()
|
||||
));
|
||||
|
||||
// Description
|
||||
|
@ -124,7 +167,7 @@ echo Bootstrap::formInputHidden(array(
|
|||
$externalCoverImage = $page->coverImage(false);
|
||||
}
|
||||
?>
|
||||
<label class="mt-4 mb-2 pb-2 border-bottom text-uppercase w-100"><?php $L->p('Cover Image') ?></label>
|
||||
<label class="mt-2 mb-0 pb-1 text-uppercase w-100"><?php $L->p('Cover Image') ?></label>
|
||||
<div>
|
||||
<img id="jscoverImagePreview" class="mx-auto d-block w-100" alt="Cover image preview" src="<?php echo (empty($coverImage) ? HTML_PATH_CORE_IMG . 'default.svg' : $page->coverImage()) ?>" />
|
||||
</div>
|
||||
|
@ -157,7 +200,8 @@ echo Bootstrap::formInputHidden(array(
|
|||
'label' => $L->g('Date'),
|
||||
'placeholder' => '',
|
||||
'value' => $page->dateRaw(),
|
||||
'tip' => $L->g('date-format-format')
|
||||
'tip' => $L->g('date-format-format'),
|
||||
'mt'=>'mt-0'
|
||||
));
|
||||
|
||||
// Type
|
||||
|
@ -181,15 +225,6 @@ echo Bootstrap::formInputHidden(array(
|
|||
'value' => $page->position()
|
||||
));
|
||||
|
||||
// Tags
|
||||
echo Bootstrap::formInputTextBlock(array(
|
||||
'name' => 'tags',
|
||||
'label' => $L->g('Tags'),
|
||||
'placeholder' => '',
|
||||
'tip' => $L->g('Write the tags separated by comma'),
|
||||
'value' => $page->tags()
|
||||
));
|
||||
|
||||
// Parent
|
||||
try {
|
||||
$options = array();
|
||||
|
@ -328,7 +363,8 @@ echo Bootstrap::formInputHidden(array(
|
|||
'tip' => $L->g('URL associated with the content'),
|
||||
'label' => $L->g('Friendly URL'),
|
||||
'placeholder' => $L->g('Leave empty for autocomplete by Koblog.'),
|
||||
'value' => $page->slug()
|
||||
'value' => $page->slug(),
|
||||
'mt'=>'mt-0'
|
||||
));
|
||||
|
||||
// Robots
|
||||
|
@ -363,6 +399,7 @@ echo Bootstrap::formInputHidden(array(
|
|||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Custom fields: TOP -->
|
||||
|
@ -378,7 +415,7 @@ foreach ($customFields as $field => $options) {
|
|||
'tip' => (isset($options['tip']) ? $options['tip'] : ''),
|
||||
'placeholder' => (isset($options['placeholder']) ? $options['placeholder'] : ''),
|
||||
'class' => 'mb-2',
|
||||
'labelClass' => 'mb-2 pb-2 border-bottom text-uppercase w-100'
|
||||
'labelClass' => 'mb-0 pb-1 text-uppercase w-100'
|
||||
|
||||
));
|
||||
} elseif ($options['type'] == "bool") {
|
||||
|
@ -389,54 +426,13 @@ foreach ($customFields as $field => $options) {
|
|||
'checked' => $page->custom($field),
|
||||
'labelForCheckbox' => (isset($options['tip']) ? $options['tip'] : ''),
|
||||
'class' => 'mb-2',
|
||||
'labelClass' => 'mb-2 pb-2 border-bottom text-uppercase w-100'
|
||||
'labelClass' => 'mb-0 pb-1 text-uppercase w-100'
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<!-- Title -->
|
||||
<div class="form-group mb-1">
|
||||
<input id="jstitle" name="title" type="text" dir="auto" class="form-control form-control-lg rounded-0" value="<?php echo $page->title() ?>" placeholder="<?php $L->p('Enter title') ?>">
|
||||
</div>
|
||||
|
||||
<!-- Editor -->
|
||||
<textarea id="jseditor" class="editable h-100" style=""><?php echo $page->contentRaw(true) ?></textarea>
|
||||
|
||||
<!-- Custom fields: BOTTOM -->
|
||||
<?php
|
||||
$customFields = $site->customFields();
|
||||
foreach ($customFields as $field => $options) {
|
||||
if (isset($options['position']) && ($options['position'] == 'bottom')) {
|
||||
if ($options['type'] == "string") {
|
||||
echo Bootstrap::formInputTextBlock(array(
|
||||
'name' => 'custom[' . $field . ']',
|
||||
'label' => (isset($options['label']) ? $options['label'] : ''),
|
||||
'value' => $page->custom($field),
|
||||
'tip' => (isset($options['tip']) ? $options['tip'] : ''),
|
||||
'placeholder' => (isset($options['placeholder']) ? $options['placeholder'] : ''),
|
||||
'class' => 'mt-2',
|
||||
'labelClass' => 'mb-2 pb-2 border-bottom text-uppercase w-100'
|
||||
|
||||
));
|
||||
} elseif ($options['type'] == "bool") {
|
||||
echo Bootstrap::formCheckbox(array(
|
||||
'name' => 'custom[' . $field . ']',
|
||||
'label' => (isset($options['label']) ? $options['label'] : ''),
|
||||
'placeholder' => (isset($options['placeholder']) ? $options['placeholder'] : ''),
|
||||
'checked' => $page->custom($field),
|
||||
'labelForCheckbox' => (isset($options['tip']) ? $options['tip'] : ''),
|
||||
'class' => 'mt-2',
|
||||
'labelClass' => 'mb-2 pb-2 border-bottom text-uppercase w-100'
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
</form>
|
||||
|
||||
<!-- Modal for Delete page -->
|
||||
<div id="jsdeletePageModal" class="modal" tabindex="-1" role="dialog">
|
||||
<div class="modal-dialog">
|
||||
|
@ -462,8 +458,10 @@ foreach ($customFields as $field => $options) {
|
|||
</script>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Modal for Media Manager -->
|
||||
<?php include(PATH_ADMIN_THEMES . 'booty/html/media.php'); ?>
|
||||
<?php include(PATH_ADMIN_THEMES . 'koblog/html/media.php'); ?>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
@ -489,11 +487,13 @@ foreach ($customFields as $field => $options) {
|
|||
// Button switch
|
||||
$("#jsswitchButton").on("click", function() {
|
||||
if ($(this).data("switch") == "publish") {
|
||||
$(this).html('<i class="fa fa-square switch-icon-draft"></i> <?php $L->p('Draft') ?>');
|
||||
$(this).html('<?php $L->p('Draft') ?>');
|
||||
$(this).data("switch", "draft");
|
||||
$(this).attr('class', "ms-2 btn-outline-secondary btn");
|
||||
} else {
|
||||
$(this).html('<i class="fa fa-square switch-icon-publish"></i> <?php $L->p('Publish') ?>');
|
||||
$(this).html('<?php $L->p('Publish') ?>');
|
||||
$(this).data("switch", "publish");
|
||||
$(this).attr('class', "ms-2 btn-outline-success btn");
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -2,24 +2,26 @@
|
|||
|
||||
<?php echo Bootstrap::formOpen(array('id' => 'jsform', 'class' => 'tab-content')); ?>
|
||||
|
||||
<div class="align-middle">
|
||||
<div class="float-right mt-1">
|
||||
<button type="submit" class="btn btn-primary btn-sm" name="save"><?php $L->p('Save') ?></button>
|
||||
<a class="btn btn-secondary btn-sm" href="<?php echo HTML_PATH_ADMIN_ROOT . 'users' ?>" role="button"><?php $L->p('Cancel') ?></a>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<?php echo Bootstrap::pageTitle(array('title' => $L->g('Edit user'), 'icon' => 'user')); ?>
|
||||
<div>
|
||||
<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 . 'users' ?>" role="button"><?php $L->p('Cancel') ?></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- TABS -->
|
||||
<nav class="mb-3">
|
||||
<div class="nav nav-tabs" id="nav-tab" role="tablist">
|
||||
<a class="nav-item nav-link active" id="nav-profile-tab" data-toggle="tab" href="#profile" role="tab" aria-controls="nav-profile" aria-selected="false"><?php $L->p('Profile') ?></a>
|
||||
<a class="nav-item nav-link" id="nav-picture-tab" data-toggle="tab" href="#picture" role="tab" aria-controls="nav-picture" aria-selected="false"><?php $L->p('Profile picture') ?></a>
|
||||
<a class="nav-item nav-link" id="nav-security-tab" data-toggle="tab" href="#security" role="tab" aria-controls="nav-security" aria-selected="false"><?php $L->p('Security') ?></a>
|
||||
<a class="nav-item nav-link" id="nav-social-tab" data-toggle="tab" href="#social" role="tab" aria-controls="nav-social" aria-selected="false"><?php $L->p('Social Networks') ?></a>
|
||||
<div class="d-flex align-items-start">
|
||||
<div>
|
||||
<!-- TABS -->
|
||||
<nav>
|
||||
<div class="nav flex-column nav-pills me-3" id="nav-tab" role="tablist">
|
||||
<a class="nav-item nav-link active" id="nav-profile-tab" data-bs-toggle="tab" data-bs-target="#profile" role="tab" aria-controls="nav-profile" aria-selected="false"><?php $L->p('Profile') ?></a>
|
||||
<a class="nav-item nav-link" id="nav-picture-tab" data-bs-toggle="tab" data-bs-target="#picture" role="tab" aria-controls="nav-picture" aria-selected="false"><?php $L->p('Profile picture') ?></a>
|
||||
<a class="nav-item nav-link" id="nav-security-tab" data-bs-toggle="tab" data-bs-target="#security" role="tab" aria-controls="nav-security" aria-selected="false"><?php $L->p('Security') ?></a>
|
||||
<a class="nav-item nav-link" id="nav-social-tab" data-bs-toggle="tab" data-bs-target="#social" role="tab" aria-controls="nav-social" aria-selected="false"><?php $L->p('Social Networks') ?></a>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<?php
|
||||
// Token CSRF
|
||||
echo Bootstrap::formInputHidden(array(
|
||||
|
@ -34,12 +36,12 @@ echo Bootstrap::formInputHidden(array(
|
|||
));
|
||||
?>
|
||||
|
||||
<div class="tab-content" id="nav-tabContent">
|
||||
<div class="tab-content w-100" id="nav-tabContent">
|
||||
<!-- Profile tab -->
|
||||
<div class="tab-pane fade show active" id="profile" role="tabpanel" aria-labelledby="nav-profile-tab">
|
||||
|
||||
<?php
|
||||
echo Bootstrap::formTitle(array('title' => $L->g('Base Infos')));
|
||||
echo Bootstrap::cardBegin($L->g('Base Infos'));
|
||||
|
||||
// Display username but disable the field
|
||||
echo Bootstrap::formInputText(array(
|
||||
|
@ -72,7 +74,8 @@ echo Bootstrap::formInputHidden(array(
|
|||
'tip' => ''
|
||||
));
|
||||
|
||||
echo Bootstrap::formTitle(array('title' => $L->g('Name')));
|
||||
echo Bootstrap::cardEnd();
|
||||
echo Bootstrap::cardBegin($L->g('Name'));
|
||||
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name' => 'nickname',
|
||||
|
@ -109,8 +112,8 @@ echo Bootstrap::formInputHidden(array(
|
|||
'class' => '',
|
||||
'tip' => $L->g('if-not-present-fallback-on-username')
|
||||
));
|
||||
|
||||
echo Bootstrap::formTitle(array('title' => $L->g('More Infos')));
|
||||
echo Bootstrap::cardEnd();
|
||||
echo Bootstrap::cardBegin($L->g('More Infos'));
|
||||
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name' => 'pronouns',
|
||||
|
@ -138,22 +141,26 @@ echo Bootstrap::formInputHidden(array(
|
|||
'placeholder' => '',
|
||||
'tip' => ''
|
||||
));
|
||||
echo Bootstrap::cardEnd();
|
||||
?>
|
||||
</div>
|
||||
|
||||
<!-- Profile picture tab -->
|
||||
<div class="tab-pane fade" id="picture" role="tabpanel" aria-labelledby="nav-picture-tab">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-4 col-sm-12 p-0 pr-2">
|
||||
<div class="custom-file">
|
||||
<input type="file" class="custom-file-input" id="jsprofilePictureInputFile" name="profilePictureInputFile">
|
||||
<label class="custom-file-label" for="jsprofilePictureInputFile"><?php $L->p('Upload image'); ?></label>
|
||||
<div class="card">
|
||||
<h6 class="card-header"><?php echo $L->g('Profile picture'); ?></h6>
|
||||
<div class="container card-body">
|
||||
<div class="row">
|
||||
<div class="col-lg-4 col-sm-12 p-0 pr-2">
|
||||
<div class="custom-file">
|
||||
<input type="file" class="form-control custom-file-input" id="jsprofilePictureInputFile" name="profilePictureInputFile">
|
||||
<label class="custom-file-label" for="jsprofilePictureInputFile"><?php $L->p('Upload image'); ?></label>
|
||||
</div>
|
||||
<!-- <button id="jsbuttonRemovePicture" type="button" class="btn btn-primary w-100 mt-4 mb-4"><i class="fa fa-trash"></i> Remove picture</button> -->
|
||||
</div>
|
||||
<div class="col-lg-8 col-sm-12 p-0 text-center">
|
||||
<img id="jsprofilePicturePreview" class="img-fluid img-thumbnail" alt="Profile picture preview" src="<?php echo (Sanitize::pathFile(PATH_UPLOADS_PROFILES . $user->username() . '.png') ? DOMAIN_UPLOADS_PROFILES . $user->username() . '.png?version=' . time() : HTML_PATH_CORE_IMG . 'default.svg') ?>" />
|
||||
</div>
|
||||
<!-- <button id="jsbuttonRemovePicture" type="button" class="btn btn-primary w-100 mt-4 mb-4"><i class="fa fa-trash"></i> Remove picture</button> -->
|
||||
</div>
|
||||
<div class="col-lg-8 col-sm-12 p-0 text-center">
|
||||
<img id="jsprofilePicturePreview" class="img-fluid img-thumbnail" alt="Profile picture preview" src="<?php echo (Sanitize::pathFile(PATH_UPLOADS_PROFILES . $user->username() . '.png') ? DOMAIN_UPLOADS_PROFILES . $user->username() . '.png?version=' . time() : HTML_PATH_CORE_IMG . 'default.svg') ?>" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -190,11 +197,11 @@ echo Bootstrap::formInputHidden(array(
|
|||
<!-- Security tab -->
|
||||
<div class="tab-pane fade" id="security" role="tabpanel" aria-labelledby="nav-security-tab">
|
||||
<?php
|
||||
echo Bootstrap::formTitle(array('title' => $L->g('Password')));
|
||||
echo Bootstrap::cardBegin($L->g('Password'));
|
||||
|
||||
echo '
|
||||
<div class="form-group">
|
||||
<a href="' . HTML_PATH_ADMIN_ROOT . 'user-password/' . $user->username() . '" class="btn btn-primary mr-2">' . $L->g('Change password') . '</a>
|
||||
<a href="' . HTML_PATH_ADMIN_ROOT . 'user-password/' . $user->username() . '" class="btn btn-primary me-2">' . $L->g('Change password') . '</a>
|
||||
</div>
|
||||
';
|
||||
|
||||
|
@ -208,8 +215,9 @@ echo Bootstrap::formInputHidden(array(
|
|||
'tip' => $L->g('this-token-is-similar-to-a-password-it-should-not-be-shared')
|
||||
));
|
||||
|
||||
echo Bootstrap::cardEnd();
|
||||
if (checkRole(array('admin'), false)) {
|
||||
echo Bootstrap::formTitle(array('title' => $L->g('Status')));
|
||||
echo Bootstrap::cardBegin($L->g('Status'));
|
||||
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name' => 'status',
|
||||
|
@ -225,13 +233,14 @@ echo Bootstrap::formInputHidden(array(
|
|||
<div class="form-group row">
|
||||
<div class="col-sm-2"></div>
|
||||
<div class="col-sm-10">
|
||||
<button type="submit" class="btn btn-warning mr-2" id="jsdisableUser" name="disableUser">' . $L->g('Disable user') . '</button>
|
||||
<button type="submit" class="btn btn-danger mr-2" id="jsdeleteUserAndKeepContent" name="deleteUserAndKeepContent">' . $L->g('Delete user and keep content') . '</button>
|
||||
<button type="submit" class="btn btn-danger mr-2" id="jsdeleteUserAndDeleteContent" name="deleteUserAndDeleteContent">' . $L->g('Delete user and delete content') . '</button>
|
||||
<button type="submit" class="btn btn-warning me-2" id="jsdisableUser" name="disableUser">' . $L->g('Disable user') . '</button>
|
||||
<button type="submit" class="btn btn-danger me-2" id="jsdeleteUserAndKeepContent" name="deleteUserAndKeepContent">' . $L->g('Delete user and keep content') . '</button>
|
||||
<button type="submit" class="btn btn-danger me-2" id="jsdeleteUserAndDeleteContent" name="deleteUserAndDeleteContent">' . $L->g('Delete user and delete content') . '</button>
|
||||
</div>
|
||||
</div>
|
||||
';
|
||||
}
|
||||
echo Bootstrap::cardEnd();
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
|
@ -239,6 +248,7 @@ echo Bootstrap::formInputHidden(array(
|
|||
<!-- Social Networks tab -->
|
||||
<div class="tab-pane fade" id="social" role="tabpanel" aria-labelledby="nav-social-tab">
|
||||
<?php
|
||||
echo Bootstrap::cardBegin($L->g('Social Networks'));
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name' => 'twitter',
|
||||
'label' => 'Twitter',
|
||||
|
@ -337,6 +347,7 @@ echo Bootstrap::formInputHidden(array(
|
|||
'placeholder' => '',
|
||||
'tip' => ''
|
||||
));
|
||||
echo Bootstrap::cardEnd();
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -357,3 +368,4 @@ echo Bootstrap::formInputHidden(array(
|
|||
}
|
||||
});
|
||||
</script>
|
||||
</div>
|
|
@ -28,10 +28,10 @@ echo '
|
|||
</div>
|
||||
|
||||
<div class="form-group mt-3">
|
||||
<button type="submit" class="btn btn-primary btn-lg mr-2 w-100" name="save">' . $L->g('Login') . '</button>
|
||||
<button type="submit" class="btn btn-primary btn-lg me-2 w-100" name="save">' . $L->g('Login') . '</button>
|
||||
</div>
|
||||
';
|
||||
|
||||
echo '</form>';
|
||||
|
||||
echo '<p class="mt-3 text-right">' . $L->g('Powered by Koblog') . ((defined('KOBLOG_PRO')) ? ' PRO' : '') . '</p>';
|
||||
echo '<p class="mt-3 text-right">' . $L->g('Powered by Koblog') . '</p>';
|
||||
|
|
|
@ -2,14 +2,15 @@
|
|||
|
||||
<?php echo Bootstrap::formOpen(array('id'=>'jsform', 'class'=>'tab-content')); ?>
|
||||
|
||||
<div class="align-middle">
|
||||
<div class="float-right mt-1">
|
||||
<button type="submit" class="btn btn-primary btn-sm" name="save"><?php $L->p('Save') ?></button>
|
||||
<a class="btn btn-secondary btn-sm" href="<?php echo HTML_PATH_ADMIN_ROOT.'categories' ?>" role="button"><?php $L->p('Cancel') ?></a>
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<?php echo Bootstrap::pageTitle(array('title'=>$L->g(string: 'New category'), 'icon'=>'tag')); ?>
|
||||
<div>
|
||||
<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.'categories' ?>" role="button"><?php $L->p('Cancel') ?></a>
|
||||
</div>
|
||||
<?php echo Bootstrap::pageTitle(array('title'=>$L->g('New category'), 'icon'=>'tag')); ?>
|
||||
</div>
|
||||
|
||||
<div class="card"><div class="card-body">
|
||||
<?php
|
||||
echo Bootstrap::formInputHidden(array(
|
||||
'name'=>'tokenCSRF',
|
||||
|
@ -35,5 +36,7 @@
|
|||
'rows'=>3
|
||||
));
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php echo Bootstrap::formClose(); ?>
|
||||
|
|
|
@ -39,310 +39,347 @@ echo Bootstrap::formInputHidden(array(
|
|||
'value' => ''
|
||||
));
|
||||
?>
|
||||
<div class="row">
|
||||
|
||||
<!-- TOOLBAR -->
|
||||
<div id="jseditorToolbar" class="mb-1">
|
||||
<div id="jseditorToolbarRight" class="btn-group btn-group-sm float-right" role="group" aria-label="Toolbar right">
|
||||
<button type="button" class="btn btn-light" id="jsmediaManagerOpenModal" data-toggle="modal" data-target="#jsmediaManagerModal"><span class="fa fa-image"></span> <?php $L->p('Images') ?></button>
|
||||
<button type="button" class="btn btn-light" id="jsoptionsSidebar" style="z-index:30"><span class="fa fa-cog"></span> <?php $L->p('Options') ?></button>
|
||||
</div>
|
||||
<div class="mb-3 col-lg-6">
|
||||
<button type="button" class="btn btn-light" data-bs-toggle="modal" data-bs-target="#jsmediaManagerModal"><span class="fa fa-image"></span> <?php $L->p('Images') ?></button>
|
||||
<span id="jsswitchButton" data-switch="publish" class="ms-2 btn-outline-success btn"><?php $L->p('Publish') ?></span>
|
||||
</div>
|
||||
|
||||
<div id="jseditorToolbarLeft">
|
||||
<button id="jsbuttonSave" type="button" class="btn btn-sm btn-primary"><?php $L->p('Save') ?></button>
|
||||
<button id="jsbuttonPreview" type="button" class="btn btn-sm btn-secondary"><?php $L->p('Preview') ?></button>
|
||||
<span id="jsbuttonSwitch" data-switch="publish" class="ml-2 text-secondary switch-button"><i class="fa fa-square switch-icon-publish"></i> <?php $L->p('Publish') ?></span>
|
||||
<div class="col-lg-6 text-end">
|
||||
<button id="jsbuttonPreview" type="button" class="btn btn-secondary"><?php $L->p('Preview') ?></button>
|
||||
<button type="button" class="btn btn-primary" id="jsbuttonSave"><?php echo $L->g('Save') ?></button>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$("#jsoptionsSidebar").on("click", function() {
|
||||
$("#jseditorSidebar").toggle();
|
||||
$("#jsshadow").toggle();
|
||||
});
|
||||
|
||||
$("#jsshadow").on("click", function() {
|
||||
$("#jseditorSidebar").toggle();
|
||||
$("#jsshadow").toggle();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<div class="row">
|
||||
|
||||
|
||||
<div class="col-lg-9">
|
||||
<!-- Title -->
|
||||
<div class="form-group mb-2">
|
||||
<input id="jstitle" name="title" type="text" dir="auto" class="form-control form-control-lg" value="" placeholder="<?php $L->p('Enter title') ?>">
|
||||
</div>
|
||||
|
||||
<!-- Editor -->
|
||||
<textarea id="jseditor" class="editable h-100 mb-1"></textarea>
|
||||
|
||||
<!-- Custom fields: BOTTOM -->
|
||||
<?php
|
||||
$customFields = $site->customFields();
|
||||
foreach ($customFields as $field => $options) {
|
||||
if (isset($options['position']) && ($options['position'] == 'bottom')) {
|
||||
if ($options['type'] == "string") {
|
||||
echo Bootstrap::formInputTextBlock(array(
|
||||
'name' => 'custom[' . $field . ']',
|
||||
'label' => (isset($options['label']) ? $options['label'] : ''),
|
||||
'value' => (isset($options['default']) ? $options['default'] : ''),
|
||||
'tip' => (isset($options['tip']) ? $options['tip'] : ''),
|
||||
'placeholder' => (isset($options['placeholder']) ? $options['placeholder'] : ''),
|
||||
'class' => 'mt-2',
|
||||
'labelClass' => 'mb-0 pb-1 text-uppercase w-100'
|
||||
|
||||
));
|
||||
} elseif ($options['type'] == "bool") {
|
||||
echo Bootstrap::formCheckbox(array(
|
||||
'name' => 'custom[' . $field . ']',
|
||||
'label' => (isset($options['label']) ? $options['label'] : ''),
|
||||
'placeholder' => (isset($options['placeholder']) ? $options['placeholder'] : ''),
|
||||
'checked' => (isset($options['checked']) ? true : false),
|
||||
'labelForCheckbox' => (isset($options['tip']) ? $options['tip'] : ''),
|
||||
'class' => 'mt-2',
|
||||
'labelClass' => 'mb-0 pb-1 text-uppercase w-100'
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<!-- SIDEBAR OPTIONS -->
|
||||
<div id="jseditorSidebar">
|
||||
<nav>
|
||||
<div class="nav nav-tabs" id="nav-tab" role="tablist">
|
||||
<a class="nav-link active show" id="nav-general-tab" data-toggle="tab" href="#nav-general" role="tab" aria-controls="general"><?php $L->p('General') ?></a>
|
||||
<a class="nav-link" id="nav-advanced-tab" data-toggle="tab" href="#nav-advanced" role="tab" aria-controls="advanced"><?php $L->p('Advanced') ?></a>
|
||||
<div class="col-lg-3">
|
||||
<nav class="mb-2">
|
||||
<div class="nav nav-pills" id="nav-tab" role="tablist">
|
||||
<a class="nav-link active show" id="nav-general-tab" data-bs-toggle="tab" data-bs-target="#nav-general" role="tab" aria-controls="general"><?php $L->p('General') ?></a>
|
||||
<a class="nav-link" id="nav-advanced-tab" data-bs-toggle="tab" data-bs-target="#nav-advanced" role="tab" aria-controls="advanced"><?php $L->p('Advanced') ?></a>
|
||||
<?php if (!empty($site->customFields())) : ?>
|
||||
<a class="nav-link" id="nav-custom-tab" data-toggle="tab" href="#nav-custom" role="tab" aria-controls="custom"><?php $L->p('Custom') ?></a>
|
||||
<a class="nav-link" id="nav-custom-tab" data-bs-toggle="tab" data-bs-target="#nav-custom" role="tab" aria-controls="custom"><?php $L->p('Custom') ?></a>
|
||||
<?php endif ?>
|
||||
<a class="nav-link" id="nav-seo-tab" data-toggle="tab" href="#nav-seo" role="tab" aria-controls="seo"><?php $L->p('SEO') ?></a>
|
||||
<a class="nav-link" id="nav-seo-tab" data-bs-toggle="tab" data-bs-target="#nav-seo" role="tab" aria-controls="seo"><?php $L->p('SEO') ?></a>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="tab-content pr-3 pl-3 pb-3">
|
||||
<div id="nav-general" class="tab-pane fade show active" role="tabpanel" aria-labelledby="general-tab">
|
||||
<?php
|
||||
// Category
|
||||
echo Bootstrap::formSelectBlock(array(
|
||||
'name' => 'category',
|
||||
'label' => $L->g('Category'),
|
||||
'selected' => '',
|
||||
'class' => '',
|
||||
'emptyOption' => '- ' . $L->g('Uncategorized') . ' -',
|
||||
'options' => $categories->getKeyNameArray()
|
||||
));
|
||||
|
||||
// Description
|
||||
echo Bootstrap::formTextareaBlock(array(
|
||||
'name' => 'description',
|
||||
'label' => $L->g('Description'),
|
||||
'selected' => '',
|
||||
'class' => '',
|
||||
'value' => '',
|
||||
'rows' => 5,
|
||||
'placeholder' => $L->get('this-field-can-help-describe-the-content')
|
||||
));
|
||||
?>
|
||||
|
||||
<!-- Cover Image -->
|
||||
<label class="mt-4 mb-2 pb-2 border-bottom text-uppercase w-100"><?php $L->p('Cover Image') ?></label>
|
||||
<div>
|
||||
<img id="jscoverImagePreview" class="mx-auto d-block w-100" alt="Cover image preview" src="<?php echo HTML_PATH_CORE_IMG ?>default.svg" />
|
||||
</div>
|
||||
<div class="mt-2 text-center">
|
||||
<button type="button" id="jsbuttonSelectCoverImage" class="btn btn-primary btn-sm"><?php echo $L->g('Select cover image') ?></button>
|
||||
<button type="button" id="jsbuttonRemoveCoverImage" class="btn btn-secondary btn-sm"><?php echo $L->g('Remove cover image') ?></button>
|
||||
</div>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$("#jscoverImagePreview").on("click", function() {
|
||||
openMediaManager();
|
||||
});
|
||||
|
||||
$("#jsbuttonSelectCoverImage").on("click", function() {
|
||||
openMediaManager();
|
||||
});
|
||||
|
||||
$("#jsbuttonRemoveCoverImage").on("click", function() {
|
||||
$("#jscoverImage").val('');
|
||||
$("#jscoverImagePreview").attr('src', HTML_PATH_CORE_IMG + 'default.svg');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
<div id="nav-advanced" class="tab-pane fade" role="tabpanel" aria-labelledby="advanced-tab">
|
||||
<?php
|
||||
// Date
|
||||
echo Bootstrap::formInputTextBlock(array(
|
||||
'name' => 'date',
|
||||
'label' => $L->g('Date'),
|
||||
'placeholder' => '',
|
||||
'value' => Date::current(DB_DATE_FORMAT),
|
||||
'tip' => $L->g('date-format-format')
|
||||
));
|
||||
|
||||
// Type
|
||||
echo Bootstrap::formSelectBlock(array(
|
||||
'name' => 'typeSelector',
|
||||
'label' => $L->g('Type'),
|
||||
'selected' => '',
|
||||
'options' => array(
|
||||
'published' => '- ' . $L->g('Default') . ' -',
|
||||
'sticky' => $L->g('Sticky'),
|
||||
'static' => $L->g('Static')
|
||||
),
|
||||
'tip' => ''
|
||||
));
|
||||
|
||||
// Position
|
||||
echo Bootstrap::formInputTextBlock(array(
|
||||
'name' => 'position',
|
||||
'label' => $L->g('Position'),
|
||||
'tip' => $L->g('Field used when ordering content by position'),
|
||||
'value' => $pages->nextPositionNumber()
|
||||
));
|
||||
|
||||
// Tags
|
||||
echo Bootstrap::formInputTextBlock(array(
|
||||
'name' => 'tags',
|
||||
'label' => $L->g('Tags'),
|
||||
'placeholder' => '',
|
||||
'tip' => $L->g('Write the tags separated by comma')
|
||||
));
|
||||
|
||||
// Parent
|
||||
echo Bootstrap::formSelectBlock(array(
|
||||
'name' => 'parent',
|
||||
'label' => $L->g('Parent'),
|
||||
'options' => array(),
|
||||
'selected' => false,
|
||||
'class' => '',
|
||||
'tip' => $L->g('Start typing a page title to see a list of suggestions.'),
|
||||
));
|
||||
|
||||
?>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
var parent = $("#jsparent").select2({
|
||||
placeholder: "",
|
||||
allowClear: true,
|
||||
theme: "bootstrap4",
|
||||
minimumInputLength: 2,
|
||||
ajax: {
|
||||
url: HTML_PATH_ADMIN_ROOT + "ajax/get-published",
|
||||
data: function(params) {
|
||||
var query = {
|
||||
checkIsParent: true,
|
||||
query: params.term
|
||||
}
|
||||
return query;
|
||||
},
|
||||
processResults: function(data) {
|
||||
return data;
|
||||
}
|
||||
},
|
||||
escapeMarkup: function(markup) {
|
||||
return markup;
|
||||
},
|
||||
templateResult: function(data) {
|
||||
var html = data.text;
|
||||
if (data.type == "static") {
|
||||
html += '<span class="badge badge-pill badge-light">' + data.type + '</span>';
|
||||
}
|
||||
return html;
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<?php
|
||||
// Template
|
||||
echo Bootstrap::formInputTextBlock(array(
|
||||
'name' => 'template',
|
||||
'label' => $L->g('Template'),
|
||||
'placeholder' => '',
|
||||
'value' => '',
|
||||
'tip' => $L->g('Write a template name to filter the page in the theme and change the style of the page.')
|
||||
));
|
||||
|
||||
echo Bootstrap::formInputTextBlock(array(
|
||||
'name' => 'externalCoverImage',
|
||||
'label' => $L->g('External cover image'),
|
||||
'placeholder' => "https://",
|
||||
'value' => '',
|
||||
'tip' => $L->g('Set a cover image from external URL, such as a CDN or some server dedicated for images.')
|
||||
));
|
||||
|
||||
// Username
|
||||
echo Bootstrap::formInputTextBlock(array(
|
||||
'name' => '',
|
||||
'label' => $L->g('Author'),
|
||||
'placeholder' => '',
|
||||
'value' => $login->username(),
|
||||
'tip' => '',
|
||||
'disabled' => true
|
||||
));
|
||||
?>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
// Changes in External cover image input
|
||||
$("#jsexternalCoverImage").change(function() {
|
||||
$("#jscoverImage").val($(this).val());
|
||||
});
|
||||
|
||||
// Generate slug when the user type the title
|
||||
$("#jstitle").keyup(function() {
|
||||
var text = $(this).val();
|
||||
var parent = $("#jsparent").val();
|
||||
var currentKey = "";
|
||||
var ajax = new koblogAjax();
|
||||
var callBack = $("#jsslug");
|
||||
ajax.generateSlug(text, parent, currentKey, callBack);
|
||||
});
|
||||
|
||||
// Datepicker
|
||||
$("#jsdate").datetimepicker({
|
||||
format: DB_DATE_FORMAT
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
<?php if (!empty($site->customFields())) : ?>
|
||||
<div id="nav-custom" class="tab-pane fade" role="tabpanel" aria-labelledby="custom-tab">
|
||||
<div class="card mb-2"><div class="card-body">
|
||||
<div class="tab-content pr-3 pl-3 pb-3">
|
||||
<div id="nav-general" class="tab-pane fade show active" role="tabpanel" aria-labelledby="general-tab">
|
||||
<?php
|
||||
$customFields = $site->customFields();
|
||||
foreach ($customFields as $field => $options) {
|
||||
if (!isset($options['position'])) {
|
||||
if ($options['type'] == "string") {
|
||||
echo Bootstrap::formInputTextBlock(array(
|
||||
'name' => 'custom[' . $field . ']',
|
||||
'label' => (isset($options['label']) ? $options['label'] : ''),
|
||||
'value' => (isset($options['default']) ? $options['default'] : ''),
|
||||
'tip' => (isset($options['tip']) ? $options['tip'] : ''),
|
||||
'placeholder' => (isset($options['placeholder']) ? $options['placeholder'] : '')
|
||||
));
|
||||
} elseif ($options['type'] == "bool") {
|
||||
echo Bootstrap::formCheckbox(array(
|
||||
'name' => 'custom[' . $field . ']',
|
||||
'label' => (isset($options['label']) ? $options['label'] : ''),
|
||||
'placeholder' => (isset($options['placeholder']) ? $options['placeholder'] : ''),
|
||||
'checked' => (isset($options['checked']) ? true : false),
|
||||
'labelForCheckbox' => (isset($options['tip']) ? $options['tip'] : '')
|
||||
));
|
||||
// Category
|
||||
echo Bootstrap::formSelectBlock(array(
|
||||
'name' => 'category',
|
||||
'label' => $L->g('Category'),
|
||||
'selected' => '',
|
||||
'class' => '',
|
||||
'emptyOption' => '- ' . $L->g('Uncategorized') . ' -',
|
||||
'options' => $categories->getKeyNameArray(),
|
||||
'mt' => 'mt-0'
|
||||
));
|
||||
|
||||
// Tags
|
||||
echo Bootstrap::formInputTextBlock(array(
|
||||
'name' => 'tags',
|
||||
'label' => $L->g('Tags'),
|
||||
'placeholder' => '',
|
||||
'tip' => $L->g('Write the tags separated by comma')
|
||||
));
|
||||
|
||||
// Description
|
||||
echo Bootstrap::formTextareaBlock(array(
|
||||
'name' => 'description',
|
||||
'label' => $L->g('Description'),
|
||||
'selected' => '',
|
||||
'class' => '',
|
||||
'value' => '',
|
||||
'rows' => 5,
|
||||
'placeholder' => $L->get('this-field-can-help-describe-the-content')
|
||||
));
|
||||
?>
|
||||
|
||||
<!-- Cover Image -->
|
||||
<label class="mt-2 mb-0 pb-1 text-uppercase w-100"><?php $L->p('Cover Image') ?></label>
|
||||
<div>
|
||||
<img id="jscoverImagePreview" class="mx-auto d-block w-100" alt="Cover image preview" src="<?php echo HTML_PATH_CORE_IMG ?>default.svg" />
|
||||
</div>
|
||||
<div class="mt-2 text-center">
|
||||
<button type="button" id="jsbuttonSelectCoverImage" class="btn btn-primary btn-sm"><?php echo $L->g('Select cover image') ?></button>
|
||||
<button type="button" id="jsbuttonRemoveCoverImage" class="btn btn-secondary btn-sm"><?php echo $L->g('Remove cover image') ?></button>
|
||||
</div>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$("#jscoverImagePreview").on("click", function() {
|
||||
openMediaManager();
|
||||
});
|
||||
|
||||
$("#jsbuttonSelectCoverImage").on("click", function() {
|
||||
openMediaManager();
|
||||
});
|
||||
|
||||
$("#jsbuttonRemoveCoverImage").on("click", function() {
|
||||
$("#jscoverImage").val('');
|
||||
$("#jscoverImagePreview").attr('src', HTML_PATH_CORE_IMG + 'default.svg');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
<div id="nav-advanced" class="tab-pane fade" role="tabpanel" aria-labelledby="advanced-tab">
|
||||
<?php
|
||||
// Date
|
||||
echo Bootstrap::formInputTextBlock(array(
|
||||
'name' => 'date',
|
||||
'label' => $L->g('Date'),
|
||||
'placeholder' => '',
|
||||
'value' => Date::current(DB_DATE_FORMAT),
|
||||
'tip' => $L->g('date-format-format'),
|
||||
'mt' => 'mt-0'
|
||||
));
|
||||
|
||||
// Type
|
||||
echo Bootstrap::formSelectBlock(array(
|
||||
'name' => 'typeSelector',
|
||||
'label' => $L->g('Type'),
|
||||
'selected' => '',
|
||||
'options' => array(
|
||||
'published' => '- ' . $L->g('Default') . ' -',
|
||||
'sticky' => $L->g('Sticky'),
|
||||
'static' => $L->g('Static')
|
||||
),
|
||||
'tip' => ''
|
||||
));
|
||||
|
||||
// Position
|
||||
echo Bootstrap::formInputTextBlock(array(
|
||||
'name' => 'position',
|
||||
'label' => $L->g('Position'),
|
||||
'tip' => $L->g('Field used when ordering content by position'),
|
||||
'value' => $pages->nextPositionNumber()
|
||||
));
|
||||
|
||||
// Parent
|
||||
echo Bootstrap::formSelectBlock(array(
|
||||
'name' => 'parent',
|
||||
'label' => $L->g('Parent'),
|
||||
'options' => array(),
|
||||
'selected' => false,
|
||||
'class' => '',
|
||||
'tip' => $L->g('Start typing a page title to see a list of suggestions.'),
|
||||
));
|
||||
|
||||
?>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
var parent = $("#jsparent").select2({
|
||||
placeholder: "",
|
||||
allowClear: true,
|
||||
theme: "bootstrap4",
|
||||
minimumInputLength: 2,
|
||||
ajax: {
|
||||
url: HTML_PATH_ADMIN_ROOT + "ajax/get-published",
|
||||
data: function(params) {
|
||||
var query = {
|
||||
checkIsParent: true,
|
||||
query: params.term
|
||||
}
|
||||
return query;
|
||||
},
|
||||
processResults: function(data) {
|
||||
return data;
|
||||
}
|
||||
},
|
||||
escapeMarkup: function(markup) {
|
||||
return markup;
|
||||
},
|
||||
templateResult: function(data) {
|
||||
var html = data.text;
|
||||
if (data.type == "static") {
|
||||
html += '<span class="badge badge-pill badge-light">' + data.type + '</span>';
|
||||
}
|
||||
return html;
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<?php
|
||||
// Template
|
||||
echo Bootstrap::formInputTextBlock(array(
|
||||
'name' => 'template',
|
||||
'label' => $L->g('Template'),
|
||||
'placeholder' => '',
|
||||
'value' => '',
|
||||
'tip' => $L->g('Write a template name to filter the page in the theme and change the style of the page.')
|
||||
));
|
||||
|
||||
echo Bootstrap::formInputTextBlock(array(
|
||||
'name' => 'externalCoverImage',
|
||||
'label' => $L->g('External cover image'),
|
||||
'placeholder' => "https://",
|
||||
'value' => '',
|
||||
'tip' => $L->g('Set a cover image from external URL, such as a CDN or some server dedicated for images.')
|
||||
));
|
||||
|
||||
// Username
|
||||
echo Bootstrap::formInputTextBlock(array(
|
||||
'name' => '',
|
||||
'label' => $L->g('Author'),
|
||||
'placeholder' => '',
|
||||
'value' => $login->username(),
|
||||
'tip' => '',
|
||||
'disabled' => true
|
||||
));
|
||||
?>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
// Changes in External cover image input
|
||||
$("#jsexternalCoverImage").change(function() {
|
||||
$("#jscoverImage").val($(this).val());
|
||||
});
|
||||
|
||||
// Generate slug when the user type the title
|
||||
$("#jstitle").keyup(function() {
|
||||
var text = $(this).val();
|
||||
var parent = $("#jsparent").val();
|
||||
var currentKey = "";
|
||||
var ajax = new koblogAjax();
|
||||
var callBack = $("#jsslug");
|
||||
ajax.generateSlug(text, parent, currentKey, callBack);
|
||||
});
|
||||
|
||||
// Datepicker
|
||||
$("#jsdate").datetimepicker({
|
||||
format: DB_DATE_FORMAT
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
<?php if (!empty($site->customFields())) : ?>
|
||||
<div id="nav-custom" class="tab-pane fade" role="tabpanel" aria-labelledby="custom-tab">
|
||||
<?php
|
||||
$customFields = $site->customFields();
|
||||
foreach ($customFields as $field => $options) {
|
||||
if (!isset($options['position'])) {
|
||||
if ($options['type'] == "string") {
|
||||
echo Bootstrap::formInputTextBlock(array(
|
||||
'name' => 'custom[' . $field . ']',
|
||||
'label' => (isset($options['label']) ? $options['label'] : ''),
|
||||
'value' => (isset($options['default']) ? $options['default'] : ''),
|
||||
'tip' => (isset($options['tip']) ? $options['tip'] : ''),
|
||||
'placeholder' => (isset($options['placeholder']) ? $options['placeholder'] : '')
|
||||
));
|
||||
} elseif ($options['type'] == "bool") {
|
||||
echo Bootstrap::formCheckbox(array(
|
||||
'name' => 'custom[' . $field . ']',
|
||||
'label' => (isset($options['label']) ? $options['label'] : ''),
|
||||
'placeholder' => (isset($options['placeholder']) ? $options['placeholder'] : ''),
|
||||
'checked' => (isset($options['checked']) ? true : false),
|
||||
'labelForCheckbox' => (isset($options['tip']) ? $options['tip'] : '')
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
<div id="nav-seo" class="tab-pane fade" role="tabpanel" aria-labelledby="seo-tab">
|
||||
<?php
|
||||
// Friendly URL
|
||||
echo Bootstrap::formInputTextBlock(array(
|
||||
'name' => 'slug',
|
||||
'tip' => $L->g('URL associated with the content'),
|
||||
'label' => $L->g('Friendly URL'),
|
||||
'placeholder' => $L->g('Leave empty for autocomplete by Koblog.'),
|
||||
'mt' => 'mt-0'
|
||||
));
|
||||
|
||||
// Robots
|
||||
echo Bootstrap::formCheckbox(array(
|
||||
'name' => 'noindex',
|
||||
'label' => 'Robots',
|
||||
'labelForCheckbox' => $L->g('apply-code-noindex-code-to-this-page'),
|
||||
'placeholder' => '',
|
||||
'checked' => false,
|
||||
'tip' => $L->g('This tells search engines not to show this page in their search results.')
|
||||
));
|
||||
|
||||
// Robots
|
||||
echo Bootstrap::formCheckbox(array(
|
||||
'name' => 'nofollow',
|
||||
'label' => '',
|
||||
'labelForCheckbox' => $L->g('apply-code-nofollow-code-to-this-page'),
|
||||
'placeholder' => '',
|
||||
'checked' => false,
|
||||
'tip' => $L->g('This tells search engines not to follow links on this page.')
|
||||
));
|
||||
|
||||
// Robots
|
||||
echo Bootstrap::formCheckbox(array(
|
||||
'name' => 'noarchive',
|
||||
'label' => '',
|
||||
'labelForCheckbox' => $L->g('apply-code-noarchive-code-to-this-page'),
|
||||
'placeholder' => '',
|
||||
'checked' => false,
|
||||
'tip' => $L->g('This tells search engines not to save a cached copy of this page.')
|
||||
));
|
||||
?>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
<div id="nav-seo" class="tab-pane fade" role="tabpanel" aria-labelledby="seo-tab">
|
||||
<?php
|
||||
// Friendly URL
|
||||
echo Bootstrap::formInputTextBlock(array(
|
||||
'name' => 'slug',
|
||||
'tip' => $L->g('URL associated with the content'),
|
||||
'label' => $L->g('Friendly URL'),
|
||||
'placeholder' => $L->g('Leave empty for autocomplete by Koblog.')
|
||||
));
|
||||
|
||||
// Robots
|
||||
echo Bootstrap::formCheckbox(array(
|
||||
'name' => 'noindex',
|
||||
'label' => 'Robots',
|
||||
'labelForCheckbox' => $L->g('apply-code-noindex-code-to-this-page'),
|
||||
'placeholder' => '',
|
||||
'checked' => false,
|
||||
'tip' => $L->g('This tells search engines not to show this page in their search results.')
|
||||
));
|
||||
|
||||
// Robots
|
||||
echo Bootstrap::formCheckbox(array(
|
||||
'name' => 'nofollow',
|
||||
'label' => '',
|
||||
'labelForCheckbox' => $L->g('apply-code-nofollow-code-to-this-page'),
|
||||
'placeholder' => '',
|
||||
'checked' => false,
|
||||
'tip' => $L->g('This tells search engines not to follow links on this page.')
|
||||
));
|
||||
|
||||
// Robots
|
||||
echo Bootstrap::formCheckbox(array(
|
||||
'name' => 'noarchive',
|
||||
'label' => '',
|
||||
'labelForCheckbox' => $L->g('apply-code-noarchive-code-to-this-page'),
|
||||
'placeholder' => '',
|
||||
'checked' => false,
|
||||
'tip' => $L->g('This tells search engines not to save a cached copy of this page.')
|
||||
));
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div></div>
|
||||
</div>
|
||||
|
||||
<!-- Custom fields: TOP -->
|
||||
|
@ -358,7 +395,7 @@ foreach ($customFields as $field => $options) {
|
|||
'tip' => (isset($options['tip']) ? $options['tip'] : ''),
|
||||
'placeholder' => (isset($options['placeholder']) ? $options['placeholder'] : ''),
|
||||
'class' => 'mb-2',
|
||||
'labelClass' => 'mb-2 pb-2 border-bottom text-uppercase w-100'
|
||||
'labelClass' => 'mb-0 pb-1 text-uppercase w-100'
|
||||
|
||||
));
|
||||
} elseif ($options['type'] == "bool") {
|
||||
|
@ -369,57 +406,17 @@ foreach ($customFields as $field => $options) {
|
|||
'checked' => (isset($options['checked']) ? true : false),
|
||||
'labelForCheckbox' => (isset($options['tip']) ? $options['tip'] : ''),
|
||||
'class' => 'mb-2',
|
||||
'labelClass' => 'mb-2 pb-2 border-bottom text-uppercase w-100'
|
||||
'labelClass' => 'mb-0 pb-1 text-uppercase w-100'
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
|
||||
<!-- Title -->
|
||||
<div id="jseditorTitle" class="form-group mb-1">
|
||||
<input id="jstitle" name="title" type="text" dir="auto" class="form-control form-control-lg rounded-0" value="" placeholder="<?php $L->p('Enter title') ?>">
|
||||
</div>
|
||||
|
||||
<!-- Editor -->
|
||||
<textarea id="jseditor" class="editable h-100 mb-1"></textarea>
|
||||
|
||||
<!-- Custom fields: BOTTOM -->
|
||||
<?php
|
||||
$customFields = $site->customFields();
|
||||
foreach ($customFields as $field => $options) {
|
||||
if (isset($options['position']) && ($options['position'] == 'bottom')) {
|
||||
if ($options['type'] == "string") {
|
||||
echo Bootstrap::formInputTextBlock(array(
|
||||
'name' => 'custom[' . $field . ']',
|
||||
'label' => (isset($options['label']) ? $options['label'] : ''),
|
||||
'value' => (isset($options['default']) ? $options['default'] : ''),
|
||||
'tip' => (isset($options['tip']) ? $options['tip'] : ''),
|
||||
'placeholder' => (isset($options['placeholder']) ? $options['placeholder'] : ''),
|
||||
'class' => 'mt-2',
|
||||
'labelClass' => 'mb-2 pb-2 border-bottom text-uppercase w-100'
|
||||
|
||||
));
|
||||
} elseif ($options['type'] == "bool") {
|
||||
echo Bootstrap::formCheckbox(array(
|
||||
'name' => 'custom[' . $field . ']',
|
||||
'label' => (isset($options['label']) ? $options['label'] : ''),
|
||||
'placeholder' => (isset($options['placeholder']) ? $options['placeholder'] : ''),
|
||||
'checked' => (isset($options['checked']) ? true : false),
|
||||
'labelForCheckbox' => (isset($options['tip']) ? $options['tip'] : ''),
|
||||
'class' => 'mt-2',
|
||||
'labelClass' => 'mb-2 pb-2 border-bottom text-uppercase w-100'
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
</form>
|
||||
|
||||
<!-- Modal for Media Manager -->
|
||||
<?php include(PATH_ADMIN_THEMES . 'booty/html/media.php'); ?>
|
||||
<?php include(PATH_ADMIN_THEMES . 'koblog/html/media.php'); ?>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
@ -443,13 +440,15 @@ foreach ($customFields as $field => $options) {
|
|||
}
|
||||
|
||||
// Button switch
|
||||
$("#jsbuttonSwitch").on("click", function() {
|
||||
$("#jsswitchButton").on("click", function() {
|
||||
if ($(this).data("switch") == "publish") {
|
||||
$(this).html('<i class="fa fa-square switch-icon-draft"></i> <?php $L->p('Draft') ?>');
|
||||
$(this).html('<?php $L->p('Draft') ?>');
|
||||
$(this).data("switch", "draft");
|
||||
$(this).attr('class', "ms-2 btn-outline-secondary btn");
|
||||
} else {
|
||||
$(this).html('<i class="fa fa-square switch-icon-publish"></i> <?php $L->p('Publish') ?>');
|
||||
$(this).html('<?php $L->p('Publish') ?>');
|
||||
$(this).data("switch", "publish");
|
||||
$(this).attr('class', "ms-2 btn-outline-success btn");
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -2,66 +2,70 @@
|
|||
|
||||
<?php echo Bootstrap::formOpen(array('id'=>'jsform', 'class'=>'tab-content')); ?>
|
||||
|
||||
<div class="align-middle">
|
||||
<div class="float-right mt-1">
|
||||
<button type="submit" class="btn btn-primary btn-sm" name="save"><?php $L->p('Save') ?></button>
|
||||
<a class="btn btn-secondary btn-sm" href="<?php echo HTML_PATH_ADMIN_ROOT.'users' ?>" role="button"><?php $L->p('Cancel') ?></a>
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<?php echo Bootstrap::pageTitle(array('title'=>$L->g('New user'), 'icon'=>'user')); ?>
|
||||
<div>
|
||||
<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.'users' ?>" role="button"><?php $L->p('Cancel') ?></a>
|
||||
</div>
|
||||
<?php echo Bootstrap::pageTitle(array('title'=>$L->g('Add a new user'), 'icon'=>'user')); ?>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
echo Bootstrap::formInputHidden(array(
|
||||
'name'=>'tokenCSRF',
|
||||
'value'=>$security->getTokenCSRF()
|
||||
));
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<?php
|
||||
echo Bootstrap::formInputHidden(array(
|
||||
'name'=>'tokenCSRF',
|
||||
'value'=>$security->getTokenCSRF()
|
||||
));
|
||||
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name'=>'new_username',
|
||||
'label'=>$L->g('Username'),
|
||||
'value'=>(isset($_POST['new_username'])?$_POST['new_username']:''),
|
||||
'class'=>'',
|
||||
'placeholder'=>'',
|
||||
'tip'=>''
|
||||
));
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name'=>'new_username',
|
||||
'label'=>$L->g('Username'),
|
||||
'value'=>(isset($_POST['new_username'])?$_POST['new_username']:''),
|
||||
'class'=>'',
|
||||
'placeholder'=>'',
|
||||
'tip'=>''
|
||||
));
|
||||
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name'=>'new_password',
|
||||
'type'=>'password',
|
||||
'label'=>$L->g('Password'),
|
||||
'value'=>'',
|
||||
'class'=>'',
|
||||
'placeholder'=>'',
|
||||
'tip'=>''
|
||||
));
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name'=>'new_password',
|
||||
'type'=>'password',
|
||||
'label'=>$L->g('Password'),
|
||||
'value'=>'',
|
||||
'class'=>'',
|
||||
'placeholder'=>'',
|
||||
'tip'=>''
|
||||
));
|
||||
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name'=>'confirm_password',
|
||||
'type'=>'password',
|
||||
'label'=>$L->g('Confirm Password'),
|
||||
'value'=>'',
|
||||
'class'=>'',
|
||||
'placeholder'=>'',
|
||||
'tip'=>''
|
||||
));
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name'=>'confirm_password',
|
||||
'type'=>'password',
|
||||
'label'=>$L->g('Confirm Password'),
|
||||
'value'=>'',
|
||||
'class'=>'',
|
||||
'placeholder'=>'',
|
||||
'tip'=>''
|
||||
));
|
||||
|
||||
echo Bootstrap::formSelect(array(
|
||||
'name'=>'role',
|
||||
'label'=>$L->g('Role'),
|
||||
'options'=>array('author'=>$L->g('Author'), 'editor'=>$L->g('Editor'), 'admin'=>$L->g('Administrator')),
|
||||
'selected'=>'Author',
|
||||
'class'=>'',
|
||||
'tip'=>$L->g('author-can-write-and-edit-their-own-content')
|
||||
));
|
||||
echo Bootstrap::formSelect(array(
|
||||
'name'=>'role',
|
||||
'label'=>$L->g('Role'),
|
||||
'options'=>array('author'=>$L->g('Author'), 'editor'=>$L->g('Editor'), 'admin'=>$L->g('Administrator')),
|
||||
'selected'=>'Author',
|
||||
'class'=>'',
|
||||
'tip'=>$L->g('author-can-write-and-edit-their-own-content')
|
||||
));
|
||||
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name'=>'email',
|
||||
'label'=>$L->g('Email'),
|
||||
'value'=>(isset($_POST['email'])?$_POST['email']:''),
|
||||
'class'=>'',
|
||||
'placeholder'=>'',
|
||||
'tip'=>''
|
||||
));
|
||||
?>
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name'=>'email',
|
||||
'label'=>$L->g('Email'),
|
||||
'value'=>(isset($_POST['email'])?$_POST['email']:''),
|
||||
'class'=>'',
|
||||
'placeholder'=>'',
|
||||
'tip'=>''
|
||||
));
|
||||
?>
|
||||
|
||||
<?php echo Bootstrap::formClose(); ?>
|
||||
<?php echo Bootstrap::formClose(); ?>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -2,12 +2,12 @@
|
|||
|
||||
<?php echo Bootstrap::formOpen(array('id'=>'jsform', 'class'=>'tab-content')); ?>
|
||||
|
||||
<div class="align-middle">
|
||||
<div class="float-right mt-1">
|
||||
<button type="button" class="btn btn-primary btn-sm jsbuttonSave" name="save"><?php $L->p('Save') ?></button>
|
||||
<a class="btn btn-secondary btn-sm" href="<?php echo HTML_PATH_ADMIN_ROOT.'plugins' ?>" role="button"><?php $L->p('Cancel') ?></a>
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<?php echo Bootstrap::pageTitle(array('title'=>$L->g('Reorder sidebar'), 'icon'=>'list')); ?>
|
||||
<div>
|
||||
<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.'sidebar' ?>" role="button"><?php $L->p('Cancel') ?></a>
|
||||
</div>
|
||||
<?php echo Bootstrap::pageTitle(array('title'=>$L->g('Plugins position'), 'icon'=>'tags')); ?>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-primary"><?php $L->p('Drag and Drop to sort the plugins') ?></div>
|
||||
|
|
|
@ -1,18 +1,13 @@
|
|||
<?php
|
||||
|
||||
echo Bootstrap::pageTitle(array('title' => $L->g('Plugins'), 'icon' => 'puzzle-piece'));
|
||||
|
||||
echo Bootstrap::link(array(
|
||||
'title' => $L->g('Change the position of the plugins'),
|
||||
'href' => HTML_PATH_ADMIN_ROOT . 'plugins-position',
|
||||
'icon' => 'arrows'
|
||||
));
|
||||
echo Bootstrap::pageTitle(array('title' => $L->g('Plugins'), 'icon' => 'puzzle-piece'));
|
||||
|
||||
echo Bootstrap::formTitle(array('title' => $L->g('Search plugins')));
|
||||
|
||||
?>
|
||||
|
||||
<input type="text" dir="auto" class="form-control" id="search" placeholder="<?php $L->p('Search') ?>">
|
||||
<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() {
|
||||
|
@ -33,28 +28,27 @@ echo Bootstrap::formTitle(array('title' => $L->g('Search plugins')));
|
|||
|
||||
<?php
|
||||
|
||||
echo Bootstrap::formTitle(array('title' => $L->g('Enabled plugins')));
|
||||
|
||||
echo '
|
||||
<table class="table">
|
||||
<tbody>
|
||||
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() == 'theme') {
|
||||
if ($plugin->type() == 'theme' || $plugin->type() == 'widget') {
|
||||
// Do not display theme's plugins
|
||||
continue;
|
||||
}
|
||||
|
||||
echo '<tr id="' . $plugin->className() . '" class="bg-light searchItem">';
|
||||
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="mr-3" href="' . HTML_PATH_ADMIN_ROOT . 'configure-plugin/' . $plugin->className() . '">' . $L->g('Settings') . '</a>';
|
||||
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>';
|
||||
|
@ -76,22 +70,23 @@ foreach ($pluginsInstalled as $plugin) {
|
|||
}
|
||||
|
||||
echo '
|
||||
</tbody>
|
||||
</table>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
';
|
||||
|
||||
echo Bootstrap::formTitle(array('title' => $L->g('Disabled plugins')));
|
||||
|
||||
echo '
|
||||
<table class="table">
|
||||
<tbody>
|
||||
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() == 'theme') {
|
||||
if ($plugin->type() == 'theme' || $plugin->type() == 'widget') {
|
||||
// Do not display theme's plugins
|
||||
continue;
|
||||
}
|
||||
|
@ -120,6 +115,7 @@ foreach ($pluginsNotInstalled as $plugin) {
|
|||
}
|
||||
|
||||
echo '
|
||||
</tbody>
|
||||
</table>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
';
|
||||
|
|
|
@ -2,28 +2,33 @@
|
|||
|
||||
<?php echo Bootstrap::formOpen(array('id' => 'jsform', 'class' => 'tab-content')); ?>
|
||||
|
||||
<div class="align-middle">
|
||||
<div class="float-right mt-1">
|
||||
<button type="submit" class="btn btn-primary btn-sm" name="save"><?php $L->p('Save') ?></button>
|
||||
<a class="btn btn-secondary btn-sm" href="<?php echo HTML_PATH_ADMIN_ROOT . 'dashboard' ?>" role="button"><?php $L->p('Cancel') ?></a>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<?php echo Bootstrap::pageTitle(array('title' => $L->g('Settings'), 'icon' => 'cog')); ?>
|
||||
<div>
|
||||
<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 . 'dashboard' ?>" role="button"><?php $L->p('Cancel') ?></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="d-flex align-items-start">
|
||||
|
||||
<div>
|
||||
<!-- TABS -->
|
||||
<nav class="mb-3">
|
||||
<div class="nav nav-tabs" id="nav-tab" role="tablist">
|
||||
<a class="nav-item nav-link active" id="nav-general-tab" data-toggle="tab" href="#general" role="tab" aria-controls="nav-general" aria-selected="false"><?php $L->p('General') ?></a>
|
||||
<a class="nav-item nav-link" id="nav-advanced-tab" data-toggle="tab" href="#advanced" role="tab" aria-controls="nav-advanced" aria-selected="false"><?php $L->p('Advanced') ?></a>
|
||||
<a class="nav-item nav-link" id="nav-seo-tab" data-toggle="tab" href="#seo" role="tab" aria-controls="nav-seo" aria-selected="false"><?php $L->p('SEO') ?></a>
|
||||
<a class="nav-item nav-link" id="nav-social-tab" data-toggle="tab" href="#social" role="tab" aria-controls="nav-social" aria-selected="false"><?php $L->p('Social Networks') ?></a>
|
||||
<a class="nav-item nav-link" id="nav-images-tab" data-toggle="tab" href="#images" role="tab" aria-controls="nav-images" aria-selected="false"><?php $L->p('Images') ?></a>
|
||||
<a class="nav-item nav-link" id="nav-language-tab" data-toggle="tab" href="#language" role="tab" aria-controls="nav-language" aria-selected="false"><?php $L->p('Language') ?></a>
|
||||
<a class="nav-item nav-link" id="nav-custom-fields-tab" data-toggle="tab" href="#custom-fields" role="tab" aria-controls="nav-custom-fields" aria-selected="false"><?php $L->p('Custom fields') ?></a>
|
||||
<a class="nav-item nav-link" id="nav-logo-tab" data-toggle="tab" href="#logo" role="tab" aria-controls="nav-logo" aria-selected="false"><?php $L->p('Logo') ?></a>
|
||||
<nav>
|
||||
<div class="nav flex-column nav-pills me-3" id="nav-tab" role="tablist">
|
||||
<a class="nav-item nav-link active" id="nav-general-tab" data-bs-toggle="tab" data-bs-target="#general" role="tab" aria-controls="nav-general" aria-selected="false"><?php $L->p('General') ?></a>
|
||||
<a class="nav-item nav-link" id="nav-advanced-tab" data-bs-toggle="tab" data-bs-target="#advanced" role="tab" aria-controls="nav-advanced" aria-selected="false"><?php $L->p('Advanced') ?></a>
|
||||
<a class="nav-item nav-link" id="nav-seo-tab" data-bs-toggle="tab" data-bs-target="#seo" role="tab" aria-controls="nav-seo" aria-selected="false"><?php $L->p('SEO') ?></a>
|
||||
<a class="nav-item nav-link" id="nav-social-tab" data-bs-toggle="tab" data-bs-target="#social" role="tab" aria-controls="nav-social" aria-selected="false"><?php $L->p('Social Networks') ?></a>
|
||||
<a class="nav-item nav-link" id="nav-images-tab" data-bs-toggle="tab" data-bs-target="#images" role="tab" aria-controls="nav-images" aria-selected="false"><?php $L->p('Images') ?></a>
|
||||
<a class="nav-item nav-link" id="nav-language-tab" data-bs-toggle="tab" data-bs-target="#language" role="tab" aria-controls="nav-language" aria-selected="false"><?php $L->p('Language') ?></a>
|
||||
<a class="nav-item nav-link" id="nav-custom-fields-tab" data-bs-toggle="tab" data-bs-target="#custom-fields" role="tab" aria-controls="nav-custom-fields" aria-selected="false"><?php $L->p('Custom fields') ?></a>
|
||||
<a class="nav-item nav-link" id="nav-logo-tab" data-bs-toggle="tab" data-bs-target="#logo" role="tab" aria-controls="nav-logo" aria-selected="false"><?php $L->p('Logo') ?></a>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
</div>
|
||||
|
||||
<?php
|
||||
// Token CSRF
|
||||
echo Bootstrap::formInputHidden(array(
|
||||
|
@ -32,54 +37,63 @@ echo Bootstrap::formInputHidden(array(
|
|||
));
|
||||
?>
|
||||
|
||||
<div class="tab-content w-100">
|
||||
<!-- General tab -->
|
||||
|
||||
<div class="tab-pane fade show active" id="general" role="tabpanel" aria-labelledby="general-tab">
|
||||
|
||||
<?php
|
||||
echo Bootstrap::formTitle(array('title' => $L->g('Site')));
|
||||
<div class="card">
|
||||
<h6 class="card-header"><?php echo $L->g('Site'); ?></h6>
|
||||
<div class="card-body">
|
||||
<?php
|
||||
//echo Bootstrap::formTitle(array('title' => $L->g('Site')));
|
||||
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name' => 'title',
|
||||
'label' => $L->g('Site title'),
|
||||
'value' => $site->title(),
|
||||
'class' => '',
|
||||
'placeholder' => '',
|
||||
'tip' => $L->g('use-this-field-to-name-your-site')
|
||||
));
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name' => 'title',
|
||||
'label' => $L->g('Site title'),
|
||||
'value' => $site->title(),
|
||||
'class' => '',
|
||||
'placeholder' => '',
|
||||
'tip' => $L->g('use-this-field-to-name-your-site')
|
||||
));
|
||||
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name' => 'slogan',
|
||||
'label' => $L->g('Site slogan'),
|
||||
'value' => $site->slogan(),
|
||||
'class' => '',
|
||||
'placeholder' => '',
|
||||
'tip' => $L->g('use-this-field-to-add-a-catchy-phrase')
|
||||
));
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name' => 'slogan',
|
||||
'label' => $L->g('Site slogan'),
|
||||
'value' => $site->slogan(),
|
||||
'class' => '',
|
||||
'placeholder' => '',
|
||||
'tip' => $L->g('use-this-field-to-add-a-catchy-phrase')
|
||||
));
|
||||
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name' => 'description',
|
||||
'label' => $L->g('Site description'),
|
||||
'value' => $site->description(),
|
||||
'class' => '',
|
||||
'placeholder' => '',
|
||||
'tip' => $L->g('you-can-add-a-site-description-to-provide')
|
||||
));
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name' => 'description',
|
||||
'label' => $L->g('Site description'),
|
||||
'value' => $site->description(),
|
||||
'class' => '',
|
||||
'placeholder' => '',
|
||||
'tip' => $L->g('you-can-add-a-site-description-to-provide')
|
||||
));
|
||||
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name' => 'footer',
|
||||
'label' => $L->g('Footer text'),
|
||||
'value' => $site->footer(),
|
||||
'class' => '',
|
||||
'placeholder' => '',
|
||||
'tip' => $L->g('you-can-add-a-small-text-on-the-bottom')
|
||||
));
|
||||
?>
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name' => 'footer',
|
||||
'label' => $L->g('Footer text'),
|
||||
'value' => $site->footer(),
|
||||
'class' => '',
|
||||
'placeholder' => '',
|
||||
'tip' => $L->g('you-can-add-a-small-text-on-the-bottom')
|
||||
));
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Advanced tab -->
|
||||
<div class="tab-pane fade" id="advanced" role="tabpanel" aria-labelledby="advanced-tab">
|
||||
<?php
|
||||
echo Bootstrap::formTitle(array('title' => $L->g('Content')));
|
||||
//echo Bootstrap::formTitle(array('title' => $L->g('Content')));
|
||||
|
||||
echo Bootstrap::cardBegin($L->g('Content'));
|
||||
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name' => 'itemsPerPage',
|
||||
|
@ -99,7 +113,9 @@ echo Bootstrap::formInputHidden(array(
|
|||
'tip' => $L->g('order-the-content-by-date-to-build-a-blog')
|
||||
));
|
||||
|
||||
echo Bootstrap::formTitle(array('title' => $L->g('Predefined pages')));
|
||||
echo Bootstrap::cardEnd();
|
||||
|
||||
echo Bootstrap::cardBegin($L->g('Predefined pages'));
|
||||
|
||||
// Homepage
|
||||
try {
|
||||
|
@ -196,7 +212,11 @@ echo Bootstrap::formInputHidden(array(
|
|||
</script>
|
||||
|
||||
<?php
|
||||
echo Bootstrap::formTitle(array('title' => $L->g('Email account settings')));
|
||||
|
||||
echo Bootstrap::cardEnd();
|
||||
|
||||
echo Bootstrap::cardBegin($L->g('Email account settings'));
|
||||
//echo Bootstrap::formTitle(array('title' => $L->g('Email account settings')));
|
||||
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name' => 'emailFrom',
|
||||
|
@ -207,7 +227,9 @@ echo Bootstrap::formInputHidden(array(
|
|||
'tip' => $L->g('Emails will be sent from this address')
|
||||
));
|
||||
|
||||
echo Bootstrap::formTitle(array('title' => $L->g('Autosave')));
|
||||
echo Bootstrap::cardEnd();
|
||||
|
||||
echo Bootstrap::cardBegin($L->g('Autosave'));
|
||||
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name' => 'autosaveInterval',
|
||||
|
@ -218,7 +240,9 @@ echo Bootstrap::formInputHidden(array(
|
|||
'tip' => $L->g('Number in minutes for every execution of autosave')
|
||||
));
|
||||
|
||||
echo Bootstrap::formTitle(array('title' => $L->g('Site URL')));
|
||||
echo Bootstrap::cardEnd();
|
||||
|
||||
echo Bootstrap::cardBegin($L->g('Site URL'));
|
||||
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name' => 'url',
|
||||
|
@ -230,7 +254,9 @@ echo Bootstrap::formInputHidden(array(
|
|||
'placeholder' => 'https://'
|
||||
));
|
||||
|
||||
echo Bootstrap::formTitle(array('title' => $L->g('Page content')));
|
||||
echo Bootstrap::cardEnd();
|
||||
|
||||
echo Bootstrap::cardBegin($L->g('Page content'));
|
||||
|
||||
echo Bootstrap::formSelect(array(
|
||||
'name' => 'markdownParser',
|
||||
|
@ -241,7 +267,9 @@ echo Bootstrap::formInputHidden(array(
|
|||
'tip' => $L->g('Enable the markdown parser for the content of the page.')
|
||||
));
|
||||
|
||||
echo Bootstrap::formTitle(array('title' => $L->g('URL Filters')));
|
||||
echo Bootstrap::cardEnd();
|
||||
|
||||
echo Bootstrap::cardBegin($L->g('URL Filters'));
|
||||
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name' => 'uriPage',
|
||||
|
@ -279,13 +307,15 @@ echo Bootstrap::formInputHidden(array(
|
|||
'tip' => DOMAIN . $site->uriFilters('blog'),
|
||||
'disabled' => Text::isEmpty($site->uriFilters('blog'))
|
||||
));
|
||||
|
||||
echo Bootstrap::cardEnd();
|
||||
?>
|
||||
</div>
|
||||
|
||||
<!-- SEO tab -->
|
||||
<div class="tab-pane fade" id="seo" role="tabpanel" aria-labelledby="seo-tab">
|
||||
<?php
|
||||
echo Bootstrap::formTitle(array('title' => $L->g('Extreme friendly URL')));
|
||||
echo Bootstrap::cardBegin($L->g('Extreme friendly URL'));
|
||||
|
||||
echo Bootstrap::formSelect(array(
|
||||
'name' => 'extremeFriendly',
|
||||
|
@ -296,7 +326,9 @@ echo Bootstrap::formInputHidden(array(
|
|||
'tip' => $L->g('Allow unicode characters in the URL and some part of the system.')
|
||||
));
|
||||
|
||||
echo Bootstrap::formTitle(array('title' => $L->g('Title formats')));
|
||||
echo Bootstrap::cardEnd();
|
||||
|
||||
echo Bootstrap::cardBegin($L->g('Title formats'));
|
||||
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name' => 'titleFormatHomepage',
|
||||
|
@ -337,12 +369,17 @@ echo Bootstrap::formInputHidden(array(
|
|||
'tip' => $L->g('Variables allowed') . ' <code>{{tag-name}}</code> <code>{{site-title}}</code> <code>{{site-slogan}}</code> <code>{{site-description}}</code>',
|
||||
'placeholder' => ''
|
||||
));
|
||||
|
||||
echo Bootstrap::cardEnd();
|
||||
?>
|
||||
</div>
|
||||
|
||||
<!-- Social Network tab -->
|
||||
<div class="tab-pane fade" id="social" role="tabpanel" aria-labelledby="social-tab">
|
||||
<?php
|
||||
|
||||
echo Bootstrap::cardBegin($L->g('Social Networks'));
|
||||
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name' => 'twitter',
|
||||
'label' => 'Twitter',
|
||||
|
@ -450,13 +487,15 @@ echo Bootstrap::formInputHidden(array(
|
|||
'placeholder' => '',
|
||||
'tip' => ''
|
||||
));
|
||||
|
||||
echo Bootstrap::cardEnd();
|
||||
?>
|
||||
</div>
|
||||
|
||||
<!-- Images tab -->
|
||||
<div class="tab-pane fade" id="images" role="tabpanel" aria-labelledby="images-tab">
|
||||
<?php
|
||||
echo Bootstrap::formTitle(array('title' => $L->g('Thumbnails')));
|
||||
echo Bootstrap::cardBegin($L->g('Thumbnails'));
|
||||
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name' => 'thumbnailWidth',
|
||||
|
@ -485,7 +524,9 @@ echo Bootstrap::formInputHidden(array(
|
|||
'tip' => $L->g('Thumbnail quality in percentage')
|
||||
));
|
||||
|
||||
echo Bootstrap::formTitle(array('title' => $L->g('Avatar')));
|
||||
echo Bootstrap::cardEnd();
|
||||
|
||||
echo Bootstrap::cardBegin($L->g('Avatar'));
|
||||
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name' => 'avatarWidth',
|
||||
|
@ -513,13 +554,15 @@ echo Bootstrap::formInputHidden(array(
|
|||
'placeholder' => '',
|
||||
'tip' => $L->g('Avatar quality in percentage')
|
||||
));
|
||||
|
||||
echo Bootstrap::cardEnd();
|
||||
?>
|
||||
</div>
|
||||
|
||||
<!-- Timezone and language tab -->
|
||||
<div class="tab-pane fade" id="language" role="tabpanel" aria-labelledby="language-tab">
|
||||
<?php
|
||||
echo Bootstrap::formTitle(array('title' => $L->g('Language and timezone')));
|
||||
echo Bootstrap::cardBegin($L->g('Language and timezone'));
|
||||
|
||||
echo Bootstrap::formSelect(array(
|
||||
'name' => 'language',
|
||||
|
@ -548,7 +591,7 @@ echo Bootstrap::formInputHidden(array(
|
|||
'tip' => $L->g('with-the-locales-you-can-set-the-regional-user-interface')
|
||||
));
|
||||
|
||||
echo Bootstrap::formTitle(array('title' => $L->g('Date and time formats')));
|
||||
//echo Bootstrap::formTitle(array('title' => $L->g('Date and time formats')));
|
||||
|
||||
echo Bootstrap::formInputText(array(
|
||||
'name' => 'dateFormat',
|
||||
|
@ -558,13 +601,16 @@ echo Bootstrap::formInputHidden(array(
|
|||
'placeholder' => '',
|
||||
'tip' => $L->g('Current format') . ': ' . Date::current($site->dateFormat())
|
||||
));
|
||||
|
||||
echo Bootstrap::cardEnd();
|
||||
?>
|
||||
</div>
|
||||
|
||||
<!-- Custom fields -->
|
||||
<div class="tab-pane fade" id="custom-fields" role="tabpanel" aria-labelledby="custom-fields-tab">
|
||||
<?php
|
||||
echo Bootstrap::formTitle(array('title' => $L->g('Custom fields')));
|
||||
|
||||
echo Bootstrap::cardBegin($L->g('Custom fields'));
|
||||
|
||||
echo Bootstrap::formTextarea(array(
|
||||
'name' => 'customFields',
|
||||
|
@ -575,23 +621,26 @@ echo Bootstrap::formInputHidden(array(
|
|||
'tip' => $L->g('define-custom-fields-for-the-content'),
|
||||
'rows' => 15
|
||||
));
|
||||
|
||||
echo Bootstrap::cardEnd();
|
||||
?>
|
||||
</div>
|
||||
|
||||
<!-- Site logo tab -->
|
||||
<div class="tab-pane fade" id="logo" role="tabpanel" aria-labelledby="logo-tab">
|
||||
<?php
|
||||
echo Bootstrap::formTitle(array('title' => $L->g('Site logo')));
|
||||
|
||||
echo Bootstrap::cardBegin($L->g('Site logo'));
|
||||
?>
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-4 col-sm-12 p-0 pr-2">
|
||||
<div class="custom-file">
|
||||
<input id="jssiteLogoInputFile" class="custom-file-input" type="file" name="inputFile">
|
||||
<input id="jssiteLogoInputFile" class="form-control custom-file-input" type="file" name="inputFile">
|
||||
<label for="jssiteLogoInputFile" class="custom-file-label"><?php $L->p('Upload image'); ?></label>
|
||||
</div>
|
||||
<button id="jsbuttonRemoveLogo" type="button" class="btn btn-primary w-100 mt-4 mb-4"><i class="fa fa-trash"></i><?php $L->p('Remove logo') ?></button>
|
||||
<button id="jsbuttonRemoveLogo" type="button" class="btn btn-danger w-100 mt-4 mb-4"><i class="fa fa-trash"></i><?php $L->p('Remove logo') ?></button>
|
||||
</div>
|
||||
<div class="col-lg-8 col-sm-12 p-0 text-center">
|
||||
<img id="jssiteLogoPreview" class="img-fluid img-thumbnail" alt="Site logo preview" src="<?php echo ($site->logo() ? DOMAIN_UPLOADS . $site->logo(false) . '?version=' . time() : HTML_PATH_CORE_IMG . 'default.svg') ?>" />
|
||||
|
@ -624,6 +673,7 @@ echo Bootstrap::formInputHidden(array(
|
|||
});
|
||||
});
|
||||
</script>
|
||||
<?php echo Bootstrap::cardEnd(); ?>
|
||||
</div>
|
||||
|
||||
<?php echo Bootstrap::formClose(); ?>
|
||||
|
@ -631,13 +681,15 @@ echo Bootstrap::formInputHidden(array(
|
|||
<script>
|
||||
// Open current tab after refresh page
|
||||
$(function() {
|
||||
$('a[data-toggle="tab"]').on('click', function(e) {
|
||||
window.localStorage.setItem('activeTab', $(e.target).attr('href'));
|
||||
$('a[data-bs-toggle="tab"]').on('click', function(e) {
|
||||
window.localStorage.setItem('activeTab', $(e.target).attr('data-bs-target'));
|
||||
});
|
||||
var activeTab = window.localStorage.getItem('activeTab');
|
||||
if (activeTab) {
|
||||
$('#nav-tab a[href="' + activeTab + '"]').tab('show');
|
||||
$('#nav-tab a[data-bs-target="' + activeTab + '"]').tab('show');
|
||||
//window.localStorage.removeItem("activeTab");
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
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-primary"><?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>
|
||||
';
|
|
@ -3,9 +3,10 @@
|
|||
echo Bootstrap::pageTitle(array('title' => $L->g('Themes'), 'icon' => 'desktop'));
|
||||
|
||||
echo '
|
||||
<table class="table mt-3">
|
||||
<div class="card mt-3">
|
||||
<table class="table table-stripped mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr class="card-header">
|
||||
<th class="border-bottom-0 w-25" scope="col">' . $L->g('Name') . '</th>
|
||||
<th class="border-bottom-0 d-none d-sm-table-cell" scope="col">' . $L->g('Description') . '</th>
|
||||
<th class="text-center border-bottom-0 d-none d-lg-table-cell" scope="col">' . $L->g('Version') . '</th>
|
||||
|
@ -17,9 +18,9 @@ echo '
|
|||
|
||||
foreach ($themes as $theme) {
|
||||
echo '
|
||||
<tr ' . ($theme['dirname'] == $site->theme() ? 'class="bg-light"' : '') . '>
|
||||
<tr class="card-tablebody">
|
||||
<td class="align-middle pt-3 pb-3">
|
||||
<div>'.$theme['name'].($theme['dirname']==$site->theme()?'<span class="badge badge-primary ml-2">'.$L->g('Active').'</span>':'').'</div>
|
||||
<div>'.$theme['name'].($theme['dirname']==$site->theme()?'<span class="badge bg-primary ms-2">'.$L->g('Active').'</span>':'').'</div>
|
||||
<div class="mt-1">
|
||||
';
|
||||
|
||||
|
@ -54,4 +55,5 @@ foreach ($themes as $theme) {
|
|||
echo '
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
';
|
||||
|
|
|
@ -2,36 +2,42 @@
|
|||
|
||||
<?php
|
||||
|
||||
echo "<div class='d-flex justify-content-between align-content-center'>";
|
||||
|
||||
echo Bootstrap::pageTitle(array('title'=>$L->g('Users'), 'icon'=>'users'));
|
||||
|
||||
echo "<div>";
|
||||
echo Bootstrap::link(array(
|
||||
'title'=>$L->g('add-a-new-user'),
|
||||
'title'=>$L->g('New user'),
|
||||
'href'=>HTML_PATH_ADMIN_ROOT.'new-user',
|
||||
'icon'=>'plus'
|
||||
'icon'=>'plus',
|
||||
'class'=>'btn btn-outline-success'
|
||||
));
|
||||
|
||||
echo '
|
||||
<table class="table table-striped mt-3">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="border-bottom-0" scope="col">'.$L->g('Username').'</th>
|
||||
<th class="border-bottom-0 d-none d-lg-table-cell" scope="col">'.$L->g('Nickname').'</th>
|
||||
<th class="border-bottom-0" scope="col">'.$L->g('Email').'</th>
|
||||
<th class="border-bottom-0" scope="col">'.$L->g('Status').'</th>
|
||||
<th class="border-bottom-0" scope="col">'.$L->g('Role').'</th>
|
||||
<th class="border-bottom-0 d-none d-lg-table-cell" scope="col">'.$L->g('Registered').'</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</div></div>
|
||||
<div class="card">
|
||||
<table class="table m-0">
|
||||
<thead>
|
||||
<tr class="card-header">
|
||||
<th class="border-bottom-0" scope="col">'.$L->g('User').'</th>
|
||||
<th class="border-bottom-0 d-none d-lg-table-cell" scope="col">'.$L->g('Username').'</th>
|
||||
<th class="border-bottom-0" scope="col">'.$L->g('Email').'</th>
|
||||
<th class="border-bottom-0" scope="col">'.$L->g('Status').'</th>
|
||||
<th class="border-bottom-0" scope="col">'.$L->g('Role').'</th>
|
||||
<th class="border-bottom-0 d-none d-lg-table-cell" scope="col">'.$L->g('Registered').'</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
';
|
||||
|
||||
$list = $users->keys();
|
||||
foreach ($list as $username) {
|
||||
try {
|
||||
$user = new User($username);
|
||||
echo '<tr>';
|
||||
echo '<td><img class="profilePicture mr-1" alt="" src="'.(Sanitize::pathFile(PATH_UPLOADS_PROFILES.$user->username().'.png')?DOMAIN_UPLOADS_PROFILES.$user->username().'.png':HTML_PATH_CORE_IMG.'default.svg').'" /><a href="'.HTML_PATH_ADMIN_ROOT.'edit-user/'.$username.'">'.$username.'</a></td>';
|
||||
echo '<td class="d-none d-lg-table-cell">'.$user->nickname().'</td>';
|
||||
echo '<tr class="card-tablebody">';
|
||||
echo '<td><img class="profilePicture me-1" alt="" src="'.(Sanitize::pathFile(PATH_UPLOADS_PROFILES.$user->username().'.png')?DOMAIN_UPLOADS_PROFILES.$user->username().'.png':HTML_PATH_CORE_IMG.'default.svg').'" /><a href="'.HTML_PATH_ADMIN_ROOT.'edit-user/'.$username.'">'.$user->displayName().'</a></td>';
|
||||
echo '<td class="d-none d-lg-table-cell">'.$user->username().'</td>';
|
||||
echo '<td>'.$user->email().'</td>';
|
||||
echo '<td>'.($user->enabled()?'<b>'.$L->g('Enabled').'</b>':$L->g('Disabled')).'</td>';
|
||||
if ($user->role()=='admin') {
|
||||
|
@ -51,6 +57,7 @@ foreach ($list as $username) {
|
|||
}
|
||||
|
||||
echo '
|
||||
</tbody>
|
||||
</table>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
';
|
|
@ -82,6 +82,9 @@ else
|
|||
// Load plugins before the admin area will be load.
|
||||
Theme::plugins('beforeAdminLoad');
|
||||
|
||||
// Build the themes to know informations about them.
|
||||
$themes = buildThemes();
|
||||
|
||||
// Load init.php if the theme has one.
|
||||
if (Sanitize::pathFile(PATH_ADMIN_THEMES, $site->adminTheme().DS.'init.php')) {
|
||||
include(PATH_ADMIN_THEMES.$site->adminTheme().DS.'init.php');
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
// Koblog version
|
||||
define('KOBLOG_VERSION', 'kb_0.0.1');
|
||||
define('KOBLOG_CODENAME', 'Valencia');
|
||||
define('KOBLOG_CODENAME', 'Clay');
|
||||
define('KOBLOG_RELEASE_DATE', '2024-08-23');
|
||||
define('KOBLOG_BUILD', '20240806');
|
||||
|
||||
|
@ -170,6 +170,7 @@ define('HTML_PATH_ADMIN_THEME_JS', HTML_PATH_ADMIN_THEME . 'js/');
|
|||
define('HTML_PATH_ADMIN_THEME_CSS', HTML_PATH_ADMIN_THEME . 'css/');
|
||||
define('HTML_PATH_CORE_JS', HTML_PATH_ROOT . 'bl-kernel/js/');
|
||||
define('HTML_PATH_CORE_CSS', HTML_PATH_ROOT . 'bl-kernel/css/');
|
||||
define('HTML_PATH_CORE_VENDORS', HTML_PATH_ROOT . 'bl-kernel/vendors/');
|
||||
define('HTML_PATH_CORE_IMG', HTML_PATH_ROOT . 'bl-kernel/img/');
|
||||
define('HTML_PATH_CONTENT', HTML_PATH_ROOT . 'bl-content/');
|
||||
define('HTML_PATH_UPLOADS', HTML_PATH_ROOT . 'bl-content/uploads/');
|
||||
|
@ -226,6 +227,7 @@ define('DOMAIN', $site->domain());
|
|||
define('DOMAIN_BASE', DOMAIN . HTML_PATH_ROOT);
|
||||
define('DOMAIN_CORE_JS', DOMAIN . HTML_PATH_CORE_JS);
|
||||
define('DOMAIN_CORE_CSS', DOMAIN . HTML_PATH_CORE_CSS);
|
||||
define('DOMAIN_CORE_VENDORS', DOMAIN . HTML_PATH_CORE_VENDORS);
|
||||
define('DOMAIN_THEME', DOMAIN . HTML_PATH_THEME);
|
||||
define('DOMAIN_THEME_CSS', DOMAIN . HTML_PATH_THEME_CSS);
|
||||
define('DOMAIN_THEME_JS', DOMAIN . HTML_PATH_THEME_JS);
|
||||
|
|
6
bl-kernel/css/bootstrap.min.css
vendored
6
bl-kernel/css/bootstrap.min.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because it is too large
Load diff
Before (image error) Size: 424 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -256,12 +256,12 @@ class Theme
|
|||
|
||||
public static function jsBootstrap($attributes = '')
|
||||
{
|
||||
return '<script ' . $attributes . ' src="' . DOMAIN_CORE_JS . 'bootstrap.bundle.min.js?version=' . KOBLOG_VERSION . '"></script>' . PHP_EOL;
|
||||
return '<script ' . $attributes . ' src="' . DOMAIN_CORE_VENDORS . 'bootstrap5/js/bootstrap.bundle.min.js?version=' . KOBLOG_VERSION . '"></script>' . PHP_EOL;
|
||||
}
|
||||
|
||||
public static function cssBootstrap()
|
||||
{
|
||||
return '<link rel="stylesheet" type="text/css" href="' . DOMAIN_CORE_CSS . 'bootstrap.min.css?version=' . KOBLOG_VERSION . '">' . PHP_EOL;
|
||||
return '<link rel="stylesheet" type="text/css" href="' . DOMAIN_CORE_VENDORS . 'bootstrap5/css/bootstrap.min.css?version=' . KOBLOG_VERSION . '">' . PHP_EOL;
|
||||
}
|
||||
|
||||
public static function cssBootstrapIcons()
|
||||
|
@ -270,9 +270,11 @@ class Theme
|
|||
return '<link rel="stylesheet" type="text/css" href="' . DOMAIN_CORE_CSS . 'bootstrap-icons/bootstrap-icons.css?version=' . KOBLOG_VERSION . '">' . PHP_EOL;
|
||||
}
|
||||
|
||||
public static function cssLineAwesome()
|
||||
public static function cssFontAwesome()
|
||||
{
|
||||
return '<link rel="stylesheet" type="text/css" href="' . DOMAIN_CORE_CSS . 'line-awesome/css/line-awesome-font-awesome.min.css?version=' . KOBLOG_VERSION . '">' . PHP_EOL;
|
||||
//$FONTAWESOME = '<link rel="stylesheet" type="text/css" href="' . DOMAIN_CORE_VENDORS . 'fontawesome6/css/fontawesome.min.css?version=' . KOBLOG_VERSION . '">' . PHP_EOL;
|
||||
$FONTAWESOME = '<link rel="stylesheet" type="text/css" href="' . DOMAIN_CORE_VENDORS . 'fontawesome6/css/all.min.css?version=' . KOBLOG_VERSION . '">' . PHP_EOL;
|
||||
return $FONTAWESOME;
|
||||
}
|
||||
|
||||
public static function jsSortable($attributes = '')
|
||||
|
@ -280,4 +282,31 @@ class Theme
|
|||
// https://github.com/psfpro/bootstrap-html5sortable
|
||||
return '<script ' . $attributes . ' src="' . DOMAIN_CORE_JS . 'jquery.sortable.min.js?version=' . KOBLOG_VERSION . '"></script>' . PHP_EOL;
|
||||
}
|
||||
|
||||
public static function supports($featureToCheck, $verifySidebar = true)
|
||||
{
|
||||
global $site;
|
||||
global $themes;
|
||||
$themeName = $site->theme();
|
||||
|
||||
if (isset($themes)) {
|
||||
foreach ($themes as $theme) {
|
||||
if ($theme['dirname'] == $site->theme()) {
|
||||
if (isset($theme['supports'])) {
|
||||
foreach ($theme['supports'] as $feature) {
|
||||
if ($featureToCheck == $feature) {
|
||||
return true;
|
||||
}
|
||||
if ($verifySidebar && $feature == "sidebar") {
|
||||
// TODO: add check to see if a plugin support it in the sidebar
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
7
bl-kernel/js/bootstrap.bundle.min.js
vendored
7
bl-kernel/js/bootstrap.bundle.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -172,6 +172,16 @@ class Login
|
|||
return sha1($agent);
|
||||
}
|
||||
|
||||
public function getUserData()
|
||||
{
|
||||
try {
|
||||
$user = new User($this->username());
|
||||
return $user;
|
||||
} catch (Exception $e) {
|
||||
// Continue without permissions
|
||||
}
|
||||
}
|
||||
|
||||
public function logout()
|
||||
{
|
||||
$this->invalidateRememberMe();
|
||||
|
|
|
@ -12,7 +12,7 @@ class Site extends dbJSON
|
|||
'locale' => 'en, en_US, en_AU, en_CA, en_GB, en_IE, en_NZ',
|
||||
'timezone' => 'America/Argentina/Buenos_Aires',
|
||||
'theme' => 'alternative',
|
||||
'adminTheme' => 'booty',
|
||||
'adminTheme' => 'koblog',
|
||||
'homepage' => '',
|
||||
'pageNotFound' => '',
|
||||
'uriPage' => '/',
|
||||
|
|
4085
bl-kernel/vendors/bootstrap5/css/bootstrap-grid.css
vendored
Normal file
4085
bl-kernel/vendors/bootstrap5/css/bootstrap-grid.css
vendored
Normal file
File diff suppressed because it is too large
Load diff
1
bl-kernel/vendors/bootstrap5/css/bootstrap-grid.css.map
vendored
Normal file
1
bl-kernel/vendors/bootstrap5/css/bootstrap-grid.css.map
vendored
Normal file
File diff suppressed because one or more lines are too long
6
bl-kernel/vendors/bootstrap5/css/bootstrap-grid.min.css
vendored
Normal file
6
bl-kernel/vendors/bootstrap5/css/bootstrap-grid.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
bl-kernel/vendors/bootstrap5/css/bootstrap-grid.min.css.map
vendored
Normal file
1
bl-kernel/vendors/bootstrap5/css/bootstrap-grid.min.css.map
vendored
Normal file
File diff suppressed because one or more lines are too long
4084
bl-kernel/vendors/bootstrap5/css/bootstrap-grid.rtl.css
vendored
Normal file
4084
bl-kernel/vendors/bootstrap5/css/bootstrap-grid.rtl.css
vendored
Normal file
File diff suppressed because it is too large
Load diff
1
bl-kernel/vendors/bootstrap5/css/bootstrap-grid.rtl.css.map
vendored
Normal file
1
bl-kernel/vendors/bootstrap5/css/bootstrap-grid.rtl.css.map
vendored
Normal file
File diff suppressed because one or more lines are too long
6
bl-kernel/vendors/bootstrap5/css/bootstrap-grid.rtl.min.css
vendored
Normal file
6
bl-kernel/vendors/bootstrap5/css/bootstrap-grid.rtl.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
bl-kernel/vendors/bootstrap5/css/bootstrap-grid.rtl.min.css.map
vendored
Normal file
1
bl-kernel/vendors/bootstrap5/css/bootstrap-grid.rtl.min.css.map
vendored
Normal file
File diff suppressed because one or more lines are too long
597
bl-kernel/vendors/bootstrap5/css/bootstrap-reboot.css
vendored
Normal file
597
bl-kernel/vendors/bootstrap5/css/bootstrap-reboot.css
vendored
Normal file
|
@ -0,0 +1,597 @@
|
|||
/*!
|
||||
* Bootstrap Reboot v5.3.3 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2024 The Bootstrap Authors
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
:root,
|
||||
[data-bs-theme=light] {
|
||||
--bs-blue: #0d6efd;
|
||||
--bs-indigo: #6610f2;
|
||||
--bs-purple: #6f42c1;
|
||||
--bs-pink: #d63384;
|
||||
--bs-red: #dc3545;
|
||||
--bs-orange: #fd7e14;
|
||||
--bs-yellow: #ffc107;
|
||||
--bs-green: #198754;
|
||||
--bs-teal: #20c997;
|
||||
--bs-cyan: #0dcaf0;
|
||||
--bs-black: #000;
|
||||
--bs-white: #fff;
|
||||
--bs-gray: #6c757d;
|
||||
--bs-gray-dark: #343a40;
|
||||
--bs-gray-100: #f8f9fa;
|
||||
--bs-gray-200: #e9ecef;
|
||||
--bs-gray-300: #dee2e6;
|
||||
--bs-gray-400: #ced4da;
|
||||
--bs-gray-500: #adb5bd;
|
||||
--bs-gray-600: #6c757d;
|
||||
--bs-gray-700: #495057;
|
||||
--bs-gray-800: #343a40;
|
||||
--bs-gray-900: #212529;
|
||||
--bs-primary: #0d6efd;
|
||||
--bs-secondary: #6c757d;
|
||||
--bs-success: #198754;
|
||||
--bs-info: #0dcaf0;
|
||||
--bs-warning: #ffc107;
|
||||
--bs-danger: #dc3545;
|
||||
--bs-light: #f8f9fa;
|
||||
--bs-dark: #212529;
|
||||
--bs-primary-rgb: 13, 110, 253;
|
||||
--bs-secondary-rgb: 108, 117, 125;
|
||||
--bs-success-rgb: 25, 135, 84;
|
||||
--bs-info-rgb: 13, 202, 240;
|
||||
--bs-warning-rgb: 255, 193, 7;
|
||||
--bs-danger-rgb: 220, 53, 69;
|
||||
--bs-light-rgb: 248, 249, 250;
|
||||
--bs-dark-rgb: 33, 37, 41;
|
||||
--bs-primary-text-emphasis: #052c65;
|
||||
--bs-secondary-text-emphasis: #2b2f32;
|
||||
--bs-success-text-emphasis: #0a3622;
|
||||
--bs-info-text-emphasis: #055160;
|
||||
--bs-warning-text-emphasis: #664d03;
|
||||
--bs-danger-text-emphasis: #58151c;
|
||||
--bs-light-text-emphasis: #495057;
|
||||
--bs-dark-text-emphasis: #495057;
|
||||
--bs-primary-bg-subtle: #cfe2ff;
|
||||
--bs-secondary-bg-subtle: #e2e3e5;
|
||||
--bs-success-bg-subtle: #d1e7dd;
|
||||
--bs-info-bg-subtle: #cff4fc;
|
||||
--bs-warning-bg-subtle: #fff3cd;
|
||||
--bs-danger-bg-subtle: #f8d7da;
|
||||
--bs-light-bg-subtle: #fcfcfd;
|
||||
--bs-dark-bg-subtle: #ced4da;
|
||||
--bs-primary-border-subtle: #9ec5fe;
|
||||
--bs-secondary-border-subtle: #c4c8cb;
|
||||
--bs-success-border-subtle: #a3cfbb;
|
||||
--bs-info-border-subtle: #9eeaf9;
|
||||
--bs-warning-border-subtle: #ffe69c;
|
||||
--bs-danger-border-subtle: #f1aeb5;
|
||||
--bs-light-border-subtle: #e9ecef;
|
||||
--bs-dark-border-subtle: #adb5bd;
|
||||
--bs-white-rgb: 255, 255, 255;
|
||||
--bs-black-rgb: 0, 0, 0;
|
||||
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
|
||||
--bs-body-font-family: var(--bs-font-sans-serif);
|
||||
--bs-body-font-size: 1rem;
|
||||
--bs-body-font-weight: 400;
|
||||
--bs-body-line-height: 1.5;
|
||||
--bs-body-color: #212529;
|
||||
--bs-body-color-rgb: 33, 37, 41;
|
||||
--bs-body-bg: #fff;
|
||||
--bs-body-bg-rgb: 255, 255, 255;
|
||||
--bs-emphasis-color: #000;
|
||||
--bs-emphasis-color-rgb: 0, 0, 0;
|
||||
--bs-secondary-color: rgba(33, 37, 41, 0.75);
|
||||
--bs-secondary-color-rgb: 33, 37, 41;
|
||||
--bs-secondary-bg: #e9ecef;
|
||||
--bs-secondary-bg-rgb: 233, 236, 239;
|
||||
--bs-tertiary-color: rgba(33, 37, 41, 0.5);
|
||||
--bs-tertiary-color-rgb: 33, 37, 41;
|
||||
--bs-tertiary-bg: #f8f9fa;
|
||||
--bs-tertiary-bg-rgb: 248, 249, 250;
|
||||
--bs-heading-color: inherit;
|
||||
--bs-link-color: #0d6efd;
|
||||
--bs-link-color-rgb: 13, 110, 253;
|
||||
--bs-link-decoration: underline;
|
||||
--bs-link-hover-color: #0a58ca;
|
||||
--bs-link-hover-color-rgb: 10, 88, 202;
|
||||
--bs-code-color: #d63384;
|
||||
--bs-highlight-color: #212529;
|
||||
--bs-highlight-bg: #fff3cd;
|
||||
--bs-border-width: 1px;
|
||||
--bs-border-style: solid;
|
||||
--bs-border-color: #dee2e6;
|
||||
--bs-border-color-translucent: rgba(0, 0, 0, 0.175);
|
||||
--bs-border-radius: 0.375rem;
|
||||
--bs-border-radius-sm: 0.25rem;
|
||||
--bs-border-radius-lg: 0.5rem;
|
||||
--bs-border-radius-xl: 1rem;
|
||||
--bs-border-radius-xxl: 2rem;
|
||||
--bs-border-radius-2xl: var(--bs-border-radius-xxl);
|
||||
--bs-border-radius-pill: 50rem;
|
||||
--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
|
||||
--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
|
||||
--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);
|
||||
--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);
|
||||
--bs-focus-ring-width: 0.25rem;
|
||||
--bs-focus-ring-opacity: 0.25;
|
||||
--bs-focus-ring-color: rgba(13, 110, 253, 0.25);
|
||||
--bs-form-valid-color: #198754;
|
||||
--bs-form-valid-border-color: #198754;
|
||||
--bs-form-invalid-color: #dc3545;
|
||||
--bs-form-invalid-border-color: #dc3545;
|
||||
}
|
||||
|
||||
[data-bs-theme=dark] {
|
||||
color-scheme: dark;
|
||||
--bs-body-color: #dee2e6;
|
||||
--bs-body-color-rgb: 222, 226, 230;
|
||||
--bs-body-bg: #212529;
|
||||
--bs-body-bg-rgb: 33, 37, 41;
|
||||
--bs-emphasis-color: #fff;
|
||||
--bs-emphasis-color-rgb: 255, 255, 255;
|
||||
--bs-secondary-color: rgba(222, 226, 230, 0.75);
|
||||
--bs-secondary-color-rgb: 222, 226, 230;
|
||||
--bs-secondary-bg: #343a40;
|
||||
--bs-secondary-bg-rgb: 52, 58, 64;
|
||||
--bs-tertiary-color: rgba(222, 226, 230, 0.5);
|
||||
--bs-tertiary-color-rgb: 222, 226, 230;
|
||||
--bs-tertiary-bg: #2b3035;
|
||||
--bs-tertiary-bg-rgb: 43, 48, 53;
|
||||
--bs-primary-text-emphasis: #6ea8fe;
|
||||
--bs-secondary-text-emphasis: #a7acb1;
|
||||
--bs-success-text-emphasis: #75b798;
|
||||
--bs-info-text-emphasis: #6edff6;
|
||||
--bs-warning-text-emphasis: #ffda6a;
|
||||
--bs-danger-text-emphasis: #ea868f;
|
||||
--bs-light-text-emphasis: #f8f9fa;
|
||||
--bs-dark-text-emphasis: #dee2e6;
|
||||
--bs-primary-bg-subtle: #031633;
|
||||
--bs-secondary-bg-subtle: #161719;
|
||||
--bs-success-bg-subtle: #051b11;
|
||||
--bs-info-bg-subtle: #032830;
|
||||
--bs-warning-bg-subtle: #332701;
|
||||
--bs-danger-bg-subtle: #2c0b0e;
|
||||
--bs-light-bg-subtle: #343a40;
|
||||
--bs-dark-bg-subtle: #1a1d20;
|
||||
--bs-primary-border-subtle: #084298;
|
||||
--bs-secondary-border-subtle: #41464b;
|
||||
--bs-success-border-subtle: #0f5132;
|
||||
--bs-info-border-subtle: #087990;
|
||||
--bs-warning-border-subtle: #997404;
|
||||
--bs-danger-border-subtle: #842029;
|
||||
--bs-light-border-subtle: #495057;
|
||||
--bs-dark-border-subtle: #343a40;
|
||||
--bs-heading-color: inherit;
|
||||
--bs-link-color: #6ea8fe;
|
||||
--bs-link-hover-color: #8bb9fe;
|
||||
--bs-link-color-rgb: 110, 168, 254;
|
||||
--bs-link-hover-color-rgb: 139, 185, 254;
|
||||
--bs-code-color: #e685b5;
|
||||
--bs-highlight-color: #dee2e6;
|
||||
--bs-highlight-bg: #664d03;
|
||||
--bs-border-color: #495057;
|
||||
--bs-border-color-translucent: rgba(255, 255, 255, 0.15);
|
||||
--bs-form-valid-color: #75b798;
|
||||
--bs-form-valid-border-color: #75b798;
|
||||
--bs-form-invalid-color: #ea868f;
|
||||
--bs-form-invalid-border-color: #ea868f;
|
||||
}
|
||||
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: no-preference) {
|
||||
:root {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: var(--bs-body-font-family);
|
||||
font-size: var(--bs-body-font-size);
|
||||
font-weight: var(--bs-body-font-weight);
|
||||
line-height: var(--bs-body-line-height);
|
||||
color: var(--bs-body-color);
|
||||
text-align: var(--bs-body-text-align);
|
||||
background-color: var(--bs-body-bg);
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
hr {
|
||||
margin: 1rem 0;
|
||||
color: inherit;
|
||||
border: 0;
|
||||
border-top: var(--bs-border-width) solid;
|
||||
opacity: 0.25;
|
||||
}
|
||||
|
||||
h6, h5, h4, h3, h2, h1 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
font-weight: 500;
|
||||
line-height: 1.2;
|
||||
color: var(--bs-heading-color);
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: calc(1.375rem + 1.5vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h1 {
|
||||
font-size: 2.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: calc(1.325rem + 0.9vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h2 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: calc(1.3rem + 0.6vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h3 {
|
||||
font-size: 1.75rem;
|
||||
}
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: calc(1.275rem + 0.3vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h4 {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
abbr[title] {
|
||||
-webkit-text-decoration: underline dotted;
|
||||
text-decoration: underline dotted;
|
||||
cursor: help;
|
||||
-webkit-text-decoration-skip-ink: none;
|
||||
text-decoration-skip-ink: none;
|
||||
}
|
||||
|
||||
address {
|
||||
margin-bottom: 1rem;
|
||||
font-style: normal;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul {
|
||||
padding-left: 2rem;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul,
|
||||
dl {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
ol ol,
|
||||
ul ul,
|
||||
ol ul,
|
||||
ul ol {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
dt {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-bottom: 0.5rem;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
small {
|
||||
font-size: 0.875em;
|
||||
}
|
||||
|
||||
mark {
|
||||
padding: 0.1875em;
|
||||
color: var(--bs-highlight-color);
|
||||
background-color: var(--bs-highlight-bg);
|
||||
}
|
||||
|
||||
sub,
|
||||
sup {
|
||||
position: relative;
|
||||
font-size: 0.75em;
|
||||
line-height: 0;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
a {
|
||||
color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));
|
||||
text-decoration: underline;
|
||||
}
|
||||
a:hover {
|
||||
--bs-link-color-rgb: var(--bs-link-hover-color-rgb);
|
||||
}
|
||||
|
||||
a:not([href]):not([class]), a:not([href]):not([class]):hover {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
pre,
|
||||
code,
|
||||
kbd,
|
||||
samp {
|
||||
font-family: var(--bs-font-monospace);
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
pre {
|
||||
display: block;
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
overflow: auto;
|
||||
font-size: 0.875em;
|
||||
}
|
||||
pre code {
|
||||
font-size: inherit;
|
||||
color: inherit;
|
||||
word-break: normal;
|
||||
}
|
||||
|
||||
code {
|
||||
font-size: 0.875em;
|
||||
color: var(--bs-code-color);
|
||||
word-wrap: break-word;
|
||||
}
|
||||
a > code {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
kbd {
|
||||
padding: 0.1875rem 0.375rem;
|
||||
font-size: 0.875em;
|
||||
color: var(--bs-body-bg);
|
||||
background-color: var(--bs-body-color);
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
kbd kbd {
|
||||
padding: 0;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
figure {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
img,
|
||||
svg {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
table {
|
||||
caption-side: bottom;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
caption {
|
||||
padding-top: 0.5rem;
|
||||
padding-bottom: 0.5rem;
|
||||
color: var(--bs-secondary-color);
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
th {
|
||||
text-align: inherit;
|
||||
text-align: -webkit-match-parent;
|
||||
}
|
||||
|
||||
thead,
|
||||
tbody,
|
||||
tfoot,
|
||||
tr,
|
||||
td,
|
||||
th {
|
||||
border-color: inherit;
|
||||
border-style: solid;
|
||||
border-width: 0;
|
||||
}
|
||||
|
||||
label {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
button {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
button:focus:not(:focus-visible) {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
input,
|
||||
button,
|
||||
select,
|
||||
optgroup,
|
||||
textarea {
|
||||
margin: 0;
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
button,
|
||||
select {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
[role=button] {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
select {
|
||||
word-wrap: normal;
|
||||
}
|
||||
select:disabled {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
button,
|
||||
[type=button],
|
||||
[type=reset],
|
||||
[type=submit] {
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
button:not(:disabled),
|
||||
[type=button]:not(:disabled),
|
||||
[type=reset]:not(:disabled),
|
||||
[type=submit]:not(:disabled) {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
textarea {
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
min-width: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
legend {
|
||||
float: left;
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
font-size: calc(1.275rem + 0.3vw);
|
||||
line-height: inherit;
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
legend {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
}
|
||||
legend + * {
|
||||
clear: left;
|
||||
}
|
||||
|
||||
::-webkit-datetime-edit-fields-wrapper,
|
||||
::-webkit-datetime-edit-text,
|
||||
::-webkit-datetime-edit-minute,
|
||||
::-webkit-datetime-edit-hour-field,
|
||||
::-webkit-datetime-edit-day-field,
|
||||
::-webkit-datetime-edit-month-field,
|
||||
::-webkit-datetime-edit-year-field {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
::-webkit-inner-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
[type=search] {
|
||||
-webkit-appearance: textfield;
|
||||
outline-offset: -2px;
|
||||
}
|
||||
|
||||
/* rtl:raw:
|
||||
[type="tel"],
|
||||
[type="url"],
|
||||
[type="email"],
|
||||
[type="number"] {
|
||||
direction: ltr;
|
||||
}
|
||||
*/
|
||||
::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
::-webkit-color-swatch-wrapper {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
font: inherit;
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
::file-selector-button {
|
||||
font: inherit;
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
output {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
iframe {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
summary {
|
||||
display: list-item;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
progress {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
[hidden] {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/*# sourceMappingURL=bootstrap-reboot.css.map */
|
1
bl-kernel/vendors/bootstrap5/css/bootstrap-reboot.css.map
vendored
Normal file
1
bl-kernel/vendors/bootstrap5/css/bootstrap-reboot.css.map
vendored
Normal file
File diff suppressed because one or more lines are too long
6
bl-kernel/vendors/bootstrap5/css/bootstrap-reboot.min.css
vendored
Normal file
6
bl-kernel/vendors/bootstrap5/css/bootstrap-reboot.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
bl-kernel/vendors/bootstrap5/css/bootstrap-reboot.min.css.map
vendored
Normal file
1
bl-kernel/vendors/bootstrap5/css/bootstrap-reboot.min.css.map
vendored
Normal file
File diff suppressed because one or more lines are too long
594
bl-kernel/vendors/bootstrap5/css/bootstrap-reboot.rtl.css
vendored
Normal file
594
bl-kernel/vendors/bootstrap5/css/bootstrap-reboot.rtl.css
vendored
Normal file
|
@ -0,0 +1,594 @@
|
|||
/*!
|
||||
* Bootstrap Reboot v5.3.3 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2024 The Bootstrap Authors
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
:root,
|
||||
[data-bs-theme=light] {
|
||||
--bs-blue: #0d6efd;
|
||||
--bs-indigo: #6610f2;
|
||||
--bs-purple: #6f42c1;
|
||||
--bs-pink: #d63384;
|
||||
--bs-red: #dc3545;
|
||||
--bs-orange: #fd7e14;
|
||||
--bs-yellow: #ffc107;
|
||||
--bs-green: #198754;
|
||||
--bs-teal: #20c997;
|
||||
--bs-cyan: #0dcaf0;
|
||||
--bs-black: #000;
|
||||
--bs-white: #fff;
|
||||
--bs-gray: #6c757d;
|
||||
--bs-gray-dark: #343a40;
|
||||
--bs-gray-100: #f8f9fa;
|
||||
--bs-gray-200: #e9ecef;
|
||||
--bs-gray-300: #dee2e6;
|
||||
--bs-gray-400: #ced4da;
|
||||
--bs-gray-500: #adb5bd;
|
||||
--bs-gray-600: #6c757d;
|
||||
--bs-gray-700: #495057;
|
||||
--bs-gray-800: #343a40;
|
||||
--bs-gray-900: #212529;
|
||||
--bs-primary: #0d6efd;
|
||||
--bs-secondary: #6c757d;
|
||||
--bs-success: #198754;
|
||||
--bs-info: #0dcaf0;
|
||||
--bs-warning: #ffc107;
|
||||
--bs-danger: #dc3545;
|
||||
--bs-light: #f8f9fa;
|
||||
--bs-dark: #212529;
|
||||
--bs-primary-rgb: 13, 110, 253;
|
||||
--bs-secondary-rgb: 108, 117, 125;
|
||||
--bs-success-rgb: 25, 135, 84;
|
||||
--bs-info-rgb: 13, 202, 240;
|
||||
--bs-warning-rgb: 255, 193, 7;
|
||||
--bs-danger-rgb: 220, 53, 69;
|
||||
--bs-light-rgb: 248, 249, 250;
|
||||
--bs-dark-rgb: 33, 37, 41;
|
||||
--bs-primary-text-emphasis: #052c65;
|
||||
--bs-secondary-text-emphasis: #2b2f32;
|
||||
--bs-success-text-emphasis: #0a3622;
|
||||
--bs-info-text-emphasis: #055160;
|
||||
--bs-warning-text-emphasis: #664d03;
|
||||
--bs-danger-text-emphasis: #58151c;
|
||||
--bs-light-text-emphasis: #495057;
|
||||
--bs-dark-text-emphasis: #495057;
|
||||
--bs-primary-bg-subtle: #cfe2ff;
|
||||
--bs-secondary-bg-subtle: #e2e3e5;
|
||||
--bs-success-bg-subtle: #d1e7dd;
|
||||
--bs-info-bg-subtle: #cff4fc;
|
||||
--bs-warning-bg-subtle: #fff3cd;
|
||||
--bs-danger-bg-subtle: #f8d7da;
|
||||
--bs-light-bg-subtle: #fcfcfd;
|
||||
--bs-dark-bg-subtle: #ced4da;
|
||||
--bs-primary-border-subtle: #9ec5fe;
|
||||
--bs-secondary-border-subtle: #c4c8cb;
|
||||
--bs-success-border-subtle: #a3cfbb;
|
||||
--bs-info-border-subtle: #9eeaf9;
|
||||
--bs-warning-border-subtle: #ffe69c;
|
||||
--bs-danger-border-subtle: #f1aeb5;
|
||||
--bs-light-border-subtle: #e9ecef;
|
||||
--bs-dark-border-subtle: #adb5bd;
|
||||
--bs-white-rgb: 255, 255, 255;
|
||||
--bs-black-rgb: 0, 0, 0;
|
||||
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
|
||||
--bs-body-font-family: var(--bs-font-sans-serif);
|
||||
--bs-body-font-size: 1rem;
|
||||
--bs-body-font-weight: 400;
|
||||
--bs-body-line-height: 1.5;
|
||||
--bs-body-color: #212529;
|
||||
--bs-body-color-rgb: 33, 37, 41;
|
||||
--bs-body-bg: #fff;
|
||||
--bs-body-bg-rgb: 255, 255, 255;
|
||||
--bs-emphasis-color: #000;
|
||||
--bs-emphasis-color-rgb: 0, 0, 0;
|
||||
--bs-secondary-color: rgba(33, 37, 41, 0.75);
|
||||
--bs-secondary-color-rgb: 33, 37, 41;
|
||||
--bs-secondary-bg: #e9ecef;
|
||||
--bs-secondary-bg-rgb: 233, 236, 239;
|
||||
--bs-tertiary-color: rgba(33, 37, 41, 0.5);
|
||||
--bs-tertiary-color-rgb: 33, 37, 41;
|
||||
--bs-tertiary-bg: #f8f9fa;
|
||||
--bs-tertiary-bg-rgb: 248, 249, 250;
|
||||
--bs-heading-color: inherit;
|
||||
--bs-link-color: #0d6efd;
|
||||
--bs-link-color-rgb: 13, 110, 253;
|
||||
--bs-link-decoration: underline;
|
||||
--bs-link-hover-color: #0a58ca;
|
||||
--bs-link-hover-color-rgb: 10, 88, 202;
|
||||
--bs-code-color: #d63384;
|
||||
--bs-highlight-color: #212529;
|
||||
--bs-highlight-bg: #fff3cd;
|
||||
--bs-border-width: 1px;
|
||||
--bs-border-style: solid;
|
||||
--bs-border-color: #dee2e6;
|
||||
--bs-border-color-translucent: rgba(0, 0, 0, 0.175);
|
||||
--bs-border-radius: 0.375rem;
|
||||
--bs-border-radius-sm: 0.25rem;
|
||||
--bs-border-radius-lg: 0.5rem;
|
||||
--bs-border-radius-xl: 1rem;
|
||||
--bs-border-radius-xxl: 2rem;
|
||||
--bs-border-radius-2xl: var(--bs-border-radius-xxl);
|
||||
--bs-border-radius-pill: 50rem;
|
||||
--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
|
||||
--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
|
||||
--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);
|
||||
--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);
|
||||
--bs-focus-ring-width: 0.25rem;
|
||||
--bs-focus-ring-opacity: 0.25;
|
||||
--bs-focus-ring-color: rgba(13, 110, 253, 0.25);
|
||||
--bs-form-valid-color: #198754;
|
||||
--bs-form-valid-border-color: #198754;
|
||||
--bs-form-invalid-color: #dc3545;
|
||||
--bs-form-invalid-border-color: #dc3545;
|
||||
}
|
||||
|
||||
[data-bs-theme=dark] {
|
||||
color-scheme: dark;
|
||||
--bs-body-color: #dee2e6;
|
||||
--bs-body-color-rgb: 222, 226, 230;
|
||||
--bs-body-bg: #212529;
|
||||
--bs-body-bg-rgb: 33, 37, 41;
|
||||
--bs-emphasis-color: #fff;
|
||||
--bs-emphasis-color-rgb: 255, 255, 255;
|
||||
--bs-secondary-color: rgba(222, 226, 230, 0.75);
|
||||
--bs-secondary-color-rgb: 222, 226, 230;
|
||||
--bs-secondary-bg: #343a40;
|
||||
--bs-secondary-bg-rgb: 52, 58, 64;
|
||||
--bs-tertiary-color: rgba(222, 226, 230, 0.5);
|
||||
--bs-tertiary-color-rgb: 222, 226, 230;
|
||||
--bs-tertiary-bg: #2b3035;
|
||||
--bs-tertiary-bg-rgb: 43, 48, 53;
|
||||
--bs-primary-text-emphasis: #6ea8fe;
|
||||
--bs-secondary-text-emphasis: #a7acb1;
|
||||
--bs-success-text-emphasis: #75b798;
|
||||
--bs-info-text-emphasis: #6edff6;
|
||||
--bs-warning-text-emphasis: #ffda6a;
|
||||
--bs-danger-text-emphasis: #ea868f;
|
||||
--bs-light-text-emphasis: #f8f9fa;
|
||||
--bs-dark-text-emphasis: #dee2e6;
|
||||
--bs-primary-bg-subtle: #031633;
|
||||
--bs-secondary-bg-subtle: #161719;
|
||||
--bs-success-bg-subtle: #051b11;
|
||||
--bs-info-bg-subtle: #032830;
|
||||
--bs-warning-bg-subtle: #332701;
|
||||
--bs-danger-bg-subtle: #2c0b0e;
|
||||
--bs-light-bg-subtle: #343a40;
|
||||
--bs-dark-bg-subtle: #1a1d20;
|
||||
--bs-primary-border-subtle: #084298;
|
||||
--bs-secondary-border-subtle: #41464b;
|
||||
--bs-success-border-subtle: #0f5132;
|
||||
--bs-info-border-subtle: #087990;
|
||||
--bs-warning-border-subtle: #997404;
|
||||
--bs-danger-border-subtle: #842029;
|
||||
--bs-light-border-subtle: #495057;
|
||||
--bs-dark-border-subtle: #343a40;
|
||||
--bs-heading-color: inherit;
|
||||
--bs-link-color: #6ea8fe;
|
||||
--bs-link-hover-color: #8bb9fe;
|
||||
--bs-link-color-rgb: 110, 168, 254;
|
||||
--bs-link-hover-color-rgb: 139, 185, 254;
|
||||
--bs-code-color: #e685b5;
|
||||
--bs-highlight-color: #dee2e6;
|
||||
--bs-highlight-bg: #664d03;
|
||||
--bs-border-color: #495057;
|
||||
--bs-border-color-translucent: rgba(255, 255, 255, 0.15);
|
||||
--bs-form-valid-color: #75b798;
|
||||
--bs-form-valid-border-color: #75b798;
|
||||
--bs-form-invalid-color: #ea868f;
|
||||
--bs-form-invalid-border-color: #ea868f;
|
||||
}
|
||||
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: no-preference) {
|
||||
:root {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: var(--bs-body-font-family);
|
||||
font-size: var(--bs-body-font-size);
|
||||
font-weight: var(--bs-body-font-weight);
|
||||
line-height: var(--bs-body-line-height);
|
||||
color: var(--bs-body-color);
|
||||
text-align: var(--bs-body-text-align);
|
||||
background-color: var(--bs-body-bg);
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
hr {
|
||||
margin: 1rem 0;
|
||||
color: inherit;
|
||||
border: 0;
|
||||
border-top: var(--bs-border-width) solid;
|
||||
opacity: 0.25;
|
||||
}
|
||||
|
||||
h6, h5, h4, h3, h2, h1 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
font-weight: 500;
|
||||
line-height: 1.2;
|
||||
color: var(--bs-heading-color);
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: calc(1.375rem + 1.5vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h1 {
|
||||
font-size: 2.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: calc(1.325rem + 0.9vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h2 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: calc(1.3rem + 0.6vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h3 {
|
||||
font-size: 1.75rem;
|
||||
}
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: calc(1.275rem + 0.3vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h4 {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
abbr[title] {
|
||||
-webkit-text-decoration: underline dotted;
|
||||
text-decoration: underline dotted;
|
||||
cursor: help;
|
||||
-webkit-text-decoration-skip-ink: none;
|
||||
text-decoration-skip-ink: none;
|
||||
}
|
||||
|
||||
address {
|
||||
margin-bottom: 1rem;
|
||||
font-style: normal;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul {
|
||||
padding-right: 2rem;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul,
|
||||
dl {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
ol ol,
|
||||
ul ul,
|
||||
ol ul,
|
||||
ul ol {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
dt {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-bottom: 0.5rem;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
small {
|
||||
font-size: 0.875em;
|
||||
}
|
||||
|
||||
mark {
|
||||
padding: 0.1875em;
|
||||
color: var(--bs-highlight-color);
|
||||
background-color: var(--bs-highlight-bg);
|
||||
}
|
||||
|
||||
sub,
|
||||
sup {
|
||||
position: relative;
|
||||
font-size: 0.75em;
|
||||
line-height: 0;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
a {
|
||||
color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));
|
||||
text-decoration: underline;
|
||||
}
|
||||
a:hover {
|
||||
--bs-link-color-rgb: var(--bs-link-hover-color-rgb);
|
||||
}
|
||||
|
||||
a:not([href]):not([class]), a:not([href]):not([class]):hover {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
pre,
|
||||
code,
|
||||
kbd,
|
||||
samp {
|
||||
font-family: var(--bs-font-monospace);
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
pre {
|
||||
display: block;
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
overflow: auto;
|
||||
font-size: 0.875em;
|
||||
}
|
||||
pre code {
|
||||
font-size: inherit;
|
||||
color: inherit;
|
||||
word-break: normal;
|
||||
}
|
||||
|
||||
code {
|
||||
font-size: 0.875em;
|
||||
color: var(--bs-code-color);
|
||||
word-wrap: break-word;
|
||||
}
|
||||
a > code {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
kbd {
|
||||
padding: 0.1875rem 0.375rem;
|
||||
font-size: 0.875em;
|
||||
color: var(--bs-body-bg);
|
||||
background-color: var(--bs-body-color);
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
kbd kbd {
|
||||
padding: 0;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
figure {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
img,
|
||||
svg {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
table {
|
||||
caption-side: bottom;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
caption {
|
||||
padding-top: 0.5rem;
|
||||
padding-bottom: 0.5rem;
|
||||
color: var(--bs-secondary-color);
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
th {
|
||||
text-align: inherit;
|
||||
text-align: -webkit-match-parent;
|
||||
}
|
||||
|
||||
thead,
|
||||
tbody,
|
||||
tfoot,
|
||||
tr,
|
||||
td,
|
||||
th {
|
||||
border-color: inherit;
|
||||
border-style: solid;
|
||||
border-width: 0;
|
||||
}
|
||||
|
||||
label {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
button {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
button:focus:not(:focus-visible) {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
input,
|
||||
button,
|
||||
select,
|
||||
optgroup,
|
||||
textarea {
|
||||
margin: 0;
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
button,
|
||||
select {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
[role=button] {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
select {
|
||||
word-wrap: normal;
|
||||
}
|
||||
select:disabled {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
button,
|
||||
[type=button],
|
||||
[type=reset],
|
||||
[type=submit] {
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
button:not(:disabled),
|
||||
[type=button]:not(:disabled),
|
||||
[type=reset]:not(:disabled),
|
||||
[type=submit]:not(:disabled) {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
textarea {
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
min-width: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
legend {
|
||||
float: right;
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
font-size: calc(1.275rem + 0.3vw);
|
||||
line-height: inherit;
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
legend {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
}
|
||||
legend + * {
|
||||
clear: right;
|
||||
}
|
||||
|
||||
::-webkit-datetime-edit-fields-wrapper,
|
||||
::-webkit-datetime-edit-text,
|
||||
::-webkit-datetime-edit-minute,
|
||||
::-webkit-datetime-edit-hour-field,
|
||||
::-webkit-datetime-edit-day-field,
|
||||
::-webkit-datetime-edit-month-field,
|
||||
::-webkit-datetime-edit-year-field {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
::-webkit-inner-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
[type=search] {
|
||||
-webkit-appearance: textfield;
|
||||
outline-offset: -2px;
|
||||
}
|
||||
|
||||
[type="tel"],
|
||||
[type="url"],
|
||||
[type="email"],
|
||||
[type="number"] {
|
||||
direction: ltr;
|
||||
}
|
||||
::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
::-webkit-color-swatch-wrapper {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
font: inherit;
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
::file-selector-button {
|
||||
font: inherit;
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
output {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
iframe {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
summary {
|
||||
display: list-item;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
progress {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
[hidden] {
|
||||
display: none !important;
|
||||
}
|
||||
/*# sourceMappingURL=bootstrap-reboot.rtl.css.map */
|
1
bl-kernel/vendors/bootstrap5/css/bootstrap-reboot.rtl.css.map
vendored
Normal file
1
bl-kernel/vendors/bootstrap5/css/bootstrap-reboot.rtl.css.map
vendored
Normal file
File diff suppressed because one or more lines are too long
6
bl-kernel/vendors/bootstrap5/css/bootstrap-reboot.rtl.min.css
vendored
Normal file
6
bl-kernel/vendors/bootstrap5/css/bootstrap-reboot.rtl.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
bl-kernel/vendors/bootstrap5/css/bootstrap-reboot.rtl.min.css.map
vendored
Normal file
1
bl-kernel/vendors/bootstrap5/css/bootstrap-reboot.rtl.min.css.map
vendored
Normal file
File diff suppressed because one or more lines are too long
5402
bl-kernel/vendors/bootstrap5/css/bootstrap-utilities.css
vendored
Normal file
5402
bl-kernel/vendors/bootstrap5/css/bootstrap-utilities.css
vendored
Normal file
File diff suppressed because it is too large
Load diff
1
bl-kernel/vendors/bootstrap5/css/bootstrap-utilities.css.map
vendored
Normal file
1
bl-kernel/vendors/bootstrap5/css/bootstrap-utilities.css.map
vendored
Normal file
File diff suppressed because one or more lines are too long
6
bl-kernel/vendors/bootstrap5/css/bootstrap-utilities.min.css
vendored
Normal file
6
bl-kernel/vendors/bootstrap5/css/bootstrap-utilities.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
bl-kernel/vendors/bootstrap5/css/bootstrap-utilities.min.css.map
vendored
Normal file
1
bl-kernel/vendors/bootstrap5/css/bootstrap-utilities.min.css.map
vendored
Normal file
File diff suppressed because one or more lines are too long
5393
bl-kernel/vendors/bootstrap5/css/bootstrap-utilities.rtl.css
vendored
Normal file
5393
bl-kernel/vendors/bootstrap5/css/bootstrap-utilities.rtl.css
vendored
Normal file
File diff suppressed because it is too large
Load diff
1
bl-kernel/vendors/bootstrap5/css/bootstrap-utilities.rtl.css.map
vendored
Normal file
1
bl-kernel/vendors/bootstrap5/css/bootstrap-utilities.rtl.css.map
vendored
Normal file
File diff suppressed because one or more lines are too long
6
bl-kernel/vendors/bootstrap5/css/bootstrap-utilities.rtl.min.css
vendored
Normal file
6
bl-kernel/vendors/bootstrap5/css/bootstrap-utilities.rtl.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
bl-kernel/vendors/bootstrap5/css/bootstrap-utilities.rtl.min.css.map
vendored
Normal file
1
bl-kernel/vendors/bootstrap5/css/bootstrap-utilities.rtl.min.css.map
vendored
Normal file
File diff suppressed because one or more lines are too long
12057
bl-kernel/vendors/bootstrap5/css/bootstrap.css
vendored
Normal file
12057
bl-kernel/vendors/bootstrap5/css/bootstrap.css
vendored
Normal file
File diff suppressed because it is too large
Load diff
1
bl-kernel/vendors/bootstrap5/css/bootstrap.css.map
vendored
Normal file
1
bl-kernel/vendors/bootstrap5/css/bootstrap.css.map
vendored
Normal file
File diff suppressed because one or more lines are too long
6
bl-kernel/vendors/bootstrap5/css/bootstrap.min.css
vendored
Normal file
6
bl-kernel/vendors/bootstrap5/css/bootstrap.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
bl-kernel/vendors/bootstrap5/css/bootstrap.min.css.map
vendored
Normal file
1
bl-kernel/vendors/bootstrap5/css/bootstrap.min.css.map
vendored
Normal file
File diff suppressed because one or more lines are too long
12030
bl-kernel/vendors/bootstrap5/css/bootstrap.rtl.css
vendored
Normal file
12030
bl-kernel/vendors/bootstrap5/css/bootstrap.rtl.css
vendored
Normal file
File diff suppressed because it is too large
Load diff
1
bl-kernel/vendors/bootstrap5/css/bootstrap.rtl.css.map
vendored
Normal file
1
bl-kernel/vendors/bootstrap5/css/bootstrap.rtl.css.map
vendored
Normal file
File diff suppressed because one or more lines are too long
6
bl-kernel/vendors/bootstrap5/css/bootstrap.rtl.min.css
vendored
Normal file
6
bl-kernel/vendors/bootstrap5/css/bootstrap.rtl.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
bl-kernel/vendors/bootstrap5/css/bootstrap.rtl.min.css.map
vendored
Normal file
1
bl-kernel/vendors/bootstrap5/css/bootstrap.rtl.min.css.map
vendored
Normal file
File diff suppressed because one or more lines are too long
6314
bl-kernel/vendors/bootstrap5/js/bootstrap.bundle.js
vendored
Normal file
6314
bl-kernel/vendors/bootstrap5/js/bootstrap.bundle.js
vendored
Normal file
File diff suppressed because it is too large
Load diff
1
bl-kernel/vendors/bootstrap5/js/bootstrap.bundle.js.map
vendored
Normal file
1
bl-kernel/vendors/bootstrap5/js/bootstrap.bundle.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
7
bl-kernel/vendors/bootstrap5/js/bootstrap.bundle.min.js
vendored
Normal file
7
bl-kernel/vendors/bootstrap5/js/bootstrap.bundle.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
bl-kernel/vendors/bootstrap5/js/bootstrap.bundle.min.js.map
vendored
Normal file
1
bl-kernel/vendors/bootstrap5/js/bootstrap.bundle.min.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
4447
bl-kernel/vendors/bootstrap5/js/bootstrap.esm.js
vendored
Normal file
4447
bl-kernel/vendors/bootstrap5/js/bootstrap.esm.js
vendored
Normal file
File diff suppressed because it is too large
Load diff
1
bl-kernel/vendors/bootstrap5/js/bootstrap.esm.js.map
vendored
Normal file
1
bl-kernel/vendors/bootstrap5/js/bootstrap.esm.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
7
bl-kernel/vendors/bootstrap5/js/bootstrap.esm.min.js
vendored
Normal file
7
bl-kernel/vendors/bootstrap5/js/bootstrap.esm.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
bl-kernel/vendors/bootstrap5/js/bootstrap.esm.min.js.map
vendored
Normal file
1
bl-kernel/vendors/bootstrap5/js/bootstrap.esm.min.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
4494
bl-kernel/vendors/bootstrap5/js/bootstrap.js
vendored
Normal file
4494
bl-kernel/vendors/bootstrap5/js/bootstrap.js
vendored
Normal file
File diff suppressed because it is too large
Load diff
1
bl-kernel/vendors/bootstrap5/js/bootstrap.js.map
vendored
Normal file
1
bl-kernel/vendors/bootstrap5/js/bootstrap.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
7
bl-kernel/vendors/bootstrap5/js/bootstrap.min.js
vendored
Normal file
7
bl-kernel/vendors/bootstrap5/js/bootstrap.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
bl-kernel/vendors/bootstrap5/js/bootstrap.min.js.map
vendored
Normal file
1
bl-kernel/vendors/bootstrap5/js/bootstrap.min.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
7913
bl-kernel/vendors/fontawesome6/css/all.css
vendored
Normal file
7913
bl-kernel/vendors/fontawesome6/css/all.css
vendored
Normal file
File diff suppressed because it is too large
Load diff
9
bl-kernel/vendors/fontawesome6/css/all.min.css
vendored
Normal file
9
bl-kernel/vendors/fontawesome6/css/all.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1609
bl-kernel/vendors/fontawesome6/css/brands.css
vendored
Normal file
1609
bl-kernel/vendors/fontawesome6/css/brands.css
vendored
Normal file
File diff suppressed because it is too large
Load diff
6
bl-kernel/vendors/fontawesome6/css/brands.min.css
vendored
Normal file
6
bl-kernel/vendors/fontawesome6/css/brands.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
6243
bl-kernel/vendors/fontawesome6/css/fontawesome.css
vendored
Normal file
6243
bl-kernel/vendors/fontawesome6/css/fontawesome.css
vendored
Normal file
File diff suppressed because it is too large
Load diff
9
bl-kernel/vendors/fontawesome6/css/fontawesome.min.css
vendored
Normal file
9
bl-kernel/vendors/fontawesome6/css/fontawesome.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
19
bl-kernel/vendors/fontawesome6/css/regular.css
vendored
Normal file
19
bl-kernel/vendors/fontawesome6/css/regular.css
vendored
Normal file
|
@ -0,0 +1,19 @@
|
|||
/*!
|
||||
* Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2024 Fonticons, Inc.
|
||||
*/
|
||||
:root, :host {
|
||||
--fa-style-family-classic: 'Font Awesome 6 Free';
|
||||
--fa-font-regular: normal 400 1em/1 'Font Awesome 6 Free'; }
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 6 Free';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); }
|
||||
|
||||
.far,
|
||||
.fa-regular {
|
||||
font-weight: 400; }
|
6
bl-kernel/vendors/fontawesome6/css/regular.min.css
vendored
Normal file
6
bl-kernel/vendors/fontawesome6/css/regular.min.css
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
/*!
|
||||
* Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2024 Fonticons, Inc.
|
||||
*/
|
||||
:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue