* @package WB */ WBClass::load( 'WBFormProcessor_Fiddler' ); /** * Wombat Form Processor Fiddler Translator * * @version 0.3.2 * @package WB */ class WBFormProcessor_Fiddler_Translator extends WBFormProcessor_Fiddler { /** * Current Module's Config * @var array */ private $moduleConfig = array(); /** * Locale Settings * @var WBConfig */ private $locale; /** * Constructor * * Setup config * * @param array */ public function __construct($parameter = array()) { $this->locale = WBClass::create('WBConfig'); $this->locale->load('locale'); $defDomName = 'Website'; $config = WBClass::create('WBConfig'); if ($config->load('info', true)) { $defDomName = $config->get('general/shortname', $defDomName); } // Extract translator config for Wombat module $moduleConf = array( 'domainname' => $defDomName, 'clang' => 'C', 'domain' => '', 'domains' => array('wombat', 'patForms'), ); $trans = $this->locale->get('translators'); if (empty($trans) || !isset($trans['modules'])) { $trans['modules'] = array(); } foreach ($trans['modules'] as $mod) { if ('Wombat' != $mod['module']) { continue; } $moduleConf['clang'] = $mod['clang']; $moduleConf['domain'] = $mod['defaultdomain']; $moduleConf['domains'] = $mod['domains']; } $this->moduleConfig = $moduleConf; } /** * Adjust Form Element List * * Empty function * * @param string name * @param array form values * @param array list of form elements to alter */ public function mangleFormElementList($name, $values, &$list) { if ('filter' != $name) { return; } $available = $this->locale->get('locale/languages/available', array()); if (!is_array($available)) { $available = array(); } if (1 == count($available) && $available[0] == $this->locale->get('locale/languages/origin', 'C')) { $available = array(); } if (empty($available)) { unset($list['filter_lang']); unset($list['filter_translationstatus']); } if (isset($list['filter_domain'])) { $atts = array( 'default' => array_merge(array($this->moduleConfig['domain']), $this->moduleConfig['domains']), 'values' => array( array( 'value' => $this->moduleConfig['domain'], 'label' => $this->moduleConfig['domainname'] ) ) ); foreach ($this->moduleConfig['domains'] as $d) { $atts['values'][] = array( 'value' => $d, 'label' => $d ); } $list['filter_domain']['attributes'] = array_merge($list['filter_domain']['attributes'], $atts); } if (isset($list['filter_lang'])) { $value = array(); $list['filter_lang']['attributes']['default'] = ''; /** @var WBDictionary_Language */ $dict = WBClass::create('WBDictionary_Language'); foreach ($available as $al) { if ($al == $this->moduleConfig['clang']) { continue; } $dict->load($al); if (empty($list['filter_lang']['attributes']['default'])) { $list['filter_lang']['attributes']['default'] = $al; } $value[] = array( 'value' => $al, 'label' => $dict->getWord() ); } if (empty($value)) { unset($list['filter_lang']); } else { $list['filter_lang']['attributes']['values'] = $value; } } } /** * Get Module Settings for Wombat Module * * * @see $locale * @return array */ public function getModuleConfig() { return $this->moduleConfig; } }