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(),
|
"assets" => $gpm->grav->getAssets(),
|
||||||
"version" => GRAV_VERSION,
|
"version" => GRAV_VERSION,
|
||||||
"available" => $gpm->grav->getVersion(),
|
"available" => $gpm->grav->getVersion(),
|
||||||
"date" => $gpm->grav->getDate()
|
"date" => $gpm->grav->getDate(),
|
||||||
|
"isSymlink" => $gpm->grav->isSymlink()
|
||||||
];
|
];
|
||||||
|
|
||||||
echo json_encode([
|
echo json_encode([
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ namespace Grav\Plugin;
|
|||||||
use Grav\Common\Cache;
|
use Grav\Common\Cache;
|
||||||
use Grav\Common\Config\Config;
|
use Grav\Common\Config\Config;
|
||||||
use Grav\Common\Filesystem\Folder;
|
use Grav\Common\Filesystem\Folder;
|
||||||
|
use Grav\Common\GPM\Installer;
|
||||||
use Grav\Common\Grav;
|
use Grav\Common\Grav;
|
||||||
use Grav\Common\Themes;
|
use Grav\Common\Themes;
|
||||||
use Grav\Common\Uri;
|
use Grav\Common\Uri;
|
||||||
@@ -705,17 +706,12 @@ class AdminController
|
|||||||
return;
|
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();
|
$result = \Grav\Plugin\Admin\Gpm::selfupgrade();
|
||||||
|
|
||||||
if ($result) {
|
if ($result) {
|
||||||
$this->admin->json_response = ['status' => 'success', 'message' => 'Grav was successfully updated to '];
|
$this->admin->json_response = ['status' => 'success', 'message' => 'Grav was successfully updated to '];
|
||||||
} else {
|
} 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;
|
return true;
|
||||||
|
|||||||
@@ -168,6 +168,16 @@ class Gpm
|
|||||||
|
|
||||||
public static function selfupgrade() {
|
public static function selfupgrade() {
|
||||||
$upgrader = new Upgrader();
|
$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'];
|
$update = $upgrader->getAssets()['grav-update'];
|
||||||
$tmp = CACHE_DIR . 'tmp/Grav-' . uniqid();
|
$tmp = CACHE_DIR . 'tmp/Grav-' . uniqid();
|
||||||
$file = self::_downloadSelfupgrade($update, $tmp);
|
$file = self::_downloadSelfupgrade($update, $tmp);
|
||||||
|
|||||||
@@ -10,6 +10,13 @@ var getState = function(){
|
|||||||
return loadValues.toString();
|
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 () {
|
$(function () {
|
||||||
jQuery.substitute = function(str, sub) {
|
jQuery.substitute = function(str, sub) {
|
||||||
return str.replace(/\{(.+?)\}/g, function($0, $1) {
|
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> ',
|
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>';
|
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});
|
content = jQuery.substitute(content, {available: grav.available, version: grav.version});
|
||||||
$('[data-gpm-grav]').addClass('grav').html('<p>' + icon + content + button + '</p>');
|
$('[data-gpm-grav]').addClass('grav').html('<p>' + icon + content + button + '</p>');
|
||||||
window.grav_available_version = grav.available;
|
window.grav_available_version = grav.available;
|
||||||
}
|
}
|
||||||
|
|
||||||
$('#grav-update-button').on('click', function() {
|
$('#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
|
// dashboard
|
||||||
|
|||||||
Reference in New Issue
Block a user