Anda di halaman 1dari 5

Bueno como me corresponde les compartiré el método que utilizo para subir portadas a los libros.

Quiza no es la mejor pero me funciona provisionalmente y el código tampoco esta totalmente


pulido ya que soy principiante en PERL.

Lo primero que haremos es modificar el archivo .../koha/intranet/htdocsintranet-tmpl/prog/es-


ES/modules/catalogue/detail.tmpl

agreguen el siguiente código en la parte inicial dentro de la etiqueta “<script>”


function valida()
{
archivo = document.imagen.uploadfile.value;x
extensiones_permitidas = new Array(".jpg");
if (!archivo)
{
//Si no tengo archivo, es que no se ha seleccionado un archivo en el formulario
mierror = "No ha seleccionado ninguna imagen";
alert (mierror);
document.imagen.uploadfile.focus();
return false;
}
else
{
//recupero la extensión de este nombre de archivo
extension = (archivo.substring(archivo.lastIndexOf("."))).toLowerCase();
//alert (extension);
//compruebo si la extensión está entre las permitidas
permitida = false;
for (var i = 0; i < extensiones_permitidas.length; i++)
{
if (extensiones_permitidas[i] == extension)
{
permitida = true;
break;
}
}
if (!permitida)
{
mierror = "Compruebe la extensión de la imagen a subir. \nSólo se puede subir imágenes con
extensión: " + extensiones_permitidas.join()+" ";
alert (mierror);
document.imagen.uploadfile.focus();
return false;
}
else
{
if(confirm('¿Esta seguro de subir la imágen?'))
{
return true;
}
else
{
return false;
}
}
}
}

Esto hará que verifique que la imagen subida sea un archivo jpg.

Luego mas abajo en el cuerpo del archivo luego de la siguiente parte:


<!-- TMPL_IF name="classification" -->
<li><strong>Clasificación:</strong> <!-- TMPL_VAR name="subclass" --><!-- TMPL_VAR name="classification"
--></li>
<!-- /TMPL_IF -->
<!-- TMPL_IF name="dewey" -->
<li><strong>Dewey:</strong> <!-- TMPL_VAR name="dewey" --></li>
<!-- /TMPL_IF -->
<!-- TMPL_IF name="URLS" -->
<li><strong>URL:</strong>
<!-- TMPL_LOOP name="URLS" -->
<a href="<!-- TMPL_VAR name="url" -->"><!-- TMPL_VAR NAME="url" --></a>
<!-- /TMPL_LOOP -->
</li>
<!-- /TMPL_IF -->

luego viene esto

<!-- Begin Upload Patron Image Section -->

<div id="manage-cover-image">
<form method="post" action="/cgi-bin/koha/catalogue/upload_archivo.cgi" name="imagen"
enctype="multipart/form-data" onsubmit="return valida(this.form)">
<fieldset class="brief"><legend>Subir o actualizar portada</legend>
<div class="hint">Sólo son soportados el formato JPEG.</div>
<!-- /TMPL_UNLESS -->
<input type="hidden" id="image" name="filetype" value="image" />
<input type="hidden" id="biblionumber" name="biblionumber" value="<!-- TMPL_VAR
NAME="biblionumber" -->" />
<ol>
<li>
<label for="uploadfile">Seleccione el archivo a subir: </label><input type="file" id="uploadfile"
name="uploadfile" />
</li>
</ol>
<fieldset class="action">
<input type="submit" value="Subir" class="submit">
<input name="op" type="hidden" value="Upload" />
</fieldset>
</fieldset>
</form>
<!-- /TMPL_IF -->
<!-- /TMPL_IF -->
</div>

<!-- End Upload Patron Image Section -->

Con esto incluiremos el formulario para subir la imagen.

Luego se debe crear un archivo y modificar otros mas. Lo primero que debemos hacer es crear un
archivo en mi caso lo nombre "upload archivo.cgi" y debe tener este contenido:

#!/usr/bin/perl -wT

use strict;
use CGI;
use CGI::Carp qw ( fatalsToBrowser );
use File::Basename;
use GD;
use Image::GD::Thumbnail;

$CGI::POST_MAX = 1024 * 5000;


my $safe_filename_characters = "a-zA-Z0-9_.-";
my $upload_dir = "/usr/share/koha/intranet/htdocs/intranet-tmpl/prog/img/portadas”;

my $query = new CGI;


my $filename = $query->param("uploadfile");
my $biblionumber = $query->param("biblionumber");
my $email_address = $query->param("email_address");

if ( !$filename )
{
print $query->header ( );
print "There was a problem uploading your photo (try a smaller file).";
exit;
}

my ( $name, $path, $extension ) = fileparse ( $filename, '\..*' );


$filename = $biblionumber . $extension;
$filename =~ tr/ /_/;
$filename =~ s/[^$safe_filename_characters]//g;

if ( $filename =~ /^([$safe_filename_characters]+)$/ )
{
$filename = $1;
}
else
{
die "Filename contains invalid characters";
}

my $upload_filehandle = $query->upload("uploadfile");

open ( UPLOADFILE, ">$upload_dir/$filename" ) or die "$!";


binmode UPLOADFILE;

while ( <$upload_filehandle> )
{
print UPLOADFILE;
}

close UPLOADFILE;

# Cargamos la imagen

open IN, "$upload_dir/$filename" or die "No se pudo abrir imagen: $!";


my $imagenPrinc = GD::Image->newFromJpeg(*IN);
close IN;
#Checamos si se pudo leer correctamente la imagen
if(defined($imagenPrinc)){
#Redimensionamos la imagen
my ($thumb,$x,$y) = Image::GD::Thumbnail::create($imagenPrinc,180);
# Salvamos el thumbnail
open OUT, ">$upload_dir/$filename" or die "No se pudo salvar: $!";
binmode OUT;
print OUT $thumb->jpeg;
close OUT;
}
#No se pudo leer correctamente la imagen
else{
print "El formato de la imagen debe de ser JPG o JPEGn";
}

my $cgi = new CGI;

print $cgi->redirect( -URL => "./detail.pl?biblionumber=$biblionumber");

(la linea de color verde es la ruta de la donde se guardan las portadas crea una carpeta en ese lugar)

Este documento lo guardas en la carpeta .../koha/intranet/cgi-bin/catalogue

Lo que hace el código es tomar la imagen subida y guardarla en la carpeta de portadas y


renombrarla con el código de libro (biblionumber). Este código según tengo entendido es único. SI
no es así pueden renombrarlo con algún otro dato que sea único.

Además debemos modificar los siguientes archivos.

,,,/koha/intranet/htdocs/intranet-tmpl/prog/es-ES/includes/biblio-view-menu.inc (para que se


muestre la portada al ver los detalles del material en la intranet)

Añadir el código luego de

<div id="menu">
<ul>

(este es el código)

<!-- TMPL_IF NAME="detailview" -->

<!-- TMPL_IF NAME="picture" -->


<li><img src="/intranet-tmpl/prog/img/portadas/<!-- TMPL_VAR NAME="biblionumber" -->.jpg" id="portada" alt="<!--
TMPL_VAR name="title" -->" border="0" style="max-width : 150px; margin: .3em 0 .3em .3em; padding: .2em; border:
1px solid #CCCCCC; width:180 !important;" /></li>
<!-- TMPL_ELSE -->
<li><img src="/intranet-tmpl/prog/img/book-blank.png" alt="<!-- TMPL_VAR name="title" -->" border="0" style="margin: .
3em 0 .3em .3em; padding: .2em; border: 1px solid #CCCCCC;" /></li>
<!-- /TMPL_IF -->

(cambiar la ruta por el lugar donde se encuentran sus portadas)

En el archivo ,,,/koha/intranet/cgi-bin/catalogue/detail.pl agregar las siguietne lineas antes de la


ultima linea del código
my $portada="../../htdocs/intranet-tmpl/prog/img/portadas/$biblionumber.jpg";
if (-e $portada)
{
$template->param( picture => 1 );
}
else
{
$template->param( picture => 0 );
}

Y para el OPAC es necesario modificar dos archivos

...koha/opac/htdocs/opac-tmpl/prog/es-ES/modules/opac.detail.tmpl

luego de
<!--TMPL_INCLUDE NAME="masthead.inc" -->

<div id="yui-main">
<div class="yui-b"><div id="opac-detail" class="yui-ge">
<div class="yui-u first">
<div class="container">
<div id="catalogue_detail_biblio">

<div id="bookcover">

agregar
<!-- TMPL_IF NAME="picture" -->
<img src="http://127.0.1.1:8080/intranet-tmpl/prog/img/portadas/<!-- TMPL_VAR NAME="biblionumber" -->.jpg"
id="portada" alt="<!-- TMPL_VAR name="title" -->" border="0" style="max-width : 150px; margin: .3em 0 .3em .3em;
padding: .2em; border: 1px solid #CCCCCC; width:auto !important; width:150px;" />&nbsp;&nbsp;
<!-- TMPL_ELSE -->
<img src="http://192.168.1.143:8080/intranet-tmpl/prog/img/book-blank.png" alt="<!-- TMPL_VAR name="title" -->"
border="0" style="margin: .3em 0 .3em .3em; padding: .2em; border: 1px solid #CCCCCC;" />&nbsp;&nbsp;
<!-- /TMPL_IF -->

El problema que tengo es que debemos poner la ruta completa de la imagen para que la
muestre....modifiquen por la ip o la dirección de su servidor

y por ultimo agregar las siguientes linea antes de la ultima linea del archivo ../koha/opac/cgi-
bin/opac
my $portada="../../../intranet/htdocs/intranet-tmpl/prog/img/portadas/$biblionumber.jpg";
if (-e $portada)
{
$template->param( picture => 1 );
}
else
{
$template->param( picture => 0 );
}

Eso es todo si no funciona dejen comentarios y los resolveremos =)

Anda mungkin juga menyukai