[ticket/11150] Implement install extension link in ACP

PHPBB3-11150
This commit is contained in:
Tristan Darricau 2015-09-13 16:21:25 +02:00 committed by Tristan Darricau
parent adb8d30d98
commit 6a15ad1368
No known key found for this signature in database
GPG key ID: 817043C2E29DB881
6 changed files with 61 additions and 19 deletions

View file

@ -45,7 +45,7 @@
<tr> <tr>
<td> <td>
<strong>{{ extension.name }}</strong><br /> <strong>{{ extension.name }}</strong><br />
<span><a href="{{ extension.url }}">{{ lang('DETAILS') }}</a> &bull; <a href="">{{ lang('INSTALL') }}</a></span> <span><a href="{{ extension.url }}">{{ lang('DETAILS') }}</a> &bull; <a href="{{ U_ACTION }}&amp;action=install&amp;extension={{ extension.composer_name|url_encode }}">{{ lang('INSTALL') }}</a></span>
</td> </td>
<td>{{ extension.version }}</td> <td>{{ extension.version }}</td>
<td>{{ extension.description }}</td> <td>{{ extension.description }}</td>

0
phpBB/ext/index.htm Normal file → Executable file
View file

View file

@ -405,14 +405,56 @@ class acp_extensions
{ {
global $phpbb_container; global $phpbb_container;
/** @var \phpbb\composer\extension_manager $manager */ $action = $this->request->variable('action', 'list');
$manager = $phpbb_container->get('ext.composer.manager');
$this->page_title = 'ACP_EXTENSIONS_GALLERY';
$this->tpl_name = 'acp_ext_gallery';
$this->request->enable_super_globals(); /** @var \phpbb\language\language $language */
$this->template->assign_var('extensions', $manager->get_available_packages()); $language = $phpbb_container->get('language');
$this->request->disable_super_globals();
/** @var \phpbb\composer\manager $composer_manager */
$composer_manager = $phpbb_container->get('ext.composer.manager');
switch ($action)
{
case 'install':
$extension = $this->request->variable('extension', '');
if (empty($extension))
{
redirect($this->u_action);
}
$formatter = new \Composer\Console\HtmlOutputFormatter([
'warning' => new \Symfony\Component\Console\Formatter\OutputFormatterStyle('black', 'yellow')
]);
$composer_io = new \phpbb\composer\io\web_io($language, '', \Symfony\Component\Console\Output\OutputInterface::VERBOSITY_NORMAL, $formatter);
try
{
$composer_manager->install((array) $extension, $composer_io);
}
catch (\phpbb\exception\runtime_exception $e)
{
trigger_error($language->lang_array($e->getMessage(), $e->get_parameters()) . '<br /><br />' . $composer_io->getOutput() . adm_back_link($this->u_action), E_USER_WARNING);
}
trigger_error($language->lang('EXTENSIONS_INSTALLED') . '<br /><br />' . $composer_io->getOutput() . adm_back_link($this->u_action));
break;
case 'remove':
break;
case 'list':
default:
/** @var \phpbb\composer\extension_manager $manager */
$manager = $phpbb_container->get('ext.composer.manager');
$this->page_title = 'ACP_EXTENSIONS_GALLERY';
$this->tpl_name = 'acp_ext_gallery';
$this->request->enable_super_globals();
$this->template->assign_var('extensions', $manager->get_available_packages());
$this->request->disable_super_globals();
break;
}
} }
/** /**

View file

@ -119,7 +119,7 @@ class installer
->setDumpAutoloader(false) ->setDumpAutoloader(false)
->setPreferStable(true) ->setPreferStable(true)
->setRunScripts(false) ->setRunScripts(false)
->setDryRun(false); ->setDryRun(true);
try try
{ {
@ -282,6 +282,7 @@ class installer
// Generates the entry // Generates the entry
$available[$name] = []; $available[$name] = [];
$available[$name]['name'] = $highest_version->getPrettyName(); $available[$name]['name'] = $highest_version->getPrettyName();
$available[$name]['composer_name'] = $highest_version->getName();
$available[$name]['version'] = $highest_version->getPrettyVersion(); $available[$name]['version'] = $highest_version->getPrettyVersion();
if ($version instanceof CompletePackage) if ($version instanceof CompletePackage)

View file

@ -29,6 +29,7 @@ class console_io extends ConsoleIO
* @param InputInterface $input The input instance * @param InputInterface $input The input instance
* @param OutputInterface $output The output instance * @param OutputInterface $output The output instance
* @param HelperSet $helperSet The helperSet instance * @param HelperSet $helperSet The helperSet instance
* @param language $language Language object
*/ */
public function __construct(InputInterface $input, OutputInterface $output, HelperSet $helperSet, language $language) public function __construct(InputInterface $input, OutputInterface $output, HelperSet $helperSet, language $language)
{ {

View file

@ -15,25 +15,23 @@ namespace phpbb\composer\io;
use Composer\IO\BufferIO; use Composer\IO\BufferIO;
use phpbb\language\language; use phpbb\language\language;
use Symfony\Component\Console\Helper\HelperSet; use Symfony\Component\Console\Formatter\OutputFormatterInterface;
use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\StreamOutput;
use Symfony\Component\Console\Output\OutputInterface;
class web_io extends BufferIO class web_io extends BufferIO
{ {
use translate_composer_trait; use translate_composer_trait;
/** /**
* Constructor. * @param language $language Language object
* * @param string $input Input string
* @param InputInterface $input The input instance * @param int $verbosity Verbosity level
* @param OutputInterface $output The output instance * @param OutputFormatterInterface $formatter Output formatter
* @param HelperSet $helperSet The helperSet instance
*/ */
public function __construct(InputInterface $input, OutputInterface $output, HelperSet $helperSet, language $language) public function __construct(language $language, $input = '', $verbosity = StreamOutput::VERBOSITY_NORMAL, OutputFormatterInterface $formatter = null)
{ {
$this->language = $language; $this->language = $language;
parent::__construct($input, $output, $helperSet); parent::__construct($input, $verbosity, $formatter);
} }
} }