/ */ class Disqus_Form_Configure extends P4Cms_Form { const SHORT_NAME = 'shortName'; protected static $_defaultOptions = array( 'contentTypes' => array('basic-page', 'blog-post', 'press-release') ); /** * Defines the elements that make up the config form. * Called automatically when the form object is created. */ public function init() { // form should use p4cms-ui styles. $this->setAttrib('class', 'p4cms-ui disqus-form-configure'); // set the method for the form to POST $this->setMethod('post'); // add a field to collect the Disqus short name. $this->addElement( 'text', static::SHORT_NAME, array( 'label' => 'Disqus Short Name', 'required' => true, 'description' => 'Your shortname is a unique identifier which references your site.', 'filters' => array('StringTrim') ) ); // add a multi-checkbox to collect content types for // default enabling of Disqus comments $types = P4Cms_Content_Type::fetchAll(); $this->addElement( 'multiCheckbox', 'contentTypes', array( 'label' => 'Content Types', 'multiOptions' => array_combine( $types->invoke('getId'), $types->invoke('getLabel') ), 'description' => 'Select the content types to show Disqus conversations on by default.', 'value' => static::$_defaultOptions['contentTypes'] ) ); $this->addElement( 'SubmitButton', 'save', array( 'label' => 'Save', 'required' => false, 'ignore' => true, 'class' => 'preferred' ) ); // put the buttons in a fieldset. $this->addDisplayGroup( array('save'), 'buttons', array('class' => 'buttons') ); } /** * Normalize the given options array to ensure it contains * all of the expected options: * - contentTypes * * @param array $options the options array to normalize * @return array the normalized options */ public static function getNormalizedOptions($options) { $options = array_merge( static::$_defaultOptions, (array) $options ); // ensure contentTypes is an array $options['contentTypes'] = (array) $options['contentTypes']; return $options; } }