OOoES/Desarrollo/PlantillaWeb
From OpenOffice.org Wiki
Este es un proyecto para poder tener un Repositorio de Plantillas. Este repositorio sera una pagina web donde puedas subir ODF y generar un thumbnail del documento.
El ODF es un archivo zip y puedes usar php-zlib para extraer la portada de la plantilla.
plantilla.ott
|
|- Configuration/accelerator
| current.xml
|- META-INF/
| manifest.xml
|- Thumbnail
| thumbnail.png <-- Archivo que queremos extraer
| meta.xml
| settings.xml
| styles.xml
| mimetype
| layout-cache
| content.xml
Script en php donado por Sandino Araico:
[php]
- !/usr/bin/php
<?
- Copyright (c) 2007 Sandino Araico Sánchez
- This script is proof of concept
- Usage: php odf-thumbnail.php > eaea.png
- Licencesed to JZA under the GNU GPL version 3
- as published in http://www.gnu.org/licenses/gpl.txt
define('MY_FILE_NAME', '2007-08-20-cotizacion-vpn.odt'); echo get_thumbnail_from_odf_file(MY_FILE_NAME); function get_thumbnail_from_odf_file($filename) {
if(!file_exists($filename)) return 0;
$zip = zip_open($filename);
if(empty($zip)) return 0;
while($zip_entry=zip_read($zip)) {
$filename=zip_entry_name($zip_entry);
if($filename == 'Thumbnails/thumbnail.png') {
if(!zip_entry_open ( $zip, $zip_entry, 'r' )) return 0;
$thumbnail=;
while($thumbnail_string=zip_entry_read ( $zip_entry, 1000 )) {
$thumbnail.=$thumbnail_string;
}
}
} zip_close($zip); return $thumbnail; } ?>
La aplicacion debe:
- Clasificar la plantilla
- Nombrarla y agregar informacion (metatags?)
- Extraer la imagen del documento
- Presentarlo en una galeria para bajar
Contents |
Uploader
El uploader no tiene nada de diferencia es un upload tipo FTP. La organizacion en el backend deber ser renombrado el archivo a una secuencia unica. El nombre original se guardara en la base de dato junto con informacion alternativa como:
- Autor
- Titulo
- Fecha de Upload
- Meta-tags
archivo.ott --> /repositorio/2sdfaLDFWal
|- MySQL: repositorio.archivo.nombre_archivo('archivo.ott')
Snippet de codigo donado por [Carlos Colorado].
[php]
<?php
include_once("snippets/debug.php");
include_once("lib/php/reg_expr.php"); $valid_data = true; $l_errors = " "; $j = 0; $conn = new ConectMngr($host, $_db, $dbuser, $dbpassw); $conn->connect(); $conn->dbConnect();
//Errores de entrada de los campos (datos lexicamente incorrenctos) foreach(array_keys($_POST) as $i){ $$i = addslashes($_POST[$i]); if(isset($reg_exp[$i] )){ if(!validaCampo($reg_exp[$i], $_POST[$i])){ $errores[$j] = $msg[$i]; $valid_data = false; $j++; }
} } //Errores de entrada de los campos (datos logicamente incorrectos) if($passwd != $passwd || $passwd == ""){ $valid_data = false;
$l_errors .= "La confirmacion de contrasenias
";} $conn->doQuery("SELECT * from Usuario where username = '".$usuario."'"); if($conn->numRows() != 0){ $valid_data = false;
$l_errors .= "El usuario ya Existe porfavor escoja uno nuevo
";}
$filepath = "/User.gif"; if( sizeof($_FILES['picture']) > 0){ $temp_name = $_FILES['picture']['tmp_name']; $send_name = split("\.",$_FILES['picture']['name']); $ext = $send_name[1];
if(substr($_FILES['picture']['type'],0,5) != "image"){ $l_errors .= "El tipo del archivo es invalido Su foto no sera guardada "; }else{ if($valid_data){ $filepath = "imgs/usuarios/"; $filepath .= $usuario.".".$ext; rename($_FILES['picture']['tmp_name'], $filepath); } } }
if($valid_data){
$conn->doQuery( "INSERT INTO Usuario (username, nombre, apellidoP, apellidoM, contrasenia, correo, foto )VALUES ('".$usuario."','".$nombre."','".$apellidoP."','".$apellidoM."','".md5($passwd)."','".email."', '".$filepath."')" );
echo "<fieldset style=\"text-align:left;\">
<legend>Registro de Contacto</legend>
Datos de Usuario
<label>Usuario: </label>$usuario
<label>Correo electrónico: </label>$email
<label>Imagen: </label> <img src=\"".$filepath."\" width = \"100\" height = \"100\" alt = \"".$usuario."Picture\">
Datos Personales
<label>Nombre: </label>$nombre
<label>Apellido Paterno: </label>$apellidoP
<label>Apellido Materno: </label>$apellidoM
<a href=\"Login..php\">Iniciar session</a> </fieldset>"; }else{
echo "for($i = 0 ; $i < sizeof($errores); $i++){
echo "". $errores[$i]."
\n";}
echo $l_errors."}
?>
y el codigo de la forma:
[html]
<fieldset style="text-align:left;"> <legend>Registro de Contacto</legend>
<?php echo "<form method = \"post\" action = \"".$_SERVER['PHP_SELF']."\" name = \"altaUsuario\" id = \"altaUsuario\" enctype=\"multipart/form-data\">"; ?> Los campos con un asterisco (*) son obligatorios de llenar.
Datos de Usuario
<label>*Usuario: </label><input type="text" size="20" name="usuario" id="usuario" value="" />
El usuario puede contener letras a-z, números 0-9 y guiones bajos.
<label>*Contraseña: </label><input type="password" size="20" name="passwd" id="passwd" value="" />
Mínimo seis carácteres. Se diferencia entre mayúsculas y minúsculas.
<label>*Repetir Contraseña: </label><input type="password" size="20" name="password" id="password" value="" />
<label>*Correo electrónico: </label><input type="text" size="20" name="email" id="email" value="" />
<label>Selecciona Imagen: </label> <input type="file" class="file" name="picture" id="picture" size="20" />
Datos Personales
<label>*Nombre: </label><input type="text" size="20" name="nombre" id="nombre" value="" />
<label>*Apellido Paterno: </label><input type="text" size="20" name="apellidoM" id="apellidoM" value="" />
<label>*Apellido Materno: </label><input type="text" size="20" name="apellidoP" id="apellidoP" value="" />
Condiciones de Servicio
<label>Términos de Servicio:</label>
Revise las siguientes condiciones y después indique su conformidad.
<textarea name="terms" rows="10" cols="50" readonly="readonly"> Te comprometes a darnos tu alma en su totalidad esencia. </textarea>
<input type="submit" name="accion" value="Acepto" /> <input type="submit" value="No acepto" onclick="goIndex();"/> </form> </fieldset>
Estilos
El estilo de la pagina se podrá usar algo muy web 2.0 con aplicaciones sencillas. Se podra tener comentarios y calificacion sobre la plantilla. Se podra diferenciar entre el tipo de archivo (ott, ots, otp).
El maximo de upload debe ser 10mb en vez de los 2mb acostumbrados.

