mirror of
https://github.com/phpbb/phpbb.git
synced 2025-03-24 09:30:34 +01:00
[ticket/11150] Add Remove && Update buttons
PHPBB3-11150
This commit is contained in:
parent
d6618397bf
commit
88b32580dc
@ -35,7 +35,7 @@
|
||||
<col class="row1" ><col class="row1" ><col class="row1" >
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 20%;">{{ lang("EXTENSION_NAME") }}</th>
|
||||
<th style="width: 21%;">{{ lang("EXTENSION_NAME") }}</th>
|
||||
<th style="text-align: center; width: 10%;">{{ lang("VERSION") }}</th>
|
||||
<th>{{ lang("DESCRIPTION") }}</th>
|
||||
</tr>
|
||||
@ -46,7 +46,7 @@
|
||||
<td>
|
||||
<strong>{{ extension.name }}</strong><br />
|
||||
<span>
|
||||
<a href="{{ extension.url }}">{{ lang('DETAILS') }}</a> •
|
||||
<a href="{{ extension.url }}">{{ lang('HOMEPAGE') }}</a> •
|
||||
{% if extension.name in managed_extensions %}
|
||||
<span style="color: #228822;">{{ lang('INSTALLED') }}</span>
|
||||
{% elseif extension.name in installed_extensions -%}
|
||||
|
@ -62,6 +62,11 @@
|
||||
<a href="{enabled.actions.U_ACTION}"<!-- IF enabled.actions.L_ACTION_EXPLAIN --> title="{enabled.actions.L_ACTION_EXPLAIN}"<!-- ENDIF -->>{enabled.actions.L_ACTION}</a>
|
||||
<!-- IF not enabled.actions.S_LAST_ROW --> | <!-- ENDIF -->
|
||||
<!-- END actions -->
|
||||
|
||||
<!-- IF enabled.META_NAME in MANAGED_EXTENSIONS -->
|
||||
<!-- IF enabled.actions is defined --> | <!-- ENDIF -->
|
||||
<a href="{U_GALLERY_ACTION}&action=update&extension={enabled.META_NAME}">{L_UPDATE}</a>
|
||||
<!-- ENDIF -->
|
||||
</td>
|
||||
</tr>
|
||||
<!-- END enabled -->
|
||||
@ -89,6 +94,12 @@
|
||||
<a href="{disabled.actions.U_ACTION}"<!-- IF disabled.actions.L_ACTION_EXPLAIN --> title="{disabled.actions.L_ACTION_EXPLAIN}"<!-- ENDIF -->>{disabled.actions.L_ACTION}</a>
|
||||
<!-- IF not disabled.actions.S_LAST_ROW --> | <!-- ENDIF -->
|
||||
<!-- END actions -->
|
||||
|
||||
<!-- IF disabled.META_NAME in MANAGED_EXTENSIONS -->
|
||||
<!-- IF disabled.actions is defined --> | <!-- ENDIF -->
|
||||
<a href="{U_GALLERY_ACTION}&action=update&extension={disabled.META_NAME}">{L_UPDATE}</a>
|
||||
| <a href="{U_GALLERY_ACTION}&action=remove&extension={disabled.META_NAME}" style="color: #BC2A4D;">{L_REMOVE}</a>
|
||||
<!-- ENDIF -->
|
||||
</td>
|
||||
</tr>
|
||||
<!-- END disabled -->
|
||||
|
@ -59,17 +59,17 @@ class acp_extensions
|
||||
switch ($mode)
|
||||
{
|
||||
case 'gallery':
|
||||
$this->gallery_mode();
|
||||
$this->gallery_mode($id, $mode);
|
||||
break;
|
||||
default:
|
||||
$this->main_mode();
|
||||
$this->main_mode($id, $mode);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public function main_mode()
|
||||
public function main_mode($id, $mode)
|
||||
{
|
||||
global $phpbb_extension_manager, $phpbb_root_path;
|
||||
global $phpbb_extension_manager, $phpbb_root_path, $phpbb_container, $phpbb_admin_path, $phpEx;
|
||||
|
||||
$this->page_title = 'ACP_EXTENSIONS';
|
||||
|
||||
@ -167,11 +167,17 @@ class acp_extensions
|
||||
$this->list_disabled_exts();
|
||||
$this->list_available_exts();
|
||||
|
||||
$composer_manager = $phpbb_container->get('ext.composer.manager');
|
||||
|
||||
$this->request->enable_super_globals();
|
||||
$this->template->assign_vars(array(
|
||||
'U_VERSIONCHECK_FORCE' => $this->u_action . '&action=list&versioncheck_force=1',
|
||||
'FORCE_UNSTABLE' => $this->config['extension_force_unstable'],
|
||||
'U_ACTION' => $this->u_action,
|
||||
'MANAGED_EXTENSIONS' => array_keys($composer_manager->get_managed_packages()),
|
||||
'U_GALLERY_ACTION' => append_sid("{$phpbb_admin_path}index.$phpEx", "i=$id&mode=gallery"),
|
||||
));
|
||||
$this->request->disable_super_globals();
|
||||
|
||||
$this->tpl_name = 'acp_ext_list';
|
||||
break;
|
||||
@ -401,7 +407,7 @@ class acp_extensions
|
||||
$this->tpl_name = $tpl_name;
|
||||
}
|
||||
|
||||
public function gallery_mode()
|
||||
public function gallery_mode($id, $mode)
|
||||
{
|
||||
global $phpbb_container;
|
||||
|
||||
@ -440,41 +446,7 @@ class acp_extensions
|
||||
}
|
||||
catch (\phpbb\exception\runtime_exception $e)
|
||||
{
|
||||
$this->tpl_name = 'detailled_message_body';
|
||||
|
||||
if ($e->getPrevious())
|
||||
{
|
||||
$message_title = $language->lang_array($e->getMessage(), $e->get_parameters());
|
||||
|
||||
if ($e->getPrevious() instanceof \phpbb\exception\exception_interface)
|
||||
{
|
||||
$message_text = $language->lang_array($e->getPrevious()->getMessage(), $e->getPrevious()->get_parameters()) . adm_back_link($this->u_action);
|
||||
}
|
||||
else
|
||||
{
|
||||
$message_text = $e->getPrevious()->getMessage();
|
||||
if (strpos($message_text, 'ext/') === 0 && strpos($message_text, 'does not exist and could not be created.') !== false)
|
||||
{
|
||||
$message_text = $language->lang('EXTENSIONS_DIR_NOT_WRITABLE');
|
||||
}
|
||||
$message_text .= adm_back_link($this->u_action);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$message_title = $language->lang('INFORMATION');
|
||||
$message_text = $language->lang_array($e->getMessage(), $e->get_parameters()) . adm_back_link($this->u_action);
|
||||
}
|
||||
|
||||
$this->template->assign_vars(array(
|
||||
'MESSAGE_TITLE' => $message_title,
|
||||
'MESSAGE_TEXT' => $message_text,
|
||||
'MESSAGE_DETAIL' => $composer_io->getOutput(),
|
||||
'MESSAGE_DETAIL_LEGEND' => $language->lang('COMPOSER_OUTPUT'),
|
||||
'S_USER_ERROR' => true,
|
||||
)
|
||||
);
|
||||
|
||||
$this->display_composer_exception($language, $e, $composer_io);
|
||||
return;
|
||||
}
|
||||
$this->tpl_name = 'detailled_message_body';
|
||||
@ -488,10 +460,117 @@ class acp_extensions
|
||||
)
|
||||
);
|
||||
|
||||
return;
|
||||
|
||||
break;
|
||||
case 'remove':
|
||||
$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_VERBOSE, $formatter);
|
||||
|
||||
try
|
||||
{
|
||||
$this->request->enable_super_globals();
|
||||
$composer_manager->remove((array) $extension, $composer_io);
|
||||
$this->request->disable_super_globals();
|
||||
}
|
||||
catch (\phpbb\exception\runtime_exception $e)
|
||||
{
|
||||
$this->display_composer_exception($language, $e, $composer_io);
|
||||
return;
|
||||
}
|
||||
$this->tpl_name = 'detailled_message_body';
|
||||
|
||||
$this->template->assign_vars(array(
|
||||
'MESSAGE_TITLE' => $language->lang('ACP_EXTENSIONS_REMOVE'),
|
||||
'MESSAGE_TEXT' => $language->lang('EXTENSIONS_REMOVED') . adm_back_link($this->u_action),
|
||||
'MESSAGE_DETAIL' => $composer_io->getOutput(),
|
||||
'MESSAGE_DETAIL_LEGEND' => $language->lang('COMPOSER_OUTPUT'),
|
||||
'S_USER_NOTICE' => true,
|
||||
)
|
||||
);
|
||||
|
||||
break;
|
||||
case 'update':
|
||||
$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_VERBOSE, $formatter);
|
||||
|
||||
try
|
||||
{
|
||||
$this->request->enable_super_globals();
|
||||
$composer_manager->update((array) $extension, $composer_io);
|
||||
$this->request->disable_super_globals();
|
||||
}
|
||||
catch (\phpbb\exception\runtime_exception $e)
|
||||
{
|
||||
$this->display_composer_exception($language, $e, $composer_io);
|
||||
return;
|
||||
}
|
||||
$this->tpl_name = 'detailled_message_body';
|
||||
|
||||
$this->template->assign_vars(array(
|
||||
'MESSAGE_TITLE' => $language->lang('ACP_EXTENSIONS_UPDATE'),
|
||||
'MESSAGE_TEXT' => $language->lang('EXTENSIONS_UPDATED') . adm_back_link($this->u_action),
|
||||
'MESSAGE_DETAIL' => $composer_io->getOutput(),
|
||||
'MESSAGE_DETAIL_LEGEND' => $language->lang('COMPOSER_OUTPUT'),
|
||||
'S_USER_NOTICE' => true,
|
||||
)
|
||||
);
|
||||
|
||||
break;
|
||||
case 'manage':
|
||||
$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_VERBOSE, $formatter);
|
||||
|
||||
try
|
||||
{
|
||||
$this->request->enable_super_globals();
|
||||
$composer_manager->start_managing($extension, $composer_io);
|
||||
$this->request->disable_super_globals();
|
||||
}
|
||||
catch (\phpbb\exception\runtime_exception $e)
|
||||
{
|
||||
$this->display_composer_exception($language, $e, $composer_io);
|
||||
return;
|
||||
}
|
||||
$this->tpl_name = 'detailled_message_body';
|
||||
|
||||
$this->template->assign_vars(array(
|
||||
'MESSAGE_TITLE' => $language->lang('ACP_EXTENSIONS_MANAGE'),
|
||||
'MESSAGE_TEXT' => $language->lang('EXTENSION_MANAGED') . adm_back_link($this->u_action),
|
||||
'MESSAGE_DETAIL' => $composer_io->getOutput(),
|
||||
'MESSAGE_DETAIL_LEGEND' => $language->lang('COMPOSER_OUTPUT'),
|
||||
'S_USER_NOTICE' => true,
|
||||
)
|
||||
);
|
||||
|
||||
break;
|
||||
case 'list':
|
||||
default:
|
||||
@ -510,6 +589,51 @@ class acp_extensions
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Display an exception raised by the composer manager
|
||||
*
|
||||
* @param \phpbb\language\language $language
|
||||
* @param \phpbb\exception\runtime_exception $e
|
||||
* @param \phpbb\composer\io\web_io $composer_io
|
||||
*/
|
||||
private function display_composer_exception(\phpbb\language\language $language, \phpbb\exception\runtime_exception $e, \phpbb\composer\io\web_io $composer_io)
|
||||
{
|
||||
$this->tpl_name = 'detailled_message_body';
|
||||
|
||||
if ($e->getPrevious())
|
||||
{
|
||||
$message_title = $language->lang_array($e->getMessage(), $e->get_parameters());
|
||||
|
||||
if ($e->getPrevious() instanceof \phpbb\exception\exception_interface)
|
||||
{
|
||||
$message_text = $language->lang_array($e->getPrevious()->getMessage(), $e->getPrevious()->get_parameters()) . adm_back_link($this->u_action);
|
||||
}
|
||||
else
|
||||
{
|
||||
$message_text = $e->getPrevious()->getMessage();
|
||||
if (strpos($message_text, 'ext/') === 0 && strpos($message_text, 'does not exist and could not be created.') !== false)
|
||||
{
|
||||
$message_text = $language->lang('EXTENSIONS_DIR_NOT_WRITABLE');
|
||||
}
|
||||
$message_text .= adm_back_link($this->u_action);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$message_title = $language->lang('INFORMATION');
|
||||
$message_text = $language->lang_array($e->getMessage(), $e->get_parameters()) . adm_back_link($this->u_action);
|
||||
}
|
||||
|
||||
$this->template->assign_vars(array(
|
||||
'MESSAGE_TITLE' => $message_title,
|
||||
'MESSAGE_TEXT' => $message_text,
|
||||
'MESSAGE_DETAIL' => $composer_io->getOutput(),
|
||||
'MESSAGE_DETAIL_LEGEND' => $language->lang('COMPOSER_OUTPUT'),
|
||||
'S_USER_ERROR' => true,
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Lists all the enabled extensions and dumps to the template
|
||||
*
|
||||
@ -529,6 +653,7 @@ class acp_extensions
|
||||
$enabled_extension_meta_data[$name] = array(
|
||||
'META_DISPLAY_NAME' => $md_manager->get_metadata('display-name'),
|
||||
'META_VERSION' => $meta['version'],
|
||||
'META_NAME' => $md_manager->get_metadata('name'),
|
||||
);
|
||||
|
||||
if (isset($meta['extra']['version-check']))
|
||||
@ -600,6 +725,7 @@ class acp_extensions
|
||||
$disabled_extension_meta_data[$name] = array(
|
||||
'META_DISPLAY_NAME' => $md_manager->get_metadata('display-name'),
|
||||
'META_VERSION' => $meta['version'],
|
||||
'META_NAME' => $md_manager->get_metadata('name'),
|
||||
);
|
||||
|
||||
if (isset($meta['extra']['version-check']))
|
||||
@ -671,6 +797,7 @@ class acp_extensions
|
||||
$available_extension_meta_data[$name] = array(
|
||||
'META_DISPLAY_NAME' => $md_manager->get_metadata('display-name'),
|
||||
'META_VERSION' => $meta['version'],
|
||||
'META_NAME' => $md_manager->get_metadata('name'),
|
||||
);
|
||||
|
||||
if (isset($meta['extra']['version-check']))
|
||||
|
@ -153,6 +153,7 @@ $lang = array_merge($lang, array(
|
||||
'BYTES_SHORT' => 'B',
|
||||
|
||||
'CANCEL' => 'Cancel',
|
||||
'CANNOT_RENAME_FILE' => 'Cannot rename %s',
|
||||
'CHANGE' => 'Change',
|
||||
'CHANGE_FONT_SIZE' => 'Change font size',
|
||||
'CHANGING_PREFERENCES' => 'Changing board preferences',
|
||||
|
@ -187,7 +187,7 @@ class extension_manager extends manager
|
||||
$this->extension_manager->disable($package);
|
||||
}
|
||||
|
||||
$ext_path = $this->extension_manager->get_extension_path($package);
|
||||
$ext_path = $this->extension_manager->get_extension_path($package, true);
|
||||
$backup_path = rtrim($ext_path, '/') . '__backup__';
|
||||
|
||||
try
|
||||
@ -201,7 +201,7 @@ class extension_manager extends manager
|
||||
|
||||
try
|
||||
{
|
||||
$this->install((array) $package);
|
||||
$this->install((array) $package, $io);
|
||||
$this->filesystem->remove($backup_path);
|
||||
}
|
||||
catch (runtime_exception $e)
|
||||
|
Loading…
x
Reference in New Issue
Block a user