OOoES/Desarrollo/PlantillaWeb

From OpenOffice.org Wiki

< OOoES
Jump to: navigation, search

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]

  1. !/usr/bin/php

<?

  1. Copyright (c) 2007 Sandino Araico Sánchez
  2. This script is proof of concept
  3. Usage: php odf-thumbnail.php > eaea.png
  4. Licencesed to JZA under the GNU GPL version 3
  5. 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]

Forma de Registro

<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.

Presentacion

Personal tools
Create a book