function maquetador_genera($plantilla, $controladorDefecto = false, $accionDefecto = false) { global $aEstado; $pendientes = false; // precarga de modulos if (!is_array($aEstado)) { maquetador_evaluar_estado($controladorDefecto, $accionDefecto); } if (!isset($aEstado["modulos"])) { maquetador_precarga_modulos(); } // leer la plantilla if (!file_exists($plantilla)) { echo t("No exista la plantilla: [{$plantilla}]"); return false; } $html = maquetador_insertar_include($plantilla); $aGenerar = maquetador_extraer_marcas($html); foreach ($aGenerar as $marca => $contenido) { $aDatos = maquetador_extrae_modulo($marca); // averiguar el modulo if ($aDatos["modulo"] == "contenido") { $modulo = $aEstado["controlador"]; $aDatos["accion"] = $aDatos["accion"] == '' ? $aEstado["accion"] : $aDatos['accion']; $aDatos["id"] = $aDatos["id"] == '' ? $aEstado["id"] : $aDatos['id']; } elseif ($aDatos["modulo"] == "maquetador") { $pendientes[$marca] = $aDatos["accion"]; continue; } else { $modulo = $aDatos["modulo"]; } // comprobamos que el modulo es correcto if ($modulo == "t") { $aGenerar[$marca] = t($aDatos["accion"]); } else { // ver si es un modulo if ($modulo != "PUT" and $modulo != "PHP" and !isset($aEstado["modulos"][$modulo])) { $aGenerar[$marca] = "controlador desconocido: {$modulo}"; } else { // si inserta el modulo si cumple la condición if ($aDatos['condicional'] == "" or maquetador_evalua($aDatos['condicional'])) { // hay que mostrar el modulo switch ($modulo) { case "PUT": $aGenerar[$marca] = $aDatos["accion"]; break; case "PHP": $aGenerar[$marca] = eval("return " . $aDatos["accion"] . ";"); break; default: if ($aEstado["modulos"][$modulo]) { include_once $aEstado["modulos"][$modulo]; $aEstado["modulos"][$modulo] = false; } $aGenerar[$marca] = $modulo($aDatos["accion"], $aDatos["id"]); } } } } // else T } // for if ($pendientes) { foreach ($pendientes as $k => $accion) { $aGenerar[$k] = maquetador_script("genera", $accion); } } // ahorita solo queda calcular e imprimir el resultado echo strtr($html, $aGenerar); }
function maquetador_registro($accion, $tipoRegistro, $clave = "", $valor = "all") { static $aDatos; switch ($accion) { case "añadir": case "guardar": // primero añadimos las acciones,clave y valor switch ($tipoRegistro) { case "elemento": $aDatos["elemento"][$clave] .= $valor; break; case "elemento-nuevo": $aDatos["elemento"][$clave] = $valor; break; default: $aDatos[$tipoRegistro][$clave] = $valor; } break; case "genera": case "generar": // ahora generamos cada acción, mediante una plantilla // para crear las etiquetas pertinentes. $xhtml = maquetador_configurar("XHTML") ? "/" : ""; $aTemplates = array("js" => '<script type="text/javascript">%2$s</script>', "js-post" => '<script type="text/javascript">%2$s</script>', "script" => '<script src="%2$s" type="text/javascript"></script>', "style" => '<link rel="stylesheet" href="%s" type="text/css" media="%s" ' . $xhtml . '>', "http-equiv" => '<meta http-equiv="%s" content="%s"' . $xhtml . '>', "icono" => '<link rel="shortcut icon" href="%s" type="image/x-icon" ' . $xhtml . '>', "meta" => '<meta name="%s" content="%s"' . $xhtml . '>'); if ($tipoRegistro == "todos" || $tipoRegistro == "*") { // se imprimen todos salvo elementos y js-post. foreach ($aTemplates as $k => $v) { if ($k != "js-post") { $cRet .= maquetador_script("genera", $k); } } return $cRet; } elseif (isset($aTemplates[$tipoRegistro]) && isset($aDatos[$tipoRegistro])) { $plantilla = $aTemplates[$tipoRegistro]; foreach ($aDatos[$tipoRegistro] as $k => $v) { $cRet .= sprintf($plantilla, $k, $v) . "\n"; } return $cRet; } elseif (isset($aDatos["elemento"][$tipoRegistro])) { // se añade un elemento con div, li o dt $cTemp = $aDatos["elemento"][$tipoRegistro]; $cTag = strtolower(substr($cTemp, 0, 4)); if ($cTag == "<li>" || $cTag == "<li ") { return "<ul id='{$tipoRegistro}'>{$cTemp}</ul>"; } elseif ($cTag == "<dt>" || $cTag == "<dt " || $cTag == "<dd>" || $cTag == "<dd ") { return "<dl id='{$tipoRegistro}'>{$cTemp}</dl>"; } else { return "<div id='{$tipoRegistro}'>{$cTemp}</div>"; } } } return ""; }