* Add custom repository type for updates * Direct to self update module * Formatting
This commit is contained in:
@@ -5,6 +5,7 @@ namespace App\Http\Controllers\Admin;
|
|||||||
use App\Contracts\Controller;
|
use App\Contracts\Controller;
|
||||||
use App\Repositories\KvpRepository;
|
use App\Repositories\KvpRepository;
|
||||||
use App\Services\CronService;
|
use App\Services\CronService;
|
||||||
|
use App\Services\VersionService;
|
||||||
use Codedge\Updater\UpdaterManager;
|
use Codedge\Updater\UpdaterManager;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Artisan;
|
use Illuminate\Support\Facades\Artisan;
|
||||||
@@ -16,15 +17,18 @@ class MaintenanceController extends Controller
|
|||||||
private $cronSvc;
|
private $cronSvc;
|
||||||
private $kvpRepo;
|
private $kvpRepo;
|
||||||
private $updateManager;
|
private $updateManager;
|
||||||
|
private $versionSvc;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
CronService $cronSvc,
|
CronService $cronSvc,
|
||||||
KvpRepository $kvpRepo,
|
KvpRepository $kvpRepo,
|
||||||
UpdaterManager $updateManager
|
UpdaterManager $updateManager,
|
||||||
|
VersionService $versionSvc
|
||||||
) {
|
) {
|
||||||
$this->cronSvc = $cronSvc;
|
$this->cronSvc = $cronSvc;
|
||||||
$this->kvpRepo = $kvpRepo;
|
$this->kvpRepo = $kvpRepo;
|
||||||
$this->updateManager = $updateManager;
|
$this->updateManager = $updateManager;
|
||||||
|
$this->versionSvc = $versionSvc;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function index()
|
public function index()
|
||||||
@@ -32,7 +36,7 @@ class MaintenanceController extends Controller
|
|||||||
return view('admin.maintenance.index', [
|
return view('admin.maintenance.index', [
|
||||||
'cron_path' => $this->cronSvc->getCronExecString(),
|
'cron_path' => $this->cronSvc->getCronExecString(),
|
||||||
'cron_problem_exists' => $this->cronSvc->cronProblemExists(),
|
'cron_problem_exists' => $this->cronSvc->cronProblemExists(),
|
||||||
'new_version' => $this->kvpRepo->get('new_version_available', false),
|
'new_version' => true, //$this->kvpRepo->get('new_version_available', false),
|
||||||
'new_version_tag' => $this->kvpRepo->get('latest_version_tag'),
|
'new_version_tag' => $this->kvpRepo->get('latest_version_tag'),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
@@ -70,6 +74,31 @@ class MaintenanceController extends Controller
|
|||||||
return redirect(route('admin.maintenance.index'));
|
return redirect(route('admin.maintenance.index'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Force an update check
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Http\Request $request
|
||||||
|
*
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function forcecheck(Request $request)
|
||||||
|
{
|
||||||
|
$this->versionSvc->isNewVersionAvailable();
|
||||||
|
|
||||||
|
$new_version_avail = $this->kvpRepo->get('new_version_available', false);
|
||||||
|
$new_version_tag = $this->kvpRepo->get('latest_version_tag');
|
||||||
|
|
||||||
|
Log::info('Force check, available='.$new_version_avail.', tag='.$new_version_tag);
|
||||||
|
|
||||||
|
if (!$new_version_avail) {
|
||||||
|
Flash::success('No new version available');
|
||||||
|
} else {
|
||||||
|
Flash::success('New version available: '.$new_version_tag);
|
||||||
|
}
|
||||||
|
|
||||||
|
return redirect(route('admin.maintenance.index'));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update the phpVMS install
|
* Update the phpVMS install
|
||||||
*
|
*
|
||||||
@@ -79,18 +108,8 @@ class MaintenanceController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function update(Request $request)
|
public function update(Request $request)
|
||||||
{
|
{
|
||||||
$new_version_avail = $this->kvpRepo->get('new_version_available', false);
|
|
||||||
if (!$new_version_avail) {
|
|
||||||
Flash::error('A newer version is not available!');
|
|
||||||
return redirect(route('admin.maintenance.index'));
|
|
||||||
}
|
|
||||||
|
|
||||||
$new_version_tag = $this->kvpRepo->get('latest_version_tag');
|
$new_version_tag = $this->kvpRepo->get('latest_version_tag');
|
||||||
Log::info('Attempting to update to '.$new_version_tag);
|
Log::info('Attempting to update to '.$new_version_tag);
|
||||||
|
return redirect('/update/downloader');
|
||||||
$this->updateManager->source()->update($new_version_tag);
|
|
||||||
|
|
||||||
Flash::success('phpVMS was updated!');
|
|
||||||
return redirect(route('/update'));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -165,6 +165,10 @@ Route::group(
|
|||||||
->name('maintenance.update')
|
->name('maintenance.update')
|
||||||
->middleware('ability:admin,maintenance');
|
->middleware('ability:admin,maintenance');
|
||||||
|
|
||||||
|
Route::match(['post'], 'maintenance/forcecheck', 'MaintenanceController@forcecheck')
|
||||||
|
->name('maintenance.forcecheck')
|
||||||
|
->middleware('ability:admin,maintenance');
|
||||||
|
|
||||||
// subfleet
|
// subfleet
|
||||||
Route::get('subfleets/export', 'SubfleetController@export')
|
Route::get('subfleets/export', 'SubfleetController@export')
|
||||||
->name('subfleets.export')
|
->name('subfleets.export')
|
||||||
|
|||||||
@@ -13,8 +13,6 @@ use App\Listeners\UserStateListener;
|
|||||||
use App\Notifications\EventHandler;
|
use App\Notifications\EventHandler;
|
||||||
use Codedge\Updater\Events\UpdateAvailable;
|
use Codedge\Updater\Events\UpdateAvailable;
|
||||||
use Codedge\Updater\Events\UpdateSucceeded;
|
use Codedge\Updater\Events\UpdateSucceeded;
|
||||||
use Codedge\Updater\Listeners\SendUpdateAvailableNotification;
|
|
||||||
use Codedge\Updater\Listeners\SendUpdateSucceededNotification;
|
|
||||||
use Illuminate\Auth\Events\Registered;
|
use Illuminate\Auth\Events\Registered;
|
||||||
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
|
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
|
||||||
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
|
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
|
||||||
@@ -38,13 +36,8 @@ class EventServiceProvider extends ServiceProvider
|
|||||||
AwardListener::class,
|
AwardListener::class,
|
||||||
],
|
],
|
||||||
|
|
||||||
UpdateAvailable::class => [
|
UpdateAvailable::class => [],
|
||||||
SendUpdateAvailableNotification::class,
|
UpdateSucceeded::class => [],
|
||||||
],
|
|
||||||
|
|
||||||
UpdateSucceeded::class => [
|
|
||||||
SendUpdateSucceededNotification::class,
|
|
||||||
],
|
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -96,6 +96,7 @@ class VersionService extends Service
|
|||||||
foreach ($releases as $release) {
|
foreach ($releases as $release) {
|
||||||
if ($release['prerelease'] === true) {
|
if ($release['prerelease'] === true) {
|
||||||
if ($include_prerelease) {
|
if ($include_prerelease) {
|
||||||
|
Log::info('Found latest pre-release of '.$release['tag_name']);
|
||||||
return $this->setLatestRelease(
|
return $this->setLatestRelease(
|
||||||
$release['tag_name'],
|
$release['tag_name'],
|
||||||
$this->getGithubAsset($release)
|
$this->getGithubAsset($release)
|
||||||
@@ -104,6 +105,7 @@ class VersionService extends Service
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Log::info('Found latest release of '.$release['tag_name']);
|
||||||
return $this->setLatestRelease(
|
return $this->setLatestRelease(
|
||||||
$release['tag_name'],
|
$release['tag_name'],
|
||||||
$this->getGithubAsset($release)
|
$this->getGithubAsset($release)
|
||||||
|
|||||||
@@ -44,4 +44,21 @@ class HttpClient
|
|||||||
|
|
||||||
return $body;
|
return $body;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Download a file to a given path
|
||||||
|
*
|
||||||
|
* @param $uri
|
||||||
|
* @param $local_path
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function download($uri, $local_path)
|
||||||
|
{
|
||||||
|
$response = $this->httpClient->request('GET', $uri, [
|
||||||
|
'sink' => $local_path,
|
||||||
|
]);
|
||||||
|
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -118,6 +118,7 @@ return [
|
|||||||
'Session' => Illuminate\Support\Facades\Session::class,
|
'Session' => Illuminate\Support\Facades\Session::class,
|
||||||
'Storage' => Illuminate\Support\Facades\Storage::class,
|
'Storage' => Illuminate\Support\Facades\Storage::class,
|
||||||
'Theme' => Igaster\LaravelTheme\Facades\Theme::class,
|
'Theme' => Igaster\LaravelTheme\Facades\Theme::class,
|
||||||
|
'Updater' => Codedge\Updater\UpdaterFacade::class,
|
||||||
'URL' => Illuminate\Support\Facades\URL::class,
|
'URL' => Illuminate\Support\Facades\URL::class,
|
||||||
'Utils' => App\Facades\Utils::class,
|
'Utils' => App\Facades\Utils::class,
|
||||||
'Validator' => Illuminate\Support\Facades\Validator::class,
|
'Validator' => Illuminate\Support\Facades\Validator::class,
|
||||||
|
|||||||
@@ -75,6 +75,11 @@ return [
|
|||||||
*/
|
*/
|
||||||
'version_file' => 'https://api.github.com/repos/nabeelio/phpvms/releases',
|
'version_file' => 'https://api.github.com/repos/nabeelio/phpvms/releases',
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The URL to download the latest phpVMS version from
|
||||||
|
*/
|
||||||
|
'distrib_url' => 'http://downloads.phpvms.net/phpvms-{VERSION}.zip',
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Where the KVP file is stored
|
* Where the KVP file is stored
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'default' => 'http',
|
'default' => 'vms',
|
||||||
'version_installed' => env('SELF_UPDATER_VERSION_INSTALLED', ''),
|
'version_installed' => '',
|
||||||
|
|
||||||
'repository_types' => [
|
'repository_types' => [
|
||||||
'github' => [
|
'github' => [
|
||||||
@@ -10,19 +10,19 @@ return [
|
|||||||
'repository_vendor' => 'nabeelio',
|
'repository_vendor' => 'nabeelio',
|
||||||
'repository_name' => 'phpvms',
|
'repository_name' => 'phpvms',
|
||||||
'repository_url' => 'https://github.com/nabeelio/phpvms',
|
'repository_url' => 'https://github.com/nabeelio/phpvms',
|
||||||
'download_path' => env('SELF_UPDATER_DOWNLOAD_PATH', '/tmp'),
|
'download_path' => storage_path('app'),
|
||||||
'private_access_token' => '',
|
'private_access_token' => '',
|
||||||
'use_branch' => 'master',
|
'use_branch' => '',
|
||||||
],
|
|
||||||
'http' => [
|
|
||||||
'type' => 'http',
|
|
||||||
'repository_url' => 'http://downloads.phpvms.net',
|
|
||||||
'pkg_filename_format' => 'phpvms-_VERSION_.zip',
|
|
||||||
'download_path' => env('SELF_UPDATER_DOWNLOAD_PATH', '/tmp'),
|
|
||||||
'private_access_token' => env('SELF_UPDATER_HTTP_PRIVATE_ACCESS_TOKEN', ''),
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
|
||||||
|
'mail_to' => [
|
||||||
|
'address' => 'no-reply@phpvms.net',
|
||||||
|
'name' => 'no name',
|
||||||
|
'subject_update_available' => 'Update available',
|
||||||
|
'subject_update_succeeded' => 'Update succeeded',
|
||||||
|
],
|
||||||
|
|
||||||
'exclude_folders' => [
|
'exclude_folders' => [
|
||||||
'node_modules',
|
'node_modules',
|
||||||
'bootstrap/cache',
|
'bootstrap/cache',
|
||||||
|
|||||||
@@ -3,9 +3,11 @@
|
|||||||
namespace Modules\Updater\Http\Controllers;
|
namespace Modules\Updater\Http\Controllers;
|
||||||
|
|
||||||
use App\Contracts\Controller;
|
use App\Contracts\Controller;
|
||||||
|
use App\Repositories\KvpRepository;
|
||||||
use App\Services\Installer\InstallerService;
|
use App\Services\Installer\InstallerService;
|
||||||
use App\Services\Installer\MigrationService;
|
use App\Services\Installer\MigrationService;
|
||||||
use App\Services\Installer\SeederService;
|
use App\Services\Installer\SeederService;
|
||||||
|
use Codedge\Updater\UpdaterManager;
|
||||||
use function count;
|
use function count;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
@@ -13,22 +15,30 @@ use Illuminate\Support\Facades\Log;
|
|||||||
class UpdateController extends Controller
|
class UpdateController extends Controller
|
||||||
{
|
{
|
||||||
private $installerSvc;
|
private $installerSvc;
|
||||||
|
private $kvpRepo;
|
||||||
private $migrationSvc;
|
private $migrationSvc;
|
||||||
private $seederSvc;
|
private $seederSvc;
|
||||||
|
private $updateManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param InstallerService $installerSvc
|
* @param InstallerService $installerSvc
|
||||||
* @param MigrationService $migrationSvc
|
* @param MigrationService $migrationSvc
|
||||||
* @param SeederService $seederSvc
|
* @param SeederService $seederSvc
|
||||||
|
* @param KvpRepository $kvpRepo
|
||||||
|
* @param UpdaterManager $updateManager
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(
|
||||||
InstallerService $installerSvc,
|
InstallerService $installerSvc,
|
||||||
|
KvpRepository $kvpRepo,
|
||||||
MigrationService $migrationSvc,
|
MigrationService $migrationSvc,
|
||||||
SeederService $seederSvc
|
SeederService $seederSvc,
|
||||||
|
UpdaterManager $updateManager
|
||||||
) {
|
) {
|
||||||
$this->migrationSvc = $migrationSvc;
|
$this->migrationSvc = $migrationSvc;
|
||||||
$this->seederSvc = $seederSvc;
|
$this->seederSvc = $seederSvc;
|
||||||
$this->installerSvc = $installerSvc;
|
$this->installerSvc = $installerSvc;
|
||||||
|
$this->kvpRepo = $kvpRepo;
|
||||||
|
$this->updateManager = $updateManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -94,4 +104,36 @@ class UpdateController extends Controller
|
|||||||
{
|
{
|
||||||
return redirect('/login');
|
return redirect('/login');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the update page with the latest version
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Http\Request $request
|
||||||
|
*
|
||||||
|
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
|
||||||
|
*/
|
||||||
|
public function updater(Request $request)
|
||||||
|
{
|
||||||
|
$version = $this->kvpRepo->get('latest_version_tag');
|
||||||
|
|
||||||
|
return view('updater::downloader/downloader', [
|
||||||
|
'version' => $version,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Download the actual update and then forward the user to the updater page
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Http\Request $request
|
||||||
|
*
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function update_download(Request $request)
|
||||||
|
{
|
||||||
|
$version = $this->kvpRepo->get('latest_version_tag');
|
||||||
|
$this->updateManager->source('github')->update($version);
|
||||||
|
|
||||||
|
Log::info('Update completed to '.$version.', redirecting');
|
||||||
|
return redirect('/update');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
124
modules/Updater/Lib/VmsRepositoryType.php
Normal file
124
modules/Updater/Lib/VmsRepositoryType.php
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Updater\Lib;
|
||||||
|
|
||||||
|
use App\Services\VersionService;
|
||||||
|
use Codedge\Updater\Contracts\GithubRepositoryTypeContract;
|
||||||
|
use Codedge\Updater\SourceRepositoryTypes\GithubRepositoryType;
|
||||||
|
use Codedge\Updater\Traits\SupportPrivateAccessToken;
|
||||||
|
use Codedge\Updater\Traits\UseVersionFile;
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use Illuminate\Support\Facades\File;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use Illuminate\Support\Str;
|
||||||
|
use Psr\Http\Message\ResponseInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use SourceRepositoryTypes/GithubRepositoryTypes/GithubTagType.php as a reference
|
||||||
|
* Just replace the new update checks, etc, with the VersionService stubs. They're
|
||||||
|
* essentially the same except for the current version checks and all that. Adds some
|
||||||
|
* additional logging too, but the base update method is from GithubRepositoryType
|
||||||
|
*/
|
||||||
|
final class VmsRepositoryType extends GithubRepositoryType implements GithubRepositoryTypeContract
|
||||||
|
{
|
||||||
|
use UseVersionFile;
|
||||||
|
use SupportPrivateAccessToken;
|
||||||
|
/**
|
||||||
|
* @var Client
|
||||||
|
*/
|
||||||
|
protected $client;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var VersionService
|
||||||
|
*/
|
||||||
|
protected $versionSvc;
|
||||||
|
|
||||||
|
public function __construct(array $config, Client $client)
|
||||||
|
{
|
||||||
|
$this->config = $config;
|
||||||
|
$this->client = $client;
|
||||||
|
$this->storagePath = Str::finish($this->config['download_path'], DIRECTORY_SEPARATOR);
|
||||||
|
$this->versionSvc = app(VersionService::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check repository if a newer version than the installed one is available.
|
||||||
|
*
|
||||||
|
* @param string $currentVersion
|
||||||
|
*
|
||||||
|
* @throws InvalidArgumentException
|
||||||
|
* @throws Exception
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function isNewVersionAvailable(string $currentVersion = ''): bool
|
||||||
|
{
|
||||||
|
return $this->versionSvc->isNewVersionAvailable($currentVersion);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the latest version that has been published in a certain repository.
|
||||||
|
* Example: 2.6.5 or v2.6.5.
|
||||||
|
*
|
||||||
|
* @param string $prepend Prepend a string to the latest version
|
||||||
|
* @param string $append Append a string to the latest version
|
||||||
|
*
|
||||||
|
* @throws Exception
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getVersionAvailable(string $prepend = '', string $append = ''): string
|
||||||
|
{
|
||||||
|
return $this->versionSvc->getLatestVersion();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetches the latest version. If you do not want the latest version, specify one and pass it.
|
||||||
|
*
|
||||||
|
* @param string $version
|
||||||
|
*
|
||||||
|
* @throws Exception
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function fetch($version = ''): void
|
||||||
|
{
|
||||||
|
$response = $this->getRepositoryReleases();
|
||||||
|
$releaseCollection = collect(\GuzzleHttp\json_decode($response->getBody()->getContents()));
|
||||||
|
|
||||||
|
if ($releaseCollection->isEmpty()) {
|
||||||
|
throw new Exception('Cannot find a release to update. Please check the repository you\'re pulling from');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!File::exists($this->storagePath)) {
|
||||||
|
File::makeDirectory($this->storagePath, 493, true, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($version)) {
|
||||||
|
$release = $releaseCollection->where('name', $version)->first();
|
||||||
|
} else {
|
||||||
|
$release = $releaseCollection->first();
|
||||||
|
}
|
||||||
|
|
||||||
|
Log::info('Found release='.$release->name.', path='.$release->zipball_url);
|
||||||
|
$storageFolder = $this->storagePath.$release->name.'-'.now()->timestamp;
|
||||||
|
$storageFilename = $storageFolder.'.zip';
|
||||||
|
|
||||||
|
if (!$this->isSourceAlreadyFetched($release->name)) {
|
||||||
|
$this->downloadRelease($this->client, $release->zipball_url, $storageFilename);
|
||||||
|
$this->unzipArchive($storageFilename, $storageFolder);
|
||||||
|
$this->createReleaseFolder($storageFolder, $release->name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getRepositoryReleases(): ResponseInterface
|
||||||
|
{
|
||||||
|
$url = self::GITHUB_API_URL
|
||||||
|
.'/repos/'.$this->config['repository_vendor']
|
||||||
|
.'/'.$this->config['repository_name']
|
||||||
|
.'/tags';
|
||||||
|
|
||||||
|
$headers = [];
|
||||||
|
return $this->client->request('GET', $url, ['headers' => $headers]);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -33,6 +33,10 @@ class UpdateServiceProvider extends ServiceProvider
|
|||||||
|
|
||||||
Route::post('/run-migrations', 'UpdateController@run_migrations')->name('run_migrations');
|
Route::post('/run-migrations', 'UpdateController@run_migrations')->name('run_migrations');
|
||||||
Route::get('/complete', 'UpdateController@complete')->name('complete');
|
Route::get('/complete', 'UpdateController@complete')->name('complete');
|
||||||
|
|
||||||
|
// Routes for the update downloader
|
||||||
|
Route::get('/downloader', 'UpdateController@updater')->name('updater');
|
||||||
|
Route::post('/downloader', 'UpdateController@update_download')->name('update_download');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
@extends('installer::app')
|
||||||
|
@section('title', 'Update phpVMS')
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
<h2>phpvms updater</h2>
|
||||||
|
<p>Click run to complete the update to version {{ $version }}</p>
|
||||||
|
{{ Form::open(['route' => 'update.update_download', 'method' => 'post']) }}
|
||||||
|
<p style="text-align: right">
|
||||||
|
{{ Form::submit('Run >>', ['class' => 'btn btn-success']) }}
|
||||||
|
</p>
|
||||||
|
{{ Form::close() }}
|
||||||
|
@endsection
|
||||||
@@ -7,14 +7,24 @@
|
|||||||
<div class="row" style="padding-top: 5px">
|
<div class="row" style="padding-top: 5px">
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
|
|
||||||
@if ($new_version)
|
<div class="row">
|
||||||
<p>An update to version {{ $new_version_tag }} is available.</p>
|
<div class="col-sm-6">
|
||||||
{{ Form::open(['route' => 'admin.maintenance.update']) }}
|
@if ($new_version)
|
||||||
{{ Form::button('Update', ['type' => 'submit', 'class' => 'btn btn-success']) }}
|
<p>An update to version {{ $new_version_tag }} is available.</p>
|
||||||
{{ Form::close() }}
|
{{ Form::open(['route' => 'admin.maintenance.update']) }}
|
||||||
@else
|
{{ Form::button('Update', ['type' => 'submit', 'class' => 'btn btn-success']) }}
|
||||||
<p>There is no new version available</p>
|
{{ Form::close() }}
|
||||||
@endif
|
@else
|
||||||
|
<p>There is no new version available</p>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<p>Force new version check</p>
|
||||||
|
{{ Form::open(['route' => 'admin.maintenance.forcecheck']) }}
|
||||||
|
{{ Form::button('Force update check', ['type' => 'submit', 'class' => 'btn btn-success']) }}
|
||||||
|
{{ Form::close() }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -35,19 +35,18 @@
|
|||||||
@endforeach
|
@endforeach
|
||||||
|
|
||||||
@if(!Auth::check())
|
@if(!Auth::check())
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="{{ url('/register') }}">
|
||||||
|
<i class="far fa-id-card"></i>
|
||||||
|
<p>@lang('common.register')</p>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="{{ url('/login') }}">
|
<a class="nav-link" href="{{ url('/login') }}">
|
||||||
<i class="fas fa-sign-in-alt"></i>
|
<i class="fas fa-sign-in-alt"></i>
|
||||||
<p>@lang('common.login')</p>
|
<p>@lang('common.login')</p>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="{{ url('/register') }}">
|
|
||||||
<i class="far fa-id-card"></i>
|
|
||||||
<p>@lang('common.register')</p>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
@else
|
@else
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="{{ route('frontend.flights.index') }}">
|
<a class="nav-link" href="{{ route('frontend.flights.index') }}">
|
||||||
|
|||||||
Reference in New Issue
Block a user