NEW Feature to crop/resize images available on user and expense reports
This commit is contained in:
parent
846204bdb4
commit
5931bc4068
@ -999,6 +999,7 @@ class FormFile
|
|||||||
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
||||||
print '<input type="hidden" name="modulepart" value="'.$modulepart.'">';
|
print '<input type="hidden" name="modulepart" value="'.$modulepart.'">';
|
||||||
}
|
}
|
||||||
|
print '<div class="div-table-responsive-no-min">';
|
||||||
print '<table width="100%" id="tablelines" class="'.($useinecm?'liste noborder':'liste').'">'."\n";
|
print '<table width="100%" id="tablelines" class="'.($useinecm?'liste noborder':'liste').'">'."\n";
|
||||||
|
|
||||||
print '<tr class="liste_titre nodrag nodrop">';
|
print '<tr class="liste_titre nodrag nodrop">';
|
||||||
@ -1182,7 +1183,7 @@ class FormFile
|
|||||||
if (in_array($modulepart, array('product','produit','service'))) $newmodulepart='produit|service';
|
if (in_array($modulepart, array('product','produit','service'))) $newmodulepart='produit|service';
|
||||||
|
|
||||||
$disablecrop=1;
|
$disablecrop=1;
|
||||||
if (in_array($modulepart, array('product','produit','service','holiday','project'))) $disablecrop=0;
|
if (in_array($modulepart, array('product','produit','service','expensereport','holiday','project','user'))) $disablecrop=0;
|
||||||
|
|
||||||
if (! $disablecrop && image_format_supported($file['name']) > 0)
|
if (! $disablecrop && image_format_supported($file['name']) > 0)
|
||||||
{
|
{
|
||||||
@ -1256,7 +1257,7 @@ class FormFile
|
|||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
print "</table>";
|
print "</table>";
|
||||||
|
print '</div>';
|
||||||
|
|
||||||
if (! $editline && $nboflines > 1) {
|
if (! $editline && $nboflines > 1) {
|
||||||
if (! empty($conf->use_javascript_ajax) && $permtoeditline) {
|
if (! empty($conf->use_javascript_ajax) && $permtoeditline) {
|
||||||
|
|||||||
@ -33,6 +33,7 @@ function updateCoords(c)
|
|||||||
//alert(parseInt(jQuery("#ratioforcrop").val()));
|
//alert(parseInt(jQuery("#ratioforcrop").val()));
|
||||||
ratio=1;
|
ratio=1;
|
||||||
if (parseInt(jQuery("#ratioforcrop").val()) > 0) ratio = parseInt(jQuery("#ratioforcrop").val());
|
if (parseInt(jQuery("#ratioforcrop").val()) > 0) ratio = parseInt(jQuery("#ratioforcrop").val());
|
||||||
|
//console.log(ratio);
|
||||||
jQuery('#x').val(Math.ceil(c.x * ratio));
|
jQuery('#x').val(Math.ceil(c.x * ratio));
|
||||||
jQuery('#y').val(Math.ceil(c.y * ratio));
|
jQuery('#y').val(Math.ceil(c.y * ratio));
|
||||||
jQuery('#x2').val(Math.ceil(c.x2 * ratio));
|
jQuery('#x2').val(Math.ceil(c.x2 * ratio));
|
||||||
|
|||||||
@ -59,6 +59,18 @@ elseif ($modulepart == 'holiday')
|
|||||||
if (! $user->rights->holiday->read) accessforbidden();
|
if (! $user->rights->holiday->read) accessforbidden();
|
||||||
$accessallowed=1;
|
$accessallowed=1;
|
||||||
}
|
}
|
||||||
|
elseif ($modulepart == 'expensereport')
|
||||||
|
{
|
||||||
|
$result=restrictedArea($user,'expensereport',$id,'expensereport');
|
||||||
|
if (! $user->rights->expensereport->lire) accessforbidden();
|
||||||
|
$accessallowed=1;
|
||||||
|
}
|
||||||
|
elseif ($modulepart == 'user')
|
||||||
|
{
|
||||||
|
$result=restrictedArea($user,'user',$id,'user');
|
||||||
|
if (! $user->rights->user->user->lire) accessforbidden();
|
||||||
|
$accessallowed=1;
|
||||||
|
}
|
||||||
|
|
||||||
// Security:
|
// Security:
|
||||||
// Limit access if permissions are wrong
|
// Limit access if permissions are wrong
|
||||||
@ -103,12 +115,36 @@ elseif ($modulepart == 'holiday')
|
|||||||
$dir=$conf->holiday->dir_output; // By default
|
$dir=$conf->holiday->dir_output; // By default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
elseif ($modulepart == 'user')
|
||||||
|
{
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php';
|
||||||
|
$object = new User($db);
|
||||||
|
if ($id > 0)
|
||||||
|
{
|
||||||
|
$result = $object->fetch($id);
|
||||||
|
if ($result <= 0) dol_print_error($db,'Failed to load object');
|
||||||
|
$dir=$conf->user->dir_output; // By default
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elseif ($modulepart == 'expensereport')
|
||||||
|
{
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php';
|
||||||
|
$object = new ExpenseReport($db);
|
||||||
|
if ($id > 0)
|
||||||
|
{
|
||||||
|
$result = $object->fetch($id);
|
||||||
|
if ($result <= 0) dol_print_error($db,'Failed to load object');
|
||||||
|
$dir=$conf->expensereport->dir_output; // By default
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (empty($backtourl))
|
if (empty($backtourl))
|
||||||
{
|
{
|
||||||
if (in_array($modulepart, array('product','produit','service','produit|service'))) $backtourl=DOL_URL_ROOT."/product/document.php?id=".$id.'&file='.urldecode($_POST["file"]);
|
if (in_array($modulepart, array('product','produit','service','produit|service'))) $backtourl=DOL_URL_ROOT."/product/document.php?id=".$id.'&file='.urldecode($_POST["file"]);
|
||||||
|
else if (in_array($modulepart, array('expensereport'))) $backtourl=DOL_URL_ROOT."/expensereport/document.php?id=".$id.'&file='.urldecode($_POST["file"]);
|
||||||
else if (in_array($modulepart, array('holiday'))) $backtourl=DOL_URL_ROOT."/holiday/document.php?id=".$id.'&file='.urldecode($_POST["file"]);
|
else if (in_array($modulepart, array('holiday'))) $backtourl=DOL_URL_ROOT."/holiday/document.php?id=".$id.'&file='.urldecode($_POST["file"]);
|
||||||
else if (in_array($modulepart, array('project'))) $backtourl=DOL_URL_ROOT."/projet/document.php?id=".$id.'&file='.urldecode($_POST["file"]);
|
else if (in_array($modulepart, array('project'))) $backtourl=DOL_URL_ROOT."/projet/document.php?id=".$id.'&file='.urldecode($_POST["file"]);
|
||||||
|
else if (in_array($modulepart, array('user'))) $backtourl=DOL_URL_ROOT."/user/document.php?id=".$id.'&file='.urldecode($_POST["file"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -185,7 +221,7 @@ if ($action == 'confirm_resize' && (isset($_POST["file"]) != "") && (isset($_POS
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dol_print_error('', 'Cancel on photo_resize with a not supported value of modulepart='.$modulepart);
|
dol_print_error('', 'confirm_resize on photo_resize without backtourl defined for modulepart='.$modulepart);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -253,7 +289,7 @@ if ($action == 'confirm_crop')
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dol_print_error('', 'Cancel on photo_resize with a not supported value of modulepart='.$modulepart);
|
dol_print_error('', 'confirm_crop on photo_resize without backtourl defined for modulepart='.$modulepart);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -294,8 +330,8 @@ print '<form name="redim_file" action="'.$_SERVER["PHP_SELF"].'?id='.$id.'" meth
|
|||||||
print '<fieldset id="redim_file">';
|
print '<fieldset id="redim_file">';
|
||||||
print '<legend>'.$langs->trans("Resize").'</legend>';
|
print '<legend>'.$langs->trans("Resize").'</legend>';
|
||||||
print $langs->trans("ResizeDesc").'<br>';
|
print $langs->trans("ResizeDesc").'<br>';
|
||||||
print $langs->trans("NewLength").': <input class="flat" name="sizex" size="10" type="text" > px '.$langs->trans("or").' ';
|
print $langs->trans("NewLength").': <input name="sizex" type="number" class="flat maxwidth50"> px '.$langs->trans("or").' ';
|
||||||
print $langs->trans("NewHeight").': <input class="flat" name="sizey" size="10" type="text" > px <br>';
|
print $langs->trans("NewHeight").': <input name="sizey" type="number" class="flat maxwidth50"> px <br>';
|
||||||
|
|
||||||
print '<input type="hidden" name="file" value="'.dol_escape_htmltag(GETPOST('file')).'" />';
|
print '<input type="hidden" name="file" value="'.dol_escape_htmltag(GETPOST('file')).'" />';
|
||||||
print '<input type="hidden" name="action" value="confirm_resize" />';
|
print '<input type="hidden" name="action" value="confirm_resize" />';
|
||||||
@ -323,11 +359,12 @@ if (! empty($conf->use_javascript_ajax))
|
|||||||
$height=$infoarray['height'];
|
$height=$infoarray['height'];
|
||||||
$width=$infoarray['width'];
|
$width=$infoarray['width'];
|
||||||
$widthforcrop=$width; $refsizeforcrop='orig'; $ratioforcrop=1;
|
$widthforcrop=$width; $refsizeforcrop='orig'; $ratioforcrop=1;
|
||||||
|
// If image is too large, we use another scale.
|
||||||
if (! empty($_SESSION['dol_screenwidth']) && ($widthforcrop > round($_SESSION['dol_screenwidth']/2)))
|
if (! empty($_SESSION['dol_screenwidth']) && ($widthforcrop > round($_SESSION['dol_screenwidth']/2)))
|
||||||
{
|
{
|
||||||
$widthforcrop=min(round($_SESSION['dol_screenwidth']/2),$widthforcrop);
|
$widthforcrop=round($_SESSION['dol_screenwidth']/2);
|
||||||
$refsizeforcrop='screenwidth';
|
$refsizeforcrop='screenwidth';
|
||||||
$ratioforcrop=2;
|
$ratioforcrop=1;
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<!-- Form to crop -->'."\n";
|
print '<!-- Form to crop -->'."\n";
|
||||||
@ -342,12 +379,12 @@ if (! empty($conf->use_javascript_ajax))
|
|||||||
print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$id.'" method="POST">
|
print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$id.'" method="POST">
|
||||||
<div class="jc_coords">
|
<div class="jc_coords">
|
||||||
'.$langs->trans("NewSizeAfterCropping").':
|
'.$langs->trans("NewSizeAfterCropping").':
|
||||||
<label>X1 <input type="text" size="4" id="x" name="x" /></label>
|
<label>X1 <input type="number" class="flat maxwidth50" id="x" name="x" /></label>
|
||||||
<label>Y1 <input type="text" size="4" id="y" name="y" /></label>
|
<label>Y1 <input type="number" class="flat maxwidth50" id="y" name="y" /></label>
|
||||||
<label>X2 <input type="text" size="4" id="x2" name="x2" /></label>
|
<label>X2 <input type="number" class="flat maxwidth50" id="x2" name="x2" /></label>
|
||||||
<label>Y2 <input type="text" size="4" id="y2" name="y2" /></label>
|
<label>Y2 <input type="number" class="flat maxwidth50" id="y2" name="y2" /></label>
|
||||||
<label>W <input type="text" size="4" id="w" name="w" /></label>
|
<label>W <input type="number" class="flat maxwidth50" id="w" name="w" /></label>
|
||||||
<label>H <input type="text" size="4" id="h" name="h" /></label>
|
<label>H <input type="number" class="flat maxwidth50" id="h" name="h" /></label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<input type="hidden" id="file" name="file" value="'.dol_escape_htmltag($original_file).'" />
|
<input type="hidden" id="file" name="file" value="'.dol_escape_htmltag($original_file).'" />
|
||||||
@ -370,6 +407,7 @@ if (! empty($conf->use_javascript_ajax))
|
|||||||
print '<script type="text/javascript" language="javascript">
|
print '<script type="text/javascript" language="javascript">
|
||||||
jQuery(document).ready(function() {
|
jQuery(document).ready(function() {
|
||||||
$("#submitcrop").click(function(e) {
|
$("#submitcrop").click(function(e) {
|
||||||
|
console.log("We click on submitcrop");
|
||||||
var idClicked = e.target.id;
|
var idClicked = e.target.id;
|
||||||
if (parseInt(jQuery(\'#w\').val())) return true;
|
if (parseInt(jQuery(\'#w\').val())) return true;
|
||||||
alert(\''.dol_escape_js($langs->trans("ErrorFieldRequired", $langs->trans("Dimension"))).'\');
|
alert(\''.dol_escape_js($langs->trans("ErrorFieldRequired", $langs->trans("Dimension"))).'\');
|
||||||
|
|||||||
@ -18,6 +18,12 @@
|
|||||||
* or see http://www.gnu.org/
|
* or see http://www.gnu.org/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// Following var can be set
|
||||||
|
// $permission = permission or not to add a file
|
||||||
|
// $permtoedit = permission or not to edit file name, crop file
|
||||||
|
// $modulepart = for download
|
||||||
|
// $param = param to add to download links
|
||||||
|
|
||||||
$langs->load("link");
|
$langs->load("link");
|
||||||
if (empty($relativepathwithnofile)) $relativepathwithnofile='';
|
if (empty($relativepathwithnofile)) $relativepathwithnofile='';
|
||||||
if (empty($permtoedit)) $permtoedit=-1;
|
if (empty($permtoedit)) $permtoedit=-1;
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2002-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
/* Copyright (C) 2002-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||||
* Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2004-2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2005-2015 Regis Houssin <regis.houssin@capnetworks.com>
|
* Copyright (C) 2005-2015 Regis Houssin <regis.houssin@capnetworks.com>
|
||||||
* Copyright (C) 2010 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2010 Juanjo Menent <jmenent@2byte.es>
|
||||||
* Copyright (C) 2013 Cédric Salvador <csalvador@gpcsolutions.fr>
|
* Copyright (C) 2013 Cédric Salvador <csalvador@gpcsolutions.fr>
|
||||||
@ -166,6 +166,7 @@ if ($object->id)
|
|||||||
|
|
||||||
$modulepart = 'user';
|
$modulepart = 'user';
|
||||||
$permission = $user->rights->user->user->creer;
|
$permission = $user->rights->user->user->creer;
|
||||||
|
$permtoedit = $user->rights->user->user->creer;
|
||||||
$param = '&id=' . $object->id;
|
$param = '&id=' . $object->id;
|
||||||
include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_post_headers.tpl.php';
|
include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_post_headers.tpl.php';
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user