Fix: Preview feature

This commit is contained in:
Laurent Destailleur 2014-04-30 13:50:25 +02:00
parent 518c40d79a
commit 880f77b7e1
18 changed files with 57 additions and 48 deletions

View File

@ -126,10 +126,10 @@ if ($id > 0 || ! empty($ref))
$relativepath = $objectref.'/'.$objectref.'.pdf'; $relativepath = $objectref.'/'.$objectref.'.pdf';
$relativepathdetail = $objectref.'/'.$objectref.'-detail.pdf'; $relativepathdetail = $objectref.'/'.$objectref.'-detail.pdf';
// Chemin vers png apercus // Define path to preview pdf file (preview precompiled "file.ext" are "file.ext_preview.png")
$fileimage = $file.".png"; // Si PDF d'1 page $fileimage = $file.'_preview.png'; // If PDF has 1 page
$fileimagebis = $file."-0.png"; // Si PDF de plus d'1 page $fileimagebis = $file.'_preview-0.pdf.png'; // If PDF has more than one page
$relativepathimage = $relativepath.'.png'; $relativepathimage = $relativepath.'_preview.png';
$var=true; $var=true;
@ -155,7 +155,7 @@ if ($id > 0 || ! empty($ref))
{ {
if (class_exists("Imagick")) if (class_exists("Imagick"))
{ {
$ret = dol_convert_file($file); $ret = dol_convert_file($file,'png',$fileimage);
if ($ret < 0) $error++; if ($ret < 0) $error++;
} }
else else
@ -173,6 +173,8 @@ if ($id > 0 || ! empty($ref))
print '<td align="right" colspan="2"><b>'.price($object->price).'</b></td>'; print '<td align="right" colspan="2"><b>'.price($object->price).'</b></td>';
print '<td>'.$langs->trans("Currency".$conf->currency).'</td></tr>'; print '<td>'.$langs->trans("Currency".$conf->currency).'</td></tr>';
print '</table>'; print '</table>';
dol_fiche_end();
} }
else else
{ {

View File

@ -112,10 +112,10 @@ if ($id > 0 || ! empty($ref))
$relativepath = $objectref.'/'.$objectref.'.pdf'; $relativepath = $objectref.'/'.$objectref.'.pdf';
$relativepathdetail = $objectref.'/'.$objectref.'-detail.pdf'; $relativepathdetail = $objectref.'/'.$objectref.'-detail.pdf';
// Chemin vers png apercus // Define path to preview pdf file (preview precompiled "file.ext" are "file.ext_preview.png")
$fileimage = $file.".png"; // Si PDF d'1 page $fileimage = $file.'_preview.png'; // If PDF has 1 page
$fileimagebis = $file."-0.png"; // Si PDF de plus d'1 page $fileimagebis = $file.'_preview-0.pdf.png'; // If PDF has more than one page
$relativepathimage = $relativepath.'.png'; $relativepathimage = $relativepath.'_preview.png';
$var=true; $var=true;
@ -151,7 +151,7 @@ if ($id > 0 || ! empty($ref))
{ {
if (class_exists("Imagick")) if (class_exists("Imagick"))
{ {
$ret = dol_convert_file($file); $ret = dol_convert_file($file,'png',$fileimage);
if ($ret < 0) $error++; if ($ret < 0) $error++;
} }
else else
@ -193,6 +193,8 @@ if ($id > 0 || ! empty($ref))
print '<td align="right" colspan="1"><b>'.price($object->total_ht).'</b></td>'; print '<td align="right" colspan="1"><b>'.price($object->total_ht).'</b></td>';
print '<td>'.$langs->trans("Currency".$conf->currency).'</td></tr>'; print '<td>'.$langs->trans("Currency".$conf->currency).'</td></tr>';
print '</table>'; print '</table>';
dol_fiche_end();
} }
else else
{ {

View File

@ -2248,7 +2248,8 @@ if ($action == 'create' && $user->rights->commande->creer) {
} }
print '<br>'; print '<br>';
if ($action != 'presend') { if ($action != 'presend')
{
print '<div class="fichecenter"><div class="fichehalfleft">'; print '<div class="fichecenter"><div class="fichehalfleft">';
// print '<table width="100%"><tr><td width="50%" valign="top">'; // print '<table width="100%"><tr><td width="50%" valign="top">';
// print '<a name="builddoc"></a>'; // ancre // print '<a name="builddoc"></a>'; // ancre
@ -2267,7 +2268,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
/* /*
* Linked object block * Linked object block
*/ */
$somethingshown = $object->showLinkedObjectBlock(); $somethingshown = $object->showLinkedObjectBlock();
print '</div><div class="fichehalfright"><div class="ficheaddleft">'; print '</div><div class="fichehalfright"><div class="ficheaddleft">';
@ -2284,9 +2285,9 @@ if ($action == 'create' && $user->rights->commande->creer) {
/* /*
* Action presend * Action presend
* */
*/ if ($action == 'presend')
if ($action == 'presend') { {
$ref = dol_sanitizeFileName($object->ref); $ref = dol_sanitizeFileName($object->ref);
include_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php'; include_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php';
$fileparams = dol_most_recent_file($conf->commande->dir_output . '/' . $ref, preg_quote($ref, '/')); $fileparams = dol_most_recent_file($conf->commande->dir_output . '/' . $ref, preg_quote($ref, '/'));

View File

@ -302,10 +302,10 @@ if ($id > 0 || ! empty($ref))
$relativepath = $objectref.'/'.$objectref.'.pdf'; $relativepath = $objectref.'/'.$objectref.'.pdf';
$relativepathdetail = $objectref.'/'.$objectref.'-detail.pdf'; $relativepathdetail = $objectref.'/'.$objectref.'-detail.pdf';
// Chemin vers png apercus // Define path to preview pdf file (preview precompiled "file.ext" are "file.ext_preview.png")
$fileimage = $file.".png"; // Si PDF d'1 page $fileimage = $file.'_preview.png'; // If PDF has 1 page
$fileimagebis = $file."-0.png"; // Si PDF de plus d'1 page $fileimagebis = $file.'_preview-0.pdf.png'; // If PDF has more than one page
$relativepathimage = $relativepath.'.png'; $relativepathimage = $relativepath.'_preview.png';
$var=true; $var=true;
@ -341,7 +341,7 @@ if ($id > 0 || ! empty($ref))
{ {
if (class_exists("Imagick")) if (class_exists("Imagick"))
{ {
$ret = dol_convert_file($file); $ret = dol_convert_file($file,'png',$fileimage);
if ($ret < 0) $error++; if ($ret < 0) $error++;
} }
else else

View File

@ -76,7 +76,7 @@ if ($id > 0 || ! empty($ref))
{ {
if (class_exists("Imagick")) if (class_exists("Imagick"))
{ {
$ret = dol_convert_file($file); $ret = dol_convert_file($file,'png',$fileimage);
if ($ret < 0) $error++; if ($ret < 0) $error++;
} }
else else
@ -91,6 +91,8 @@ if ($id > 0 || ! empty($ref))
print '<img src="'.DOL_URL_ROOT.'/viewimage.php?modulepart=prelevement&file='.urlencode(basename($fileimage)).'">'; print '<img src="'.DOL_URL_ROOT.'/viewimage.php?modulepart=prelevement&file='.urlencode(basename($fileimage)).'">';
} }
dol_fiche_end();
} }
else else
{ {
@ -98,7 +100,5 @@ if ($id > 0 || ! empty($ref))
} }
} }
print "</div>";
llxFooter(); llxFooter();
?> ?>

View File

@ -527,7 +527,7 @@ class FormFile
// Get list of files // Get list of files
if (! empty($filedir)) if (! empty($filedir))
{ {
$file_list=dol_dir_list($filedir,'files',0,'','\.meta$','date',SORT_DESC); $file_list=dol_dir_list($filedir,'files',0,'','(\.meta|_preview\.png)$','date',SORT_DESC);
// Affiche en-tete tableau si non deja affiche // Affiche en-tete tableau si non deja affiche
if (! empty($file_list) && ! $headershown) if (! empty($file_list) && ! $headershown)

View File

@ -128,7 +128,7 @@ function societe_prepare_head($object)
// Attached files // Attached files
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
$upload_dir = $conf->societe->dir_output . "/" . $object->id; $upload_dir = $conf->societe->dir_output . "/" . $object->id;
$nbFiles = count(dol_dir_list($upload_dir,'files')); $nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview\.png)$'));
$head[$h][0] = DOL_URL_ROOT.'/societe/document.php?socid='.$object->id; $head[$h][0] = DOL_URL_ROOT.'/societe/document.php?socid='.$object->id;
$head[$h][1] = $langs->trans("Documents"); $head[$h][1] = $langs->trans("Documents");
if($nbFiles > 0) $head[$h][1].= ' ('.$nbFiles.')'; if($nbFiles > 0) $head[$h][1].= ' ('.$nbFiles.')';

View File

@ -67,7 +67,7 @@ function contract_prepare_head($object)
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
$upload_dir = $conf->contrat->dir_output . "/" . dol_sanitizeFileName($object->ref); $upload_dir = $conf->contrat->dir_output . "/" . dol_sanitizeFileName($object->ref);
$nbFiles = count(dol_dir_list($upload_dir,'files')); $nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview\.png)$'));
$head[$h][0] = DOL_URL_ROOT.'/contrat/document.php?id='.$object->id; $head[$h][0] = DOL_URL_ROOT.'/contrat/document.php?id='.$object->id;
$head[$h][1] = $langs->trans("Documents"); $head[$h][1] = $langs->trans("Documents");
if($nbFiles > 0) $head[$h][1].= ' ('.$nbFiles.')'; if($nbFiles > 0) $head[$h][1].= ' ('.$nbFiles.')';

View File

@ -79,7 +79,7 @@ function fichinter_prepare_head($object)
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
$upload_dir = $conf->ficheinter->dir_output . "/" . dol_sanitizeFileName($object->ref); $upload_dir = $conf->ficheinter->dir_output . "/" . dol_sanitizeFileName($object->ref);
$nbFiles = count(dol_dir_list($upload_dir,'files')); $nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview\.png)$'));
$head[$h][0] = DOL_URL_ROOT.'/fichinter/document.php?id='.$object->id; $head[$h][0] = DOL_URL_ROOT.'/fichinter/document.php?id='.$object->id;
$head[$h][1] = $langs->trans("Documents"); $head[$h][1] = $langs->trans("Documents");
if($nbFiles > 0) $head[$h][1].= ' ('.$nbFiles.')'; if($nbFiles > 0) $head[$h][1].= ' ('.$nbFiles.')';

View File

@ -1148,26 +1148,29 @@ function dol_remove_file_process($filenb,$donotupdatesession=0,$donotdeletefile=
} }
/** /**
* Convert an image file into antoher format. * Convert an image file into anoher format.
* This need Imagick php extension. * This need Imagick php extension.
* *
* @param string $file Input file name * @param string $fileinput Input file name
* @param string $ext Extension of target file * @param string $ext Format of target file (It is also extension added to file if fileoutput is not provided).
* @param string $fileoutput Output filename
* @return int <0 if KO, >0 if OK * @return int <0 if KO, >0 if OK
*/ */
function dol_convert_file($file,$ext='png') function dol_convert_file($fileinput,$ext='png',$fileoutput='')
{ {
global $langs; global $langs;
$image=new Imagick(); $image=new Imagick();
$ret = $image->readImage($file); $ret = $image->readImage($fileinput);
if ($ret) if ($ret)
{ {
$ret = $image->setImageFormat($ext); $ret = $image->setImageFormat($ext);
if ($ret) if ($ret)
{ {
if (empty($fileoutput)) $fileoutput=$fileinput.".".$ext;
$count = $image->getNumberImages(); $count = $image->getNumberImages();
$ret = $image->writeImages($file . "." . $ext, true); $ret = $image->writeImages($fileoutput, true);
if ($ret) return $count; if ($ret) return $count;
else return -3; else return -3;
} }

View File

@ -70,7 +70,7 @@ function facturefourn_prepare_head($object)
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
$upload_dir = $conf->fournisseur->facture->dir_output.'/'.get_exdir($object->id,2).$object->ref; $upload_dir = $conf->fournisseur->facture->dir_output.'/'.get_exdir($object->id,2).$object->ref;
$nbFiles = count(dol_dir_list($upload_dir,'files')); $nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview\.png)$'));
$head[$h][0] = DOL_URL_ROOT.'/fourn/facture/document.php?facid='.$object->id; $head[$h][0] = DOL_URL_ROOT.'/fourn/facture/document.php?facid='.$object->id;
$head[$h][1] = $langs->trans('Documents'); $head[$h][1] = $langs->trans('Documents');
if($nbFiles > 0) $head[$h][1].= ' ('.$nbFiles.')'; if($nbFiles > 0) $head[$h][1].= ' ('.$nbFiles.')';
@ -142,7 +142,7 @@ function ordersupplier_prepare_head($object)
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
$upload_dir = $conf->fournisseur->dir_output . "/commande/" . dol_sanitizeFileName($object->ref); $upload_dir = $conf->fournisseur->dir_output . "/commande/" . dol_sanitizeFileName($object->ref);
$nbFiles = count(dol_dir_list($upload_dir,'files')); $nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview\.png)$'));
$head[$h][0] = DOL_URL_ROOT.'/fourn/commande/document.php?id='.$object->id; $head[$h][0] = DOL_URL_ROOT.'/fourn/commande/document.php?id='.$object->id;
$head[$h][1] = $langs->trans('Documents'); $head[$h][1] = $langs->trans('Documents');
if($nbFiles > 0) $head[$h][1].= ' ('.$nbFiles.')'; if($nbFiles > 0) $head[$h][1].= ' ('.$nbFiles.')';

View File

@ -86,7 +86,7 @@ function facture_prepare_head($object)
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
$upload_dir = $conf->facture->dir_output . "/" . dol_sanitizeFileName($object->ref); $upload_dir = $conf->facture->dir_output . "/" . dol_sanitizeFileName($object->ref);
$nbFiles = count(dol_dir_list($upload_dir,'files')); $nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview\.png)$'));
$head[$h][0] = DOL_URL_ROOT.'/compta/facture/document.php?facid='.$object->id; $head[$h][0] = DOL_URL_ROOT.'/compta/facture/document.php?facid='.$object->id;
$head[$h][1] = $langs->trans('Documents'); $head[$h][1] = $langs->trans('Documents');
if($nbFiles > 0) $head[$h][1].= ' ('.$nbFiles.')'; if($nbFiles > 0) $head[$h][1].= ' ('.$nbFiles.')';

View File

@ -96,7 +96,7 @@ function commande_prepare_head($object)
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
$upload_dir = $conf->commande->dir_output . "/" . dol_sanitizeFileName($object->ref); $upload_dir = $conf->commande->dir_output . "/" . dol_sanitizeFileName($object->ref);
$nbFiles = count(dol_dir_list($upload_dir,'files')); $nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview\.png)$'));
$head[$h][0] = DOL_URL_ROOT.'/commande/document.php?id='.$object->id; $head[$h][0] = DOL_URL_ROOT.'/commande/document.php?id='.$object->id;
$head[$h][1] = $langs->trans('Documents'); $head[$h][1] = $langs->trans('Documents');
if($nbFiles > 0) $head[$h][1].= ' ('.$nbFiles.')'; if($nbFiles > 0) $head[$h][1].= ' ('.$nbFiles.')';

View File

@ -120,7 +120,7 @@ function product_prepare_head($object, $user)
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
if (! empty($conf->product->enabled)) $upload_dir = $conf->product->multidir_output[$object->entity].'/'.dol_sanitizeFileName($object->ref); if (! empty($conf->product->enabled)) $upload_dir = $conf->product->multidir_output[$object->entity].'/'.dol_sanitizeFileName($object->ref);
elseif (! empty($conf->service->enabled)) $upload_dir = $conf->service->multidir_output[$object->entity].'/'.dol_sanitizeFileName($object->ref); elseif (! empty($conf->service->enabled)) $upload_dir = $conf->service->multidir_output[$object->entity].'/'.dol_sanitizeFileName($object->ref);
$nbFiles = count(dol_dir_list($upload_dir,'files')); $nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview\.png)$'));
$head[$h][0] = DOL_URL_ROOT.'/product/document.php?id='.$object->id; $head[$h][0] = DOL_URL_ROOT.'/product/document.php?id='.$object->id;
$head[$h][1] = $langs->trans('Documents'); $head[$h][1] = $langs->trans('Documents');
if($nbFiles > 0) $head[$h][1].= ' ('.$nbFiles.')'; if($nbFiles > 0) $head[$h][1].= ' ('.$nbFiles.')';

View File

@ -78,7 +78,7 @@ function project_prepare_head($object)
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
$upload_dir = $conf->projet->dir_output . "/" . dol_sanitizeFileName($object->ref); $upload_dir = $conf->projet->dir_output . "/" . dol_sanitizeFileName($object->ref);
$nbFiles = count(dol_dir_list($upload_dir,'files')); $nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview\.png)$'));
$head[$h][0] = DOL_URL_ROOT.'/projet/document.php?id='.$object->id; $head[$h][0] = DOL_URL_ROOT.'/projet/document.php?id='.$object->id;
$head[$h][1] = $langs->trans('Documents'); $head[$h][1] = $langs->trans('Documents');
if($nbFiles > 0) $head[$h][1].= ' ('.$nbFiles.')'; if($nbFiles > 0) $head[$h][1].= ' ('.$nbFiles.')';

View File

@ -90,7 +90,7 @@ function propal_prepare_head($object)
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
$upload_dir = $conf->propal->dir_output . "/" . dol_sanitizeFileName($object->ref); $upload_dir = $conf->propal->dir_output . "/" . dol_sanitizeFileName($object->ref);
$nbFiles = count(dol_dir_list($upload_dir,'files')); $nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview\.png)$'));
$head[$h][0] = DOL_URL_ROOT.'/comm/propal/document.php?id='.$object->id; $head[$h][0] = DOL_URL_ROOT.'/comm/propal/document.php?id='.$object->id;
$head[$h][1] = $langs->trans('Documents'); $head[$h][1] = $langs->trans('Documents');
if($nbFiles > 0) $head[$h][1].= ' ('.$nbFiles.')'; if($nbFiles > 0) $head[$h][1].= ' ('.$nbFiles.')';

View File

@ -51,7 +51,7 @@ function tax_prepare_head($object)
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
$upload_dir = $conf->tax->dir_output . "/" . dol_sanitizeFileName($object->ref); $upload_dir = $conf->tax->dir_output . "/" . dol_sanitizeFileName($object->ref);
$nbFiles = count(dol_dir_list($upload_dir,'files')); $nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview\.png)$'));
$head[$h][0] = DOL_URL_ROOT.'/compta/sociales/document.php?id='.$object->id; $head[$h][0] = DOL_URL_ROOT.'/compta/sociales/document.php?id='.$object->id;
$head[$h][1] = $langs->trans("Documents"); $head[$h][1] = $langs->trans("Documents");
if($nbFiles > 0) $head[$h][1].= ' ('.$nbFiles.')'; if($nbFiles > 0) $head[$h][1].= ' ('.$nbFiles.')';

View File

@ -85,9 +85,10 @@ if ($id > 0 || ! empty($ref))
$relativepath = "${objectref}/${objectref}.pdf"; $relativepath = "${objectref}/${objectref}.pdf";
$relativepathdetail = "${objectref}/${objectref}-detail.pdf"; $relativepathdetail = "${objectref}/${objectref}-detail.pdf";
// Chemin vers png apercus // Define path to preview pdf file (preview precompiled "file.ext" are "file.ext_preview.png")
$fileimage = $file.".png"; // Si PDF d'1 page $fileimage = $file.'_preview.png'; // If PDF has 1 page
$fileimagebis = $file."-0.png"; // Si PDF de plus d'1 page $fileimagebis = $file.'_preview-0.pdf.png'; // If PDF has more than one page
$relativepathimage = $relativepath.'_preview.png';
$var=true; $var=true;
@ -122,7 +123,7 @@ if ($id > 0 || ! empty($ref))
{ {
if (class_exists("Imagick")) if (class_exists("Imagick"))
{ {
$ret = dol_convert_file($file); $ret = dol_convert_file($file,'png',$fileimage);
if ($ret < 0) $error++; if ($ret < 0) $error++;
} }
else else