Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
CRAP | |
0.00% |
0 / 11 |
ConfigTranslationFormAccess | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 11 |
access | |
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 11 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\config_translation\Access\ConfigTranslationFormAccess. | |
*/ | |
namespace Drupal\config_translation\Access; | |
use Drupal\Core\Access\AccessResult; | |
use Drupal\Core\Routing\RouteMatchInterface; | |
use Drupal\Core\Session\AccountInterface; | |
/** | |
* Checks access for displaying the translation add, edit, and delete forms. | |
*/ | |
class ConfigTranslationFormAccess extends ConfigTranslationOverviewAccess { | |
/** | |
* {@inheritdoc} | |
*/ | |
public function access(RouteMatchInterface $route_match, AccountInterface $account, $langcode = NULL) { | |
// For the translation forms we have a target language, so we need some | |
// checks in addition to the checks performed for the translation overview. | |
$base_access = parent::access($route_match, $account); | |
if ($base_access->isAllowed()) { | |
$target_language = $this->languageManager->getLanguage($langcode); | |
// Make sure that the target language is not locked, and that the target | |
// language is not the original submission language. Although technically | |
// configuration can be overlaid with translations in the same language, | |
// that is logically not a good idea. | |
$access = | |
!empty($target_language) && | |
!$target_language->isLocked() && | |
(empty($this->sourceLanguage) || ($target_language->getId() != $this->sourceLanguage->getId())); | |
return $base_access->andIf(AccessResult::allowedIf($access)); | |
} | |
return $base_access; | |
} | |
} |