TooltipDialogButton.php #1

  • //
  • guest/
  • perforce_software/
  • chronicle/
  • main/
  • library/
  • P4Cms/
  • Form/
  • Element/
  • TooltipDialogButton.php
  • View
  • Commits
  • Open Download .zip Download (3 KB)
<?php
/**
 * A drop-down button with a tooltip dialog.
 *
 * To populate the tooltip dialog, set the href or
 * content properties of the element.
 *
 * @copyright   2011 Perforce Software. All rights reserved.
 * @license     Please see LICENSE.txt in top-level folder of this distribution.
 * @version     <release>/<patch>
 */
class P4Cms_Form_Element_TooltipDialogButton extends Zend_Dojo_Form_Element_Dijit
{
    public      $helper             = 'CustomDijit';

    protected   $_href              = null;
    protected   $_content           = null;
    protected   $_dialogDojoType    = 'p4cms.ui.TooltipDialog';

    /**
     * Dijit parameters
     * @var array
     */
    public $dijitParams = array(
        'dojoType' => 'dijit.form.DropDownButton',
    );

    /**
     * Set the label to display in the button.
     * We implement this method to copy the label to dijit params.
     *
     * @param   string  $label  the label to display in the button.
     * @return  P4Cms_Form_Element_TooltipDialogButton  provides fluent interface.
     */
    public function setLabel($label)
    {
        $this->dijitParams['label'] = $label;
        parent::setLabel($label);

        return $this;
    }

    /**
     * Set the href to use for the tooltip dialog.
     *
     * @param   string  $href   the href to pass set on the tooltip dialog.
     * @return  P4Cms_Form_Element_TooltipDialogButton  provides fluent interface.
     */
    public function setHref($href)
    {
        $this->_href = (string) $href;

        return $this;
    }

    /**
     * Set the content to put in the tooltip dialog.
     *
     * @param   string  $content    the content to put in the tooltip dialog.
     */
    public function setContent($content)
    {
        $this->_content = (string) $content;

        return $this;
    }

    /**
     * Get the rendered tooltip dialog. The custom dijit helper uses the
     * value of the element to populate the content of the dijit - that is
     * why we use getValue() to provide the rendered dialog.
     *
     * @return  string  the rendered tooltip dialog.
     */
    public function getValue()
    {
        $view = $this->getView();

        return $view->customDijit(
            $this->getId() . '-tooltip-dialog',
            $this->_content,
            $this->_getTooltipAttribs()
        );
    }

    /**
     * Default decorators
     *
     * Uses only 'DijitElement' and 'DtDdWrapper' decorators by default.
     *
     * @return void
     */
    public function loadDefaultDecorators()
    {
        if ($this->loadDefaultDecoratorsIsDisabled()) {
            return;
        }

        $decorators = $this->getDecorators();
        if (empty($decorators)) {
            $this->addDecorator('DijitElement')
                 ->addDecorator('DtDdWrapper');
        }
    }

    /**
     * Get the attributes to set on the tooltip element.
     *
     * @return  array   key/value attributes for the dijit element.
     */
    protected function _getTooltipAttribs()
    {
        return array_merge(
            $this->getAttribs(),
            array(
                'dojoType'  => $this->_dialogDojoType,
                'href'      => $this->_href
            )
        );
    }
}
# Change User Description Committed
#1 16170 perforce_software Move Chronicle files to follow new path scheme for branching.
//guest/perforce_software/chronicle/library/P4Cms/Form/Element/TooltipDialogButton.php
#1 8972 Matt Attaway Initial add of the Chronicle source code