Added isSymlink logic to determine if Grav is symbolically linked or not.

This commit is contained in:
Djamil Legato
2015-08-07 13:31:15 -07:00
parent 8f753696ea
commit d98644277c
4 changed files with 26 additions and 8 deletions

View File

@@ -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([

View File

@@ -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;

View File

@@ -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);

View File

@@ -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