Perforce Chronicle 2012.2/486814
API Documentation
|
This is the category form. More...
Public Member Functions | |
composeCategoryId () | |
Provide functionality to convert a title->id. | |
init () | |
Defines the elements that make up the category form. | |
isValid ($data) | |
Override isValid to include check for unique title (if required). | |
setUniqueTitleRequired ($uniqueTitleRequired) | |
Set whether unique title is required. | |
Protected Attributes | |
$_uniqueTitleRequired = true |
This is the category form.
Category_Form_Manage::composeCategoryId | ( | ) |
Provide functionality to convert a title->id.
{ $id = $this->getValue('parent'); if (strlen($id)) { $id .= '/'; } $filter = new P4Cms_Filter_TitleToId; $id .= $filter->filter($this->getValue('title')); return $id; }
Category_Form_Manage::init | ( | ) |
Defines the elements that make up the category form.
Called automatically when the form object is created.
{ // form should use p4cms-ui styles. $this->setAttrib('class', 'p4cms-ui category-form'); // set the method for the form to POST $this->setMethod('post'); // add a field to collect the category title. $this->addElement( 'text', 'title', array( 'label' => 'Title', 'required' => true, 'filters' => array('StringTrim') ) ); $this->getElement('title') ->addDecorator( 'Label', array('tag'=>'dt', 'class' => 'title-label') ); // add a field to pick the parent category. $categories = Category_Model_Category::fetchAll(); $options = array('' => "No Parent"); foreach ($categories as $category) { // to indent we use UTF-8 non-breaking spaces - we can't just // use  , because the ampersand gets escaped when rendered. $indent = str_repeat(static::UTF8_NBSP, $category->getDepth() * 2); $options[$category->getId()] = $indent . $category->getValue('title'); } $this->addElement( 'select', 'parent', array( 'label' => 'Parent Category', 'multiOptions' => $options, 'ignore' => true ) ); // customize error for parent select input. $this->getElementValidator('parent', 'InArray') ->setMessage( "'%value%' is not a valid parent category.", Zend_Validate_InArray::NOT_IN_ARRAY ); $this->getElement('parent') ->addDecorator( 'Label', array('tag'=>'dt', 'class' => 'parent-label') ); // add a field to collect the category description. $this->addElement( 'textarea', 'description', array( 'label' => 'Description', 'required' => false, 'filters' => array('StringTrim'), 'rows' => 3, 'cols' => 80 ) ); // add a select list to pick display content or built-in rendering. $this->addElement( 'contentSelect', 'indexContent', array( 'label' => 'Index Page', 'required' => false, 'description' => 'Select a page to display when a user ' . 'navigates to this category. Leave blank ' . 'for the default presentation.', 'browseOptions' => array('type' => array('types' => array('Pages/*'))) ) ); // add the submit button $this->addElement( 'SubmitButton', 'save', array( 'label' => 'Save', 'required' => false, 'class' => 'preferred', 'ignore' => true ) ); // put the button in a fieldset. $this->addDisplayGroup( array('save'), 'buttons', array('class' => 'buttons') ); }
Category_Form_Manage::isValid | ( | $ | data | ) |
Override isValid to include check for unique title (if required).
array | $data | the field values to validate. |
Reimplemented from P4Cms_Form.
{ $valid = parent::isValid($data); // check if the title has at least one letter if (isset($data['title']) && !preg_match('/[a-zA-Z]/', $data['title'])) { $this->getElement('title')->addError( 'The title must have at least one letter. ' . 'Please choose a different title.' ); $valid = false; } else if ($this->_uniqueTitleRequired) { // if required, check unique title if (Category_Model_Category::exists($this->composeCategoryId())) { $this->getElement('title')->addError( 'The title you provided conflicts with another. ' . 'Please choose a different title.' ); $valid = false; } } return $valid; }
Category_Form_Manage::setUniqueTitleRequired | ( | $ | uniqueTitleRequired | ) |
Set whether unique title is required.
bool | $uniqueTitleRequired | If true then form validation will fail if title is not unique. |
{ $this->_uniqueTitleRequired = (bool) $uniqueTitleRequired; }
Category_Form_Manage::$_uniqueTitleRequired = true [protected] |