Merge branch 'develop' of github.com:OPEN-DSI/dolibarr into new-takepos-add-product-on-key-enter
This commit is contained in:
commit
9cec0a254b
4
.github/workflows/stale-issues.yml
vendored
4
.github/workflows/stale-issues.yml
vendored
@ -9,7 +9,7 @@ jobs:
|
|||||||
stale:
|
stale:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: Dolibarr/stale@v1.1.0
|
- uses: Dolibarr/stale@master
|
||||||
with:
|
with:
|
||||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
stale-issue-message: 'This issue is stale because it has been open 1 year with no activity. If this is a bug, please comment to confirm it is still present on latest stable version. if this is a feature request, please comment to notify the request is still relevant and not yet covered by latest stable version. Without comment, this issue will be closed automatically by stale bot in 15 days.'
|
stale-issue-message: 'This issue is stale because it has been open 1 year with no activity. If this is a bug, please comment to confirm it is still present on latest stable version. if this is a feature request, please comment to notify the request is still relevant and not yet covered by latest stable version. Without comment, this issue will be closed automatically by stale bot in 15 days.'
|
||||||
@ -17,7 +17,7 @@ jobs:
|
|||||||
exempt-issue-label: 'Priority High / Blocking'
|
exempt-issue-label: 'Priority High / Blocking'
|
||||||
days-before-stale: 365
|
days-before-stale: 365
|
||||||
days-before-close: 15
|
days-before-close: 15
|
||||||
operations-per-run: 10
|
operations-per-run: 30
|
||||||
#stale-pr-message: 'This PR is stale because it has been open 1 year with no activity. If this PR is still mergeable (no conflict, nor Continuous Integration errors), please comment to confirm this merge is still expected. Without comment, this issue will be closed automatically by stale bot in 15 days.'
|
#stale-pr-message: 'This PR is stale because it has been open 1 year with no activity. If this PR is still mergeable (no conflict, nor Continuous Integration errors), please comment to confirm this merge is still expected. Without comment, this issue will be closed automatically by stale bot in 15 days.'
|
||||||
stale-pr-label: 'PR Stale (automatic label)'
|
stale-pr-label: 'PR Stale (automatic label)'
|
||||||
stale-pr-message:
|
stale-pr-message:
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -201,14 +201,14 @@ print '<div class="div-table-responsive-no-min">';
|
|||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print getTitleFieldOfList('Name', 0, $_SERVER['PHP_SELF'], 'name', '', $param, '', $sortfield, $sortorder, '')."\n";
|
print getTitleFieldOfList('Name', 0, $_SERVER['PHP_SELF'], 'name', '', $param, '', $sortfield, $sortorder, '')."\n";
|
||||||
print '<td>'.$langs->trans("Value").'</td>';
|
print getTitleFieldOfList("Value", 0, $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder);
|
||||||
print '<td>'.$langs->trans("Comment").'</td>';
|
print getTitleFieldOfList("Comment", 0, $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder);
|
||||||
print getTitleFieldOfList('DateModificationShort', 0, $_SERVER['PHP_SELF'], 'tms', '', $param, '', $sortfield, $sortorder, 'center')."\n";
|
print getTitleFieldOfList('DateModificationShort', 0, $_SERVER['PHP_SELF'], 'tms', '', $param, '', $sortfield, $sortorder, 'center ')."\n";
|
||||||
if (! empty($conf->multicompany->enabled) && !$user->entity)
|
if (! empty($conf->multicompany->enabled) && !$user->entity)
|
||||||
{
|
{
|
||||||
print getTitleFieldOfList('Entity', 0, $_SERVER['PHP_SELF'], 'tms', '', $param, '', $sortfield, $sortorder, 'center')."\n";
|
print getTitleFieldOfList('Entity', 0, $_SERVER['PHP_SELF'], 'tms', '', $param, '', $sortfield, $sortorder, 'center ')."\n";
|
||||||
}
|
}
|
||||||
print '<td class="center">'.$langs->trans("Action").'</td>';
|
print getTitleFieldOfList("Action", 0, $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder, 'center ');
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -536,14 +536,16 @@ abstract class CommonDocGenerator
|
|||||||
*
|
*
|
||||||
* @param Object $line Object line
|
* @param Object $line Object line
|
||||||
* @param Translate $outputlangs Lang object to use for output
|
* @param Translate $outputlangs Lang object to use for output
|
||||||
|
* @param int $linenumber The number of the line for the substitution of "object_line_pos"
|
||||||
* @return array Return a substitution array
|
* @return array Return a substitution array
|
||||||
*/
|
*/
|
||||||
public function get_substitutionarray_lines($line, $outputlangs)
|
public function get_substitutionarray_lines($line, $outputlangs, $linenumber = 0)
|
||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
$resarray = array(
|
$resarray = array(
|
||||||
|
'line_pos' => $linenumber,
|
||||||
'line_fulldesc'=>doc_getlinedesc($line, $outputlangs),
|
'line_fulldesc'=>doc_getlinedesc($line, $outputlangs),
|
||||||
'line_product_ref'=>$line->product_ref,
|
'line_product_ref'=>$line->product_ref,
|
||||||
'line_product_ref_fourn'=>$line->ref_fourn, // for supplier doc lines
|
'line_product_ref_fourn'=>$line->ref_fourn, // for supplier doc lines
|
||||||
|
|||||||
@ -1145,15 +1145,16 @@ function dol_syslog($message, $level = LOG_INFO, $ident = 0, $suffixinfilename =
|
|||||||
* @param int $pictoisfullpath If 1, image path is a full path. If you set this to 1, you can use url returned by dol_buildpath('/mymodyle/img/myimg.png',1) for $picto.
|
* @param int $pictoisfullpath If 1, image path is a full path. If you set this to 1, you can use url returned by dol_buildpath('/mymodyle/img/myimg.png',1) for $picto.
|
||||||
* @param string $morehtmlright Add more html content on right of tabs title
|
* @param string $morehtmlright Add more html content on right of tabs title
|
||||||
* @param string $morecss More Css
|
* @param string $morecss More Css
|
||||||
|
* @param int $limittoshow Limit number of tabs to show. Use 0 to use automatic default value.
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function dol_fiche_head($links = array(), $active = '0', $title = '', $notab = 0, $picto = '', $pictoisfullpath = 0, $morehtmlright = '', $morecss = '')
|
function dol_fiche_head($links = array(), $active = '0', $title = '', $notab = 0, $picto = '', $pictoisfullpath = 0, $morehtmlright = '', $morecss = '', $limittoshow = 0)
|
||||||
{
|
{
|
||||||
print dol_get_fiche_head($links, $active, $title, $notab, $picto, $pictoisfullpath, $morehtmlright, $morecss);
|
print dol_get_fiche_head($links, $active, $title, $notab, $picto, $pictoisfullpath, $morehtmlright, $morecss, $limittoshow);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show tab header of a card
|
* Show tabs of a record
|
||||||
*
|
*
|
||||||
* @param array $links Array of tabs
|
* @param array $links Array of tabs
|
||||||
* @param string $active Active tab name
|
* @param string $active Active tab name
|
||||||
@ -1163,9 +1164,10 @@ function dol_fiche_head($links = array(), $active = '0', $title = '', $notab = 0
|
|||||||
* @param int $pictoisfullpath If 1, image path is a full path. If you set this to 1, you can use url returned by dol_buildpath('/mymodyle/img/myimg.png',1) for $picto.
|
* @param int $pictoisfullpath If 1, image path is a full path. If you set this to 1, you can use url returned by dol_buildpath('/mymodyle/img/myimg.png',1) for $picto.
|
||||||
* @param string $morehtmlright Add more html content on right of tabs title
|
* @param string $morehtmlright Add more html content on right of tabs title
|
||||||
* @param string $morecss More Css
|
* @param string $morecss More Css
|
||||||
|
* @param int $limittoshow Limit number of tabs to show. Use 0 to use automatic default value.
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function dol_get_fiche_head($links = array(), $active = '', $title = '', $notab = 0, $picto = '', $pictoisfullpath = 0, $morehtmlright = '', $morecss = '')
|
function dol_get_fiche_head($links = array(), $active = '', $title = '', $notab = 0, $picto = '', $pictoisfullpath = 0, $morehtmlright = '', $morecss = '', $limittoshow = 0)
|
||||||
{
|
{
|
||||||
global $conf, $langs, $hookmanager;
|
global $conf, $langs, $hookmanager;
|
||||||
|
|
||||||
@ -1202,11 +1204,13 @@ function dol_get_fiche_head($links = array(), $active = '', $title = '', $notab
|
|||||||
if (count($keys)) $maxkey = max($keys);
|
if (count($keys)) $maxkey = max($keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($conf->dol_optimize_smallscreen)) $conf->global->MAIN_MAXTABS_IN_CARD = 2;
|
|
||||||
|
|
||||||
// Show tabs
|
// Show tabs
|
||||||
// if =0 we don't use the feature
|
// if =0 we don't use the feature
|
||||||
$limittoshow = (empty($conf->global->MAIN_MAXTABS_IN_CARD) ? 99 : $conf->global->MAIN_MAXTABS_IN_CARD);
|
if (empty($limittoshow)) {
|
||||||
|
$limittoshow = (empty($conf->global->MAIN_MAXTABS_IN_CARD) ? 99 : $conf->global->MAIN_MAXTABS_IN_CARD);
|
||||||
|
}
|
||||||
|
if (!empty($conf->dol_optimize_smallscreen)) $limittoshow = 2;
|
||||||
|
|
||||||
$displaytab = 0;
|
$displaytab = 0;
|
||||||
$nbintab = 0;
|
$nbintab = 0;
|
||||||
$popuptab = 0;
|
$popuptab = 0;
|
||||||
@ -4082,11 +4086,22 @@ function getTitleFieldOfList($name, $thead = 0, $file = "", $field = "", $begin
|
|||||||
$tmpfield = explode(',', $field);
|
$tmpfield = explode(',', $field);
|
||||||
$field1 = trim($tmpfield[0]); // If $field is 'd.datep,d.id', it becomes 'd.datep'
|
$field1 = trim($tmpfield[0]); // If $field is 'd.datep,d.id', it becomes 'd.datep'
|
||||||
|
|
||||||
|
if (empty($conf->global->MAIN_DISABLE_WRAPPING_ON_COLUMN_TITLE)) {
|
||||||
|
$prefix = 'wrapcolumntitle '.$prefix;
|
||||||
|
}
|
||||||
//var_dump('field='.$field.' field1='.$field1.' sortfield='.$sortfield.' sortfield1='.$sortfield1);
|
//var_dump('field='.$field.' field1='.$field1.' sortfield='.$sortfield.' sortfield1='.$sortfield1);
|
||||||
// If field is used as sort criteria we use a specific css class liste_titre_sel
|
// If field is used as sort criteria we use a specific css class liste_titre_sel
|
||||||
// Example if (sortfield,field)=("nom","xxx.nom") or (sortfield,field)=("nom","nom")
|
// Example if (sortfield,field)=("nom","xxx.nom") or (sortfield,field)=("nom","nom")
|
||||||
if ($field1 && ($sortfield1 == $field1 || $sortfield1 == preg_replace("/^[^\.]+\./", "", $field1))) $out .= '<'.$tag.' class="'.$prefix.'liste_titre_sel" '.$moreattrib.'>';
|
if ($field1 && ($sortfield1 == $field1 || $sortfield1 == preg_replace("/^[^\.]+\./", "", $field1))) {
|
||||||
else $out .= '<'.$tag.' class="'.$prefix.'liste_titre" '.$moreattrib.'>';
|
$out .= '<'.$tag.' class="'.$prefix.'liste_titre_sel" '.$moreattrib;
|
||||||
|
$out .= (($field && empty($conf->global->MAIN_DISABLE_WRAPPING_ON_COLUMN_TITLE) && preg_match('/^[a-zA-Z_0-9\s\.\-:]*$/', $name)) ? ' title="'.dol_escape_htmltag($langs->trans($name)).'"' : '');
|
||||||
|
$out .= '>';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$out .= '<'.$tag.' class="'.$prefix.'liste_titre" '.$moreattrib;
|
||||||
|
$out .= (($field && empty($conf->global->MAIN_DISABLE_WRAPPING_ON_COLUMN_TITLE) && preg_match('/^[a-zA-Z_0-9\s\.\-:]*$/', $name)) ? ' title="'.dol_escape_htmltag($langs->trans($name)).'"' : '');
|
||||||
|
$out .= '>';
|
||||||
|
}
|
||||||
|
|
||||||
if (empty($thead) && $field && empty($disablesortlink)) // If this is a sort field
|
if (empty($thead) && $field && empty($disablesortlink)) // If this is a sort field
|
||||||
{
|
{
|
||||||
@ -4119,7 +4134,9 @@ function getTitleFieldOfList($name, $thead = 0, $file = "", $field = "", $begin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
$sortordertouseinlink = preg_replace('/,$/', '', $sortordertouseinlink);
|
$sortordertouseinlink = preg_replace('/,$/', '', $sortordertouseinlink);
|
||||||
$out .= '<a class="reposition" href="'.$file.'?sortfield='.$field.'&sortorder='.$sortordertouseinlink.'&begin='.$begin.$options.'">';
|
$out .= '<a class="reposition" href="'.$file.'?sortfield='.$field.'&sortorder='.$sortordertouseinlink.'&begin='.$begin.$options.'"';
|
||||||
|
//$out .= (empty($conf->global->MAIN_DISABLE_WRAPPING_ON_COLUMN_TITLE) ? ' title="'.dol_escape_htmltag($langs->trans($name)).'"' : '');
|
||||||
|
$out .= '>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($tooltip) $out .= $form->textwithpicto($langs->trans($name), $langs->trans($tooltip));
|
if ($tooltip) $out .= $form->textwithpicto($langs->trans($name), $langs->trans($tooltip));
|
||||||
@ -4287,7 +4304,7 @@ function print_barre_liste($titre, $page, $file, $options = '', $sortfield = '',
|
|||||||
if ($picto && $titre) print '<td class="nobordernopadding widthpictotitle opacityhigh valignmiddle col-picto">'.img_picto('', $picto, 'class="valignmiddle pictotitle widthpictotitle"', $pictoisfullpath).'</td>';
|
if ($picto && $titre) print '<td class="nobordernopadding widthpictotitle opacityhigh valignmiddle col-picto">'.img_picto('', $picto, 'class="valignmiddle pictotitle widthpictotitle"', $pictoisfullpath).'</td>';
|
||||||
print '<td class="nobordernopadding valignmiddle col-title">';
|
print '<td class="nobordernopadding valignmiddle col-title">';
|
||||||
print '<div class="titre inline-block">'.$titre;
|
print '<div class="titre inline-block">'.$titre;
|
||||||
if (!empty($titre) && $savtotalnboflines >= 0 && (string) $savtotalnboflines != '') print ' ('.$totalnboflines.')';
|
if (!empty($titre) && $savtotalnboflines >= 0 && (string) $savtotalnboflines != '') print '<span class="opacitymedium colorblack paddingleft">('.$totalnboflines.')</span>';
|
||||||
print '</div></td>';
|
print '</div></td>';
|
||||||
|
|
||||||
// Center
|
// Center
|
||||||
|
|||||||
@ -2454,7 +2454,7 @@ function getTaskProgressView($task, $label = true, $progressNumber = true, $hide
|
|||||||
*/
|
*/
|
||||||
function getTaskProgressBadge($task, $label = '', $tooltip = '')
|
function getTaskProgressBadge($task, $label = '', $tooltip = '')
|
||||||
{
|
{
|
||||||
global $conf;
|
global $conf, $langs;
|
||||||
|
|
||||||
$out = '';
|
$out = '';
|
||||||
$badgeClass = '';
|
$badgeClass = '';
|
||||||
@ -2472,12 +2472,15 @@ function getTaskProgressBadge($task, $label = '', $tooltip = '')
|
|||||||
|
|
||||||
if (doubleval($progressCalculated) > doubleval($task->progress * $warningRatio)) {
|
if (doubleval($progressCalculated) > doubleval($task->progress * $warningRatio)) {
|
||||||
$badgeClass .= 'badge-danger';
|
$badgeClass .= 'badge-danger';
|
||||||
|
if (empty($tooltip)) $tooltip = $task->progress.'% < '.$langs->trans("Expected").' '.$progressCalculated.'%';
|
||||||
}
|
}
|
||||||
elseif (doubleval($progressCalculated) > doubleval($task->progress)) { // warning if close at 10%
|
elseif (doubleval($progressCalculated) > doubleval($task->progress)) { // warning if close at 10%
|
||||||
$badgeClass .= 'badge-warning';
|
$badgeClass .= 'badge-warning';
|
||||||
|
if (empty($tooltip)) $tooltip = $task->progress.'% < '.$langs->trans("Expected").' '.$progressCalculated.'%';
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$badgeClass .= 'badge-success';
|
$badgeClass .= 'badge-success';
|
||||||
|
if (empty($tooltip)) $tooltip = $task->progress.'% >= '.$langs->trans("Expected").' '.$progressCalculated.'%';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -411,9 +411,11 @@ class doc_generic_bom_odt extends ModelePDFBom
|
|||||||
}
|
}
|
||||||
if ($foundtagforlines)
|
if ($foundtagforlines)
|
||||||
{
|
{
|
||||||
|
$linenumber = 0;
|
||||||
foreach ($object->lines as $line)
|
foreach ($object->lines as $line)
|
||||||
{
|
{
|
||||||
$tmparray = $this->get_substitutionarray_lines($line, $outputlangs);
|
$linenumber++;
|
||||||
|
$tmparray = $this->get_substitutionarray_lines($line, $outputlangs, $linenumber);
|
||||||
complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines");
|
complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines");
|
||||||
// Call the ODTSubstitutionLine hook
|
// Call the ODTSubstitutionLine hook
|
||||||
$parameters = array('odfHandler'=>&$odfHandler, 'file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs, 'substitutionarray'=>&$tmparray, 'line'=>$line);
|
$parameters = array('odfHandler'=>&$odfHandler, 'file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs, 'substitutionarray'=>&$tmparray, 'line'=>$line);
|
||||||
|
|||||||
@ -427,9 +427,11 @@ class doc_generic_order_odt extends ModelePDFCommandes
|
|||||||
}
|
}
|
||||||
if ($foundtagforlines)
|
if ($foundtagforlines)
|
||||||
{
|
{
|
||||||
|
$linenumber = 0;
|
||||||
foreach ($object->lines as $line)
|
foreach ($object->lines as $line)
|
||||||
{
|
{
|
||||||
$tmparray = $this->get_substitutionarray_lines($line, $outputlangs);
|
$linenumber++;
|
||||||
|
$tmparray = $this->get_substitutionarray_lines($line, $outputlangs, $linenumber);
|
||||||
complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines");
|
complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines");
|
||||||
// Call the ODTSubstitutionLine hook
|
// Call the ODTSubstitutionLine hook
|
||||||
$parameters = array('odfHandler'=>&$odfHandler, 'file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs, 'substitutionarray'=>&$tmparray, 'line'=>$line);
|
$parameters = array('odfHandler'=>&$odfHandler, 'file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs, 'substitutionarray'=>&$tmparray, 'line'=>$line);
|
||||||
|
|||||||
@ -408,9 +408,11 @@ class doc_generic_contract_odt extends ModelePDFContract
|
|||||||
}
|
}
|
||||||
if ($foundtagforlines)
|
if ($foundtagforlines)
|
||||||
{
|
{
|
||||||
|
$linenumber = 0;
|
||||||
foreach ($object->lines as $line)
|
foreach ($object->lines as $line)
|
||||||
{
|
{
|
||||||
$tmparray = $this->get_substitutionarray_lines($line, $outputlangs);
|
$linenumber++;
|
||||||
|
$tmparray = $this->get_substitutionarray_lines($line, $outputlangs, $linenumber);
|
||||||
complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines");
|
complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines");
|
||||||
// Call the ODTSubstitutionLine hook
|
// Call the ODTSubstitutionLine hook
|
||||||
$parameters = array('odfHandler'=>&$odfHandler, 'file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs, 'substitutionarray'=>&$tmparray, 'line'=>$line);
|
$parameters = array('odfHandler'=>&$odfHandler, 'file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs, 'substitutionarray'=>&$tmparray, 'line'=>$line);
|
||||||
|
|||||||
@ -435,9 +435,11 @@ class doc_generic_invoice_odt extends ModelePDFFactures
|
|||||||
}
|
}
|
||||||
if ($foundtagforlines)
|
if ($foundtagforlines)
|
||||||
{
|
{
|
||||||
|
$linenumber = 0;
|
||||||
foreach ($object->lines as $line)
|
foreach ($object->lines as $line)
|
||||||
{
|
{
|
||||||
$tmparray = $this->get_substitutionarray_lines($line, $outputlangs);
|
$linenumber++;
|
||||||
|
$tmparray = $this->get_substitutionarray_lines($line, $outputlangs, $linenumber);
|
||||||
complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines");
|
complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines");
|
||||||
// Call the ODTSubstitutionLine hook
|
// Call the ODTSubstitutionLine hook
|
||||||
$parameters = array('odfHandler'=>&$odfHandler, 'file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs, 'substitutionarray'=>&$tmparray, 'line'=>$line);
|
$parameters = array('odfHandler'=>&$odfHandler, 'file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs, 'substitutionarray'=>&$tmparray, 'line'=>$line);
|
||||||
|
|||||||
@ -418,9 +418,11 @@ class doc_generic_mo_odt extends ModelePDFMo
|
|||||||
}
|
}
|
||||||
if ($foundtagforlines)
|
if ($foundtagforlines)
|
||||||
{
|
{
|
||||||
|
$linenumber = 0;
|
||||||
foreach ($object->lines as $line)
|
foreach ($object->lines as $line)
|
||||||
{
|
{
|
||||||
$tmparray = $this->get_substitutionarray_lines($line, $outputlangs);
|
$linenumber++;
|
||||||
|
$tmparray = $this->get_substitutionarray_lines($line, $outputlangs, $linenumber);
|
||||||
complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines");
|
complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines");
|
||||||
// Call the ODTSubstitutionLine hook
|
// Call the ODTSubstitutionLine hook
|
||||||
$parameters = array('odfHandler'=>&$odfHandler, 'file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs, 'substitutionarray'=>&$tmparray, 'line'=>$line);
|
$parameters = array('odfHandler'=>&$odfHandler, 'file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs, 'substitutionarray'=>&$tmparray, 'line'=>$line);
|
||||||
|
|||||||
@ -456,9 +456,11 @@ class doc_generic_proposal_odt extends ModelePDFPropales
|
|||||||
}
|
}
|
||||||
if ($foundtagforlines)
|
if ($foundtagforlines)
|
||||||
{
|
{
|
||||||
|
$linenumber = 0;
|
||||||
foreach ($object->lines as $line)
|
foreach ($object->lines as $line)
|
||||||
{
|
{
|
||||||
$tmparray = $this->get_substitutionarray_lines($line, $outputlangs);
|
$linenumber++;
|
||||||
|
$tmparray = $this->get_substitutionarray_lines($line, $outputlangs, $linenumber);
|
||||||
complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines");
|
complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines");
|
||||||
// Call the ODTSubstitutionLine hook
|
// Call the ODTSubstitutionLine hook
|
||||||
$parameters = array('odfHandler'=>&$odfHandler, 'file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs, 'substitutionarray'=>&$tmparray, 'line'=>$line);
|
$parameters = array('odfHandler'=>&$odfHandler, 'file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs, 'substitutionarray'=>&$tmparray, 'line'=>$line);
|
||||||
|
|||||||
@ -421,9 +421,11 @@ class doc_generic_supplier_order_odt extends ModelePDFSuppliersOrders
|
|||||||
}
|
}
|
||||||
if ($foundtagforlines)
|
if ($foundtagforlines)
|
||||||
{
|
{
|
||||||
|
$linenumber = 0;
|
||||||
foreach ($object->lines as $line)
|
foreach ($object->lines as $line)
|
||||||
{
|
{
|
||||||
$tmparray = $this->get_substitutionarray_lines($line, $outputlangs);
|
$linenumber++;
|
||||||
|
$tmparray = $this->get_substitutionarray_lines($line, $outputlangs, $linenumber);
|
||||||
complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines");
|
complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines");
|
||||||
// Call the ODTSubstitutionLine hook
|
// Call the ODTSubstitutionLine hook
|
||||||
$parameters = array('odfHandler'=>&$odfHandler, 'file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs, 'substitutionarray'=>&$tmparray, 'line'=>$line);
|
$parameters = array('odfHandler'=>&$odfHandler, 'file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs, 'substitutionarray'=>&$tmparray, 'line'=>$line);
|
||||||
|
|||||||
@ -445,9 +445,11 @@ class doc_generic_supplier_proposal_odt extends ModelePDFSupplierProposal
|
|||||||
}
|
}
|
||||||
if ($foundtagforlines)
|
if ($foundtagforlines)
|
||||||
{
|
{
|
||||||
|
$linenumber = 0;
|
||||||
foreach ($object->lines as $line)
|
foreach ($object->lines as $line)
|
||||||
{
|
{
|
||||||
$tmparray = $this->get_substitutionarray_lines($line, $outputlangs);
|
$linenumber++;
|
||||||
|
$tmparray = $this->get_substitutionarray_lines($line, $outputlangs, $linenumber);
|
||||||
complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines");
|
complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines");
|
||||||
// Call the ODTSubstitutionLine hook
|
// Call the ODTSubstitutionLine hook
|
||||||
$parameters = array('odfHandler'=>&$odfHandler, 'file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs, 'substitutionarray'=>&$tmparray, 'line'=>$line);
|
$parameters = array('odfHandler'=>&$odfHandler, 'file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs, 'substitutionarray'=>&$tmparray, 'line'=>$line);
|
||||||
|
|||||||
@ -286,99 +286,100 @@ if (empty($reshook))
|
|||||||
$lines = $srcobject->lines;
|
$lines = $srcobject->lines;
|
||||||
}
|
}
|
||||||
|
|
||||||
$fk_parent_line = 0;
|
if (is_array($lines)) {
|
||||||
$num = count($lines);
|
$num = count($lines);
|
||||||
|
|
||||||
for ($i = 0; $i < $num; $i++)
|
for ($i = 0; $i < $num; $i++)
|
||||||
{
|
{
|
||||||
$product_type = ($lines[$i]->product_type ? $lines[$i]->product_type : Product::TYPE_PRODUCT);
|
$product_type = ($lines[$i]->product_type ? $lines[$i]->product_type : Product::TYPE_PRODUCT);
|
||||||
|
|
||||||
if ($product_type == Product::TYPE_SERVICE || !empty($conf->global->FICHINTER_PRINT_PRODUCTS)) { //only services except if config includes products
|
if ($product_type == Product::TYPE_SERVICE || !empty($conf->global->FICHINTER_PRINT_PRODUCTS)) { //only services except if config includes products
|
||||||
$duration = 3600; // Default to one hour
|
$duration = 3600; // Default to one hour
|
||||||
|
|
||||||
// Predefined products & services
|
// Predefined products & services
|
||||||
if ($lines[$i]->fk_product > 0)
|
if ($lines[$i]->fk_product > 0)
|
||||||
{
|
{
|
||||||
$prod = new Product($db);
|
$prod = new Product($db);
|
||||||
$prod->id = $lines[$i]->fk_product;
|
$prod->id = $lines[$i]->fk_product;
|
||||||
|
|
||||||
// Define output language
|
// Define output language
|
||||||
if (!empty($conf->global->MAIN_MULTILANGS) && !empty($conf->global->PRODUIT_TEXTS_IN_THIRDPARTY_LANGUAGE)) {
|
if (!empty($conf->global->MAIN_MULTILANGS) && !empty($conf->global->PRODUIT_TEXTS_IN_THIRDPARTY_LANGUAGE)) {
|
||||||
$prod->getMultiLangs();
|
$prod->getMultiLangs();
|
||||||
// We show if duration is present on service (so we get it)
|
// We show if duration is present on service (so we get it)
|
||||||
$prod->fetch($lines[$i]->fk_product);
|
$prod->fetch($lines[$i]->fk_product);
|
||||||
$outputlangs = $langs;
|
$outputlangs = $langs;
|
||||||
$newlang = '';
|
$newlang = '';
|
||||||
if (empty($newlang) && GETPOST('lang_id', 'aZ09')) $newlang = GETPOST('lang_id', 'aZ09');
|
if (empty($newlang) && GETPOST('lang_id', 'aZ09')) $newlang = GETPOST('lang_id', 'aZ09');
|
||||||
if (empty($newlang)) $newlang = $srcobject->thirdparty->default_lang;
|
if (empty($newlang)) $newlang = $srcobject->thirdparty->default_lang;
|
||||||
if (!empty($newlang)) {
|
if (!empty($newlang)) {
|
||||||
$outputlangs = new Translate("", $conf);
|
$outputlangs = new Translate("", $conf);
|
||||||
$outputlangs->setDefaultLang($newlang);
|
$outputlangs->setDefaultLang($newlang);
|
||||||
|
}
|
||||||
|
$label = (!empty($prod->multilangs[$outputlangs->defaultlang]["libelle"])) ? $prod->multilangs[$outputlangs->defaultlang]["libelle"] : $lines[$i]->product_label;
|
||||||
|
} else {
|
||||||
|
$prod->fetch($lines[$i]->fk_product);
|
||||||
|
$label = $lines[$i]->product_label;
|
||||||
}
|
}
|
||||||
$label = (!empty($prod->multilangs[$outputlangs->defaultlang]["libelle"])) ? $prod->multilangs[$outputlangs->defaultlang]["libelle"] : $lines[$i]->product_label;
|
|
||||||
} else {
|
|
||||||
$prod->fetch($lines[$i]->fk_product);
|
|
||||||
$label = $lines[$i]->product_label;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($prod->duration_value && $conf->global->FICHINTER_USE_SERVICE_DURATION) {
|
if ($prod->duration_value && $conf->global->FICHINTER_USE_SERVICE_DURATION) {
|
||||||
switch ($prod->duration_unit) {
|
switch ($prod->duration_unit) {
|
||||||
default:
|
default:
|
||||||
case 'h':
|
case 'h':
|
||||||
$mult = 3600;
|
$mult = 3600;
|
||||||
break;
|
break;
|
||||||
case 'd':
|
case 'd':
|
||||||
$mult = 3600 * 24;
|
$mult = 3600 * 24;
|
||||||
break;
|
break;
|
||||||
case 'w':
|
case 'w':
|
||||||
$mult = 3600 * 24 * 7;
|
$mult = 3600 * 24 * 7;
|
||||||
break;
|
break;
|
||||||
case 'm':
|
case 'm':
|
||||||
$mult = (int) 3600 * 24 * (365 / 12); // Average month duration
|
$mult = (int) 3600 * 24 * (365 / 12); // Average month duration
|
||||||
break;
|
break;
|
||||||
case 'y':
|
case 'y':
|
||||||
$mult = 3600 * 24 * 365;
|
$mult = 3600 * 24 * 365;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
$duration = $prod->duration_value * $mult * $lines[$i]->qty;
|
||||||
}
|
}
|
||||||
$duration = $prod->duration_value * $mult * $lines[$i]->qty;
|
|
||||||
}
|
|
||||||
|
|
||||||
$desc = $lines[$i]->product_ref;
|
$desc = $lines[$i]->product_ref;
|
||||||
$desc .= ' - ';
|
$desc .= ' - ';
|
||||||
$desc .= $label;
|
$desc .= $label;
|
||||||
|
$desc .= '<br>';
|
||||||
|
}
|
||||||
|
// Common part (predefined or free line)
|
||||||
|
$desc .= dol_htmlentitiesbr($lines[$i]->desc);
|
||||||
$desc .= '<br>';
|
$desc .= '<br>';
|
||||||
}
|
$desc .= ' ('.$langs->trans('Quantity').': '.$lines[$i]->qty.')';
|
||||||
// Common part (predefined or free line)
|
|
||||||
$desc .= dol_htmlentitiesbr($lines[$i]->desc);
|
|
||||||
$desc .= '<br>';
|
|
||||||
$desc .= ' ('.$langs->trans('Quantity').': '.$lines[$i]->qty.')';
|
|
||||||
|
|
||||||
$timearray = dol_getdate(dol_now());
|
$timearray = dol_getdate(dol_now());
|
||||||
$date_intervention = dol_mktime(0, 0, 0, $timearray['mon'], $timearray['mday'], $timearray['year']);
|
$date_intervention = dol_mktime(0, 0, 0, $timearray['mon'], $timearray['mday'], $timearray['year']);
|
||||||
|
|
||||||
if ($product_type == Product::TYPE_PRODUCT) {
|
if ($product_type == Product::TYPE_PRODUCT) {
|
||||||
$duration = 0;
|
$duration = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
$predef = '';
|
$predef = '';
|
||||||
|
|
||||||
// Extrafields
|
// Extrafields
|
||||||
$extrafields->fetch_name_optionals_label($object->table_element_line);
|
$extrafields->fetch_name_optionals_label($object->table_element_line);
|
||||||
$array_options = $extrafields->getOptionalsFromPost($object->table_element_line, $predef);
|
$array_options = $extrafields->getOptionalsFromPost($object->table_element_line, $predef);
|
||||||
|
|
||||||
$result = $object->addline(
|
$result = $object->addline(
|
||||||
$user,
|
$user,
|
||||||
$id,
|
$id,
|
||||||
$desc,
|
$desc,
|
||||||
$date_intervention,
|
$date_intervention,
|
||||||
$duration,
|
$duration,
|
||||||
$array_options
|
$array_options
|
||||||
);
|
);
|
||||||
|
|
||||||
if ($result < 0)
|
if ($result < 0)
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1757,9 +1757,11 @@ function top_menu($head, $title = '', $target = '', $disablejs = 0, $disablehead
|
|||||||
/**
|
/**
|
||||||
* Build the tooltip on user login
|
* Build the tooltip on user login
|
||||||
*
|
*
|
||||||
* @return string HTML content
|
* @param int $hideloginname Hide login name. Show only the image.
|
||||||
|
* @param string $urllogout URL for logout
|
||||||
|
* @return string HTML content
|
||||||
*/
|
*/
|
||||||
function top_menu_user()
|
function top_menu_user($hideloginname = 0, $urllogout = '')
|
||||||
{
|
{
|
||||||
global $langs, $conf, $db, $hookmanager, $user;
|
global $langs, $conf, $db, $hookmanager, $user;
|
||||||
global $dolibarr_main_authentication, $dolibarr_main_demo;
|
global $dolibarr_main_authentication, $dolibarr_main_demo;
|
||||||
@ -1830,9 +1832,10 @@ function top_menu_user()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (empty($urllogout)) {
|
||||||
|
$urllogout = DOL_URL_ROOT.'/user/logout.php';
|
||||||
$logoutLink = '<a accesskey="l" href="'.DOL_URL_ROOT.'/user/logout.php" class="button-top-menu-dropdown" ><i class="fa fa-sign-out-alt"></i> '.$langs->trans("Logout").'</a>';
|
}
|
||||||
|
$logoutLink = '<a accesskey="l" href="'.$urllogout.'" class="button-top-menu-dropdown" ><i class="fa fa-sign-out-alt"></i> '.$langs->trans("Logout").'</a>';
|
||||||
$profilLink = '<a accesskey="l" href="'.DOL_URL_ROOT.'/user/card.php?id='.$user->id.'" class="button-top-menu-dropdown" ><i class="fa fa-user"></i> '.$langs->trans("Card").'</a>';
|
$profilLink = '<a accesskey="l" href="'.DOL_URL_ROOT.'/user/card.php?id='.$user->id.'" class="button-top-menu-dropdown" ><i class="fa fa-user"></i> '.$langs->trans("Card").'</a>';
|
||||||
|
|
||||||
|
|
||||||
@ -1857,9 +1860,12 @@ function top_menu_user()
|
|||||||
|
|
||||||
$btnUser = '<!-- div for user link -->
|
$btnUser = '<!-- div for user link -->
|
||||||
<div id="topmenu-login-dropdown" class="userimg atoplogin dropdown user user-menu inline-block">
|
<div id="topmenu-login-dropdown" class="userimg atoplogin dropdown user user-menu inline-block">
|
||||||
<a href="'.DOL_URL_ROOT.'/user/card.php?id='.$user->id.'" class="dropdown-toggle login-dropdown-a" data-toggle="dropdown">
|
<a href="'.DOL_URL_ROOT.'/user/card.php?id='.$user->id.'" class="dropdown-toggle login-dropdown-a" data-toggle="dropdown">';
|
||||||
'.$userImage.'
|
$btnUser .= $userImage;
|
||||||
<span class="hidden-xs maxwidth200 atoploginusername hideonsmartphone">'.dol_trunc($user->firstname ? $user->firstname : $user->login, 10).'</span>
|
if (empty($hideloginname)) {
|
||||||
|
$btnUser .= '<span class="hidden-xs maxwidth200 atoploginusername hideonsmartphone paddingleft">'.dol_trunc($user->firstname ? $user->firstname : $user->login, 10).'</span>';
|
||||||
|
}
|
||||||
|
$btnUser .= '
|
||||||
</a>
|
</a>
|
||||||
<div class="dropdown-menu">
|
<div class="dropdown-menu">
|
||||||
<!-- User image -->
|
<!-- User image -->
|
||||||
|
|||||||
@ -1652,8 +1652,7 @@ $head[$h][1] = $langs->trans("DangerZone");
|
|||||||
$head[$h][2] = 'deletemodule';
|
$head[$h][2] = 'deletemodule';
|
||||||
$h++;
|
$h++;
|
||||||
|
|
||||||
|
dol_fiche_head($head, $module, $langs->trans("Modules"), -1, 'generic', 0, $infomodulesfound, '', 8); // Modules
|
||||||
dol_fiche_head($head, $module, $langs->trans("Modules"), -1, 'generic', 0, $infomodulesfound); // Modules
|
|
||||||
|
|
||||||
if ($module == 'initmodule')
|
if ($module == 'initmodule')
|
||||||
{
|
{
|
||||||
|
|||||||
@ -422,9 +422,11 @@ class doc_generic_myobject_odt extends ModelePDFMyObject
|
|||||||
}
|
}
|
||||||
if ($foundtagforlines)
|
if ($foundtagforlines)
|
||||||
{
|
{
|
||||||
|
$linenumber = 0;
|
||||||
foreach ($object->lines as $line)
|
foreach ($object->lines as $line)
|
||||||
{
|
{
|
||||||
$tmparray = $this->get_substitutionarray_lines($line, $outputlangs);
|
$linenumber++;
|
||||||
|
$tmparray = $this->get_substitutionarray_lines($line, $outputlangs, $linenumber);
|
||||||
complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines");
|
complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines");
|
||||||
// Call the ODTSubstitutionLine hook
|
// Call the ODTSubstitutionLine hook
|
||||||
$parameters = array('odfHandler'=>&$odfHandler, 'file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs, 'substitutionarray'=>&$tmparray, 'line'=>$line);
|
$parameters = array('odfHandler'=>&$odfHandler, 'file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs, 'substitutionarray'=>&$tmparray, 'line'=>$line);
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 683 B |
BIN
htdocs/modulebuilder/template/img/object_mymodule_over.png
Normal file
BIN
htdocs/modulebuilder/template/img/object_mymodule_over.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 323 B |
@ -233,8 +233,10 @@ table.postablelines tr td {
|
|||||||
padding-top: 3px;
|
padding-top: 3px;
|
||||||
padding-bottom: 3px;
|
padding-bottom: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.posinvoiceline td {
|
.posinvoiceline td {
|
||||||
height: 40px !important;
|
height: 40px !important;
|
||||||
|
background-color: var(--colorbacklineimpair1);
|
||||||
}
|
}
|
||||||
|
|
||||||
div.paymentbordline
|
div.paymentbordline
|
||||||
@ -268,7 +270,7 @@ div.paymentbordline
|
|||||||
.row1withhead{
|
.row1withhead{
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: calc(50% - 35px);
|
height: calc(40% - 50px);
|
||||||
padding-top: 5px;
|
padding-top: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -281,7 +283,7 @@ div.paymentbordline
|
|||||||
.row2withhead{
|
.row2withhead{
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 50%;
|
height: 60%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.div1{
|
.div1{
|
||||||
@ -401,26 +403,51 @@ div.description_content {
|
|||||||
.header{
|
.header{
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 35px;
|
height: 50px;
|
||||||
background: rgb(60,70,100);
|
background: rgb(60,70,100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.topnav-left {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.topnav-right {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.topnav div.login_block_other, .topnav div.login_block_user {
|
||||||
|
max-width: unset;
|
||||||
|
width: unset;
|
||||||
|
}
|
||||||
.topnav{
|
.topnav{
|
||||||
background: rgb(<?php echo $colorbackhmenu1 ?>);
|
background: rgb(<?php echo $colorbackhmenu1 ?>);
|
||||||
background-image: linear-gradient(-45deg, <?php echo colorAdjustBrightness(colorArrayToHex(colorStringToArray($colorbackhmenu1)), '5'); ?>, rgb(<?php echo $colorbackhmenu1 ?>));
|
background-image: linear-gradient(-45deg, <?php echo colorAdjustBrightness(colorArrayToHex(colorStringToArray($colorbackhmenu1)), '5'); ?>, rgb(<?php echo $colorbackhmenu1 ?>));
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
.topnav .tmenu {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
.topnav a{
|
.topnav a{
|
||||||
float: left;
|
float: left;
|
||||||
color: #f2f2f2;
|
color: #f2f2f2;
|
||||||
padding: 6px 16px;
|
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.topnav .login_block_other a {
|
||||||
|
padding: 5px 10px;
|
||||||
|
margin-left: 4px;
|
||||||
|
font-size: 1.3em;
|
||||||
|
}
|
||||||
|
.topnav-right > a {
|
||||||
font-size: 17px;
|
font-size: 17px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.topnav a:hover{
|
.topnav-left a {
|
||||||
|
padding: 7px 4px 7px 4px;
|
||||||
|
margin: 8px;
|
||||||
|
margin-left: 4px;
|
||||||
|
}
|
||||||
|
.topnav-left a:hover, .topnav .login_block_other a:hover {
|
||||||
background-color: #ddd;
|
background-color: #ddd;
|
||||||
color: black;
|
color: black;
|
||||||
}
|
}
|
||||||
@ -434,8 +461,10 @@ div.description_content {
|
|||||||
color: #000;
|
color: #000;
|
||||||
float: left;
|
float: left;
|
||||||
border-bottom: none !important;
|
border-bottom: none !important;
|
||||||
margin-top: 4px;
|
|
||||||
margin-left: 6px;
|
margin-left: 6px;
|
||||||
|
font-size: 1.3em;
|
||||||
|
max-width: 250px;
|
||||||
|
border-radius: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (min-width: 892px) {
|
@media screen and (min-width: 892px) {
|
||||||
@ -494,7 +523,23 @@ div.description_content {
|
|||||||
|
|
||||||
/* For small screens */
|
/* For small screens */
|
||||||
|
|
||||||
|
@media screen and (max-width: 1024px) {
|
||||||
|
.topnav input[type="text"] {
|
||||||
|
max-width: 150px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@media screen and (max-width: 767px) {
|
@media screen and (max-width: 767px) {
|
||||||
|
.header {
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
.topnav input[type="text"] {
|
||||||
|
max-width: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
.topnav-right {
|
.topnav-right {
|
||||||
float: unset;
|
float: unset;
|
||||||
}
|
}
|
||||||
@ -511,6 +556,11 @@ div.description_content {
|
|||||||
width: 25%;
|
width: 25%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.row1withhead{
|
||||||
|
height: calc(40% - 100px);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
div.div1 {
|
div.div1 {
|
||||||
padding-bottom: 0;
|
padding-bottom: 0;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
@ -528,6 +578,7 @@ div.description_content {
|
|||||||
}
|
}
|
||||||
|
|
||||||
div.div3 {
|
div.div3 {
|
||||||
|
margin-top: 8px;
|
||||||
height: unset;
|
height: unset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -461,7 +461,7 @@ function Search2(keyCodeForEnter) {
|
|||||||
$("#prodesc"+i).text(data[i]['label']);
|
$("#prodesc"+i).text(data[i]['label']);
|
||||||
$("#prodivdesc"+i).show();
|
$("#prodivdesc"+i).show();
|
||||||
$("#proimg"+i).attr("title", titlestring);
|
$("#proimg"+i).attr("title", titlestring);
|
||||||
$("#proimg"+i).attr("src", "genimg/?query=pro&id="+data[i]['rowid']);
|
$("#proimg"+i).attr("src", "genimg/index.php?query=pro&id="+data[i]['rowid']);
|
||||||
$("#prodiv"+i).data("rowid", data[i]['rowid']);
|
$("#prodiv"+i).data("rowid", data[i]['rowid']);
|
||||||
$("#prodiv"+i).data("iscat", 0);
|
$("#prodiv"+i).data("iscat", 0);
|
||||||
}
|
}
|
||||||
@ -665,20 +665,27 @@ if (empty($conf->global->TAKEPOS_HIDE_HEAD_BAR)) {
|
|||||||
<div class="header">
|
<div class="header">
|
||||||
<div class="topnav">
|
<div class="topnav">
|
||||||
<div class="topnav-left">
|
<div class="topnav-left">
|
||||||
<a onclick="TerminalsDialog();">
|
<a class="topnav-terminalhour" onclick="TerminalsDialog();">
|
||||||
<?php echo $langs->trans("Terminal")." ";
|
<?php echo $langs->trans("Terminal")." ";
|
||||||
if ($_SESSION["takeposterminal"] == "") echo "1"; else echo $_SESSION["takeposterminal"];
|
if ($_SESSION["takeposterminal"] == "") echo "1";
|
||||||
echo " - ".dol_print_date(dol_now(), "dayhour");
|
else echo $_SESSION["takeposterminal"];
|
||||||
|
echo '<span class="hideonsmartphone"> - '.dol_print_date(dol_now(), "dayhour").'</span>';
|
||||||
?>
|
?>
|
||||||
</a>
|
</a>
|
||||||
<a onclick="Customer();"><?php echo $langs->trans("Customer"); ?></a>
|
<a onclick="Customer();"><?php echo $langs->trans("Customer"); ?></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="topnav-right">
|
<div class="topnav-right">
|
||||||
|
<div class="login_block_other">
|
||||||
<input type="text" id="search" name="search" onkeyup="Search2(<?php echo $keyCodeForEnter; ?>);" placeholder="<?php echo $langs->trans("Search"); ?>" autofocus>
|
<input type="text" id="search" name="search" onkeyup="Search2(<?php echo $keyCodeForEnter; ?>);" placeholder="<?php echo $langs->trans("Search"); ?>" autofocus>
|
||||||
<a onclick="ClearSearch();"><span class="fa fa-backspace"></span></a>
|
<a onclick="ClearSearch();"><span class="fa fa-backspace"></span></a>
|
||||||
<a onclick="window.location.href='<?php echo DOL_URL_ROOT; ?>';"><span class="fas fa-sign-out-alt"></span></a>
|
<a onclick="window.location.href='<?php echo DOL_URL_ROOT; ?>';"><span class="fas fa-home"></span></a>
|
||||||
<a onclick="window.location.href='<?php echo DOL_URL_ROOT; ?>/user/logout.php';"><span class="fas fa-user"></span></a>
|
|
||||||
<a onclick="FullScreen();"><span class="fa fa-expand-arrows-alt"></span></a>
|
<a onclick="FullScreen();"><span class="fa fa-expand-arrows-alt"></span></a>
|
||||||
|
</div>
|
||||||
|
<div class="login_block_user">
|
||||||
|
<?php
|
||||||
|
print top_menu_user(1, DOL_URL_ROOT.'/user/logout.php');
|
||||||
|
?>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -809,8 +816,6 @@ if (!empty($reshook)) {
|
|||||||
|
|
||||||
if ($r % 3 == 2) $menus[$r++] = array('title'=>'', 'style'=>'visibility: hidden;');
|
if ($r % 3 == 2) $menus[$r++] = array('title'=>'', 'style'=>'visibility: hidden;');
|
||||||
|
|
||||||
$menus[$r++] = array('title'=>'<span class="fa fa-home paddingrightonly"></span><div class="trunc">'.$langs->trans("BackOffice").'</div>', 'action'=>'window.open(\''.(DOL_URL_ROOT ? DOL_URL_ROOT : '/').'\', \'_backoffice\');');
|
|
||||||
|
|
||||||
if (!empty($conf->global->TAKEPOS_HIDE_HEAD_BAR)) {
|
if (!empty($conf->global->TAKEPOS_HIDE_HEAD_BAR)) {
|
||||||
$menus[$r++] = array('title'=>'<span class="fa fa-sign-out-alt paddingrightonly"></span><div class="trunc">'.$langs->trans("Logout").'</div>', 'action'=>'window.location.href=\''.DOL_URL_ROOT.'/user/logout.php\';');
|
$menus[$r++] = array('title'=>'<span class="fa fa-sign-out-alt paddingrightonly"></span><div class="trunc">'.$langs->trans("Logout").'</div>', 'action'=>'window.location.href=\''.DOL_URL_ROOT.'/user/logout.php\';');
|
||||||
}
|
}
|
||||||
|
|||||||
@ -122,7 +122,7 @@ button.dropdown-item.global-search-item {
|
|||||||
.tmenu .open.dropdown, .tmenu .open.dropdown {
|
.tmenu .open.dropdown, .tmenu .open.dropdown {
|
||||||
background: rgba(0, 0, 0, 0.1);
|
background: rgba(0, 0, 0, 0.1);
|
||||||
}
|
}
|
||||||
.tmenu .dropdown-menu, .login_block .dropdown-menu {
|
.tmenu .dropdown-menu, .login_block .dropdown-menu, .topnav .dropdown-menu {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 2px;
|
right: 2px;
|
||||||
<?php echo $left; ?>: auto;
|
<?php echo $left; ?>: auto;
|
||||||
@ -135,20 +135,23 @@ button.dropdown-item.global-search-item {
|
|||||||
.user-body {
|
.user-body {
|
||||||
color: #333;
|
color: #333;
|
||||||
}
|
}
|
||||||
.side-nav-vert .user-menu .dropdown-menu {
|
.side-nav-vert .user-menu .dropdown-menu, .topnav .user-menu .dropdown-menu {
|
||||||
border-top-right-radius: 0;
|
border-top-right-radius: 0;
|
||||||
border-top-left-radius: 0;
|
border-top-left-radius: 0;
|
||||||
padding: 1px 0 0 0;
|
padding: 1px 0 0 0;
|
||||||
border-top-width: 0;
|
border-top-width: 0;
|
||||||
width: 300px;
|
width: 300px;
|
||||||
}
|
}
|
||||||
.side-nav-vert .user-menu .dropdown-menu {
|
.topnav .user-menu .dropdown-menu {
|
||||||
|
top: 50px;
|
||||||
|
}
|
||||||
|
.side-nav-vert .user-menu .dropdown-menu, .topnav .user-menu .dropdown-menu {
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
border-top-left-radius: 0;
|
border-top-left-radius: 0;
|
||||||
border-top-right-radius: 0;
|
border-top-right-radius: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.side-nav-vert .user-menu .dropdown-menu > .user-header {
|
.side-nav-vert .user-menu .dropdown-menu > .user-header, .topnav .user-menu .dropdown-menu > .user-header {
|
||||||
min-height: 100px;
|
min-height: 100px;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@ -333,7 +336,7 @@ a.top-menu-dropdown-link {
|
|||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
content: "\f0da";
|
content: "\f0da";
|
||||||
color: rgba(0,0,0,0.3);
|
/* color: rgba(0,0,0,0.3); */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -348,22 +351,20 @@ a.top-menu-dropdown-link {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
.dropdown-search-input {
|
.dropdown-search-input {
|
||||||
width: 100%;
|
width: 280px;
|
||||||
padding: 10px 35px 10px 20px;
|
padding: 10px 35px 10px 20px;
|
||||||
|
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
font-size: 14px;
|
/*font-size: 14px;
|
||||||
line-height: 16px;
|
line-height: 16px;*/
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
|
||||||
|
|
||||||
color: #575756;
|
color: #575756;
|
||||||
background-color: transparent;
|
|
||||||
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z'/%3E%3Cpath d='M0 0h24v24H0z' fill='none'/%3E%3C/svg%3E");
|
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z'/%3E%3Cpath d='M0 0h24v24H0z' fill='none'/%3E%3C/svg%3E");
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-size: 16px 16px;
|
background-size: 16px 16px;
|
||||||
background-position: 95% center;
|
background-position: 95% center;
|
||||||
border-radius: 50px;
|
border-radius: 10px;
|
||||||
border: 1px solid #c4c4c2 !important;
|
border: 1px solid #c4c4c2 !important;
|
||||||
transition: all 250ms ease-in-out;
|
transition: all 250ms ease-in-out;
|
||||||
backface-visibility: hidden;
|
backface-visibility: hidden;
|
||||||
|
|||||||
@ -124,6 +124,12 @@ select.vmenusearchselectcombo {
|
|||||||
background-color: unset;
|
background-color: unset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
th.wrapcolumntitle.liste_titre:not(.maxwidthsearch), td.wrapcolumntitle.liste_titre:not(.maxwidthsearch) {
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
max-width: 120px;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
.liste_titre input[name=month_date_when], .liste_titre input[name=monthvalid], .liste_titre input[name=search_ordermonth], .liste_titre input[name=search_deliverymonth],
|
.liste_titre input[name=month_date_when], .liste_titre input[name=monthvalid], .liste_titre input[name=search_ordermonth], .liste_titre input[name=search_deliverymonth],
|
||||||
.liste_titre input[name=search_smonth], .liste_titre input[name=search_month], .liste_titre input[name=search_emonth], .liste_titre input[name=smonth], .liste_titre input[name=month], .liste_titre select[name=month],
|
.liste_titre input[name=search_smonth], .liste_titre input[name=search_month], .liste_titre input[name=search_emonth], .liste_titre input[name=smonth], .liste_titre input[name=month], .liste_titre select[name=month],
|
||||||
.liste_titre input[name=month_lim], .liste_titre input[name=month_start], .liste_titre input[name=month_end], .liste_titre input[name=month_create],
|
.liste_titre input[name=month_lim], .liste_titre input[name=month_start], .liste_titre input[name=month_end], .liste_titre input[name=month_create],
|
||||||
@ -328,6 +334,13 @@ select.flat, form.flat select {
|
|||||||
.opacitytransp {
|
.opacitytransp {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
}
|
}
|
||||||
|
.colorwhite {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.colorblack {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
select:invalid {
|
select:invalid {
|
||||||
color: gray;
|
color: gray;
|
||||||
}
|
}
|
||||||
@ -362,6 +375,7 @@ input#onlinepaymenturl, input#directdownloadlink {
|
|||||||
opacity: 0.7;
|
opacity: 0.7;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
div#moretabsList, div#moretabsListaction {
|
div#moretabsList, div#moretabsListaction {
|
||||||
z-index: 5;
|
z-index: 5;
|
||||||
}
|
}
|
||||||
@ -1983,13 +1997,7 @@ a.tmenuimage:hover{
|
|||||||
$found = 0; $url = '';
|
$found = 0; $url = '';
|
||||||
foreach ($conf->file->dol_document_root as $dirroot)
|
foreach ($conf->file->dol_document_root as $dirroot)
|
||||||
{
|
{
|
||||||
if (file_exists($dirroot."/".$val."/img/".$val."_over.png"))
|
if (file_exists($dirroot."/".$val."/img/".$val.".png"))
|
||||||
{
|
|
||||||
$url = dol_buildpath('/'.$val.'/img/'.$val.'_over.png', 1);
|
|
||||||
$found = 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
elseif (file_exists($dirroot."/".$val."/img/".$val.".png")) // Retro compatibilité
|
|
||||||
{
|
{
|
||||||
$url = dol_buildpath('/'.$val.'/img/'.$val.'.png', 1);
|
$url = dol_buildpath('/'.$val.'/img/'.$val.'.png', 1);
|
||||||
$found = 1;
|
$found = 1;
|
||||||
@ -2000,10 +2008,11 @@ a.tmenuimage:hover{
|
|||||||
if (!$found)
|
if (!$found)
|
||||||
{
|
{
|
||||||
if (!defined('DISABLE_FONT_AWSOME')) {
|
if (!defined('DISABLE_FONT_AWSOME')) {
|
||||||
print "/* A mainmenu entry was found but img file ".$val.".png not found (check /".$val."/img/".$val.".png), so we use a generic one */\n";
|
print "/* A mainmenu entry was found but img file ".$val.".png not found (check /".$val."/img/".$val.".png), so we use a generic one. */\n";
|
||||||
|
print "/* Overwrite this definition in your own css with a different content to use your own font awesome icon. */\n";
|
||||||
print 'div.mainmenu.'.$val.'::before {
|
print 'div.mainmenu.'.$val.'::before {
|
||||||
content: "\f249";
|
content: "\f249";
|
||||||
}';
|
}'."\n";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@ -279,6 +279,12 @@ textarea.cke_source:focus
|
|||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
th.wrapcolumntitle.liste_titre:not(.maxwidthsearch), td.wrapcolumntitle.liste_titre:not(.maxwidthsearch) {
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
max-width: 120px;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
.liste_titre input[name=month_date_when], .liste_titre input[name=monthvalid], .liste_titre input[name=search_ordermonth], .liste_titre input[name=search_deliverymonth],
|
.liste_titre input[name=month_date_when], .liste_titre input[name=monthvalid], .liste_titre input[name=search_ordermonth], .liste_titre input[name=search_deliverymonth],
|
||||||
.liste_titre input[name=search_smonth], .liste_titre input[name=search_month], .liste_titre input[name=search_emonth], .liste_titre input[name=smonth], .liste_titre input[name=month],
|
.liste_titre input[name=search_smonth], .liste_titre input[name=search_month], .liste_titre input[name=search_emonth], .liste_titre input[name=smonth], .liste_titre input[name=month],
|
||||||
.liste_titre input[name=month_lim], .liste_titre input[name=month_start], .liste_titre input[name=month_end], .liste_titre input[name=month_create],
|
.liste_titre input[name=month_lim], .liste_titre input[name=month_start], .liste_titre input[name=month_end], .liste_titre input[name=month_create],
|
||||||
@ -465,6 +471,13 @@ select.flat, form.flat select {
|
|||||||
.opacitytransp {
|
.opacitytransp {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
}
|
}
|
||||||
|
.colorwhite {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.colorblack {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
select:invalid {
|
select:invalid {
|
||||||
color: gray;
|
color: gray;
|
||||||
}
|
}
|
||||||
@ -2051,13 +2064,7 @@ div.mainmenu.website {
|
|||||||
$found = 0; $url = '';
|
$found = 0; $url = '';
|
||||||
foreach ($conf->file->dol_document_root as $dirroot)
|
foreach ($conf->file->dol_document_root as $dirroot)
|
||||||
{
|
{
|
||||||
if (file_exists($dirroot."/".$val."/img/".$val."_over.png"))
|
if (file_exists($dirroot."/".$val."/img/".$val.".png"))
|
||||||
{
|
|
||||||
$url = dol_buildpath('/'.$val.'/img/'.$val.'_over.png', 1);
|
|
||||||
$found = 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
elseif (file_exists($dirroot."/".$val."/img/".$val.".png")) // Retro compatibilité
|
|
||||||
{
|
{
|
||||||
$url = dol_buildpath('/'.$val.'/img/'.$val.'.png', 1);
|
$url = dol_buildpath('/'.$val.'/img/'.$val.'.png', 1);
|
||||||
$found = 1;
|
$found = 1;
|
||||||
@ -2075,7 +2082,8 @@ div.mainmenu.website {
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print "/* A mainmenu entry was found but img file ".$val.".png not found (check /".$val."/img/".$val.".png), so we use a generic one */\n";
|
print "/* A mainmenu entry was found but img file ".$val.".png not found (check /".$val."/img/".$val.".png), so we use a generic one. */\n";
|
||||||
|
print "/* Overwrite this definition in your own css with a different content to use your own font awesome icon. */\n";
|
||||||
$url = dol_buildpath($path.'/theme/'.$theme.'/img/menus/generic'.(min($generic, 4))."_over.png", 1);
|
$url = dol_buildpath($path.'/theme/'.$theme.'/img/menus/generic'.(min($generic, 4))."_over.png", 1);
|
||||||
print "div.mainmenu.".$val." {\n";
|
print "div.mainmenu.".$val." {\n";
|
||||||
print " background-image: url(".$url.");\n";
|
print " background-image: url(".$url.");\n";
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user