/** * Prepares JSON-encoded values for disabling or enabling dependent options. * * @param wcf\data\option\Option $option * @return array */ protected function parseEnableOptions(Option $option) { $disableOptions = $enableOptions = ''; if (!empty($option->enableOptions)) { $options = $option->parseMultipleEnableOptions(); foreach ($options as $key => $optionData) { $tmp = explode(',', $optionData); foreach ($optionData as $item) { if ($item{0} == '!') { if (!empty($disableOptions)) $disableOptions .= ','; $disableOptions .= "{ value: '".$key."', option: '".StringUtil::substring($item, 1)."' }"; } else { if (!empty($enableOptions)) $enableOptions .= ','; $enableOptions .= "{ value: '".$key."', option: '".$item."' }"; } } } } return array( 'disableOptions' => $disableOptions, 'enableOptions' => $enableOptions ); }
/** * @see wcf\system\option\IOptionType::getFormElement() */ public function getFormElement(Option $option, $value) { // get options $selectOptions = $option->parseSelectOptions(); $availableOptions = $option->parseMultipleEnableOptions(); $options = array( 'disableOptions' => array(), 'enableOptions' => array() ); foreach ($availableOptions as $key => $enableOptions) { $optionData = Option::parseEnableOptions($enableOptions); $options['disableOptions'][$key] = $optionData['disableOptions']; $options['enableOptions'][$key] = $optionData['enableOptions']; } WCF::getTPL()->assign(array( 'disableOptions' => $options['disableOptions'], 'enableOptions' => $options['enableOptions'], 'option' => $option, 'selectOptions' => $selectOptions, 'value' => $value )); return WCF::getTPL()->fetch($this->templateName); }