/** * 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); }
function maquetador_enlace($texto, $c = "", $a = "", $i = "", $marcador = "", $adicional = "", $paras = "") { if (is_array($texto)) { $tempPara = is_array($texto['parametros']) ? mImplode("%s=%s", $texto['parametros'], "&") : $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']) ? "&a={$texto[accion]}" : "", isset($texto['id']) ? "&i={$texto[id]}" : "", isset($texto['parametros']) ? "&{$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}&a={$a}" . ($i != "" ? "&i={$i}" : "") . "&{$paras}' {$adicional} >{$texto}</a>"; if ($marcador != '') { $cRet = cerrar_etiquetas($marcador, $cRet); } } return $cRet; }