function mysql_mlookupGetEuEs($cSQL, $idioma = "") { if ($idioma == "") { global $TIDIOMA_DEFECTO; $idioma = $TIDIOMA_DEFECTO; } $aDatos = mysql_query_registro($cSQL); if ($idioma == "eu") { return $aDatos[0] != "" ? $aDatos[0] : $aDatos[1]; } else { return $aDatos[1] != "" ? $aDatos[1] : $aDatos[0]; } }
/** * Tabla para editar/añdir un registro completo */ function tablaEdicion($cTitulo, $aDatos, $cSQL = "", $aHidden = "", $cEnviar = "", $aItzuli = "") { $aAfter = array(); $cResul = $cTitulo ? "<h2><span>{$cTitulo}</span></h2>\n" : ""; $cResul .= "\n<form name='editar' method='post' action='" . mScript() . "' enctype='multipart/form-data' >\n<div>"; // Buscamos el primero campo obligatorio. foreach ($aDatos as $fila) { if ($fila["acceso"] !== false and isset($fila["verifica"]) and $fila["verifica"] == "no_vacio") { $cResul .= "<div class='obligatorio'>*" . t("beherrezkoa") . "</div>"; break; } } $cHidden = ""; if (is_array($aHidden)) { foreach ($aHidden as $name => $value) { $cHidden .= "<input type='hidden' name='{$name}' value='{$value}' />\n"; } } $cTabla = "<table class='edicion'>\n"; if ($cSQL != "") { /* en un modificación los valores se obtienen por una consulta SQL */ $lerroa = mysql_query_registro($cSQL); } else { /* en una adición de obtienen con los valores por defecto */ $lerroa = array(); foreach ($aDatos as $fila) { $lerroa[$fila["campo"]] = isset($fila["defecto"]) ? $fila["defecto"] : ""; } } $nCont = 1; if ($lerroa) { foreach ($aDatos as $fila) { if ($fila["acceso"] === false) { continue; } $aParametros = explode(" ", $fila["tipo"]); $cTipo = strtolower($aParametros[0]); if ($cTipo != "hidden" and $cTipo != "separador" and $cTipo != "codigodirecto" and $cTipo != "fijo") { $cTabla .= "\n<tr>\n"; if (isset($fila["verifica"]) and $fila["verifica"] == "no_vacio") { $cTabla .= "<th><label for='campo_{$nCont}' class='obligatorio'>" . $fila["cabecera"] . "*</label></th>\n"; } else { $cTabla .= "<th><label for='campo_{$nCont}'>" . $fila["cabecera"] . "</label></th>\n"; } $cTabla .= "<td>"; } $generaTDTR = true; switch ($cTipo) { /* @TODO Traducir literales */ case "fijo": break; case "adjunto": if ($lerroa[$fila["campo"]]) { $cTabla .= "<a href='" . $aParametros[1] . "/" . $lerroa[$fila["campo"]]; $cTabla .= "' > " . corta($lerroa[$fila["campo"]], 50) . "</a><br>"; $cTabla .= t("Cambiar fichero adjunto: ") . "<input type='file' name='" . $fila["campo"] . "' class='botoiak' />"; } else { $cTabla .= t("Adjuntar nuevo archivo: ") . "<input type='file' name='" . $fila["campo"] . "' class='botoiak' />"; } $fila["adicional"] .= ($fila["adicional"] ? "<br/>" : "") . "(MAX: " . ini_get("upload_max_filesize") . "bytes)"; break; case "imagen": case "irudia": if ($lerroa[$fila["campo"]]) { $cTabla .= "<img src='./" . $aParametros[1] . "/" . $lerroa[$fila["campo"]] . "' class='irudia' />"; $cTabla .= t("Cambiar imagen: ") . "<input type='file' name='" . $fila["campo"] . "' class='botoiak' />\n"; if ($fila["adicional"]) { $cTabla .= "<span class='adicional'>" . $fila["adicional"] . "</span>"; } $cTabla .= "<br/>" . t("Borrar imagen: ") . "<input type='checkbox' name='{$fila[campo]}_EZABATU' value='1' />"; } else { $cTabla .= t("Sin imagen") . "<br/>"; $cTabla .= t("Nueva imagen: ") . "<input type='file' name='" . $fila["campo"] . "' class='botoiak' />"; } break; case "separador": $cTabla .= "\n<tr>\n"; $cTabla .= "<th colspan='2' class='separador'>" . $fila["cabecera"] . "</th></tr>\n"; $generaTDTR = false; break; case "codigodirecto": $aAfter[] = $fila["funcion"]; break; case "hidden": $cHidden .= "<input type='hidden' value='" . (isset($fila["value"]) ? $fila["value"] : $lerroa[$fila["campo"]]) . "' name='" . $fila["cabecera"] . "' />"; $generaTDTR = false; break; case "listavalores": case "lista": $cTabla .= "<select name='" . $fila["campo"] . "' id='campo_{$nCont}' >\n"; if (isset($fila["valoresAdicionales"])) { foreach ($fila["valoresAdicionales"] as $adicionalID => $adicionalValor) { $cTabla .= "<option value='" . $adicionalID . "'" . ($adicionalID == $lerroa[$fila["campo"]] ? " SELECTED " : "") . ">"; $cTabla .= $adicionalValor . "</option>\n"; } } $aLista = explode("|", substr($fila["tipo"], $cTipo == "lista" ? 6 : 13)); $nParametros = 0; while ($aLista[$nParametros]) { if ($cTipo == "lista") { $cTabla .= "<option value='{$nParametros}'" . ($lerroa[$fila["campo"]] == $nParametros ? " SELECTED " : "") . " >"; } else { $cTabla .= "<option value='" . $aLista[$nParametros] . "'"; $cTabla .= ($lerroa[$fila["campo"]] == $aLista[$nParametros] ? " SELECTED " : "") . " >"; } $cTabla .= $aLista[$nParametros] . "</option>\n"; $nParametros++; } $cTabla .= "</select>\n"; break; case "listafuncion": case "listafuncioncadena": case "listasql": $cTabla .= "<select name='" . $fila["campo"] . "' id='campo_{$nCont}' " . (isset($fila["clase"]) ? " class='" . $fila["clase"] . "'" : "") . ">\n"; if (isset($fila["valoresAdicionales"])) { foreach ($fila["valoresAdicionales"] as $adicionalID => $adicionalValor) { $cTabla .= "<option value='" . $adicionalID . "'"; if (substr($adicionalValor, 0, 3) == "---") { $cTabla .= " disabled='disabled' "; } if ($adicionalID == $lerroa[$fila["campo"]]) { $cTabla .= " selected='selected' "; } $cTabla .= ">" . $adicionalValor . "</option>\n"; } } if ($cTipo == "listasql") { $rsTemporal = mysql_query(substr($fila["tipo"], 8)); while ($lerroaTemp = mysql_fetch_array($rsTemporal)) { $cTabla .= "<option value='" . $lerroaTemp[0] . "'" . ($lerroaTemp[0] == $lerroa[$fila["campo"]] ? " SELECTED " : ""); $cTabla .= " >" . $lerroaTemp[1] . "</option>\n"; } mysql_free_result($rsTemporal); } else { $aTemporal = call_user_func($aParametros[1]); foreach ($aTemporal as $clave => $valor) { $cTabla .= "<option value='" . $clave . "'" . ($clave == $lerroa[$fila["campo"]] ? " SELECTED " : ""); $cTabla .= " >" . $valor . "</option>\n"; } } $cTabla .= "</select>\n"; break; case "checkbox": $cTabla .= "<input type='checkbox' id='campo_{$nCont}' name='" . $fila["campo"] . "'"; $cTabla .= ($lerroa[$fila["campo"]] == 1 ? " checked " : "") . " value='1' />"; break; case "info": $cTabla .= "<input type='text' name='" . $fila["campo"] . "' value='" . $lerroa[$fila["campo"]] . "'"; $cTabla .= " disabled='disabled' class='campoInformativo' id='campo_{$nCont}' />"; break; case "html": if (isset($aParametros[2])) { $cTabla .= call_user_func($aParametros[1], $lerroa[$aParametros[2]]); } else { $cTabla .= call_user_func($aParametros[1], $lerroa); } break; case "infofuncion": $cTabla .= "<input type='text' "; if (isset($fila['campo'])) { $cTabla .= " name='" . $fila["campo"] . "'"; } if (isset($aParametros[2])) { $cTabla .= " value='" . call_user_func($aParametros[1], $lerroa[$aParametros[2]]) . "'"; } else { $cTabla .= " value='" . call_user_func($aParametros[1], $lerroa) . "'"; } $cTabla .= " disabled='disabled' class='campoInformativo' id='campo_{$nCont}' />"; break; case "nuevopassword": case "verificapassword": $cTabla .= "<input type='password' id='campo_{$nCont}' value='' name='" . $fila["campo"] . "'"; if (count($aParametros) == 1) { $cTabla .= " size='" . $aParametros[1] . "' maxlength='" . $aParametros[1] . "'/>"; } elseif (count($aParametros) == 2) { $cTabla .= " size='" . $aParametros[1] . "' maxlength='" . $aParametros[2] . "'/>"; } else { $cTabla .= " >"; } break; case "texto": if (defined("FCKEDITOR") and $aParametros[1] > 4) { $oFCKeditor = new FCKeditor($fila["campo"]); $oFCKeditor->BasePath = FCKEDITOR; $oFCKeditor->Value = $lerroa[$fila["campo"]]; $oFCKeditor->Height = $aParametros[1] * 16; $oFCKeditor->Width = $aParametros[2] * 6; $cTabla .= $oFCKeditor->Create(); $generaTDTR = false; } else { $cTabla .= "<textarea id='campo_{$nCont}' {$fila[WYSIWYG]} rows='" . $aParametros[1] . "' cols='" . $aParametros[2] . "' name='" . $fila["campo"] . "'>"; $cTabla .= $lerroa[$fila["campo"]] . "</textarea>"; } break; case "readonly": $cTabla .= ddlib_etiqueta_html("input", array("type" => "text", "id" => "campo_{$nCont}", "value" => $lerroa[$fila["campo"]], "name" => $fila["campo"], "readonly" => 'readonly', "size" => $aParametros[1])); break; case "cadena": $cTabla .= "<input type='text' id='campo_{$nCont}' value='" . $lerroa[$fila["campo"]] . "' name='" . $fila["campo"] . "'"; switch (count($aParametros)) { case 2: $cTabla .= " size='" . $aParametros[1] . "' maxlength='" . $aParametros[1] . "'/>"; break; case 3: $cTabla .= " size='" . $aParametros[1] . "' maxlength='" . $aParametros[2] . "'/>"; break; default: $cTabla .= " />"; break; } break; case "fecha": $cTabla .= sprintf("<input type='text' id='campo_{$nCont}' value='%s' name='%s' size='8' onclick=\"mostrarCalendario('campo_{$nCont}','1','2010')\">", $lerroa[$fila["campo"]], $fila["campo"]) . "<div id='calendario' style='visibility:hidden;position:relative;' class='arrastrable' ></div>"; break; default: $cTabla .= "<input type='text' id='campo_{$nCont}' value='" . $lerroa[$fila["campo"]] . "' name='" . $fila["campo"] . "'/>"; break; } if ($generaTDTR) { // dibujar la información adicional si procede if ($fila["adicional"] and $cTipo != "imagen" and $cTipo != "irudia") { $cTabla .= "<span class='adicional'>" . $fila["adicional"] . "</span>"; } $cTabla .= "</td></tr>\n"; } $nCont++; } // del foreach // botones de Enviar y Volver. $cTabla .= "<tr><td class='botoiak' colspan='2'><input type='submit' value='{$cEnviar}' class='botoiak' />"; if ($aItzuli) { $cTabla .= "<input type='reset' value ='" . t("Volver") . "' onclick=\"location.href='?c={$aItzuli[c]}&a={$aItzuli[a]}'\" class='botoiak' />"; } $cTabla .= "</td></tr>\n"; $cResul .= $cHidden . "\n" . $cTabla; } $cResul .= "</table>\n"; $cResul .= "</div></form>\n"; foreach ($aAfter as $i => $c) { $cResul .= call_user_func($c, $lerroa); } return $cResul; }
function ddlib_edicion($aTabla, $cSQL = "", $aOpciones) { /* aTabla acceso defecto verifica tipo separadortabla separador hidden fijo htmldespues adjunto directorio imagen directorio lista ->[lista] listasql SQL listafuncion funcion_a_llamar $formatolista checkbox checkboxes utiliza el campo etiquetas infofijo información infofuncion funcion readonly info htmlfijo HTML-bruto htmlfuncion funcion nuevopassword size max textos cols=40 fila=8 cadena size=40 max=(size or 40) -->sino un input=text adicional atributos id clase cSQL si existe, es una modificación sino una inserción (registro nuevo aOpciones titulo tituloSinHTML metodo enviar hidden tablaID tablaClase prefijoId (campo) volver */ $prefijoID = _ddlib_opcion($aOpciones, "prefijoID", "campo") . "_"; // titulo $cResul = ""; if (isset($aOpciones["titulo"])) { $cResul .= $aOpciones["tituloSinHTML"] == true ? $aOpciones["titulo"] : "<h2><span>{$aOpciones[titulo]}</span></h2>\n"; } // Se usará mas adelante $cEnviar = por_defecto($aOpciones['enviar'], t("Enviar")); $cMetodo = por_defecto($aOpciones["metodo"], "post"); $cEnctype = $cMetodo == "post" ? 'multipart/form-data' : 'application/x-www-form-urlencoded'; $cResul .= "\n<form name='editar' method='{$cMetodo}' action='" . _ddlib_script() . "' enctype='{$cEnctype}' >\n"; $cHidden = ""; $aAfter = array(); if (isset($aOpciones["hidden"])) { foreach ($aOpciones["hidden"] as $name => $value) { $cHidden .= "<input type='hidden' name='{$name}' value='{$value}' />\n"; } } if (isset($aOpciones["siguienteAccion"])) { $temp = $aOpciones["siguienteAccion"]; $cHidden .= "<input type='hidden' name='c' value='{$temp[0]}' />\n"; $cHidden .= "<input type='hidden' name='a' value='{$temp[1]}' />\n"; if (isset($temp[2])) { $cHidden .= "<input type='hidden' name='i' value='{$temp[2]}' />\n"; } } // se revisan los campos para ver ocultos, obligatorios y demás foreach ($aTabla as $k => $dd) { list($tipo) = explode(" ", $dd["tipo"]); $tipo = strtolower($tipo); // campos hidden if ($tipo == "hidden") { $cHidden .= sprintf("<input type='hidden' value='%s' name='%s'/>", $dd["value"] || $aDatos[$dd["campo"]], $dd['campo']); } if ($tipo == "htmldespues") { $aAfter[] = por_defecto($dd["funcion"], substr($dd["tipo"], 12)); } // Buscamos campos obligatorios if ($aCelda["acceso"] !== false and $aCelda["verifica"] == "no_vacio") { $lObligatorio = true; } } if ($lObligatorio) { $cResul .= "<div class='obligatorio'>*" . t("beherrezkoa") . "</div>"; } // calcular la cabecera (pie incluido ) y luego el cuerpo. $atributosTabla = "class='" . _ddlib_opcion($aOpciones, "tablaClase", "edicion") . "'"; $ultimaTabla = ""; // obtener los valores if ($cSQL != "") { /* en un modificación los valores se obtienen por una consulta SQL */ $aDatos = mysql_query_registro($cSQL); } else { /* en una adición de obtienen con los valores por defecto */ $aDatos = array(); foreach ($aTabla as $dd) { if (isset($dd["campo"])) { $aDatos[$dd["campo"]] = isset($dd["defecto"]) ? $dd["defecto"] : ""; } else { if (is_array($dd["campos"]) && is_array($dd["defectos"])) { foreach ($dd["campos"] as $campo => $tipo) { $aDatos[$campo] = $dd["defectos"]["campo"]; } } } } } // empieza el bucle para dibujar los valores $nCont = 1; $nTabla = 1; if ($aDatos) { $cTable = ""; foreach ($aTabla as $k => $dd) { if ($dd["acceso"] === false) { continue; } // obtener el tipo de campo $aParametros = explode(" ", $dd["tipo"]); $cTipo = strtolower($aParametros[0]); switch ($cTipo) { // casos especiales case "htmldespues": case "hidden": case "fijo": break; // separador // separador case "separadortabla": if ($ultimaTabla) { $cTabla .= "\n</table>"; } $ultimaTabla = por_defecto($aOpciones["tablaID"], "tabla-{$nCont}"); $nTabla++; $cTabla .= "\n<table {$atributosTabla} id='{$ultimaTabla}'>\n"; case "separador": if (!$ultimaTabla) { $ultimaTabla = por_defecto($aOpciones["tablaID"], "tabla-{$nCont}"); $cTabla .= "\n<table {$atributosTabla} id='{$ultimaTabla}'>\n"; } $atributos = _ddlib_atributos($dd, "{$prefijoID}{$nCont}"); $cTabla .= "\n<tr class='separador'>\n"; $cTabla .= "<th colspan='2' {$atributos}>{$dd[cabecera]}</th></tr>\n"; break; // adjuntos e imagenes // adjuntos e imagenes default: if ($visualizar = ddlib_editarCampo($dd, $aDatos, "{$prefijoID}{$nCont}")) { if (!$ultimaTabla) { $ultimaTabla = por_defecto($aOpciones["tablaID"], "tabla-{$nCont}"); $cTabla .= "\n<table {$atributosTabla} id='{$ultimaTabla}'>\n"; } $obligatorio = $dd["verifica"] == "no_vacio" ? " class='obligatorio'" : ""; $adicional = $dd["adicional"] ? "<span class='adicional'>{$dd[adicional]}</span>" : ""; if (isset($dd["campos"])) { // los campos multiples no tienen etiqueta $cTabla .= "\n <tr><th {$obligatorio}>{$dd[cabecera]}</th>"; } else { $cTabla .= "\n <tr><th><label for='{$prefijoID}{$nCont}' {$obligatorio}>{$dd[cabecera]}</label></th>"; } $cTabla .= "\n <td>{$visualizar} {$adicional}</td></tr>"; } } $nCont++; } // fin del bucle foreach del dd // botones de Enviar y Volver. $cTabla .= "<tr><td class='botones-enviar' colspan='2'><input type='submit' value='{$cEnviar}' class='boton' />"; if ($aOpciones["volver"] === true) { $cTabla .= "<a href='" . strtr($_SERVER["HTTP_REFERER"], array("&" => "&")) . "' class='boton'>Volver</a>"; } $cTabla .= "</td></tr>\n"; } $cResul .= $cTabla . "</table>\n" . $cHidden . "\n" . "</form>\n"; foreach ($aAfter as $funcion) { $cResul .= call_user_func($funcion, $aDatos); } return $cResul; }