Perforce Chronicle 2012.2/486814
API Documentation
|
This form is specialized for quickly editing content menu items from the context of content editing. More...
Public Member Functions | |
init () | |
Defines the elements that make up the 'quick' content menu item form. | |
isValid ($data) | |
Validate the form, if item is deleted, don't validate other fields. | |
setDefaults ($defaults) | |
Extends parent to hide label field if using content's title. | |
Protected Member Functions | |
_getLocations () | |
Extended to only include menus we want to show when editing content. |
This form is specialized for quickly editing content menu items from the context of content editing.
Menu_Form_MenuItemContentQuick::_getLocations | ( | ) | [protected] |
Extended to only include menus we want to show when editing content.
Reimplemented from Menu_Form_MenuItem.
{ $filter = new P4Cms_Record_Filter; $filter->add('showInContentForm', '1'); return P4Cms_Menu::fetchMixed(array('filter' => $filter)); }
Menu_Form_MenuItemContentQuick::init | ( | ) |
Defines the elements that make up the 'quick' content menu item form.
Called automatically when the form object is created.
Reimplemented from Menu_Form_MenuItemContent.
{ parent::init(); // remove elements we don't care to expose here. $remove = array('type', 'contentId', 'target', 'class', 'save'); array_map(array($this, 'removeElement'), $remove); $this->removeDisplayGroup('buttons'); // in content post-save (when we are actually dealing with this form), // we need access to fields that are normally ignored, expose them. $expose = array('uuid', 'menuId', 'position', 'location'); foreach ($expose as $name) { $this->getElement($name)->setIgnore(false); } // tweak label element to change label and hide input by default. $label = $this->getElement('label'); $label->getDecorator('htmlTag')->setOption('style', 'display: none;'); // hide the onClick element while editing menu items in the context of // editing content. $onClick = $this->getElement('onClick'); $onClick->getDecorator('htmlTag')->setOption('style', 'display: none;'); $onClick->getDecorator('label')->setOption('style', 'display: none;'); // tweak checkbox onChange behavior for content editing context. // show/hide the label field and update its value as appropriate. $this->getElement('autoLabel')->setAttrib( "onClick", " var fieldset = new dojo.NodeList(this).closest('fieldset')[0]; var label = dojo.query('input[type=text][name*=\'label\']', fieldset)[0]; if (this.anim && this.anim.status() != 'stopped') { this.anim.stop(); } if (this.checked) { dojo.attr(label, 'disabled', true); this.anim = p4cms.ui.hide(label.parentNode); } else { // update title to match content title var subForm = new dojo.NodeList(this).closest('[dojotype=p4cms.content.SubForm]')[0]; subForm = dijit.byNode(subForm); var title = dojo.query('input[name=title]', subForm.getContentEntry().domNode)[0]; label.value = title ? title.value : ''; dojo.removeAttr(label, 'disabled'); this.anim = p4cms.ui.show(label.parentNode); } " ); // add a button to delete the menu item. $this->addElement( 'checkbox', 'remove', array( 'label' => "Remove", 'order' => -1000, 'class' => 'menu-item-remove', 'onClick' => " var checkbox = this; p4cms.ui.hide( new dojo.NodeList(checkbox).closest('fieldset')[0], {onEnd: function(){dojo.attr(checkbox, 'checked', true);}} ); " ) ); $element = $this->getElement('remove'); $this->moveCheckboxLabel($element); $element->getDecorator('htmlTag')->setOption('class', 'menu-item-remove'); }
Menu_Form_MenuItemContentQuick::isValid | ( | $ | data | ) |
Validate the form, if item is deleted, don't validate other fields.
array | $data | the data to validate. |
Reimplemented from Menu_Form_MenuItem.
{ // dissolve a copy of data into a new values array so // we can find the remove element $values = $data; if ($this->isArray()) { $eBelongTo = $this->getElementsBelongTo(); $values = $this->_dissolveArrayValue($data, $eBelongTo); } // if we are doing a remove skip other checks if (isset($values['remove']) && $values['remove']) { return true; } return parent::isValid($data); }
Menu_Form_MenuItemContentQuick::setDefaults | ( | $ | defaults | ) |
Extends parent to hide label field if using content's title.
P4Cms_Record | array | $defaults | the default values to set on elements |
Reimplemented from Menu_Form_MenuItemContent.
{ parent::setDefaults($defaults); $this->getElement('label')->getDecorator('htmlTag')->setOption( 'style', $this->getValue('label') ? null : 'display: none;' ); return $this; }