'left' ), $config ); // Parent constructor parent::__construct( $config ); // Properties $this->fieldWidget = $fieldWidget; $this->field = new Tag( 'div' ); $this->body = new Tag( $hasInputWidget ? 'label' : 'div' ); if ( isset( $config['help'] ) ) { $this->help = new ButtonWidget( array( 'classes' => array( 'oo-ui-fieldLayout-help' ), 'framed' => false, 'icon' => 'info', 'title' => $config['help'], ) ); } else { $this->help = ''; } // Mixins $this->mixin( new LabelElement( $this, $config ) ); // Initialization $this ->addClasses( array( 'oo-ui-fieldLayout' ) ) ->appendContent( $this->help, $this->body ); $this->body->addClasses( array( 'oo-ui-fieldLayout-body' ) ); $this->field ->addClasses( array( 'oo-ui-fieldLayout-field' ) ) ->toggleClasses( array( 'oo-ui-fieldLayout-disable' ), $this->fieldWidget->isDisabled() ) ->appendContent( $this->fieldWidget ); $this->setAlignment( $config['align'] ); } /** * Get the field. * * @return Widget Field widget */ public function getField() { return $this->fieldWidget; } /** * Set the field alignment mode. * * @param string $value Alignment mode, either 'left', 'right', 'top' or 'inline' * @chainable */ protected function setAlignment( $value ) { if ( $value !== $this->align ) { // Default to 'left' if ( !in_array( $value, array( 'left', 'right', 'top', 'inline' ) ) ) { $value = 'left'; } // Reorder elements $this->body->clearContent(); if ( $value === 'inline' ) { $this->body->appendContent( $this->field, $this->label ); } else { $this->body->appendContent( $this->label, $this->field ); } // Set classes. The following classes can be used here: // * oo-ui-fieldLayout-align-left // * oo-ui-fieldLayout-align-right // * oo-ui-fieldLayout-align-top // * oo-ui-fieldLayout-align-inline if ( $this->align ) { $this->removeClasses( array( 'oo-ui-fieldLayout-align-' . $this->align ) ); } $this->addClasses( array( 'oo-ui-fieldLayout-align-' . $value ) ); $this->align = $value; } return $this; } public function getConfig( &$config ) { $config['fieldWidget'] = $this->fieldWidget; $config['align'] = $this->align; if ( $this->help !== '' ) { $config['help'] = $this->help->getTitle(); } return parent::getConfig( $config ); } }