/** * {@inheritdoc} */ public function submitForm(array &$form, array &$form_state) { foreach ($this->mapper->getConfigNames() as $name) { $this->languageManager->getLanguageConfigOverride($this->language->id, $name)->delete(); } // Flush all persistent caches. $this->moduleHandler->invokeAll('cache_flush'); foreach (Cache::getBins() as $service_id => $cache_backend) { $cache_backend->deleteAll(); } drupal_set_message($this->t('@language translation of %label was deleted', array('%label' => $this->mapper->getTitle(), '@language' => $this->language->name))); $form_state['redirect_route'] = $this->getCancelUrl(); }
/** * {@inheritdoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { $form_values = $form_state->getValue(array('translation', 'config_names')); foreach ($this->mapper->getConfigNames() as $name) { $schema = $this->typedConfigManager->get($name); // Set configuration values based on form submission and source values. $base_config = $this->configFactory()->getEditable($name); $config_translation = $this->languageManager->getLanguageConfigOverride($this->language->getId(), $name); $element = $this->createFormElement($schema); $element->setConfig($base_config, $config_translation, $form_values[$name]); // If no overrides, delete language specific configuration file. $saved_config = $config_translation->get(); if (empty($saved_config)) { $config_translation->delete(); } else { $config_translation->save(); } } $form_state->setRedirect($this->mapper->getOverviewRoute(), $this->mapper->getOverviewRouteParameters()); }
/** * {@inheritdoc} */ public function submitForm(array &$form, array &$form_state) { $form_values = $form_state['values']['config_names']; // For the form submission handling, use the raw data. $config_factory = $this->configFactory(); $old_state = $config_factory->getOverrideState(); $config_factory->setOverrideState(FALSE); foreach ($this->mapper->getConfigNames() as $name) { // Set configuration values based on form submission and source values. $base_config = $config_factory->get($name); $config_translation = $this->languageManager->getLanguageConfigOverride($this->language->id, $name); $locations = $this->localeStorage->getLocations(array('type' => 'configuration', 'name' => $name)); $this->setConfig($this->language, $base_config, $config_translation, $form_values[$name], !empty($locations)); // If no overrides, delete language specific configuration file. $saved_config = $config_translation->get(); if (empty($saved_config)) { $config_translation->delete(); } else { $config_translation->save(); } } $config_factory->setOverrideState($old_state); $form_state['redirect_route'] = array('route_name' => $this->mapper->getOverviewRoute(), 'route_parameters' => $this->mapper->getOverviewRouteParameters()); }
/** * Builds a renderable list of operation links for the entity. * * @param \Drupal\config_translation\ConfigMapperInterface $mapper * The mapper. * * @return array * A renderable array of operation links. * * @see \Drupal\Core\Entity\EntityList::buildOperations() */ protected function buildOperations(ConfigMapperInterface $mapper) { // Retrieve and sort operations. $operations = $mapper->getOperations(); uasort($operations, 'Drupal\\Component\\Utility\\SortArray::sortByWeightElement'); $build = array('#type' => 'operations', '#links' => $operations); return $build; }
/** * Checks access given an account, configuration mapper, and source language. * * Grants access if the proper permission is granted to the account, the * configuration has translatable pieces, and the source language is not * locked given it is present. * * @param \Drupal\Core\Session\AccountInterface $account * The account to check access for. * @param \Drupal\config_translation\ConfigMapperInterface $mapper * The configuration mapper to check access for. * @param \Drupal\Core\Language\LanguageInterface|null $source_language * The source language to check for, if any. * * @return \Drupal\Core\Access\AccessResultInterface * The result of the access check. */ protected function doCheckAccess(AccountInterface $account, ConfigMapperInterface $mapper, $source_language = NULL) { $access = $account->hasPermission('translate configuration') && $mapper->hasSchema() && $mapper->hasTranslatable() && (!$source_language || !$source_language->isLocked()); return AccessResult::allowedIf($access)->cachePerPermissions(); }