diff --git a/bl-kernel/admin/views/content.php b/bl-kernel/admin/views/content.php index 90f0e6b1..04efed54 100644 --- a/bl-kernel/admin/views/content.php +++ b/bl-kernel/admin/views/content.php @@ -80,6 +80,7 @@ function table($type) global $scheduled; global $static; global $sticky; + global $unlisted; if ($type == 'published') { $list = $published; @@ -113,6 +114,14 @@ function table($type) echo '</p>'; return false; } + } elseif ($type == 'unlisted') { + $list = $unlisted; + if (empty($list)) { + echo '<p class="text-muted p-4">'; + echo $L->g('There are no unlisted pages at this moment.'); + echo '</p>'; + return false; + } } elseif ($type == 'sticky') { $list = $sticky; if (empty($list)) { @@ -234,6 +243,9 @@ function table($type) } ?> </a> </li> + <li class="nav-item"> + <a class="nav-link" id="unlisted-tab" data-bs-toggle="tab" href="#unlisted" role="tab" aria-controls="unlisted" aria-selected="true"><?php $L->p('Unlisted') ?></a> + </li> <li class="nav-item"> <a class="nav-link" id="draft-tab" data-bs-toggle="tab" href="#draft" role="tab" aria-controls="draft" aria-selected="true"><?php $L->p('Draft') ?></a> </li> @@ -295,6 +307,11 @@ function table($type) <?php table('scheduled'); ?> </div> + <!-- TABS UNLISTED --> + <div class="tab-pane" id="unlisted" role="tabpanel"> + <?php table('unlisted'); ?> + </div> + <!-- TABS DRAFT --> <div class="tab-pane" id="draft" role="tabpanel"> <?php table('draft'); ?> diff --git a/bl-kernel/admin/views/editor.php b/bl-kernel/admin/views/editor.php index ad210660..c87b1e0b 100644 --- a/bl-kernel/admin/views/editor.php +++ b/bl-kernel/admin/views/editor.php @@ -134,8 +134,11 @@ var args = { title: $('#title').val(), content: editorGetContent(), + coverImage: $('#coverImage').val(), category: $('#category option:selected').val(), - tags: $('#tags').val() + tags: $("#tags option:selected").map(function() { + return this.value + }).get().join(",") } savePage(args); disableBtnSave(); @@ -177,6 +180,7 @@ var args = { title: $('#title').val(), content: editorGetContent(), + coverImage: $('#coverImage').val(), category: $('#category option:selected').val(), tags: $("#tags option:selected").map(function() { return this.value @@ -288,7 +292,9 @@ // ------------------------------------------------------------------------ $('#btnSaveSeo').on('click', function() { var args = { - parent: $('#parent').val() + noindex: $('input[name="noindex"]').is(':checked'), + nofollow: $('input[name="nofollow"]').is(':checked'), + noarchive: $('input[name="noarchive"]').is(':checked') }; savePage(args); disableBtnSave(); @@ -594,7 +600,8 @@ <!-- Cover Image --> <h6 class="text-uppercase"><?php $L->p('Cover Image') ?></h6> <div> - <img id="jscoverImagePreview" class="mx-auto d-block w-100" alt="Cover image preview" src="<?php echo (($pageKey && $page->coverImage()) ? $page->coverImage() : HTML_PATH_CORE_IMG . 'default.svg') ?>" /> + <input id="coverImage" name="coverImage" data-save="true" type="hidden" value="<?php echo (($pageKey && $page->coverImage()) ? $page->coverImage(false) : '') ?>"> + <img id="coverImagePreview" class="mx-auto d-block w-100" alt="Cover image preview" src="<?php echo (($pageKey && $page->coverImage()) ? $page->coverImage() : HTML_PATH_CORE_IMG . 'default.svg') ?>" /> </div> <!-- End Cover Image --> diff --git a/bl-kernel/admin/views/editor/file-manager.php b/bl-kernel/admin/views/editor/file-manager.php index 7a7ef149..b22195da 100644 --- a/bl-kernel/admin/views/editor/file-manager.php +++ b/bl-kernel/admin/views/editor/file-manager.php @@ -1,224 +1,233 @@ <div class="modal" id="modal-fileManager" tabindex="-1"> - <div class="modal-dialog modal-lg"> - <div class="modal-content"> - <div class="modal-body"> - <div class="container-fluid"> - <div class="row"> - <div class="col"> + <div class="modal-dialog modal-lg"> + <div class="modal-content"> + <div class="modal-body"> + <div class="container-fluid"> + <div class="row"> + <div class="col"> - <div class="d-flex align-items-center mb-4"> - <h3 class="me-auto m-0 p-0"><i class="bi bi-image"></i><?php $L->p('File Manager'); ?></h3> - <label id="btnUploadFile" class="btn btn-primary"><i class="bi bi-upload"></i><?php $L->p('Upload file'); ?><input type="file" id="filesToUpload" name="filesToUpload[]" multiple hidden></label> - <div id="progressUploadFile" class="progress w-25 d-none"> - <div class="progress-bar" role="progressbar" style="width: 0%" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div> - </div> - </div> + <div class="d-flex align-items-center mb-4"> + <h3 class="me-auto m-0 p-0"><i class="bi bi-image"></i><?php $L->p('File Manager'); ?></h3> + <label id="btnUploadFile" class="btn btn-primary"><i class="bi bi-upload"></i><?php $L->p('Upload file'); ?><input type="file" id="filesToUpload" name="filesToUpload[]" multiple hidden></label> + <div id="progressUploadFile" class="progress w-25 d-none"> + <div class="progress-bar" role="progressbar" style="width: 0%" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div> + </div> + </div> - <table class="table"> - <thead> - <tr> - <th scope="col">Preview</th> - <th scope="col">Filename</th> - <th scope="col">Type</th> - <th scope="col">Size</th> - <th scope="col"></th> - </tr> - </thead> - <tbody id="fmFiles"> - <!-- <tr> - <td class="align-middle"> - <img style="width: 32px" src="<?php echo HTML_PATH_CORE_IMG ?>default.svg" /> - </td> - <td class="align-middle">photo.jpg</td> - <td class="align-middle">image/jpeg</td> - <td class="align-middle">300Kb</td> - <td class="align-middle"> - <div class="dropdown"> - <button class="btn btn-secondary dropdown-toggle" type="button" id="fileOptions" data-bs-toggle="dropdown" aria-expanded="false"> - Options - </button> - <ul class="dropdown-menu" aria-labelledby="fileOptions"> - <li><a class="dropdown-item" href="#">Insert</a></li> - <li><a class="dropdown-item" href="#">Set as cover image</a></li> - <li> - <hr class="dropdown-divider"> - </li> - <li><a class="dropdown-item" href="#"><?php $L->p('Delete') ?></a></li> - </ul> - </div> - </td> - </tr> --> - </tbody> - </table> + <table class="table"> + <thead> + <tr> + <th scope="col">Preview</th> + <th scope="col">Filename</th> + <th scope="col">Type</th> + <th scope="col">Size</th> + <th scope="col"></th> + </tr> + </thead> + <tbody id="fmFiles"> + <!-- <tr> + <td class="align-middle"> + <img style="width: 32px" src="<?php echo HTML_PATH_CORE_IMG ?>default.svg" /> + </td> + <td class="align-middle">photo.jpg</td> + <td class="align-middle">image/jpeg</td> + <td class="align-middle">300Kb</td> + <td class="align-middle"> + <div class="dropdown"> + <button class="btn btn-secondary dropdown-toggle" type="button" id="fileOptions" data-bs-toggle="dropdown" aria-expanded="false"> + Options + </button> + <ul class="dropdown-menu" aria-labelledby="fileOptions"> + <li><a class="dropdown-item" href="#">Insert</a></li> + <li><a class="dropdown-item" href="#">Set as cover image</a></li> + <li> + <hr class="dropdown-divider"> + </li> + <li><a class="dropdown-item" href="#"><?php $L->p('Delete') ?></a></li> + </ul> + </div> + </td> + </tr> --> + </tbody> + </table> - </div> - </div> - </div> - </div> - </div> - </div> + </div> + </div> + </div> + </div> + </div> + </div> </div> <script> - // Open File Manager modal - function fmOpen() { - $('#modal-fileManager').modal('show'); - } + // Open File Manager modal + function fmOpen() { + $('#modal-fileManager').modal('show'); + } - // Close File Manager modal - function fmClose() { - $('#modal-fileManager').modal('hide'); - } + // Close File Manager modal + function fmClose() { + $('#modal-fileManager').modal('hide'); + } - // Insert HTML code in the Editor content - function fmInsertFile(filename, absoluteURL, mime) { - if (mime == 'image/jpeg' || mime == 'image/png') { - editorInsertContent(absoluteURL, 'image'); - } else { - editorInsertContent('<a href="' + absoluteURL + '">' + filename + '</a>'); - } - } + // Insert HTML code in the Editor content + function fmInsertFile(filename, absoluteURL, mime) { + if (mime == 'image/jpeg' || mime == 'image/png') { + editorInsertContent(absoluteURL, 'image'); + } else { + editorInsertContent('<a href="' + absoluteURL + '">' + filename + '</a>'); + } + } - // Get the files for the current page and show them - function fmGetFiles() { - logs('File Manager. Getting files for the current page: ' + _pageKey); - api.getPageFiles({ - 'pageKey': _pageKey - }).then(function(response) { - if (response.status == 0) { - fmDisplayFiles(response.data); - } else { - logs("File Manager. An error occurred while trying to get the files for the current page."); - showAlertError(response.message); - } - }); - } + // Get the files for the current page and show them + function fmGetFiles() { + logs('File Manager. Getting files for the current page: ' + _pageKey); + api.getPageFiles({ + 'pageKey': _pageKey + }).then(function(response) { + if (response.status == 0) { + fmDisplayFiles(response.data); + } else { + logs("File Manager. An error occurred while trying to get the files for the current page."); + showAlertError(response.message); + } + }); + } - // Displays the files in the table - function fmDisplayFiles(files) { - $('#fmFiles').empty(); + function setCoverImage(filename) { + var image = DOMAIN_UPLOADS_PAGES+_pageKey+'/'+filename; + $("#coverImage").val(filename); + $("#coverImagePreview").attr("src", image); + } - if (files.length == 0) { - logs('File Manager. There are not files for the current page.'); - return false; - } + // Displays the files in the table + function fmDisplayFiles(files) { + $('#fmFiles').empty(); - $.each(files, function(key, file) { - console.log(file); - var row = '<tr>' + - '<td class="align-middle">' + - ' <img style="width: 32px" src="'+ file.thumbnailSmall +'" />' + - '</td>' + - '<td class="align-middle">' + file.filename + '</td>' + - '<td class="align-middle">' + file.mime + '</td>' + - '<td class="align-middle">' + formatBytes(file.size) + '</td>' + - '<td class="align-middle text-center">' + - '<div class="dropdown">' + - ' <button class="btn btn-sm btn-secondary dropdown-toggle" type="button" id="fileOptions" data-bs-toggle="dropdown" aria-expanded="false"><i class="bi bi-gear"></i>Options</button>' + - ' <ul class="dropdown-menu" aria-labelledby="fileOptions">' + - ' <li><a class="dropdown-item" href="#" onClick="fmInsertFile(\'' + file.filename + '\', \'' + file.absoluteURL + '\', \'' + file.mime + '\'); fmClose();"><i class="bi bi-plus-circle"></i><?php $L->p('Insert') ?></a></li>' + - ' <li><a class="dropdown-item" href="#"><i class="bi bi-image"></i>Set as cover image</a></li>' + - ' <li><hr class="dropdown-divider"></li>' + - ' <li><a class="dropdown-item" href="#"><i class="bi bi-trash"></i><?php $L->p('Delete') ?></a></li>' + - ' </ul>' + - '</div>' + - '</td>' + - '</tr>'; - $('#fmFiles').append(row); - }); + if (files.length == 0) { + logs('File Manager. There are not files for the current page.'); + return false; + } - return true; - } + $.each(files, function(key, file) { + console.log(file); + var row = '<tr>' + + '<td class="align-middle">' + + ' <img style="width: 32px" src="' + file.thumbnailSmall + '" />' + + '</td>' + + '<td class="align-middle">' + file.filename + '</td>' + + '<td class="align-middle">' + file.mime + '</td>' + + '<td class="align-middle">' + formatBytes(file.size) + '</td>' + + '<td class="align-middle text-center">' + + '<div class="dropdown">' + + ' <button class="btn btn-sm btn-secondary dropdown-toggle" type="button" id="fileOptions" data-bs-toggle="dropdown" aria-expanded="false"><i class="bi bi-gear"></i>Options</button>' + + ' <ul class="dropdown-menu dropdown-menu-dark" aria-labelledby="fileOptions">' + + ' <li><a class="dropdown-item" href="#" onClick="fmInsertFile(\'' + file.filename + '\', \'' + file.absoluteURL + '\', \'' + file.mime + '\'); fmClose();"><i class="bi bi-plus-circle"></i><?php $L->p('Insert original') ?></a></li>' + + ' <li><a class="dropdown-item" href="#" onClick="fmInsertFile(\'' + file.filename + '\', \'' + file.thumbnailSmall + '\', \'' + file.mime + '\'); fmClose();"><i class="bi bi-plus-circle"></i><?php $L->p('Insert small') ?></a></li>' + + ' <li><a class="dropdown-item" href="#" onClick="fmInsertFile(\'' + file.filename + '\', \'' + file.thumbnailMedium + '\', \'' + file.mime + '\'); fmClose();"><i class="bi bi-plus-circle"></i><?php $L->p('Insert medium') ?></a></li>' + + ' <li><hr class="dropdown-divider"></li>' + + ' <li><a class="dropdown-item" href="#" onClick="setCoverImage(\'' + file.filename + '\')"><i class="bi bi-image"></i>Set as cover image</a></li>' + + ' <li><hr class="dropdown-divider"></li>' + + ' <li><a class="dropdown-item" href="#"><i class="bi bi-trash"></i><?php $L->p('Delete') ?></a></li>' + + ' </ul>' + + '</div>' + + '</td>' + + '</tr>'; + $('#fmFiles').append(row); + }); - // Upload a file for the current page - function fmUploadFile(file) { - logs('File Manager. Uploading file.'); + return true; + } - // Check file type/extension - const validImageTypes = ['image/gif', 'image/jpeg', 'image/png', 'image/svg+xml', 'application/pdf']; - if (!validImageTypes.includes(file.type)) { - logs("File Manager. File type is not supported."); - showAlertError("<?php echo $L->g('File type is not supported. Allowed types:') . ' ' . implode(', ', $GLOBALS['ALLOWED_IMG_EXTENSIONS']) ?>"); - return false; - } + // Upload a file for the current page + function fmUploadFile(file) { + logs('File Manager. Uploading file.'); - // Check file size and compare with PHP upload_max_filesize - if (file.size > UPLOAD_MAX_FILESIZE) { - logs("File Manager. File size is to big for PHP configuration."); - showAlertError("<?php echo $L->g('Maximum load file size allowed:') . ' ' . ini_get('upload_max_filesize') ?>"); - return false; - } + // Check file type/extension + const validImageTypes = ['image/gif', 'image/jpeg', 'image/png', 'image/svg+xml', 'application/pdf']; + if (!validImageTypes.includes(file.type)) { + logs("File Manager. File type is not supported."); + showAlertError("<?php echo $L->g('File type is not supported. Allowed types:') . ' ' . implode(', ', $GLOBALS['ALLOWED_IMG_EXTENSIONS']) ?>"); + return false; + } - // Start progress bar - $('#btnUploadFile').addClass('d-none'); - $('#progressUploadFile').removeClass('d-none'); - $('#progressUploadFile').children('.progress-bar').width('0'); + // Check file size and compare with PHP upload_max_filesize + if (file.size > UPLOAD_MAX_FILESIZE) { + logs("File Manager. File size is to big for PHP configuration."); + showAlertError("<?php echo $L->g('Maximum load file size allowed:') . ' ' . ini_get('upload_max_filesize') ?>"); + return false; + } - // Data to send via AJAX - var formData = new FormData(); - formData.append("file", file); - formData.append("token", api.body.token); - formData.append("authentication", api.body.authentication); + // Start progress bar + $('#btnUploadFile').addClass('d-none'); + $('#progressUploadFile').removeClass('d-none'); + $('#progressUploadFile').children('.progress-bar').width('0'); - $.ajax({ - url: api.apiURL + 'pages/files/' + _pageKey, - type: "POST", - data: formData, - cache: false, - contentType: false, - processData: false, - xhr: function() { - var xhr = $.ajaxSettings.xhr(); - if (xhr.upload) { - xhr.upload.addEventListener("progress", function(e) { - if (e.lengthComputable) { - var percentComplete = (e.loaded / e.total) * 100; - $('#progressUploadFile').children('.progress-bar').width(percentComplete + '%'); - } - }, false); - } - return xhr; - } - }).done(function(response) { - if (response.status == 0) { - logs("File Manager. File uploaded."); - // Progress bar - $('#progressUploadFile').addClass('d-none'); - $('#btnUploadFile').removeClass('d-none'); - // Get current files - fmGetFiles(); - } else { - logs("File Manager. An error occurred while trying to upload the file."); - // Progress bar - $('#progressUploadFile').children('.progress-bar').addClass('bg-danger'); - // Alert the user about the error - showAlertError('File Manager. ' + response.message); - } - }); - } + // Data to send via AJAX + var formData = new FormData(); + formData.append("file", file); + formData.append("token", api.body.token); + formData.append("authentication", api.body.authentication); - // Initlization and events for the File Manager - $(document).ready(function() { - // Input file change event - $('#filesToUpload').on("change", function(e) { - var filesToUpload = $('#filesToUpload')[0].files; - for (var i = 0; i < filesToUpload.length; i++) { - fmUploadFile(filesToUpload[i]); - } - }); + $.ajax({ + url: api.apiURL + 'pages/files/' + _pageKey, + type: "POST", + data: formData, + cache: false, + contentType: false, + processData: false, + xhr: function() { + var xhr = $.ajaxSettings.xhr(); + if (xhr.upload) { + xhr.upload.addEventListener("progress", function(e) { + if (e.lengthComputable) { + var percentComplete = (e.loaded / e.total) * 100; + $('#progressUploadFile').children('.progress-bar').width(percentComplete + '%'); + } + }, false); + } + return xhr; + } + }).done(function(response) { + if (response.status == 0) { + logs("File Manager. File uploaded."); + // Progress bar + $('#progressUploadFile').addClass('d-none'); + $('#btnUploadFile').removeClass('d-none'); + // Get current files + fmGetFiles(); + } else { + logs("File Manager. An error occurred while trying to upload the file."); + // Progress bar + $('#progressUploadFile').children('.progress-bar').addClass('bg-danger'); + // Alert the user about the error + showAlertError('File Manager. ' + response.message); + } + }); + } - // Drag and drop files to upload them - $(window).on("dragover dragenter", function(e) { - e.preventDefault(); - e.stopPropagation(); - fmOpen(); - }); - $(window).on("drop", function(e) { - e.preventDefault(); - e.stopPropagation(); - $('#filesToUpload').prop('files', e.originalEvent.dataTransfer.files); - $('#filesToUpload').trigger('change'); - }); + // Initlization and events for the File Manager + $(document).ready(function() { + // Input file change event + $('#filesToUpload').on("change", function(e) { + var filesToUpload = $('#filesToUpload')[0].files; + for (var i = 0; i < filesToUpload.length; i++) { + fmUploadFile(filesToUpload[i]); + } + }); - }); + // Drag and drop files to upload them + $(window).on("dragover dragenter", function(e) { + e.preventDefault(); + e.stopPropagation(); + fmOpen(); + }); + $(window).on("drop", function(e) { + e.preventDefault(); + e.stopPropagation(); + $('#filesToUpload').prop('files', e.originalEvent.dataTransfer.files); + $('#filesToUpload').trigger('change'); + }); + + }); </script> \ No newline at end of file diff --git a/bl-kernel/admin/views/plugins.php b/bl-kernel/admin/views/plugins.php index b29d1a6b..7a3b8c8d 100644 --- a/bl-kernel/admin/views/plugins.php +++ b/bl-kernel/admin/views/plugins.php @@ -1,89 +1,89 @@ <?php defined('BLUDIT') or die('Bludit CMS.'); ?> <script> - // ============================================================================ - // Variables for the view - // ============================================================================ + // ============================================================================ + // Variables for the view + // ============================================================================ - // ============================================================================ - // Functions for the view - // ============================================================================ + // ============================================================================ + // Functions for the view + // ============================================================================ - function activatePlugin(className) { - var args = { - className: className - }; - api.activatePlugin(args).then(function(response) { - if (response.status == 0) { - logs('Plugin activated: ' + response.data.key); - window.location.replace('<?php echo HTML_PATH_ADMIN_ROOT . 'plugins-settings/' ?>'+response.data.key); - } else { - logs('An error occurred while trying to activate the plugin.'); - showAlertError(response.message); - } - }); - } + function activatePlugin(className) { + var args = { + className: className + }; + api.activatePlugin(args).then(function(response) { + if (response.status == 0) { + logs('Plugin activated: ' + response.data.key); + window.location.replace('<?php echo HTML_PATH_ADMIN_ROOT . 'plugins-settings/' ?>' + response.data.key); + } else { + logs('An error occurred while trying to activate the plugin.'); + showAlertError(response.message); + } + }); + } - function deactivatePlugin(className) { - var args = { - className: className - }; - api.deactivatePlugin(args).then(function(response) { - if (response.status == 0) { - logs('Plugin deactivated: ' + response.data.key); - window.location.replace('<?php echo HTML_PATH_ADMIN_ROOT . 'plugins' ?>'); - } else { - logs('An error occurred while trying to deactivate the plugin.'); - showAlertError(response.message); - } - }); - } + function deactivatePlugin(className) { + var args = { + className: className + }; + api.deactivatePlugin(args).then(function(response) { + if (response.status == 0) { + logs('Plugin deactivated: ' + response.data.key); + window.location.replace('<?php echo HTML_PATH_ADMIN_ROOT . 'plugins' ?>'); + } else { + logs('An error occurred while trying to deactivate the plugin.'); + showAlertError(response.message); + } + }); + } - // ============================================================================ - // Events for the view - // ============================================================================ - $(document).ready(function() { + // ============================================================================ + // Events for the view + // ============================================================================ + $(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(); - } - }); - }); - }); + $("#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(); + } + }); + }); + }); - $('.activatePlugin').on('click', function() { - var className = $(this).data('class-name'); - activatePlugin(className); - }); + $('.activatePlugin').on('click', function() { + var className = $(this).data('class-name'); + activatePlugin(className); + }); - $('.deactivatePlugin').on('click', function() { - var className = $(this).data('class-name'); - deactivatePlugin(className); - }); + $('.deactivatePlugin').on('click', function() { + var className = $(this).data('class-name'); + deactivatePlugin(className); + }); - }); + }); - // ============================================================================ - // Initialization for the view - // ============================================================================ - $(document).ready(function() { - // nothing here yet - // how do you hang your toilet paper ? over or under ? - }); + // ============================================================================ + // Initialization for the view + // ============================================================================ + $(document).ready(function() { + // nothing here yet + // how do you hang your toilet paper ? over or under ? + }); </script> <div class="d-flex align-items-center mb-4"> - <h2 class="m-0"><i class="bi bi-node-plus"></i><?php $L->p('Plugins') ?></h2> - <div class="ms-auto"> - <a id="btnNew" class="btn btn-primary btn-sm" href="<?php echo HTML_PATH_ADMIN_ROOT . 'plugins-position' ?>" role="button"><i class="bi bi-plus-circle"></i><?php $L->p('Change plugins position') ?></a> - </div> + <h2 class="m-0"><i class="bi bi-node-plus"></i><?php $L->p('Plugins') ?></h2> + <div class="ms-auto"> + <a id="btnNew" class="btn btn-primary btn-sm" href="<?php echo HTML_PATH_ADMIN_ROOT . 'plugins-position' ?>" role="button"><i class="bi bi-plus-circle"></i><?php $L->p('Change plugins position') ?></a> + </div> </div> <?php echo Bootstrap::formTitle(array('icon' => 'search', 'title' => $L->g('Search plugins'))); ?> @@ -92,85 +92,74 @@ <?php +// Plugins installed echo Bootstrap::formTitle(array('icon' => 'check-square', 'title' => $L->g('Enabled plugins'))); +echo '<table class="table table-striped"><tbody>'; -echo ' -<table class="table table-striped"> - <tbody> -'; - -// Show installed plugins foreach ($pluginsInstalled as $plugin) { - echo '<tr id="' . $plugin->className() . '" class="searchItem">'; + 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">'; - if (method_exists($plugin, 'form')) { - echo '<a class="me-3" href="' . HTML_PATH_ADMIN_ROOT . 'plugins-settings/' . $plugin->className() . '">' . $L->g('Settings') . '</a>'; - } - // You can not disable a plugin for an activated theme - if ($plugin->type()!='theme') { - echo '<span class="link deactivatePlugin" data-class-name="' . $plugin->className() . '">' . $L->g('Deactivate') . '</a>'; - } - echo '</div>'; + echo '<td class="align-middle pt-3 pb-3 w-25">'; + echo '<div class="searchText">' . $plugin->name().'</div>'; + echo '<div class="mt-1">'; + if (method_exists($plugin, 'form')) { + echo '<a class="me-3" href="' . HTML_PATH_ADMIN_ROOT . 'plugins-settings/' . $plugin->className() . '">' . $L->g('Settings') . '</a>'; + } + // You can not disable a plugin for theme which is active + if ($plugin->type() != 'theme') { + echo '<span class="link deactivatePlugin" data-class-name="' . $plugin->className() . '">' . $L->g('Deactivate') . '</a>'; + } + echo '</div>'; + echo '</td>'; + + echo '<td class="searchText align-middle d-none d-sm-table-cell">'; + echo '<div>' . $plugin->description() . '</div>'; + if (in_array($plugin->type(), array('dashboard','theme','editor'))) { + echo '<div class="badge bg-primary">'.$L->g($plugin->type()).'</div>'; + } + 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">'; + echo '<a target="_blank" href="' . $plugin->website() . '">' . $plugin->author() . '</a>'; 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 '</tr>'; } - -echo ' - </tbody> -</table> -'; - -echo Bootstrap::formTitle(array('icon' => 'dash-square', 'title' => $L->g('Disabled plugins'))); - -echo ' -<table class="table table-striped"> - <tbody> -'; +echo '</tbody></table>'; // Plugins not installed +echo Bootstrap::formTitle(array('icon' => 'dash-square', 'title' => $L->g('Disabled plugins'))); +echo '<table class="table table-striped"><tbody>'; + $pluginsNotInstalled = array_diff_key($plugins['all'], $pluginsInstalled); foreach ($pluginsNotInstalled as $plugin) { - echo '<tr id="' . $plugin->className() . '" class="searchItem">'; + 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"> - <span class="link activatePlugin" data-class-name="' . $plugin->className() . '">' . $L->g('Activate') . '</a> - </div> - </td>'; + echo '<td class="align-middle pt-3 pb-3 w-25">'; + echo '<div class="searchText">' . $plugin->name() . '</div>'; + echo '<div class="mt-1"><span class="link activatePlugin" data-class-name="' . $plugin->className() . '">' . $L->g('Activate') . '</a></div>'; + echo '</td>'; - echo '<td class="searchText align-middle d-none d-sm-table-cell">'; - echo $plugin->description(); + echo '<td class="searchText align-middle d-none d-sm-table-cell">'; + echo '<div>' . $plugin->description() . '</div>'; + if (in_array($plugin->type(), array('dashboard','theme','editor'))) { + echo '<div class="badge bg-primary">'.$L->g($plugin->type()).'</div>'; + } + 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">'; + echo '<a target="_blank" href="' . $plugin->website() . '">' . $plugin->author() . '</a>'; 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 '</tr>'; } -echo ' - </tbody> -</table> -'; +echo '</tbody></table>'; diff --git a/bl-kernel/admin/views/settings.php b/bl-kernel/admin/views/settings.php index 711d9b57..cb70af14 100644 --- a/bl-kernel/admin/views/settings.php +++ b/bl-kernel/admin/views/settings.php @@ -42,6 +42,12 @@ args[key] = value; }); + $('textarea[data-save="true"]').each(function() { + var key = $(this).attr('name'); + var value = $(this).val(); + args[key] = value; + }); + api.saveSettings(args).then(function(response) { if (response.status == 0) { logs('Settings saved.');