Skip to content
Snippets Groups Projects

Issue #3264849: Show next minor or current minor updates in Update form

1 file
+ 38
26
Compare changes
  • Side-by-side
  • Inline
+ 38
26
@@ -8,6 +8,7 @@ use Drupal\automatic_updates\ProjectInfo;
use Drupal\automatic_updates\ReleaseChooser;
use Drupal\automatic_updates\Updater;
use Drupal\automatic_updates\Validation\ReadinessTrait;
use Drupal\automatic_updates\VersionParsingTrait;
use Drupal\automatic_updates_9_3_shim\ProjectRelease;
use Drupal\Core\Batch\BatchBuilder;
use Drupal\Core\Form\FormBase;
@@ -24,6 +25,7 @@ use Drupal\system\SystemManager;
use Drupal\update\UpdateManagerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use \Drupal\update\ProjectSecurityData;
/**
* Defines a form to update Drupal core.
@@ -36,6 +38,7 @@ class UpdaterForm extends FormBase {
use ReadinessTrait {
formatResult as traitFormatResult;
}
use VersionParsingTrait;
/**
* The updater service.
@@ -185,12 +188,6 @@ class UpdaterForm extends FormBase {
return $form;
}
$form['target_version'] = [
'#type' => 'value',
'#value' => [
'drupal' => $installed_minor_release->getVersion(),
],
];
if (empty($project['title']) || empty($project['link'])) {
throw new \UnexpectedValueException('Expected project data to have a title and link.');
@@ -223,26 +220,17 @@ class UpdaterForm extends FormBase {
$rows['drupal-next-minor'] = $this->getReleaseRow($next_minor_release, $description);
}
$form['projects'] = [
'#type' => 'table',
'#header' => [
'title' => [
'data' => $this->t('Name'),
'class' => ['update-project-name'],
],
'installed_version' => $this->t('Installed version'),
'recommended_version' => [
'data' => $this->t('Update version'),
],
'submit' => $this->t('Update'),
],
];
if ($installed_minor_release) {
$form['drupal-installed-minor'] = $this->getReleaseTable($installed_minor_release);
}
if ($next_minor_release) {
$form['drupal-next-minor'] = $this->getReleaseTable($next_minor_release);
}
$form['backup'] = [
'#markup' => $this->t('It\'s a good idea to <a href=":url">back up your database</a> before you begin.', [':url' => 'https://www.drupal.org/node/22281#s-backing-up-the-database']),
];
$form['projects'] = array_merge($form['projects'], $rows);
if ($form_state->getUserInput()) {
$results = [];
@@ -346,11 +334,6 @@ class UpdaterForm extends FormBase {
'#tag' => 'p',
'#value' => $project['title'] . ' ' . $release_description,
],
'installed_version' => [
'#type' => 'html_tag',
'#tag' => 'p',
'#value' => $project_info->getInstalledVersion(),
],
'recommended_version' => [
'data' => [
// @todo Is an inline template the right tool here? Is there an Update
@@ -374,4 +357,33 @@ class UpdaterForm extends FormBase {
return $entry;
}
private function getReleaseTable(ProjectRelease $release) {
static $project_data;
static $releases;
if (!$project_data) {
$available = update_get_available(FALSE);
$data = update_calculate_project_data($available);
}
$data['existing_version'] = $release->getVersion();
$security_data = ProjectSecurityData::createFromProjectDataAndReleases($data['drupal'], $available['drupal']['releases'])->getCoverageInfo();
$table = [
'#type' => 'table',
'#caption' => $this->t('Update for @version', ['@version' => static::getMajorAndMinorVersion($release->getVersion())]),
'#description' => $this->t('more'),
'#header' => [
'title' => [
'data' => $this->t('Name'),
'class' => ['update-project-name'],
],
'recommended_version' => [
'data' => $this->t('Update version'),
],
'submit' => $this->t('Update'),
],
];
$table[$release->getVersion()] = $this->getReleaseRow($release, 'sme');
return $table;
}
}
Loading