Subversion Repositories web.active

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download

<?php namespace ProcessWire;

/**
 * An Inputfield for handling HTML “hidden” form inputs
 * 
 * @property bool $renderValueAsInput Render the hidden input, even when in renderValue mode (default=false)
 * @property string $initValue Initial populated value if value attribute not separately populated (default='')
 *
 */
class InputfieldHidden extends Inputfield {

  public static function getModuleInfo() {
    return array(
      'title' => __('Hidden', __FILE__), // Module Title
      'version' => 101,
      'summary' => __('Hidden value in a form', __FILE__), // Module Summary
      'permanent' => true, 
      );
  }

  public function __construct() {
    parent::__construct();
    $this->setAttribute('type', 'hidden'); 
    $this->set('renderValueAsInput', false);
    $this->initValue = '';
  }

  public function ___render() {
    return "<input " . $this->getAttributesString() . " />"; 
  }
  
  public function ___renderValue() {
    if($this->renderValueAsInput) {
      return $this->render();
    } else {
      return parent::___renderValue();
    }
  }

  public function getAttributes() {
    $attrs = parent::getAttributes();
    if(!strlen($attrs['value']) && $this->initValue) $attrs['value'] = $this->initValue; 
    return $attrs; 
  }

  public function ___getConfigInputfields() {

    $inputfields = parent::___getConfigInputfields();

    // remove config fields that don't need to be here
    $f = $inputfields->getChildByName('collapsed');
    $inputfields->remove($f); 
    $f = $inputfields->getChildByName('columnWidth');
    $inputfields->remove($f); 

    /** @var InputfieldText $field */
    $field = $this->modules->get('InputfieldText');
    $field->setAttribute('name', 'initValue'); 
    $field->label = $this->_('Value');
    $field->description = $this->_('Value to be populated in this hidden field.'); 
    $field->setAttribute('value', $this->initValue); 
    $inputfields->append($field);
    return $inputfields; 
  }
  
}