/**
* Devuelve un control según el tipo especificado)
*/
function mControl($dd, $opciones = false)
{
    if (!$opciones) {
        $opciones = array();
    }
    $id = isset($dd['id']) ? $dd['id'] : $dd['campo'];
    $valor = isset($opciones['valor']) ? $opciones['valor'] : false;
    $parametros = explode(" ", $dd["tipo"]);
    $tipo = $parametros[0];
    $atributos = array("id" => $id, "name" => $dd['campo']);
    if (isset($dd['clase'])) {
        $atributos['class'] = $dd['clase'];
    }
    if (isset($opciones['valor']) && $tipo != "texto") {
        $atributos['value'] = $opciones['valor'];
    }
    if (isset($dd['atributos']) && is_array($dd['atributos'])) {
        $atributos = $atributos + $dd["atributos"];
    }
    $cAtributos = mImplode(" %s='%s'", $atributos);
    $resto = substr($dd["tipo"], strpos($dd["tipo"], " ") + 1);
    switch ($tipo) {
        case "numero":
            if (isset($parametros[1])) {
                $min = si_es_key($parametros, 1, 0);
                $max = si_es_key($parametros, 2, 10);
                $campo = "<select {$cAtributos}>\n";
                for ($opcion = $min; $opcion < $max; $opcion++) {
                    $selected = $valor == $opcion ? ' selected' : '';
                    $campo .= "<option value='{$opcion}'{$selected}>{$opcion}</option>\n";
                }
                $campo .= "</select>\n";
            } else {
                $campo = "<input type='text' {$cAtributos}>";
            }
            break;
        case "url":
            $max = si_es_key($parametros, 1, 30);
            $size = si_es_key($parametros, 2, $max);
            $campo = "<input type='text' size='{$size}' maxlength='{$max}' {$cAtributos} >";
            break;
        case "cadena":
            $max = si_es_key($parametros, 1, 30);
            $size = si_es_key($parametros, 2, $max);
            $campo = "<input type='text' size='{$size}' maxlength='{$max}' {$cAtributos} >";
            break;
        case "texto":
            $cols = si_es_key($parametros, 1, 60);
            $filas = si_es_key($parametros, 2, 8);
            $campo = "<textarea cols='{$cols}' rows='{$filas}' {$cAtributos}>{$valor}</textarea>";
            break;
        case "lista":
            $lista = mExplode("|", ":", $resto);
            if (count($lista) < 5) {
                $campo = "";
                unset($atributos['id']);
                $cAtributos = mImplode(" %s='%s'", $atributos);
                foreach ($lista as $opcion => $opcionLabel) {
                    $checked = $valor == $opcion ? ' checked' : '';
                    $campo .= "<input value='{$opcion}' type='radio'{$checked} {$cAtributos}><span class='radio-label'> {$opcionLabel} </span>";
                }
            } else {
                $campo = "<select {$cAtributos}>\n";
                foreach ($lista as $opcion => $opcionLabel) {
                    $selected = $valor == $opcion ? ' selected' : '';
                    $campo .= "<option value='{$opcion}'{$selected}>{$opcionLabel}</option>\n";
                }
                $campo .= "</select>\n";
            }
            break;
        case "checkbox":
        case "booleano":
            $value = si_es_key($aOpciones, "value", 1);
            $campo = "<input type='checkbox' {$atributos}" . ($valor ? " selected " : "") . ">";
            break;
    }
    if (isset($dd["adicional"])) {
        $campo .= " <span class='control-adicional'>{$dd['adicional']}</span>";
    }
    // construir la label
    $etiqueta = isset($dd["cabecera"]) ? $dd["cabecera"] : $dd["campo"];
    if (isset($dd["obligatorio"])) {
        $label = "<label for='{$id}' class='control-obligatorio'>{$etiqueta}<span class='control-obligatorio'>(*)</span></label>";
    } else {
        $label = "<label for='{$id}'>{$etiqueta}</label>";
    }
    // maquetar label y control según estilo
    $estilos = array("dl" => "<dt>%s</dt>\n<dd>%s</dd>", "p" => '<p>%s %s</p>', "p-br" => '<p>%s <br> %s</p>', "table" => '<tr><th>%s</th><td>%s</td></tr>');
    if (!isset($opciones["estilo"]) || !isset($estilos[$opciones['estilo']])) {
        $estilo = $estilos['dl'];
    } else {
        $estilo = $estilos[$opciones['estilo']];
    }
    return "\n" . sprintf($estilo, $label, $campo);
}
Example #2
0
function maquetador_enlace($texto, $c = "", $a = "", $i = "", $marcador = "", $adicional = "", $paras = "")
{
    if (is_array($texto)) {
        $tempPara = is_array($texto['parametros']) ? mImplode("%s=%s", $texto['parametros'], "&amp;") : $texto['parametros'];
        $tempAdicional = is_array($texto['adicional']) ? mImplode("%s='%s' ", $texto['adicional']) : $texto['adicional'];
        $cRet = sprintf("<a href='%s?%s%s%s%s'%s>%s</a>", isset($texto['pagina']) ? "{$texto[pagina]}" : "", isset($texto['controlador']) ? "c={$texto[controlador]}" : "", isset($texto['accion']) ? "&amp;a={$texto[accion]}" : "", isset($texto['id']) ? "&amp;i={$texto[id]}" : "", isset($texto['parametros']) ? "&amp;{$tempPara}" : "", isset($texto['adicional']) ? " {$tempAdicional}" : "", isset($texto['texto']) ? "{$texto[texto]}" : "");
        if (isset($texto["etiqueta"])) {
            $cRet = cerrar_etiquetas($texto["etiqueta"], $cRet);
        }
    } else {
        $cRet = "<a href='?c={$c}&amp;a={$a}" . ($i != "" ? "&amp;i={$i}" : "") . "&amp;{$paras}' {$adicional} >{$texto}</a>";
        if ($marcador != '') {
            $cRet = cerrar_etiquetas($marcador, $cRet);
        }
    }
    return $cRet;
}