mirror of
https://github.com/getgrav/grav-plugin-admin.git
synced 2025-11-13 00:36:05 +01:00
Added isSymlink logic to determine if Grav is symbolically linked or not.
This commit is contained in:
@@ -270,7 +270,8 @@ class AdminPlugin extends Plugin
|
||||
"assets" => $gpm->grav->getAssets(),
|
||||
"version" => GRAV_VERSION,
|
||||
"available" => $gpm->grav->getVersion(),
|
||||
"date" => $gpm->grav->getDate()
|
||||
"date" => $gpm->grav->getDate(),
|
||||
"isSymlink" => $gpm->grav->isSymlink()
|
||||
];
|
||||
|
||||
echo json_encode([
|
||||
|
||||
@@ -4,6 +4,7 @@ namespace Grav\Plugin;
|
||||
use Grav\Common\Cache;
|
||||
use Grav\Common\Config\Config;
|
||||
use Grav\Common\Filesystem\Folder;
|
||||
use Grav\Common\GPM\Installer;
|
||||
use Grav\Common\Grav;
|
||||
use Grav\Common\Themes;
|
||||
use Grav\Common\Uri;
|
||||
@@ -705,17 +706,12 @@ class AdminController
|
||||
return;
|
||||
}
|
||||
|
||||
if (is_link(ROOT_DIR . 'index.php')) {
|
||||
$this->admin->json_response = ['status' => 'error', 'message' => 'Cannot upgrade: Grav is symlinked. Please upgrade manually'];
|
||||
return false;
|
||||
}
|
||||
|
||||
$result = \Grav\Plugin\Admin\Gpm::selfupgrade();
|
||||
|
||||
if ($result) {
|
||||
$this->admin->json_response = ['status' => 'success', 'message' => 'Grav was successfully updated to '];
|
||||
} else {
|
||||
$this->admin->json_response = ['status' => 'error', 'message' => 'Grav update failed'];
|
||||
$this->admin->json_response = ['status' => 'error', 'message' => 'Grav update failed <br>' . Installer::lastErrorMsg()];
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
@@ -168,6 +168,16 @@ class Gpm
|
||||
|
||||
public static function selfupgrade() {
|
||||
$upgrader = new Upgrader();
|
||||
|
||||
if (!Installer::isGravInstance(GRAV_ROOT)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (is_link(GRAV_ROOT . DS . 'index.php')) {
|
||||
Installer::setError(Installer::IS_LINK);
|
||||
return false;
|
||||
}
|
||||
|
||||
$update = $upgrader->getAssets()['grav-update'];
|
||||
$tmp = CACHE_DIR . 'tmp/Grav-' . uniqid();
|
||||
$file = self::_downloadSelfupgrade($update, $tmp);
|
||||
|
||||
@@ -10,6 +10,13 @@ var getState = function(){
|
||||
return loadValues.toString();
|
||||
};
|
||||
|
||||
var bytesToSize = function(bytes) {
|
||||
var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
|
||||
if (bytes == 0) return '0 Byte';
|
||||
var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
|
||||
return Math.round(bytes / Math.pow(1024, i), 2) + ' ' + sizes[i];
|
||||
};
|
||||
|
||||
$(function () {
|
||||
jQuery.substitute = function(str, sub) {
|
||||
return str.replace(/\{(.+?)\}/g, function($0, $1) {
|
||||
@@ -239,13 +246,17 @@ $(function () {
|
||||
content = 'Grav <b>v{available}</b> is now available! <span class="less">(Current: v{version})</span> ',
|
||||
button = '<button data-maintenance-update="' + GravAdmin.config.base_url_relative + '/update.json/task:updategrav" class="button button-small secondary" id="grav-update-button">Update Grav Now</button>';
|
||||
|
||||
if (grav.isSymlink) {
|
||||
button = '<span class="hint--left" style="float: right;" data-hint="Grav is symbolically linked. Upgrade won\'t be available."><i class="fa fa-fw fa-link"></i></span>';
|
||||
}
|
||||
|
||||
content = jQuery.substitute(content, {available: grav.available, version: grav.version});
|
||||
$('[data-gpm-grav]').addClass('grav').html('<p>' + icon + content + button + '</p>');
|
||||
window.grav_available_version = grav.available;
|
||||
}
|
||||
|
||||
$('#grav-update-button').on('click', function() {
|
||||
$(this).html('Updating... please wait, downloading 2MB+..');
|
||||
$(this).html('Updating... please wait, downloading ' + bytesToSize(grav.assets['grav-update'].size) + '..');
|
||||
});
|
||||
|
||||
// dashboard
|
||||
|
||||
Reference in New Issue
Block a user