Exemplo n.º 1
0
 protected function duplicateOrReplaceFields(&$fields)
 {
     $tasks = array('dup' => array());
     foreach ($fields as $field) {
         if ($field->isComposite()) {
             $innertasks = $this->duplicateOrReplaceFields($field->FieldSet());
             $tasks['dup'] = array_merge($tasks['dup'], $innertasks['dup']);
         } else {
             if (($fieldname = $field->Name()) && array_key_exists($fieldname, $this->original_values)) {
                 // Get a copy of the original field to show the untranslated value
                 if (is_subclass_of($field->class, 'TextareaField')) {
                     $nonEditableField = new ToggleField($fieldname, $field->Title(), '', '+', '-');
                     $nonEditableField->labelMore = '+';
                     $nonEditableField->labelLess = '-';
                 } else {
                     $nonEditableField = $field->performDisabledTransformation();
                 }
                 $nonEditableField_holder = new CompositeField($nonEditableField);
                 $nonEditableField_holder->setName($fieldname . '_holder');
                 $nonEditableField_holder->addExtraClass('originallang_holder');
                 $nonEditableField->setValue($this->original_values[$fieldname]);
                 $nonEditableField->setName($fieldname . '_original');
                 $nonEditableField->addExtraClass('originallang');
                 if (array_search($fieldname, $this->translatableFields) !== false) {
                     // Duplicate the field
                     if ($field->Title()) {
                         $nonEditableField->setTitle('Original');
                     }
                     $nonEditableField_holder->insertBeforeRecursive($field, $fieldname . '_original');
                     $tasks['dup'][$fieldname] = $nonEditableField_holder;
                 }
             }
         }
     }
     return $tasks;
 }
Exemplo n.º 2
0
 public function insertBeforeRecursive($field, $insertBefore, $level)
 {
     $level = parent::insertBeforeRecursive($field, $insertBefore, $level + 1);
     if ($level === 0) {
         $field->setTabSet($this);
     }
     return $level;
 }