[ticket/10631] Make failure to meet ext enable requirements clearer

Turn the blocks red on the details page if requirement is not met.

Also changing a how the errors come up when trying to enable/disable
an extension when they cannot be.

PHPBB3-10631
This commit is contained in:
Nathan Guse 2012-08-05 19:00:20 -05:00 committed by Unknown Bliss
parent dce04b2d03
commit 7b643fe8a5
5 changed files with 39 additions and 21 deletions

View file

@ -3,7 +3,7 @@
<a name="maincontent"></a>
<a href="{U_BACK}" style="float: {S_CONTENT_FLOW_END};">&laquo; {L_BACK}</a>
<h1>{L_EXTENSIONS_ADMIN}</h1>
<fieldset>
@ -50,13 +50,13 @@
<fieldset>
<legend>{L_REQUIREMENTS}</legend>
<!-- IF MD_REQUIRE_PHPBB -->
<dl>
<dl<!-- IF MD_REQUIRE_PHPBB_FAIL --> class="requirements_not_met"<!-- ENDIF -->>
<dt><label for="require_phpbb">{L_PHPBB_VERSION}:</label></dt>
<dd><p id="require_phpbb">{MD_REQUIRE_PHPBB}</p></dd>
</dl>
<!-- ENDIF -->
<!-- IF MD_REQUIRE_PHP -->
<dl>
<dl<!-- IF MD_REQUIRE_PHP_FAIL --> class="requirements_not_met"<!-- ENDIF -->>
<dt><label for="require_php">{L_PHP_VERSION}:</label></dt>
<dd><p id="require_php">{MD_REQUIRE_PHP}</p></dd>
</dl>

View file

@ -1718,3 +1718,13 @@ fieldset.permissions .padding {
.phpinfo td, .phpinfo th, .phpinfo h2, .phpinfo h1 {
text-align: left;
}
.requirements_not_met {
padding: 5px;
background-color: #BC2A4D;
}
.requirements_not_met dt label, .requirements_not_met dd p {
color: #FFFFFF;
font-size: 1.4em;
}

View file

@ -43,7 +43,7 @@ class acp_extensions
$action = $request->variable('action', 'list');
$ext_name = $request->variable('ext_name', '');
// Cancel action
if ($request->is_set_post('cancel'))
{
@ -79,9 +79,14 @@ class acp_extensions
break;
case 'enable_pre':
if (!$md_manager->validate_enable() || $phpbb_extension_manager->enabled($ext_name))
if (!$md_manager->validate_enable())
{
trigger_error('EXTENSION_NOT_AVAILABLE');
trigger_error($user->lang['EXTENSION_NOT_AVAILABLE'] . adm_back_link($this->u_action));
}
if ($phpbb_extension_manager->enabled($ext_name))
{
redirect($this->u_action);
}
$this->tpl_name = 'acp_ext_enable';
@ -95,7 +100,7 @@ class acp_extensions
case 'enable':
if (!$md_manager->validate_enable())
{
trigger_error('EXTENSION_NOT_AVAILABLE');
trigger_error($user->lang['EXTENSION_NOT_AVAILABLE'] . adm_back_link($this->u_action));
}
if ($phpbb_extension_manager->enable_step($ext_name))
@ -115,7 +120,7 @@ class acp_extensions
case 'disable_pre':
if (!$phpbb_extension_manager->enabled($ext_name))
{
trigger_error('EXTENSION_NOT_AVAILABLE');
redirect($this->u_action);
}
$this->tpl_name = 'acp_ext_disable';

View file

@ -320,8 +320,13 @@ class phpbb_extension_metadata_manager
'MD_VERSION' => (isset($this->metadata['version'])) ? htmlspecialchars($this->metadata['version']) : '',
'MD_TIME' => (isset($this->metadata['time'])) ? htmlspecialchars($this->metadata['time']) : '',
'MD_LICENCE' => htmlspecialchars($this->metadata['licence']),
'MD_REQUIRE_PHP' => (isset($this->metadata['require']['php'])) ? htmlspecialchars($this->metadata['require']['php']) : '',
'MD_REQUIRE_PHPBB' => (isset($this->metadata['require']['phpbb'])) ? htmlspecialchars($this->metadata['require']['phpbb']) : '',
'MD_REQUIRE_PHP' => (isset($this->metadata['require']['php'])) ? htmlspecialchars($this->metadata['require']['php']) : '',
'MD_REQUIRE_PHP_FAIL' => !$this->validate_require_php(),
'MD_REQUIRE_PHPBB' => (isset($this->metadata['require']['phpbb'])) ? htmlspecialchars($this->metadata['require']['phpbb']) : '',
'MD_REQUIRE_PHPBB_FAIL' => !$this->validate_require_phpbb(),
'MD_DISPLAY_NAME' => (isset($this->metadata['extra']['display-name'])) ? htmlspecialchars($this->metadata['extra']['display-name']) : '',
));

View file

@ -178,9 +178,11 @@ class acp_test extends phpbb_functional_test_case
public function test_enable_pre()
{
// Foo is already enabled (error)
// Foo is already enabled (redirect to list)
$crawler = $this->request('GET', 'adm/index.php?i=acp_extensions&mode=main&action=enable_pre&ext_name=foo&sid=' . $this->sid);
$this->assertContainsLang('EXTENSION_NOT_AVAILABLE', $crawler->filter('html')->text());
$this->assertContainsLang('EXTENSION_NAME', $crawler->filter('html')->text());
$this->assertContainsLang('EXTENSION_OPTIONS', $crawler->filter('html')->text());
$this->assertContainsLang('EXTENSION_ACTIONS', $crawler->filter('html')->text());
$crawler = $this->request('GET', 'adm/index.php?i=acp_extensions&mode=main&action=enable_pre&ext_name=vendor%2Fmoo&sid=' . $this->sid);
$this->assertContainsLang('ENABLE_CONFIRM', $crawler->filter('html')->text());
@ -188,9 +190,11 @@ class acp_test extends phpbb_functional_test_case
public function test_disable_pre()
{
// Moo is not enabled (error)
// Moo is not enabled (redirect to list)
$crawler = $this->request('GET', 'adm/index.php?i=acp_extensions&mode=main&action=disable_pre&ext_name=vendor%2Fmoo&sid=' . $this->sid);
$this->assertContainsLang('EXTENSION_NOT_AVAILABLE', $crawler->filter('html')->text());
$this->assertContainsLang('EXTENSION_NAME', $crawler->filter('html')->text());
$this->assertContainsLang('EXTENSION_OPTIONS', $crawler->filter('html')->text());
$this->assertContainsLang('EXTENSION_ACTIONS', $crawler->filter('html')->text());
$crawler = $this->request('GET', 'adm/index.php?i=acp_extensions&mode=main&action=disable_pre&ext_name=foo&sid=' . $this->sid);
$this->assertContainsLang('DISABLE_CONFIRM', $crawler->filter('html')->text());
@ -206,20 +210,14 @@ class acp_test extends phpbb_functional_test_case
$this->assertContainsLang('PURGE_CONFIRM', $crawler->filter('html')->text());
}
public function test_enable()
public function test_actions()
{
$crawler = $this->request('GET', 'adm/index.php?i=acp_extensions&mode=main&action=enable&ext_name=vendor%2Fmoo&sid=' . $this->sid);
$this->assertContainsLang('ENABLE_SUCCESS', $crawler->filter('html')->text());
}
public function test_disable()
{
$crawler = $this->request('GET', 'adm/index.php?i=acp_extensions&mode=main&action=disable&ext_name=vendor%2Fmoo&sid=' . $this->sid);
$this->assertContainsLang('DISABLE_SUCCESS', $crawler->filter('html')->text());
}
public function test_purge()
{
$crawler = $this->request('GET', 'adm/index.php?i=acp_extensions&mode=main&action=purge&ext_name=vendor%2Fmoo&sid=' . $this->sid);
$this->assertContainsLang('PURGE_SUCCESS', $crawler->filter('html')->text());
}