Example #1
0
function smarty_function_input($params, &$smarty)
{
    $type = isset($params['type']) ? $params['type'] : 'text';
    $valueAtt = isset($params['value']) ? $params['value'] : '';
    // handle the data bindings
    if (isset($params['data_object'])) {
        if (!isset($params['data_field'])) {
            trigger_error("gui:input: if you specifiy a data object you must also specify a data field");
        }
        $object = $params['data_object'];
        $field = $params['data_field'];
        if (!isset($params['append']) || $params['append'] == false) {
            $form = $smarty->getTemplateVars('__zinc');
            if (!$form) {
                trigger_error("gui:input: if you specifiy a data object you must first use the 'openform' tag");
            }
            $name = $form->addBinding($object, $field);
        } else {
            $binding = new FormBinding($object, $field);
            Form::appendBindings(array($binding));
            $name = $binding->getName();
        }
        if (isset($params['default']) && ($object->{$field} === '' || $object->{$field} === NULL)) {
            $value = $params['default'];
        } else {
            $value = isset($params['value']) ? $params['value'] : $object->{$field};
        }
        $namePart = ' name="' . $name . '"';
        if ($type == 'radio') {
            $valuePart = ' value="' . $valueAtt . '"';
        } else {
            $valuePart = ' value="' . $value . '"';
        }
    } else {
        $value = $valueAtt;
        $name = isset($params['name']) ? $params['name'] : '';
        $namePart = isset($params['name']) ? ' name="' . $params['name'] . '"' : '';
        $valuePart = isset($params['value']) ? ' value="' . $params['value'] . '"' : '';
    }
    // pass on anything else they put in
    $extraFields = '';
    $extraMap = array();
    foreach ($params as $paramName => $paramValue) {
        // if($paramName == 'name' && !isset($params['id']))
        // 	$params['id'] = $paramValue;
        if (in_array($paramName, array('type', 'name', 'type', 'value', 'default', 'data_object', 'data_field', 'append', 'minlen', 'sameas', 'required', 'requireOther', 'otherValue', 'otherField', 'message', 'intrange'))) {
            continue;
        }
        if (substr($paramName, 0, 5) == 'data_') {
            $paramName[4] = '-';
        }
        $extraMap[$paramName] = $paramValue;
        $extraFields .= ' ' . $paramName . '="' . $paramValue . '"';
    }
    if (isset($params['class'])) {
        $classes = array_flip(explode(' ', trim($params['class'])));
    } else {
        $classes = array();
    }
    $required = isset($params['required']) && $params['required'];
    if ($required) {
        $extraFields .= ' data-constraint="required"';
        $classes['constraint'] = 1;
    }
    if (isset($params['sameas'])) {
        $extraFields .= ' data-constraint="sameas" data-sameas="' . $params['sameas'] . '"';
        $classes['constraint'] = 1;
    }
    if (isset($params['message'])) {
        $messageClause = '" data-message="' . $params['message'] . '"';
    } else {
        $messageClause = '';
    }
    if (isset($params['minlen'])) {
        $extraFields .= ' data-constraint="minlen" data-minlen="' . $params['minlen'] . $messageClause;
        $classes['constraint'] = 1;
    }
    if (isset($params['required'])) {
        $extraFields .= ' data-constraint="required" data-required="true" ' . $messageClause;
        $classes['constraint'] = 1;
    }
    // if(isset($params['requireOther']))
    // {
    // 	$extraSelectFields = array(
    // 		'data-constraint' => 'requireOther',
    // 		'data-other-value' => $params['otherValue'],
    // 		'data-other-field' => $params['otherField']
    // 	);
    // 	$classes['constraint'] = 1;
    // }
    if (isset($params['requireOther'])) {
        $extraFields .= ' data-constraint="requireOther" data-other-value="' . $params['otherValue'] . '" data-other-field="' . $params['otherField'] . '"' . $messageClause;
        $classes['constraint'] = 1;
    }
    if (isset($params['intrange'])) {
        $parts = explode(',', $params['intrange']);
        assert(count($parts) == 2);
        $extraFields .= ' data-constraint="intrange" data-range-min="' . $parts[0] . '" data-range-max="' . $parts[1] . '"' . $messageClause;
        $classes['constraint'] = 1;
    }
    $classClause = 'class="' . implode(' ', array_keys($classes)) . '"';
    $extraFields .= " {$classClause}";
    switch ($type) {
        case 'text':
        case 'submit':
        case 'hidden':
            return '<input type="' . $type . '"' . " {$namePart} {$valuePart} {$extraFields}>";
            break;
        case 'button':
            if (isset($params['href'])) {
                return '<a href="' . $params['href'] . "\" {$extraFields}>" . (isset($params['text']) ? $params['text'] : '') . "</a>";
            } else {
                return "<button {$namePart} {$valuePart} {$extraFields}>" . (isset($params['text']) ? $params['text'] : '') . "</button>";
            }
            break;
        case 'checkbox':
            $checked = $value == 't' ? ' checked' : '';
            $return = '<input value="f" type="hidden"' . " {$namePart} {$extraFields} {$checked}>";
            $return .= '<input value="t" type="' . $type . '"' . " {$namePart} {$extraFields} {$checked}>";
            return $return;
            break;
        case 'password':
            return '<input type="' . $type . '"' . " {$namePart} {$extraFields}>";
            break;
        case 'radio':
            $checked = $valueAtt == $value ? ' checked' : '';
            return '<input type="' . $type . '"' . " {$namePart} {$valuePart} {$extraFields} {$checked}>";
            break;
        case 'textarea':
            $return = '<textarea ' . $namePart . ' ' . $extraFields . '>';
            $return .= $value;
            $return .= '</textarea>';
            return $return;
            break;
        case 'select':
            require_once SMARTY_PLUGINS_DIR . 'function.html_options.php';
            $selectParams['selected'] = $value;
            if (isset($extraMap['option_table']) && $extraMap['option_table']) {
                $nameField = isset($selectParams['name_field']) ? $selectParams['name_field'] : 'name';
                $tableName = $extraMap['option_table'];
                $selectParams['options'] = SqlFetchSimpleMap("SELECT id, :nameField AS name FROM :tableName:identifier order by id", 'id', 'name', array('nameField:identifier' => $nameField, 'tableName' => $tableName));
            } else {
                if ($extraMap['options']) {
                    $selectParams['options'] = $extraMap['options'];
                }
            }
            $markup = '<select' . " {$namePart} {$valuePart} {$extraFields}>";
            $markup .= smarty_function_html_options($selectParams, $smarty);
            $markup .= '</select>';
            return $markup;
            break;
        default:
            trigger_error("unknown input type: {$type}");
            break;
    }
}
Example #2
0
 public function addBinding($object, $field)
 {
     $newBinding = new FormBinding($object, $field);
     $this->bindings[] = $newBinding;
     return $newBinding->getName();
 }
Example #3
0
function smarty_function_input($params, &$smarty)
{
    $type = isset($params['type']) ? $params['type'] : 'text';
    $valueAtt = isset($params['value']) ? $params['value'] : '';
    // handle the data bindings
    if (isset($params['data_object'])) {
        if (!isset($params['data_field'])) {
            trigger_error("gui:input: if you specifiy a data object you must also specify a data field");
        }
        $object = $params['data_object'];
        $field = $params['data_field'];
        if (!isset($params['append']) || $params['append'] == false) {
            if (!isset($smarty->zoop->form)) {
                trigger_error("gui:input: if you specifiy a data object you must first use the 'openform' tag");
            }
            $name = $smarty->zoop->form->addBinding($object, $field);
        } else {
            $binding = new FormBinding($object, $field);
            Form::appendBindings(array($binding));
            $name = $binding->getName();
        }
        $namePart = ' name="' . $name . '"';
        if ($type == 'radio') {
            if (isset($params['default']) && ($object->{$field} === '' || $object->{$field} === NULL)) {
                $value = $params['default'];
            } else {
                $value = $object->{$field};
            }
            $valuePart = ' value="' . $valueAtt . '"';
        } else {
            if (isset($params['default']) && ($object->{$field} === '' || $object->{$field} === NULL)) {
                $value = $params['default'];
            } else {
                $value = isset($params['value']) ? $params['value'] : $object->{$field};
            }
            $valuePart = ' value="' . $value . '"';
        }
    } else {
        $value = $valueAtt;
        $name = isset($params['name']) ? $params['name'] : '';
        $namePart = isset($params['name']) ? ' name="' . $params['name'] . '"' : '';
        $valuePart = isset($params['value']) ? ' value="' . $params['value'] . '"' : '';
    }
    // pass on anything else they put in
    $extraFields = '';
    $extraMap = array();
    foreach ($params as $paramName => $paramValue) {
        // if($paramName == 'name' && !isset($params['id']))
        // 	$params['id'] = $paramValue;
        if (in_array($paramName, array('type', 'name', 'type', 'value', 'default', 'data_object', 'data_field', 'append', 'required'))) {
            continue;
        }
        $extraMap[$paramName] = $paramValue;
        $extraFields .= ' ' . $paramName . '="' . $paramValue . '"';
    }
    $required = isset($params['required']) && $params['required'];
    if ($required && $type != 'checkbox') {
        $extraFields .= ' data-constraint="required" required="required"';
    }
    if (isset($params['sameas'])) {
        $extraFields .= ' data-constraint="sameas" data-sameas="' . $params['sameas'] . '"';
    }
    switch ($type) {
        case 'text':
        case 'submit':
        case 'hidden':
            return '<input type="' . $type . '"' . " {$namePart} {$valuePart} {$extraFields}>";
            break;
        case 'button':
            if (isset($params['href'])) {
                return '<a href="' . $params['href'] . " {$extraFields}>";
            } else {
                return "<button {$namePart} {$valuePart} {$extraFields}>";
            }
            break;
        case 'checkbox':
            $checked = $value == 't' ? ' checked' : '';
            $return = '<input value="f" type="hidden"' . " {$namePart} {$extraFields} {$checked}>";
            $return .= '<input value="t" type="' . $type . '"' . " {$namePart} {$extraFields} {$checked}>";
            return $return;
            break;
        case 'password':
            return '<input type="' . $type . '"' . " {$namePart} {$extraFields}>";
            break;
        case 'radio':
            if (isset($params['data_object'])) {
                $checked = $valueAtt == $value ? ' checked' : '';
            } else {
                $checked = isset($params['checked']) && $params['checked'] ? ' checked' : '';
            }
            return '<input type="' . $type . '"' . " {$namePart} {$valuePart} {$extraFields} {$checked}>";
            break;
        case 'textarea':
            $return = '<textarea ' . $namePart . ' ' . $extraFields . '>';
            $return .= $value;
            $return .= '</textarea>';
            return $return;
            break;
        case 'select':
            require_once $smarty->_get_plugin_filepath('function', 'html_options');
            $selectParams = $extraMap;
            $selectParams['name'] = $name;
            $selectParams['selected'] = $value;
            $nameField = 'name';
            if (isset($extraMap['option_table']) && $extraMap['option_table']) {
                $tableName = $extraMap['option_table'];
                $selectParams['options'] = SqlFetchSimpleMap("SELECT id, :nameField AS name FROM :tableName:identifier order by id", 'id', 'name', array('nameField:identifier' => $nameField, 'tableName' => $tableName));
            } else {
                if ($extraMap['options']) {
                    $selectParams['options'] = $extraMap['options'];
                }
            }
            return smarty_function_html_options($selectParams, $smarty);
            break;
        default:
            trigger_error("unknown input type: {$type}");
            break;
    }
}
Example #4
0
function smarty_function_input($params, &$smarty)
{
    $type = isset($params['type']) ? $params['type'] : 'text';
    $valueAtt = isset($params['value']) ? $params['value'] : '';
    // handle the data bindings
    if (isset($params['data_object'])) {
        if (!isset($params['data_field'])) {
            trigger_error("gui:input: if you specifiy a data object you must also specify a data field");
        }
        $object = $params['data_object'];
        $field = $params['data_field'];
        if (!isset($params['append']) || $params['append'] == false) {
            if (!isset($smarty->zoop->form)) {
                trigger_error("gui:input: if you specifiy a data object you must first use the 'init_form' tag");
            }
            $name = $smarty->zoop->form->addBinding(get_class($object), $object->getId(), $field);
        } else {
            $binding = new FormBinding(get_class($object), $object->getId(), $field);
            Form::appendBindings(array($binding));
            $name = $binding->getName();
        }
        if (isset($params['default']) && ($object->{$field} === '' || $object->{$field} === NULL)) {
            $value = $params['default'];
        } else {
            $value = $object->{$field};
        }
        $namePart = ' name="' . $name . '"';
        if ($type == 'radio') {
            $valuePart = ' value="' . $valueAtt . '"';
        } else {
            $valuePart = ' value="' . $value . '"';
        }
    } else {
        $value = $valueAtt;
        $namePart = isset($params['name']) ? ' name="' . $params['name'] . '"' : '';
        $valuePart = isset($params['value']) ? ' value="' . $params['value'] . '"' : '';
    }
    // pass on anything else they put in
    $extraFields = '';
    $extraMap = array();
    foreach ($params as $paramName => $paramValue) {
        if (in_array($paramName, array('type', 'name', 'type', 'value', 'default', 'data_object', 'data_field', 'append'))) {
            continue;
        }
        $extraMap[$paramName] = $paramValue;
        $extraFields .= ' ' . $paramName . '="' . $paramValue . '"';
    }
    switch ($type) {
        case 'text':
        case 'password':
        case 'checkbox':
        case 'submit':
            return '<input type="' . $type . '"' . " {$namePart} {$valuePart} {$extraFields}>";
            break;
        case 'radio':
            // var_dump($value);
            // var_dump($valueAtt);
            $checked = $valueAtt == $value ? ' checked' : '';
            return '<input type="' . $type . '"' . " {$namePart} {$valuePart} {$extraFields} {$checked}>";
            break;
        case 'textarea':
            $return = '<textarea name="' . $name . '" ' . $extraFields . '>';
            $return .= $value;
            $return .= '</textarea>';
            return $return;
            break;
        case 'select':
            require_once $smarty->_get_plugin_filepath('function', 'html_options');
            $selectParams = $extraMap;
            $selectParams['name'] = $name;
            $selectParams['selected'] = $value;
            return smarty_function_html_options($selectParams, $smarty);
            break;
        default:
            trigger_error("unknown input type: {$type}");
            break;
    }
}