<?php
/**
* @package RSForm! Pro
* @copyright (C) 2007-2019 www.rsjoomla.com
* @license GPL, http://www.gnu.org/copyleft/gpl.html
*/
defined('_JEXEC') or die;
require_once JPATH_ADMINISTRATOR.'/components/com_rsform/helpers/field.php';
class RSFormProFieldPassword extends RSFormProField
{
// backend preview
public function getPreviewInput()
{
$value = (string) $this->getProperty('DEFAULTVALUE', '');
$rule = $this->getProperty('VALIDATIONRULE', 'none');
$size = $this->getProperty('SIZE', 0);
$placeholder = $this->getProperty('PLACEHOLDER', '');
$codeIcon = '';
if ($this->hasCode($value)) {
$value = '';
$codeIcon = RSFormProHelper::getIcon('php');
} else {
if ($rule == 'password') {
$value = '';
}
}
return $codeIcon . '<input type="password" value="' . $this->escape($value) . '" size="' . (int) $size . '" ' . (!empty($placeholder) ? 'placeholder="' . $this->escape($placeholder) . '"' : '') . '/>';
}
// functions used for rendering in front view
public function getFormInput() {
$value = (string) $this->getValue();
$name = $this->getName();
$id = $this->getId();
$size = $this->getProperty('SIZE', 0);
$maxlength = $this->getProperty('MAXSIZE', 0);
$placeholder = $this->getProperty('PLACEHOLDER', '');
$attr = $this->getAttributes();
$type = 'password';
$additional = '';
// Start building the HTML input
$html = '<input';
// Parse Additional Attributes
if ($attr) {
foreach ($attr as $key => $values) {
// @new feature - Some HTML attributes (type, size, maxlength) can be overwritten
// directly from the Additional Attributes area
if (($key == 'type' || $key == 'size' || $key == 'maxlength') && strlen($values)) {
${$key} = $values;
continue;
}
$additional .= $this->attributeToHtml($key, $values);
}
}
// Set the type & value
$html .= ' type="'.$this->escape($type).'"'.
' value="'.$this->escape($value).'"';
// Size
if ($size) {
$html .= ' size="'.(int) $size.'"';
}
// Maxlength
if ($maxlength) {
$html .= ' maxlength="'.(int) $maxlength.'"';
}
// Placeholder
if (!empty($placeholder)) {
$html .= ' placeholder="'.$placeholder.'"';
}
// Name & id
$html .= ' name="'.$this->escape($name).'"'.
' id="'.$this->escape($id).'"';
// Additional HTML
$html .= $additional;
// Close the tag
$html .= ' />';
return $html;
}
// @desc Overridden here because we need to make sure VALIDATIONRULE is not 'password'
// Passwords shouldn't be shown as a default value
public function getValue() {
$rule = $this->getProperty('VALIDATIONRULE', 'none');
if ($rule == 'password') {
return '';
}
return parent::getValue();
}
// @desc All textboxes should have a 'rsform-password-box' class for easy styling
public function getAttributes() {
$attr = parent::getAttributes();
if (strlen($attr['class'])) {
$attr['class'] .= ' ';
}
$attr['class'] .= 'rsform-password-box';
return $attr;
}
}