From dd230575163f33cacb4b81d6936494ff38be72b6 Mon Sep 17 00:00:00 2001 From: Gauthier PC portable 024 Date: Mon, 15 Nov 2021 14:54:09 +0100 Subject: [PATCH 001/248] NEW : accountancy massaction preselect account (customer and supplier list) --- htdocs/accountancy/customer/list.php | 25 +++++++++++++++++++++++-- htdocs/accountancy/supplier/list.php | 25 +++++++++++++++++++++++-- 2 files changed, 46 insertions(+), 4 deletions(-) diff --git a/htdocs/accountancy/customer/list.php b/htdocs/accountancy/customer/list.php index b61e2e74ad8..b55ec2b41a1 100644 --- a/htdocs/accountancy/customer/list.php +++ b/htdocs/accountancy/customer/list.php @@ -5,6 +5,7 @@ * Copyright (C) 2013-2021 Florian Henry * Copyright (C) 2014 Juanjo Menent * Copyright (C) 2016 Laurent Destailleur + * Copyright (C) 2021 Gauthier VERDOL * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -46,6 +47,7 @@ $show_files = GETPOST('show_files', 'int'); $confirm = GETPOST('confirm', 'alpha'); $toselect = GETPOST('toselect', 'array'); $optioncss = GETPOST('optioncss', 'alpha'); +$default_account = GETPOST('default_account', 'int'); // Select Box $mesCasesCochees = GETPOST('toselect', 'array'); @@ -434,12 +436,15 @@ if ($result) { $arrayofmassactions = array( 'ventil'=>img_picto('', 'check', 'class="pictofixedwidth"').$langs->trans("Ventilate") + ,'set_default_account'=>img_picto('', 'check', 'class="pictofixedwidth"').$langs->trans("ConfirmPreselectAccount") //'presend'=>img_picto('', 'email', 'class="pictofixedwidth"').$langs->trans("SendByMail"), //'builddoc'=>img_picto('', 'pdf', 'class="pictofixedwidth"').$langs->trans("PDFMerge"), ); //if ($user->rights->mymodule->supprimer) $arrayofmassactions['predelete'] = img_picto('', 'delete', 'class="pictofixedwidth"').$langs->trans("Delete"); //if (in_array($massaction, array('presend','predelete'))) $arrayofmassactions=array(); - $massactionbutton = $form->selectMassAction('ventil', $arrayofmassactions, 1); + if ($massaction !== 'set_default_account') { + $massactionbutton = $form->selectMassAction('ventil', $arrayofmassactions, 1); + } print '
'."\n"; print ''; @@ -454,6 +459,14 @@ if ($result) { print_barre_liste($langs->trans("InvoiceLines"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num_lines, $nbtotalofrecords, 'title_accountancy', 0, '', '', $limit); + if ($massaction == 'set_default_account') { + $formquestion[]=array('type' => 'other', + 'name' => 'set_default_account', + 'label' => $langs->trans("AccountancyCode"), + 'value' => $formaccounting->select_account('', 'default_account', 1, array(), 0, 0, 'maxwidth200 maxwidthonsmartphone', 'cachewithshowemptyone')); + print $form->formconfirm($_SERVER["PHP_SELF"], $langs->trans("ConfirmPreselectAccount"), $langs->trans("ConfirmPreselectAccountQuestion", count($toselect)), "confirm_set_default_account", $formquestion, 1, 0, 200, 500, 1); + } + print ''.$langs->trans("DescVentilTodoCustomer").'

'; if ($msg) { @@ -728,7 +741,7 @@ if ($result) { // Suggested accounting account print ''; - print $formaccounting->select_account($suggestedid, 'codeventil'.$facture_static_det->id, 1, array(), 0, 0, 'codeventil maxwidth200 maxwidthonsmartphone', 'cachewithshowemptyone'); + print $formaccounting->select_account(($default_account > 0 && $confirm === 'yes' && in_array($objp->rowid."_".$i, $toselect)) ? $default_account : $suggestedid, 'codeventil'.$facture_static_det->id, 1, array(), 0, 0, 'codeventil maxwidth200 maxwidthonsmartphone', 'cachewithshowemptyone'); print ''; // Column with checkbox @@ -737,6 +750,14 @@ if ($result) { if (!empty($suggestedid) && $suggestedaccountingaccountfor != '' && $suggestedaccountingaccountfor != 'eecwithoutvatnumber') { $ischecked = 1; } + + if (!empty($toselect)) { + $ischecked = 0; + if (in_array($objp->rowid."_".$i, $toselect)) { + $ischecked=1; + } + } + print ''; print ''; diff --git a/htdocs/accountancy/supplier/list.php b/htdocs/accountancy/supplier/list.php index 18cb15d61a5..7638f14375e 100644 --- a/htdocs/accountancy/supplier/list.php +++ b/htdocs/accountancy/supplier/list.php @@ -5,6 +5,7 @@ * Copyright (C) 2013-2021 Florian Henry * Copyright (C) 2014 Juanjo Menent s * Copyright (C) 2016 Laurent Destailleur + * Copyright (C) 2021 Gauthier VERDOL * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -47,6 +48,7 @@ $show_files = GETPOST('show_files', 'int'); $confirm = GETPOST('confirm', 'alpha'); $toselect = GETPOST('toselect', 'array'); $optioncss = GETPOST('optioncss', 'alpha'); +$default_account = GETPOST('default_account', 'int'); // Select Box $mesCasesCochees = GETPOST('toselect', 'array'); @@ -434,12 +436,15 @@ if ($result) { $arrayofmassactions = array( 'ventil'=>img_picto('', 'check', 'class="pictofixedwidth"').$langs->trans("Ventilate") + ,'set_default_account'=>img_picto('', 'check', 'class="pictofixedwidth"').$langs->trans("ConfirmPreselectAccount") //'presend'=>img_picto('', 'email', 'class="pictofixedwidth"').$langs->trans("SendByMail"), //'builddoc'=>img_picto('', 'pdf', 'class="pictofixedwidth"').$langs->trans("PDFMerge"), ); //if ($user->rights->mymodule->supprimer) $arrayofmassactions['predelete'] = img_picto('', 'delete', 'class="pictofixedwidth"').$langs->trans("Delete"); //if (in_array($massaction, array('presend','predelete'))) $arrayofmassactions=array(); - $massactionbutton = $form->selectMassAction('ventil', $arrayofmassactions, 1); + if ($massaction !== 'set_default_account') { + $massactionbutton = $form->selectMassAction('ventil', $arrayofmassactions, 1); + } print ''."\n"; print ''; @@ -454,6 +459,14 @@ if ($result) { print_barre_liste($langs->trans("InvoiceLines"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num_lines, $nbtotalofrecords, 'title_accountancy', 0, '', '', $limit); + if ($massaction == 'set_default_account') { + $formquestion[]=array('type' => 'other', + 'name' => 'set_default_account', + 'label' => $langs->trans("AccountancyCode"), + 'value' => $formaccounting->select_account('', 'default_account', 1, array(), 0, 0, 'maxwidth200 maxwidthonsmartphone', 'cachewithshowemptyone')); + print $form->formconfirm($_SERVER["PHP_SELF"], $langs->trans("ConfirmPreselectAccount"), $langs->trans("ConfirmPreselectAccountQuestion", count($toselect)), "confirm_set_default_account", $formquestion, 1, 0, 200, 500, 1); + } + print ''.$langs->trans("DescVentilTodoCustomer").'

'; if ($msg) { @@ -719,7 +732,7 @@ if ($result) { // Suggested accounting account print ''; - print $formaccounting->select_account($suggestedid, 'codeventil'.$facturefourn_static_det->id, 1, array(), 0, 0, 'codeventil maxwidth200 maxwidthonsmartphone', 'cachewithshowemptyone'); + print $formaccounting->select_account(($default_account > 0 && $confirm === 'yes' && in_array($objp->rowid."_".$i, $toselect)) ? $default_account : $suggestedid, 'codeventil'.$facturefourn_static_det->id, 1, array(), 0, 0, 'codeventil maxwidth200 maxwidthonsmartphone', 'cachewithshowemptyone'); print ''; // Column with checkbox @@ -728,6 +741,14 @@ if ($result) { if (!empty($suggestedid) && $suggestedaccountingaccountfor != '' && $suggestedaccountingaccountfor != 'eecwithoutvatnumber') { $ischecked = 1; } + + if (!empty($toselect)) { + $ischecked = 0; + if (in_array($objp->rowid."_".$i, $toselect)) { + $ischecked=1; + } + } + print ''; print ''; From 192e62fa5c00e5d82d831aa377c2916e41849806 Mon Sep 17 00:00:00 2001 From: lmarcouiller Date: Mon, 21 Feb 2022 15:41:41 +0100 Subject: [PATCH 002/248] Fix : fix bug class and sql regeneration in modulebuilder --- htdocs/core/lib/modulebuilder.lib.php | 34 +++++++++++++-------------- htdocs/modulebuilder/index.php | 4 +++- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/htdocs/core/lib/modulebuilder.lib.php b/htdocs/core/lib/modulebuilder.lib.php index 7c32b377bd4..d5d4aa8c2c4 100644 --- a/htdocs/core/lib/modulebuilder.lib.php +++ b/htdocs/core/lib/modulebuilder.lib.php @@ -125,46 +125,46 @@ function rebuildObjectClass($destdir, $module, $objectname, $newmask, $readdir = $texttoinsert .= " 'position'=>".($val['position'] !== '' ? $val['position'] : 50).","; $texttoinsert .= " 'notnull'=>".(empty($val['notnull']) ? 0 : $val['notnull']).","; $texttoinsert .= " 'visible'=>".($val['visible'] !== '' ? $val['visible'] : -1).","; - if ($val['noteditable']) { + if (!empty($val['noteditable'])) { $texttoinsert .= " 'noteditable'=>'".$val['noteditable']."',"; } - if ($val['default'] || $val['default'] === '0') { + if (!empty($val['default']) || (!empty($val['default']) && $val['default'] === '0')) { $texttoinsert .= " 'default'=>'".$val['default']."',"; } - if ($val['index']) { + if (!empty($val['index'])) { $texttoinsert .= " 'index'=>".$val['index'].","; } - if ($val['foreignkey']) { + if (!empty($val['foreignkey'])) { $texttoinsert .= " 'foreignkey'=>'".$val['foreignkey']."',"; } - if ($val['searchall']) { + if (!empty($val['searchall'])) { $texttoinsert .= " 'searchall'=>".$val['searchall'].","; } - if ($val['isameasure']) { + if (!empty($val['isameasure'])) { $texttoinsert .= " 'isameasure'=>'".$val['isameasure']."',"; } - if ($val['css']) { + if (!empty($val['css'])) { $texttoinsert .= " 'css'=>'".$val['css']."',"; } - if ($val['cssview']) { + if (!empty($val['cssview'])) { $texttoinsert .= " 'cssview'=>'".$val['cssview']."',"; } - if ($val['csslist']) { + if (!empty($val['csslist'])) { $texttoinsert .= " 'csslist'=>'".$val['csslist']."',"; } - if ($val['help']) { + if (!empty($val['help'])) { $texttoinsert .= " 'help'=>\"".preg_replace('/"/', '', $val['help'])."\","; } - if ($val['showoncombobox']) { + if (!empty($val['showoncombobox'])) { $texttoinsert .= " 'showoncombobox'=>'".$val['showoncombobox']."',"; } - if ($val['disabled']) { + if (!empty($val['disabled'])) { $texttoinsert .= " 'disabled'=>'".$val['disabled']."',"; } - if ($val['autofocusoncreate']) { + if (!empty($val['autofocusoncreate'])) { $texttoinsert .= " 'autofocusoncreate'=>'".$val['autofocusoncreate']."',"; } - if ($val['arrayofkeyval']) { + if (!empty($val['arrayofkeyval'])) { $texttoinsert .= " 'arrayofkeyval'=>array("; $i = 0; foreach ($val['arrayofkeyval'] as $key2 => $val2) { @@ -176,10 +176,10 @@ function rebuildObjectClass($destdir, $module, $objectname, $newmask, $readdir = } $texttoinsert .= "),"; } - if ($val['validate']) { + if (!empty($val['validate'])) { $texttoinsert .= " 'validate'=>'".$val['validate']."',"; } - if ($val['comment']) { + if (!empty($val['comment'])) { $texttoinsert .= " 'comment'=>\"".preg_replace('/"/', '', $val['comment'])."\""; } @@ -311,7 +311,7 @@ function rebuildObjectSql($destdir, $module, $objectname, $newmask, $readdir = ' if ($key == 'entity') { $texttoinsert .= ' DEFAULT 1'; } else { - if ($val['default'] != '') { + if (!empty($val['default']) && $val['default'] != '') { if (preg_match('/^null$/i', $val['default'])) { $texttoinsert .= " DEFAULT NULL"; } elseif (preg_match('/varchar/', $type)) { diff --git a/htdocs/modulebuilder/index.php b/htdocs/modulebuilder/index.php index 60f23cbee1a..e0bd19ab251 100644 --- a/htdocs/modulebuilder/index.php +++ b/htdocs/modulebuilder/index.php @@ -1309,7 +1309,7 @@ if ($dirins && $action == 'addproperty' && empty($cancel) && !empty($module) && } } - if (!$error) { + if (!$error && !GETPOST('regenerateclasssql')&& !GETPOST('regeneratemissing')) { $addfieldentry = array( 'name'=>GETPOST('propname', 'aZ09'), 'label'=>GETPOST('proplabel', 'alpha'), @@ -1335,6 +1335,8 @@ if ($dirins && $action == 'addproperty' && empty($cancel) && !empty($module) && if (!empty($addfieldentry['arrayofkeyval']) && !is_array($addfieldentry['arrayofkeyval'])) { $addfieldentry['arrayofkeyval'] = json_decode($addfieldentry['arrayofkeyval'], true); } + } else { + $addfieldentry = array(); } /*if (GETPOST('regeneratemissing')) From edbf1bb34b903d3c16c903935cac8b1847f516e3 Mon Sep 17 00:00:00 2001 From: lmarcouiller Date: Tue, 22 Feb 2022 16:35:10 +0100 Subject: [PATCH 003/248] update to fix PR --- htdocs/core/lib/modulebuilder.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/modulebuilder.lib.php b/htdocs/core/lib/modulebuilder.lib.php index d5d4aa8c2c4..1e4c43b1f90 100644 --- a/htdocs/core/lib/modulebuilder.lib.php +++ b/htdocs/core/lib/modulebuilder.lib.php @@ -311,7 +311,7 @@ function rebuildObjectSql($destdir, $module, $objectname, $newmask, $readdir = ' if ($key == 'entity') { $texttoinsert .= ' DEFAULT 1'; } else { - if (!empty($val['default']) && $val['default'] != '') { + if (!empty($val['default'])) { if (preg_match('/^null$/i', $val['default'])) { $texttoinsert .= " DEFAULT NULL"; } elseif (preg_match('/varchar/', $type)) { From b45aeda14d1d3d37b3f9560f6bcbab74bff6cea4 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Tue, 15 Mar 2022 09:41:51 +0000 Subject: [PATCH 004/248] Fixing style errors. --- htdocs/modulebuilder/index.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/modulebuilder/index.php b/htdocs/modulebuilder/index.php index 240c739e5c0..eddf9b3c7de 100644 --- a/htdocs/modulebuilder/index.php +++ b/htdocs/modulebuilder/index.php @@ -1332,8 +1332,8 @@ if ($dirins && $action == 'addproperty' && empty($cancel) && !empty($module) && setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Type")), null, 'errors'); } - if (!$error && !GETPOST('regenerateclasssql')&& !GETPOST('regeneratemissing')) { - $addfieldentry = array( + if (!$error && !GETPOST('regenerateclasssql')&& !GETPOST('regeneratemissing')) { + $addfieldentry = array( 'name'=>GETPOST('propname', 'aZ09'), 'label'=>GETPOST('proplabel', 'alpha'), 'type'=>GETPOST('proptype', 'alpha'), @@ -1353,7 +1353,7 @@ if ($dirins && $action == 'addproperty' && empty($cancel) && !empty($module) && 'default'=>GETPOST('propdefault', 'restricthtml'), 'noteditable'=>intval(GETPOST('propnoteditable', 'int')), 'validate' => GETPOST('propvalidate', 'int') - ); + ); if (!empty($addfieldentry['arrayofkeyval']) && !is_array($addfieldentry['arrayofkeyval'])) { From 89eb19bafb4acdcc0b71eb3dafec044682646a1c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 Apr 2022 17:51:42 +0200 Subject: [PATCH 005/248] Update modulebuilder.lib.php --- htdocs/core/lib/modulebuilder.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/modulebuilder.lib.php b/htdocs/core/lib/modulebuilder.lib.php index 1e4c43b1f90..27c96c2e972 100644 --- a/htdocs/core/lib/modulebuilder.lib.php +++ b/htdocs/core/lib/modulebuilder.lib.php @@ -128,7 +128,7 @@ function rebuildObjectClass($destdir, $module, $objectname, $newmask, $readdir = if (!empty($val['noteditable'])) { $texttoinsert .= " 'noteditable'=>'".$val['noteditable']."',"; } - if (!empty($val['default']) || (!empty($val['default']) && $val['default'] === '0')) { + if (!empty($val['default']) || (isset($val['default']) && $val['default'] === '0')) { $texttoinsert .= " 'default'=>'".$val['default']."',"; } if (!empty($val['index'])) { From 51837690fe20a92c7a3cde93ac366abc53e76ef0 Mon Sep 17 00:00:00 2001 From: wdammak <26695620+wdammak@users.noreply.github.com> Date: Thu, 7 Apr 2022 01:10:29 +0100 Subject: [PATCH 006/248] Avoid duplicate 3rd partires --- htdocs/societe/card.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index 45bbefabdab..b72f41e436a 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -1291,8 +1291,10 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { print ''.$form->editfieldkey('ThirdPartyName', 'name', '', $object, 0).''; } print 'global->SOCIETE_USEPREFIX) ? ' colspan="3"' : '').'>'; - print ''; - print $form->widgetForTranslation("name", $object, $permissiontoadd, 'string', 'alpahnohtml', 'minwidth300'); + //print ''; + //print $form->widgetForTranslation("name", $object, $permissiontoadd, 'string', 'alpahnohtml', 'minwidth300'); + print $form->select_company(0, 'name', '(s.client = 1 OR s.client = 3) AND status=1', ' '); + print ""; print ''; if (!empty($conf->global->SOCIETE_USEPREFIX)) { // Old not used prefix field print ''.$langs->trans('Prefix').''; From c4747735b99509d948361dd3ba28a0187811d125 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Tue, 12 Apr 2022 07:55:09 +0200 Subject: [PATCH 007/248] FIX missing signature library when ODT model is used --- .../modules/propale/doc/doc_generic_proposal_odt.modules.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php b/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php index 636bf4c4f7f..bd86d27b0a3 100644 --- a/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php +++ b/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php @@ -31,6 +31,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/doc.lib.php'; +include_once DOL_DOCUMENT_ROOT.'/core/lib/signature.lib.php'; /** From 2d56aed912d37f220b446ecaaea9a2623aa9c6de Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Tue, 12 Apr 2022 08:31:51 +0200 Subject: [PATCH 008/248] FIX uniformize code --- .../modules/propale/doc/doc_generic_proposal_odt.modules.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php b/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php index bd86d27b0a3..66e2f3c8312 100644 --- a/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php +++ b/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php @@ -31,7 +31,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/doc.lib.php'; -include_once DOL_DOCUMENT_ROOT.'/core/lib/signature.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/signature.lib.php'; /** From 5d9cfaa823e220ec9087f59b64daa90c534b183a Mon Sep 17 00:00:00 2001 From: wdammak <26695620+wdammak@users.noreply.github.com> Date: Wed, 13 Apr 2022 01:09:44 +0100 Subject: [PATCH 009/248] Update card.php --- htdocs/societe/card.php | 86 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 84 insertions(+), 2 deletions(-) diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index b72f41e436a..e25d515ff7b 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -1293,8 +1293,90 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { print 'global->SOCIETE_USEPREFIX) ? ' colspan="3"' : '').'>'; //print ''; //print $form->widgetForTranslation("name", $object, $permissiontoadd, 'string', 'alpahnohtml', 'minwidth300'); - print $form->select_company(0, 'name', '(s.client = 1 OR s.client = 3) AND status=1', ' '); - print ""; + //print $form->select_company(0, 'name', '(s.client = 1 OR s.client = 3) AND status=1', ' '); + //print ""; + print ''; +?> + +'; if (!empty($conf->global->SOCIETE_USEPREFIX)) { // Old not used prefix field print ''.$langs->trans('Prefix').''; From 150a21820f5c0342c7082e604aeb8913921f4258 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Wed, 13 Apr 2022 00:14:23 +0000 Subject: [PATCH 010/248] Fixing style errors. --- htdocs/societe/card.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index e25d515ff7b..83c6975e3c7 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -1296,7 +1296,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { //print $form->select_company(0, 'name', '(s.client = 1 OR s.client = 3) AND status=1', ' '); //print ""; print ''; -?> + ?> -'; if (!empty($conf->global->SOCIETE_USEPREFIX)) { // Old not used prefix field print ''.$langs->trans('Prefix').''; From 9c8d21c63aecd42b87801b8e3c3b2856d4884a9a Mon Sep 17 00:00:00 2001 From: wdammak <26695620+wdammak@users.noreply.github.com> Date: Wed, 13 Apr 2022 01:14:36 +0100 Subject: [PATCH 011/248] Create ajaxcompanies.php --- htdocs/core/ajax/ajaxcompanies.php | 126 +++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 htdocs/core/ajax/ajaxcompanies.php diff --git a/htdocs/core/ajax/ajaxcompanies.php b/htdocs/core/ajax/ajaxcompanies.php new file mode 100644 index 00000000000..aeda242e53e --- /dev/null +++ b/htdocs/core/ajax/ajaxcompanies.php @@ -0,0 +1,126 @@ + + * Copyright (C) 2005-2009 Regis Houssin + * Copyright (C) 2007-2010 Laurent Destailleur + * Copyright (C) 2010 Cyrille de Lambert + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/** + * \file htdocs/core/ajax/ajaxcompanies.php + * \brief File to return Ajax response on third parties request + */ + +if (!defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', 1); // Disables token renewal +if (!defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); +if (!defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1'); +if (!defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); +if (!defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); +if (!defined('NOCSRFCHECK')) define('NOCSRFCHECK', '1'); + +require '../../main.inc.php'; + + +/* + * View + */ + +// Ajout directives pour resoudre bug IE +//header('Cache-Control: Public, must-revalidate'); +//header('Pragma: public'); + +//top_htmlhead("", "", 1); // Replaced with top_httphead. An ajax page does not need html header. +top_httphead(); + +//print ''."\n"; + +dol_syslog(join(',', $_GET)); + + +// Generation liste des societes +if (GETPOST('newcompany') || GETPOST('socid', 'int') || GETPOST('id_fourn')) +{ + $return_arr = array(); + + // Define filter on text typed + $socid = $_GET['newcompany'] ? $_GET['newcompany'] : ''; + if (!$socid) $socid = $_GET['socid'] ? $_GET['socid'] : ''; + if (!$socid) $socid = $_GET['id_fourn'] ? $_GET['id_fourn'] : ''; + + $sql = "SELECT s.rowid, s.nom, s.name_alias, s.code_client, s.code_fournisseur, s.address, s.zip, s.town, s.email, s.siren, s.siret, s.ape, s.idprof4, s.client, s.fournisseur, s.datec"; + $sql .= " , c.label as country, d.nom as departement"; + $sql .= " FROM ".MAIN_DB_PREFIX."societe as s"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = s.fk_pays"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_departements as d ON d.rowid = s.fk_departement"; + $sql .= " WHERE s.entity IN (".getEntity('societe').")"; + if ($socid) + { + $sql .= " AND ("; + // Add criteria on name/code + if (!empty($conf->global->COMPANY_DONOTSEARCH_ANYWHERE)) // Can use index + { + $sql .= "s.nom LIKE '".$db->escape($socid)."%'"; + $sql .= " OR s.code_client LIKE '".$db->escape($socid)."%'"; + $sql .= " OR s.code_fournisseur LIKE '".$db->escape($socid)."%'"; + } else { + $sql .= "s.nom LIKE '%".$db->escape($socid)."%'"; + $sql .= " OR s.code_client LIKE '%".$db->escape($socid)."%'"; + $sql .= " OR s.code_fournisseur LIKE '%".$db->escape($socid)."%'"; + } + if (!empty($conf->global->SOCIETE_ALLOW_SEARCH_ON_ROWID)) $sql .= " OR s.rowid = '".$db->escape($socid)."'"; + $sql .= ")"; + } + //if (GETPOST("filter")) $sql.= " AND (".GETPOST("filter", "alpha").")"; // Add other filters + $sql .= " ORDER BY s.nom ASC"; + + //dol_syslog("ajaxcompanies", LOG_DEBUG); + $resql = $db->query($sql); + + if ($resql) + { + while ($row = $db->fetch_array($resql)) + { + $label = $row['nom']; + if ($socid) $label = $label; + $row_array['label'] = $label; + $row_array['value'] = $row['nom']; + $row_array['key'] = $row['rowid']; + $row_array['name_alias'] = $row['name_alias']; + $row_array['code_client'] = $row['code_client']; + $row_array['code_fournisseur'] = $row['code_fournisseur']; + $row_array['address'] = $row['address']; + $row_array['zip'] = $row['zip']; + $row_array['town'] = $row['town']; + $row_array['email'] = $row['email']; + $row_array['siren'] = $row['siren']; + $row_array['siret'] = $row['siret']; + $row_array['ape'] = $row['ape']; + $row_array['idprof4'] = $row['idprof4']; + $row_array['client'] = $row['client']; + $row_array['fournisseur'] = $row['fournisseur']; + $row_array['datec'] = $row['datec']; + $row_array['country'] = $row['country']; + $row_array['departement'] = $row['departement']; + + array_push($return_arr, $row_array); + } + + echo json_encode($return_arr); + } else { + echo json_encode(array('nom'=>'Error', 'label'=>'Error', 'key'=>'Error', 'value'=>'Error')); + } +} else { + echo json_encode(array('nom'=>'ErrorBadParameter', 'label'=>'ErrorBadParameter', 'key'=>'ErrorBadParameter', 'value'=>'ErrorBadParameter')); +} From 02435a616b1250e018f5e4cce217443271faf68e Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Wed, 13 Apr 2022 00:19:15 +0000 Subject: [PATCH 012/248] Fixing style errors. --- htdocs/core/ajax/ajaxcompanies.php | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/htdocs/core/ajax/ajaxcompanies.php b/htdocs/core/ajax/ajaxcompanies.php index aeda242e53e..173d176c031 100644 --- a/htdocs/core/ajax/ajaxcompanies.php +++ b/htdocs/core/ajax/ajaxcompanies.php @@ -50,8 +50,7 @@ dol_syslog(join(',', $_GET)); // Generation liste des societes -if (GETPOST('newcompany') || GETPOST('socid', 'int') || GETPOST('id_fourn')) -{ +if (GETPOST('newcompany') || GETPOST('socid', 'int') || GETPOST('id_fourn')) { $return_arr = array(); // Define filter on text typed @@ -65,12 +64,10 @@ if (GETPOST('newcompany') || GETPOST('socid', 'int') || GETPOST('id_fourn')) $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = s.fk_pays"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_departements as d ON d.rowid = s.fk_departement"; $sql .= " WHERE s.entity IN (".getEntity('societe').")"; - if ($socid) - { + if ($socid) { $sql .= " AND ("; // Add criteria on name/code - if (!empty($conf->global->COMPANY_DONOTSEARCH_ANYWHERE)) // Can use index - { + if (!empty($conf->global->COMPANY_DONOTSEARCH_ANYWHERE)) { // Can use index $sql .= "s.nom LIKE '".$db->escape($socid)."%'"; $sql .= " OR s.code_client LIKE '".$db->escape($socid)."%'"; $sql .= " OR s.code_fournisseur LIKE '".$db->escape($socid)."%'"; @@ -87,11 +84,9 @@ if (GETPOST('newcompany') || GETPOST('socid', 'int') || GETPOST('id_fourn')) //dol_syslog("ajaxcompanies", LOG_DEBUG); $resql = $db->query($sql); - - if ($resql) - { - while ($row = $db->fetch_array($resql)) - { + + if ($resql) { + while ($row = $db->fetch_array($resql)) { $label = $row['nom']; if ($socid) $label = $label; $row_array['label'] = $label; From b07096ad453a4066b4041a9610e53d78086b0eb7 Mon Sep 17 00:00:00 2001 From: wdammak <26695620+wdammak@users.noreply.github.com> Date: Wed, 13 Apr 2022 17:07:23 +0100 Subject: [PATCH 013/248] Update ajaxcompanies.php Add logo --- htdocs/core/ajax/ajaxcompanies.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/core/ajax/ajaxcompanies.php b/htdocs/core/ajax/ajaxcompanies.php index 173d176c031..350f03398aa 100644 --- a/htdocs/core/ajax/ajaxcompanies.php +++ b/htdocs/core/ajax/ajaxcompanies.php @@ -58,7 +58,7 @@ if (GETPOST('newcompany') || GETPOST('socid', 'int') || GETPOST('id_fourn')) { if (!$socid) $socid = $_GET['socid'] ? $_GET['socid'] : ''; if (!$socid) $socid = $_GET['id_fourn'] ? $_GET['id_fourn'] : ''; - $sql = "SELECT s.rowid, s.nom, s.name_alias, s.code_client, s.code_fournisseur, s.address, s.zip, s.town, s.email, s.siren, s.siret, s.ape, s.idprof4, s.client, s.fournisseur, s.datec"; + $sql = "SELECT s.rowid, s.nom, s.name_alias, s.code_client, s.code_fournisseur, s.address, s.zip, s.town, s.email, s.siren, s.siret, s.ape, s.idprof4, s.client, s.fournisseur, s.datec, s.logo"; $sql .= " , c.label as country, d.nom as departement"; $sql .= " FROM ".MAIN_DB_PREFIX."societe as s"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON c.rowid = s.fk_pays"; @@ -106,6 +106,7 @@ if (GETPOST('newcompany') || GETPOST('socid', 'int') || GETPOST('id_fourn')) { $row_array['client'] = $row['client']; $row_array['fournisseur'] = $row['fournisseur']; $row_array['datec'] = $row['datec']; + $row_array['logo'] = $row['logo']; $row_array['country'] = $row['country']; $row_array['departement'] = $row['departement']; From 88a6b6535349314e7f5bbee259cab2a694f0b2e5 Mon Sep 17 00:00:00 2001 From: wdammak <26695620+wdammak@users.noreply.github.com> Date: Wed, 13 Apr 2022 17:11:51 +0100 Subject: [PATCH 014/248] Update card.php Add logo --- htdocs/societe/card.php | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index 83c6975e3c7..363d8e8d69d 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -1301,7 +1301,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { $(document).ready(function () { $('#name').select2({ ajax: { - url: '/htdocs/core/ajax/ajaxcompanies.php', + url: '/core/ajax/ajaxcompanies.php', dataType: 'json', delay: 250, data: function (params) { @@ -1330,13 +1330,22 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { function formatCustomer (Customer) { - if (Customer.loading) { + if(Customer.label === undefined) { return Customer.text; } + var logo = ''; + if(Customer.logo !== undefined) { + logo = "" + - "
" + - "
" + + "
" + logo + + "
" + "
" + "
" + "
" + From db96173189b72fb1c9a55ae260dfea2cb61ff196 Mon Sep 17 00:00:00 2001 From: wdammak <26695620+wdammak@users.noreply.github.com> Date: Wed, 13 Apr 2022 18:00:24 +0100 Subject: [PATCH 015/248] Update card.php --- htdocs/societe/card.php | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index 363d8e8d69d..03a8bf30fa1 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -1340,7 +1340,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { logo += "/viewimage.php?modulepart=societe&entity=1&file=" + Customer.key + "%2Flogos%2Fthumbs%2F" + Customer.logo.replace('.', '_mini.') + "&cache=0"; logo += "' />
"; } else { - logo = '
'; + logo = '
'; } var $container = $("
" + @@ -1365,17 +1365,17 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { ); $container.find('.select2-result-repository__title').text(Customer.label); - $container.find('.select2-result-repository__name_alias').text(Customer.name_alias); - $container.find('.select2-result-repository__code_client').text(Customer.code_client); - $container.find('.select2-result-repository__code_fournisseur').text(Customer.code_fournisseur); - $container.find('.select2-result-repository__email').append('Mail: ' + Customer.email); - $container.find('.select2-result-repository__address').append('Address: ' + Customer.address); - $container.find('.select2-result-repository__country').append('Country: ' + Customer.country); - $container.find('.select2-result-repository__departement').append('Departement: ' + Customer.departement); - $container.find('.select2-result-repository__zip').append('Zip: ' + Customer.zip); - $container.find('.select2-result-repository__town').append('Town: ' + Customer.town); - $container.find('.select2-result-repository__siren').append('Siren: ' + Customer.siren); - $container.find('.select2-result-repository__datec').append('Created: ' + Customer.datec); + $container.find('.select2-result-repository__name_alias').text(Customer.name_alias ? Customer.name_alias : ''); + $container.find('.select2-result-repository__code_client').text(Customer.code_client ? Customer.code_client : ''); + $container.find('.select2-result-repository__code_fournisseur').text((Customer.code_fournisseur!==null) ? Customer.code_fournisseur : ''); + $container.find('.select2-result-repository__email').append('Mail: ' + (Customer.email !== null ? Customer.email : '')); + $container.find('.select2-result-repository__address').append('Address: ' + (Customer.address !== null ? Customer.address : '')); + $container.find('.select2-result-repository__country').append('Country: ' + (Customer.country !== null ? Customer.country : '')); + $container.find('.select2-result-repository__departement').append('Departement: ' + (Customer.departement !== null ? Customer.departement : '')); + $container.find('.select2-result-repository__zip').append('Zip: ' + (Customer.zip !== null ? Customer.zip : '')); + $container.find('.select2-result-repository__town').append('Town: ' + (Customer.town !== null ? Customer.town : '')); + $container.find('.select2-result-repository__siren').append('Siren: ' + (Customer.siren !== null ? Customer.siren : '')); + $container.find('.select2-result-repository__datec').append('Created: ' + (Customer.datec !== null ? Customer.datec : '')); return $container; } From fb2243dacde39ae8ebac2fa3f573d1f4de9b7c82 Mon Sep 17 00:00:00 2001 From: wdammak <26695620+wdammak@users.noreply.github.com> Date: Thu, 14 Apr 2022 16:19:55 +0100 Subject: [PATCH 016/248] Update card.php --- htdocs/societe/card.php | 179 +++++++++++++++++++--------------------- 1 file changed, 87 insertions(+), 92 deletions(-) diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index 03a8bf30fa1..6ff756b6021 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -1293,99 +1293,94 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { print 'global->SOCIETE_USEPREFIX) ? ' colspan="3"' : '').'>'; //print ''; //print $form->widgetForTranslation("name", $object, $permissiontoadd, 'string', 'alpahnohtml', 'minwidth300'); - //print $form->select_company(0, 'name', '(s.client = 1 OR s.client = 3) AND status=1', ' '); - //print ""; - print ''; - ?> - - + '; print ''; if (!empty($conf->global->SOCIETE_USEPREFIX)) { // Old not used prefix field print ''.$langs->trans('Prefix').''; From b8f602008892678d52094345fec22b43daf6995b Mon Sep 17 00:00:00 2001 From: BB2A Anthony Berton Date: Fri, 15 Apr 2022 10:35:36 +0200 Subject: [PATCH 017/248] Move checkbox column as first column on Thirdparty list --- htdocs/core/class/html.form.class.php | 17 ++++++++---- htdocs/societe/list.php | 38 ++++++++++++++------------- htdocs/theme/eldy/global.inc.php | 3 +++ 3 files changed, 35 insertions(+), 23 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index b9812d8eec3..679d3b388c6 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -8213,10 +8213,11 @@ class Form * @param string $htmlname Name of HTML field * @param array $array Array with array of fields we could show. This array may be modified according to setup of user. * @param string $varpage Id of context for page. Can be set by caller with $varpage=(empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage); + * @param string $pos position colon on liste value left or right * @return string HTML multiselect string * @see selectarray() */ - public static function multiSelectArrayWithCheckbox($htmlname, &$array, $varpage) + public static function multiSelectArrayWithCheckbox($htmlname, &$array, $varpage, $pos = '') { global $conf, $langs, $user, $extrafields; @@ -8283,7 +8284,7 @@ class Form
'; + + print load_fiche_titre($langs->trans("InformationOnSourceFile"), '', 'file-export'); + + print '
'; + print '
'; + print ''; + + // Source file format + print ''; + print ''; + + // Separator and enclosure + if ($model == 'csv') { + print ''; + print ''; + } + + // File to import + print ''; + print ''; + + print '
'.$langs->trans("SourceFileFormat").''; + $text = $objmodelimport->getDriverDescForKey($format); + print $form->textwithpicto($objmodelimport->getDriverLabelForKey($format), $text); + print '
'.$langs->trans("CsvOptions").''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print $langs->trans("Separator").' : '; + print ''; + print '    '.$langs->trans("Enclosure").' : '; + print ' '; + print ''; + print ''; + print '
'.$langs->trans("FileToImport").''; + $modulepart = 'import'; + $relativepath = GETPOST('filetoimport'); + print ''; + print img_mime($file, '', 'pictofixedwidth'); + print $filetoimport; + print ''; + print '
'; + print '
'; + + print dol_get_fiche_end(); + + print '
'."\n"; + + + // List of source fields + print ''."\n"; + print '
'; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + + print '
'; + print ''; + $s = $langs->trans("SelectImportFields", '{s1}'); + $s = str_replace('{s1}', img_picto('', 'grip_title', '', false, 0, 0, '', '', 0), $s); + print $s; + print ' '; + $htmlother->select_import_model($importmodelid, 'importmodelid', $datatoimport, 1, $user->id); + print ''; + print '
'; + print '
'; + + // Title of array with fields + print '
'; // You can use div-table-responsive-no-min if you dont need reserved height for your table + print ''; + print ''; + print ''; + print ''; + print ''; + + //var_dump($array_match_file_to_database); + + print ''; + + // List of not imported fields + print ''; + + print ''; + print ''; + + print '
'.$langs->trans("FieldsInSourceFile").''.$langs->trans("FieldsInTargetDatabase").'
'; + + $fieldsplaced = array(); + $valforsourcefieldnb = array(); + $listofkeys = array(); + foreach ($array_match_file_to_database as $key => $val) { + $listofkeys[$key] = 1; + } + + print "\n\n"; + print '
'."\n"; + + // List of source fields + $var = true; + $lefti = 1; + foreach ($array_match_file_to_database as $key => $val) { + $var = !$var; + show_elem($fieldssource, $key, $val, $var); // key is field number in source file + //print '> '.$lefti.'-'.$key.'-'.$val; + $listofkeys[$key] = 1; + $fieldsplaced[$key] = 1; + $valforsourcefieldnb[$lefti] = $key; + $lefti++; + + if ($lefti > count($fieldstarget)) { + break; // Other fields are in the not imported area + } + } + //var_dump($valforsourcefieldnb); + + // Complete source fields from count($fieldssource)+1 to count($fieldstarget) + $more = 1; + $num = count($fieldssource); + while ($lefti <= $num) { + $var = !$var; + $newkey = getnewkey($fieldssource, $listofkeys); + show_elem($fieldssource, $newkey, '', $var); // key start after field number in source file + //print '> '.$lefti.'-'.$newkey; + $listofkeys[$key] = 1; + $lefti++; + $more++; + } + + print "
\n"; + print "\n"; + + + print '
'; + + // List of target fields + $height = '24px'; //needs px for css height attribute below + $i = 0; + $mandatoryfieldshavesource = true; + + print ''; + + foreach ($fieldstarget as $code => $line) { + print ''; + $entity = (!empty($objimport->array_import_entities[0][$code]) ? $objimport->array_import_entities[0][$code] : $objimport->array_import_icon[0]); + + $tablealias = preg_replace('/(\..*)$/i', '', $code); + $tablename = $objimport->array_import_tables[0][$tablealias]; + + $entityicon = !empty($entitytoicon[$entity]) ? $entitytoicon[$entity] : $entity; // $entityicon must string name of picto of the field like 'project', 'company', 'contact', 'modulename', ... + $entitylang = $entitytolang[$entity] ? $entitytolang[$entity] : $objimport->array_import_label[0]; // $entitylang must be a translation key to describe object the field is related to, like 'Company', 'Contact', 'MyModyle', ... + + print ''; + print '"; + print ''; + } + print '
=>'.img_object('', $entityicon).' '.$langs->trans($entitylang).''; + print ''; + //print ajax_combobox("select_".$newlabel); + print "'; + $filecolumn = !empty($array_match_database_to_file[$code])?$array_match_database_to_file[$code]:0; + // Source field info + $htmltext = ''.$langs->trans("FieldSource").'
'; + if ($filecolumn > count($fieldssource)) { + $htmltext .= $langs->trans("DataComeFromNoWhere").'
'; + } else { + if (empty($objimport->array_import_convertvalue[0][$code])) { // If source file does not need convertion + $filecolumntoshow = $filecolumn; + $htmltext .= $langs->trans("DataComeFromFileFieldNb", $filecolumntoshow).'
'; + } else { + if ($objimport->array_import_convertvalue[0][$code]['rule'] == 'fetchidfromref') { + $htmltext .= $langs->trans("DataComeFromIdFoundFromRef", $filecolumn, $langs->transnoentitiesnoconv($entitylang)).'
'; + } + if ($objimport->array_import_convertvalue[0][$code]['rule'] == 'fetchidfromcodeid') { + $htmltext .= $langs->trans("DataComeFromIdFoundFromCodeId", $filecolumn, $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$code]['dict'])).'
'; + } + } + } + // Source required + $htmltext .= $langs->trans("SourceRequired").': '.yn($line["label"]).'
'; + $example = !empty($objimport->array_import_examplevalues[0][$code])?$objimport->array_import_examplevalues[0][$code]:""; + // Example + if (empty($objimport->array_import_convertvalue[0][$code])) { // If source file does not need convertion + if ($example) { + $htmltext .= $langs->trans("SourceExample").': '.$example.'
'; + } + } else { + if ($objimport->array_import_convertvalue[0][$code]['rule'] == 'fetchidfromref') { + $htmltext .= $langs->trans("SourceExample").': '.$langs->transnoentitiesnoconv("ExampleAnyRefFoundIntoElement", $entitylang).($example ? ' ('.$langs->transnoentitiesnoconv("Example").': '.$example.')' : '').'
'; + } elseif ($objimport->array_import_convertvalue[0][$code]['rule'] == 'fetchidfromcodeid') { + $htmltext .= $langs->trans("SourceExample").': '.$langs->trans("ExampleAnyCodeOrIdFoundIntoDictionary", $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$code]['dict'])).($example ? ' ('.$langs->transnoentitiesnoconv("Example").': '.$example.')' : '').'
'; + } elseif ($example) { + $htmltext .= $langs->trans("SourceExample").': '.$example.'
'; + } + } + // Format control rule + if (!empty($objimport->array_import_regex[0][$code])) { + $htmltext .= $langs->trans("FormatControlRule").': '.$objimport->array_import_regex[0][$code].'
'; + } + $htmltext .= '
'; + // Target field info + $htmltext .= ''.$langs->trans("FieldTarget").'
'; + if (empty($objimport->array_import_convertvalue[0][$code])) { // If source file does not need convertion + $htmltext .= $langs->trans("DataIsInsertedInto").'
'; + } else { + if ($objimport->array_import_convertvalue[0][$code]['rule'] == 'fetchidfromref') { + $htmltext .= $langs->trans("DataIDSourceIsInsertedInto").'
'; + } + if ($objimport->array_import_convertvalue[0][$code]['rule'] == 'fetchidfromcodeid') { + $htmltext .= $langs->trans("DataCodeIDSourceIsInsertedInto").'
'; + } + } + $htmltext .= $langs->trans("FieldTitle").": ".$langs->trans($line["label"])."
"; + $htmltext .= $langs->trans("Table")." -> ".$langs->trans("Field").': '.$tablename." -> ".preg_replace('/^.*\./', '', $code)."
"; + print $form->textwithpicto($more, $htmltext); + print '
'; + + print '
'.$langs->trans("NotImportedFields").'
'; + + print "\n\n"; + print '\n"; + print "\n"; + + print ''; + $i = 0; + while ($i < $nbofnotimportedfields) { + // Print empty cells + show_elem('', '', 'none', $var, 'nostyle'); + $i++; + } + print '
'; + print '
'; + + + if ($conf->use_javascript_ajax) { + print ''."\n"; + } + + /* + * Action bar + */ + print '
'; + + if (count($array_match_file_to_database)) { + if ($mandatoryfieldshavesource) { + print ''.$langs->trans("NextStep").''; + } else { + print ''.$langs->trans("NextStep").''; + } + } + + print '
'; + + + // Area for profils import + if (count($array_match_file_to_database)) { + print '
'."\n"; + print ''."\n"; + print '
'.$langs->trans("SaveImportModel").'
'; + + print '
'; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + + print '
'; // You can use div-table-responsive-no-min if you dont need reserved height for your table + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + + print ''; + print ''; + print ''; + print ''; + + // List of existing import profils + $sql = "SELECT rowid, label, fk_user, entity"; + $sql .= " FROM ".MAIN_DB_PREFIX."import_model"; + $sql .= " WHERE type = '".$db->escape($datatoimport)."'"; + if (empty($conf->global->EXPORTS_SHARE_MODELS)) { // EXPORTS_SHARE_MODELS means all templates are visible, whatever is owner. + $sql .= " AND fk_user IN (0, ".((int) $user->id).")"; + } + $sql .= " ORDER BY rowid"; + + $resql = $db->query($sql); + if ($resql) { + $num = $db->num_rows($resql); + + $tmpuser = new user($db); + + $i = 0; + while ($i < $num) { + $obj = $db->fetch_object($resql); + + print ''; + print ''; + print ''; + $i++; + } + } else { + dol_print_error($db); + } + + print '
'.$langs->trans("ImportModelName").''.$langs->trans("Visibility").'
'; + $arrayvisibility = array('private'=>$langs->trans("Private"), 'all'=>$langs->trans("Everybody")); + print $form->selectarray('visibility', $arrayvisibility, 'private'); + print ''; + print ''; + print '
'; + print $obj->label; + print ''; + if (empty($obj->fk_user)) { + print $langs->trans("Everybody"); + } else { + $tmpuser->fetch($obj->fk_user); + print $tmpuser->getNomUrl(1); + } + print ''; + print 'rowid.'&filetoimport='.urlencode($filetoimport).'">'; + print img_delete(); + print ''; + print '
'; + print '
'; + + print '
'; + } +} // STEP 5: Summary of choices and launch simulation if ($step == 5 && $datatoimport) { @@ -1471,6 +2032,20 @@ if ($step == 5 && $datatoimport) { if ($action == 'launchsimu') { print '   '.$langs->trans("Modify").''; } + if ($excludefirstline == 2) { + print $form->textwithpicto("", $langs->trans("WarningFirstImportedLine", $excludefirstline), 1, 'warning', "warningexcludefirstline"); + print ''; + } print ''; // Keys for data UPDATE (not INSERT of new data) @@ -2121,7 +2696,7 @@ function show_elem($fieldssource, $pos, $key, $var, $nostyle = '') if ($pos && $pos > count($fieldssource)) { // No fields print ''; print ''; - print img_picto(($pos > 0 ? $langs->trans("MoveField", $pos) : ''), 'grip_title', 'class="boxhandle" style="cursor:move;"'); + //print img_picto(($pos > 0 ? $langs->trans("MoveField", $pos) : ''), 'grip_title', 'class="boxhandle" style="cursor:move;"'); print ''; print ''; print $langs->trans("NoFields"); @@ -2141,7 +2716,7 @@ function show_elem($fieldssource, $pos, $key, $var, $nostyle = '') print ''; print ''; // The image must have the class 'boxhandle' beause it's value used in DOM draggable objects to define the area used to catch the full object - print img_picto($langs->trans("MoveField", $pos), 'grip_title', 'class="boxhandle" style="cursor:move;"'); + //print img_picto($langs->trans("MoveField", $pos), 'grip_title', 'class="boxhandle" style="cursor:move;"'); print ''; print ''; print $langs->trans("Field").' '.$pos; diff --git a/htdocs/langs/en_US/exports.lang b/htdocs/langs/en_US/exports.lang index f2f2d2cf587..a20741472b7 100644 --- a/htdocs/langs/en_US/exports.lang +++ b/htdocs/langs/en_US/exports.lang @@ -135,3 +135,4 @@ NbInsert=Number of inserted lines: %s NbUpdate=Number of updated lines: %s MultipleRecordFoundWithTheseFilters=Multiple records have been found with these filters: %s StocksWithBatch=Stocks and location (warehouse) of products with batch/serial number +WarningFirstImportedLine=The first line(s) will not be imported with the current selection From 2af2efacdb68bb8847287fb2ce2966caa87cb2ed Mon Sep 17 00:00:00 2001 From: lmarcouiller Date: Fri, 15 Apr 2022 14:42:34 +0200 Subject: [PATCH 020/248] better fix for line 131 in modulebuilder.lib --- htdocs/core/lib/modulebuilder.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/modulebuilder.lib.php b/htdocs/core/lib/modulebuilder.lib.php index 1e4c43b1f90..27c96c2e972 100644 --- a/htdocs/core/lib/modulebuilder.lib.php +++ b/htdocs/core/lib/modulebuilder.lib.php @@ -128,7 +128,7 @@ function rebuildObjectClass($destdir, $module, $objectname, $newmask, $readdir = if (!empty($val['noteditable'])) { $texttoinsert .= " 'noteditable'=>'".$val['noteditable']."',"; } - if (!empty($val['default']) || (!empty($val['default']) && $val['default'] === '0')) { + if (!empty($val['default']) || (isset($val['default']) && $val['default'] === '0')) { $texttoinsert .= " 'default'=>'".$val['default']."',"; } if (!empty($val['index'])) { From b816e67661dba212806037917b7d5dd632a1d2a5 Mon Sep 17 00:00:00 2001 From: BB2A Anthony Berton Date: Fri, 15 Apr 2022 15:13:52 +0200 Subject: [PATCH 021/248] ADD option MAIN_CHECKBOX_LEFT_COLUMN --- htdocs/societe/list.php | 63 ++++++++++++++++++++++++++++++----------- 1 file changed, 47 insertions(+), 16 deletions(-) diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index b57d5cc0505..dad9bbf2921 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -999,8 +999,12 @@ if ($moreforfilter) { } $varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage; -$selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage, 'left'); // This also change content of $arrayfields -// Show the massaction checkboxes only when this page is not opend from the Extended POS +if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + $selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields +} else { + $selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage, 'left'); // This also change content of $arrayfields +} + // Show the massaction checkboxes only when this page is not opend from the Extended POS if ($massactionbutton && $contextpage != 'poslist') { $selectedfields .= $form->showCheckAddButtons('checkforselect', 1); } @@ -1014,11 +1018,13 @@ print ''; -// Action column -print ''; +if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + // Action column + print ''; +} if (!empty($arrayfields['s.rowid']['checked'])) { print ''; } +if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + // Action column + print ''; +} print "\n"; print ''; -print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch actioncolumn '); +if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch actioncolumn '); +} if (!empty($arrayfields['s.rowid']['checked'])) { print_liste_field_titre($arrayfields['s.rowid']['label'], $_SERVER["PHP_SELF"], "s.rowid", "", $param, ' data-key="id"', $sortfield, $sortorder, 'actioncolumn '); } @@ -1365,6 +1380,9 @@ if (!empty($arrayfields['s.status']['checked'])) { if (!empty($arrayfields['s.import_key']['checked'])) { print_liste_field_titre($arrayfields['s.import_key']['label'], $_SERVER["PHP_SELF"], "s.import_key", "", $param, '', $sortfield, $sortorder, 'center '); } +if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch actioncolumn '); +} print "\n"; @@ -1402,16 +1420,17 @@ while ($i < min($num, $limit)) { print '>'; // Action column (Show the massaction button only when this page is not opend from the Extended POS) - print ''; } - print ''; - if (!empty($arrayfields['s.rowid']['checked'])) { print ''; + } if (!$i) { $totalarray['nbfield']++; } From 5cb114df610024dc3de0b95452535e51bc6537cb Mon Sep 17 00:00:00 2001 From: melina Date: Wed, 20 Apr 2022 17:46:16 +0200 Subject: [PATCH 022/248] fix empty search --- htdocs/takepos/index.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/htdocs/takepos/index.php b/htdocs/takepos/index.php index b23907b64f1..0bfdbc84b29 100644 --- a/htdocs/takepos/index.php +++ b/htdocs/takepos/index.php @@ -557,6 +557,18 @@ function New() { * return {void} */ function Search2(keyCodeForEnter) { + if ($('#search').val() == '') { + $("[id^=prowatermark]").html(""); + $("[id^=prodesc]").text(""); + $("[id^=probutton]").text(""); + $("[id^=probutton]").hide(); + $("[id^=proprice]").attr("class", "hidden"); + $("[id^=proprice]").html(""); + $("[id^=proimg]").attr("src", "genimg/empty.png"); + $("[id^=prodiv]").data("rowid", ""); + return; + } + console.log("Search2 Call ajax search to replace products keyCodeForEnter="+keyCodeForEnter); var search = false; @@ -579,6 +591,7 @@ function Search2(keyCodeForEnter) { $.getJSON('/takepos/ajax/ajax.php?action=search&term=' + $('#search').val(), function (data) { for (i = 0; i < ; i++) { if (typeof (data[i]) == "undefined") { + $("#prowatermark" + i).html(""); $("#prodesc" + i).text(""); $("#probutton" + i).text(""); $("#probutton" + i).hide(); From 29d1424413f56414b07536f461aca77862223d3a Mon Sep 17 00:00:00 2001 From: Francis Appels Date: Thu, 5 May 2022 11:05:34 +0200 Subject: [PATCH 023/248] fix merge conflict Add missing error translation key --- htdocs/langs/en_US/errors.lang | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index 37cc7a1b6fd..66c5d0e240d 100644 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -274,6 +274,7 @@ ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name ErrorInvoiceLoadThirdParty=Can't load third-party object for invoice "%s" ErrorInvoiceLoadThirdPartyKey=Third-party key "%s" no set for invoice "%s" +ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by actual object status # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -307,8 +308,5 @@ WarningTheHiddenOptionIsOn=Warning, the hidden option %s is on. WarningCreateSubAccounts=Warning, you can't create directly a sub account, you must create a third party or an user and assign them an accounting code to find them in this list WarningAvailableOnlyForHTTPSServers=Available only if using HTTPS secured connection. WarningModuleXDisabledSoYouMayMissEventHere=Module %s has not been enabled. So you may miss a lot of event here. -<<<<<<< HEAD WarningPaypalPaymentNotCompatibleWithStrict=The value 'Strict' makes the online payment features not working correctly. Use 'Lax' instead. -======= ->>>>>>> branch '13.0' of git@github.com:Dolibarr/dolibarr.git From 10e13286d376d3c263e3f1cae5ecedba8027abad Mon Sep 17 00:00:00 2001 From: Francis Appels Date: Thu, 5 May 2022 11:04:27 +0200 Subject: [PATCH 024/248] Add missing reception back to draft error handling --- htdocs/reception/card.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/reception/card.php b/htdocs/reception/card.php index fda5a3910b7..9a679c067f8 100644 --- a/htdocs/reception/card.php +++ b/htdocs/reception/card.php @@ -197,6 +197,8 @@ if (empty($reshook)) { $ret = $object->fetch($id); // Reload to get new records $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref); } + } else { + setEventMessages($object->error, $object->errors, 'errors'); } } From 7bb5ac40950447edc311687827b4d6402b6423bb Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Thu, 5 May 2022 16:48:01 +0200 Subject: [PATCH 025/248] FIX Accountancy - Add an option to disable use of sub-account on deposit line --- htdocs/accountancy/admin/defaultaccounts.php | 31 +++++++++++++++++++- htdocs/accountancy/journal/sellsjournal.php | 16 +++++----- htdocs/langs/en_US/accountancy.lang | 1 + 3 files changed, 40 insertions(+), 8 deletions(-) diff --git a/htdocs/accountancy/admin/defaultaccounts.php b/htdocs/accountancy/admin/defaultaccounts.php index c99503f95f6..cd95b033445 100644 --- a/htdocs/accountancy/admin/defaultaccounts.php +++ b/htdocs/accountancy/admin/defaultaccounts.php @@ -95,10 +95,11 @@ if ($conf->loan->enabled) { $list_account[] = 'LOAN_ACCOUNTING_ACCOUNT_INTEREST'; $list_account[] = 'LOAN_ACCOUNTING_ACCOUNT_INSURANCE'; } +$list_account[] = 'ACCOUNTING_ACCOUNT_SUSPENSE'; if ($conf->societe->enabled) { +$list_account[] = '---Deposits---'; $list_account[] = 'ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT'; } -$list_account[] = 'ACCOUNTING_ACCOUNT_SUSPENSE'; /* * Actions @@ -134,6 +135,20 @@ if ($action == 'update') { } } +if ($action == 'setdisableauxiliaryaccountoncustomerdeposit') { + $setDisableAuxiliaryAccountOnCustomerDeposit = GETPOST('value', 'int'); + $res = dolibarr_set_const($db, "ACCOUNTING_ACCOUNT_CUSTOMER_USE_AUXILIARY_ON_DEPOSIT", $setDisableAuxiliaryAccountOnCustomerDeposit, 'yesno', 0, '', $conf->entity); + if (!($res > 0)) { + $error++; + } + + if (!$error) { + setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); + } else { + setEventMessages($langs->trans("Error"), null, 'mesgs'); + } +} + /* * View @@ -231,6 +246,20 @@ foreach ($list_account as $key) { } } +if ($conf->societe->enabled) { + print ''; + print ''; + if (!empty($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER_USE_AUXILIARY_ON_DEPOSIT)) { + print ''; + } else { + print ''; + } + print ''; +} print "
'; -$searchpicto = $form->showFilterButtons('left'); -print $searchpicto; -print ''; + $searchpicto = $form->showFilterButtons('left'); + print $searchpicto; + print ''; print ''; @@ -1247,10 +1253,19 @@ if (!empty($arrayfields['s.import_key']['checked'])) { print ''; print ''; + $searchpicto = $form->showFilterButtons(); + print $searchpicto; + print '
'; - if (($massactionbutton || $massaction) && $contextpage != 'poslist') { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined - $selected = 0; - if (in_array($obj->rowid, $arrayofselected)) { - $selected = 1; + if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; + if (($massactionbutton || $massaction) && $contextpage != 'poslist') { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + $selected = 0; + if (in_array($obj->rowid, $arrayofselected)) { + $selected = 1; + } + print ''; } - print ''; + print ''; print $obj->rowid; @@ -1720,6 +1739,18 @@ while ($i < min($num, $limit)) { $totalarray['nbfield']++; } } + // Action column (Show the massaction button only when this page is not opend from the Extended POS) + if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; + if (($massactionbutton || $massaction) && $contextpage != 'poslist') { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + $selected = 0; + if (in_array($obj->rowid, $arrayofselected)) { + $selected = 1; + } + print ''; + } + print '
' . img_picto('', 'bill', 'class="pictofixedwidth"') . $langs->trans("UseAuxiliaryAccountOnCustomerDeposit") . ''; + print img_picto($langs->trans("Activated"), 'switch_on', '', false, 0, 0, '', 'warning'); + print ''; + print img_picto($langs->trans("Disabled"), 'switch_off'); + print '
\n"; print "
\n"; diff --git a/htdocs/accountancy/journal/sellsjournal.php b/htdocs/accountancy/journal/sellsjournal.php index 7cc7f0effbc..a4cda49af64 100644 --- a/htdocs/accountancy/journal/sellsjournal.php +++ b/htdocs/accountancy/journal/sellsjournal.php @@ -418,9 +418,11 @@ if ($action == 'writebookkeeping') { $bookkeeping->fk_docdet = 0; // Useless, can be several lines that are source of this record to add $bookkeeping->thirdparty_code = $companystatic->code_client; - if ($k == getDolGlobalString('ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT')) { - $bookkeeping->subledger_account = $tabcompany[$key]['code_compta']; - $bookkeeping->subledger_label = $tabcompany[$key]['name']; + if (!empty($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER_USE_AUXILIARY_ON_DEPOSIT)) { + if ($k == getDolGlobalString('ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT')) { + $bookkeeping->subledger_account = $tabcompany[$key]['code_compta']; + $bookkeeping->subledger_label = $tabcompany[$key]['name']; + } } else { $bookkeeping->subledger_account = ''; $bookkeeping->subledger_label = ''; @@ -897,12 +899,12 @@ if (empty($action) || $action == 'view') { print ""; // Subledger account print ""; - if ($k == getDolGlobalString('ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT')) { - if (($accountoshow == "") || $accountoshow == 'NotDefined') { - print ''.$langs->trans("ThirdpartyAccountNotDefined").''; - } else { + if (!empty($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER_USE_AUXILIARY_ON_DEPOSIT)) { + if ($k == getDolGlobalString('ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT')) { print length_accounta($tabcompany[$key]['code_compta']); } + } elseif (($accountoshow == "") || $accountoshow == 'NotDefined') { + print '' . $langs->trans("ThirdpartyAccountNotDefined") . ''; } print ''; $companystatic->id = $tabcompany[$key]['id']; diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index 8283da55f41..3fe49b25900 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -182,6 +182,7 @@ DONATION_ACCOUNTINGACCOUNT=Accounting account to register donations ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Accounting account to register subscriptions ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Accounting account by default to register customer deposit +UseAuxiliaryAccountOnCustomerDeposit=Use sub-accounts on customer deposit lines ACCOUNTING_PRODUCT_BUY_ACCOUNT=Accounting account by default for the bought products (used if not defined in the product sheet) ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Accounting account by default for the bought products in EEC (used if not defined in the product sheet) From fb97f7db29a0df64c11a9696d57cd34b2f760ccf Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Thu, 5 May 2022 14:59:49 +0000 Subject: [PATCH 026/248] Fixing style errors. --- htdocs/accountancy/admin/defaultaccounts.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/accountancy/admin/defaultaccounts.php b/htdocs/accountancy/admin/defaultaccounts.php index cd95b033445..6d7d92ce22b 100644 --- a/htdocs/accountancy/admin/defaultaccounts.php +++ b/htdocs/accountancy/admin/defaultaccounts.php @@ -97,7 +97,7 @@ if ($conf->loan->enabled) { } $list_account[] = 'ACCOUNTING_ACCOUNT_SUSPENSE'; if ($conf->societe->enabled) { -$list_account[] = '---Deposits---'; + $list_account[] = '---Deposits---'; $list_account[] = 'ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT'; } From 2256f8811dffc6d0046e8968dae105b9efe332db Mon Sep 17 00:00:00 2001 From: Gauthier PC portable 024 Date: Fri, 6 May 2022 11:24:53 +0200 Subject: [PATCH 027/248] FIX : in salary stats and payment list, we must check right perms as well as salary list --- htdocs/salaries/class/salariesstats.class.php | 20 +++++++++---------- htdocs/salaries/payments.php | 2 +- htdocs/salaries/stats/index.php | 6 +++++- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/htdocs/salaries/class/salariesstats.class.php b/htdocs/salaries/class/salariesstats.class.php index b3e6c20a0ca..41898bb7341 100644 --- a/htdocs/salaries/class/salariesstats.class.php +++ b/htdocs/salaries/class/salariesstats.class.php @@ -23,7 +23,7 @@ * \brief Fichier de la classe de gestion des stats des salaires */ include_once DOL_DOCUMENT_ROOT.'/core/class/stats.class.php'; -include_once DOL_DOCUMENT_ROOT.'/salaries/class/paymentsalary.class.php'; +include_once DOL_DOCUMENT_ROOT.'/salaries/class/salary.class.php'; /** * Classe permettant la gestion des stats des salaires @@ -58,7 +58,7 @@ class SalariesStats extends Stats $this->socid = $socid; $this->userid = $userid; - $object = new PaymentSalary($this->db); + $object = new Salary($this->db); $this->from = MAIN_DB_PREFIX.$object->table_element; $this->field = 'amount'; @@ -81,7 +81,7 @@ class SalariesStats extends Stats */ public function getNbByYear() { - $sql = "SELECT YEAR(datep) as dm, count(*)"; + $sql = "SELECT YEAR(dateep) as dm, count(*)"; $sql .= " FROM ".$this->from; $sql .= " WHERE ".$this->where; $sql .= " GROUP BY dm DESC"; @@ -99,9 +99,9 @@ class SalariesStats extends Stats */ public function getNbByMonth($year, $format = 0) { - $sql = "SELECT MONTH(datep) as dm, count(*)"; + $sql = "SELECT MONTH(dateep) as dm, count(*)"; $sql .= " FROM ".$this->from; - $sql .= " WHERE YEAR(datep) = ".((int) $year); + $sql .= " WHERE YEAR(dateep) = ".((int) $year); $sql .= " AND ".$this->where; $sql .= " GROUP BY dm"; $sql .= $this->db->order('dm', 'DESC'); @@ -121,9 +121,9 @@ class SalariesStats extends Stats */ public function getAmountByMonth($year, $format = 0) { - $sql = "SELECT date_format(datep,'%m') as dm, sum(".$this->field.")"; + $sql = "SELECT date_format(dateep,'%m') as dm, sum(".$this->field.")"; $sql .= " FROM ".$this->from; - $sql .= " WHERE date_format(datep,'%Y') = '".$this->db->escape($year)."'"; + $sql .= " WHERE date_format(dateep,'%Y') = '".$this->db->escape($year)."'"; $sql .= " AND ".$this->where; $sql .= " GROUP BY dm"; $sql .= $this->db->order('dm', 'DESC'); @@ -141,9 +141,9 @@ class SalariesStats extends Stats */ public function getAverageByMonth($year) { - $sql = "SELECT date_format(datep,'%m') as dm, avg(".$this->field.")"; + $sql = "SELECT date_format(dateep,'%m') as dm, avg(".$this->field.")"; $sql .= " FROM ".$this->from; - $sql .= " WHERE date_format(datep,'%Y') = '".$this->db->escape($year)."'"; + $sql .= " WHERE date_format(dateep,'%Y') = '".$this->db->escape($year)."'"; $sql .= " AND ".$this->where; $sql .= " GROUP BY dm"; $sql .= $this->db->order('dm', 'DESC'); @@ -158,7 +158,7 @@ class SalariesStats extends Stats */ public function getAllByYear() { - $sql = "SELECT date_format(datep,'%Y') as year, count(*) as nb, sum(".$this->field.") as total, avg(".$this->field.") as avg"; + $sql = "SELECT date_format(dateep,'%Y') as year, count(*) as nb, sum(".$this->field.") as total, avg(".$this->field.") as avg"; $sql .= " FROM ".$this->from; $sql .= " WHERE ".$this->where; $sql .= " GROUP BY year"; diff --git a/htdocs/salaries/payments.php b/htdocs/salaries/payments.php index f129e6304ab..964c2521f3c 100644 --- a/htdocs/salaries/payments.php +++ b/htdocs/salaries/payments.php @@ -234,7 +234,7 @@ $sql .= " ".MAIN_DB_PREFIX."user as u"; $sql .= " WHERE u.rowid = sal.fk_user"; $sql .= " AND s.entity IN (".getEntity('payment_salaries').")"; if (empty($user->rights->salaries->readall)) { - $sql .= " AND s.fk_user IN (".$db->sanitize(join(',', $childids)).")"; + $sql .= " AND sal.fk_user IN (".$db->sanitize(join(',', $childids)).")"; } // Search criteria diff --git a/htdocs/salaries/stats/index.php b/htdocs/salaries/stats/index.php index ecc62c2a237..bfacd908c12 100644 --- a/htdocs/salaries/stats/index.php +++ b/htdocs/salaries/stats/index.php @@ -74,6 +74,10 @@ dol_mkdir($dir); $useridtofilter = $userid; // Filter from parameters +if (empty($user->rights->salaries->readall) && empty($useridtofilter)) { + $useridtofilter = $user->getAllChildIds(1); +} + $stats = new SalariesStats($db, $socid, $useridtofilter); @@ -204,7 +208,7 @@ print ''.$langs->tra // User print ''.$langs->trans("Employee").''; print img_picto('', 'user', 'class="pictofixedwidth"'); -print $form->select_dolusers(($userid ? $userid : -1), 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'widthcentpercentminusx maxwidth300'); +print $form->select_dolusers(($userid ? $userid : -1), 'userid', 1, '', 0, empty($user->rights->salaries->readall) ? 'hierarchyme' : '', '', 0, 0, 0, '', 0, '', 'widthcentpercentminusx maxwidth300'); print ''; // Year print ''.$langs->trans("Year").''; From 81e238351526e5494f6db123754b44bce3d1831e Mon Sep 17 00:00:00 2001 From: lmarcouiller Date: Fri, 6 May 2022 15:38:47 +0200 Subject: [PATCH 028/248] import with selectbox --- htdocs/imports/import.php | 724 +++++++------------------------------- 1 file changed, 124 insertions(+), 600 deletions(-) diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php index b3303402d22..a8fa3013ea2 100644 --- a/htdocs/imports/import.php +++ b/htdocs/imports/import.php @@ -167,6 +167,19 @@ foreach ($fieldsarray as $elem) { } } +if (empty($array_match_file_to_database)) { + $serialized_array_match_file_to_database = isset($_SESSION["dol_array_match_file_to_database_select"]) ? $_SESSION["dol_array_match_file_to_database_select"] : ''; + $array_match_file_to_database = array(); + $fieldsarray = explode(',', $serialized_array_match_file_to_database); + foreach ($fieldsarray as $elem) { + $tabelem = explode('=', $elem, 2); + $key = $tabelem[0]; + $val = (isset($tabelem[1]) ? $tabelem[1] : ''); + if ($key && $val) { + $array_match_file_to_database[$key] = $val; + } + } +} /* * Actions @@ -356,7 +369,22 @@ if ($action == 'saveorder') { $_SESSION["dol_array_match_file_to_database"] = $serialized_array_match_file_to_database; dol_syslog('dol_array_match_file_to_database='.$serialized_array_match_file_to_database); } - +if ($action == 'saveselectorder') { + // Enregistrement de la position des champs + $serialized_array_match_file_to_database = ''; + dol_syslog("selectorder=".GETPOST('selectorder'), LOG_DEBUG); + $selectorder = explode(",", GETPOST('selectorder')); + $fieldtarget = $fieldstarget = $objimport->array_import_fields[0]; + foreach ($selectorder as $key => $code) { + $serialized_array_match_file_to_database .= $key.'='.$code; + $serialized_array_match_file_to_database .= ','; + } + $serialized_array_match_file_to_database = substr($serialized_array_match_file_to_database, 0, -1); + dol_syslog('dol_array_match_file_to_database_select='.$serialized_array_match_file_to_database); + $_SESSION["dol_array_match_file_to_database_select"] = $serialized_array_match_file_to_database; + echo "{}"; + exit(0); +} @@ -765,7 +793,18 @@ if ($step == 3 && $datatoimport) { // STEP 4: Page to make matching between source file and database fields -if ($step == 4 && $datatoimport && !$selectimport) { +if ($step == 4 && $datatoimport && $selectimport) { + $serialized_array_match_file_to_database = isset($_SESSION["dol_array_match_file_to_database_select"]) ? $_SESSION["dol_array_match_file_to_database_select"] : ''; + $array_match_file_to_database = array(); + $fieldsarray = explode(',', $serialized_array_match_file_to_database); + foreach ($fieldsarray as $elem) { + $tabelem = explode('=', $elem, 2); + $key = $tabelem[0]; + $val = (isset($tabelem[1]) ? $tabelem[1] : ''); + if ($key && $val) { + $array_match_file_to_database[$key] = $val; + } + } $model = $format; $list = $objmodelimport->liste_modeles($db); @@ -810,9 +849,7 @@ if ($step == 4 && $datatoimport && !$selectimport) { // Load targets fields in database $fieldstarget = $objimport->array_import_fields[0]; - - $maxpos = max(count($fieldssource), count($fieldstarget)); - + $minpos = min(count($fieldssource), count($fieldstarget)); //var_dump($array_match_file_to_database); // Is it a first time in page (if yes, we must initialize array_match_file_to_database) @@ -843,525 +880,10 @@ if ($step == 4 && $datatoimport && !$selectimport) { $pos++; } // Save the match array in session. We now will use the array in session. - $_SESSION["dol_array_match_file_to_database"] = $serialized_array_match_file_to_database; + $_SESSION["dol_array_match_file_to_database_select"] = $serialized_array_match_file_to_database; } $array_match_database_to_file = array_flip($array_match_file_to_database); - //print $serialized_array_match_file_to_database; - //print $_SESSION["dol_array_match_file_to_database"]; - //var_dump($array_match_file_to_database);exit; - - // Now $array_match_file_to_database contains fieldnb(1,2,3...)=>fielddatabase(key in $array_match_file_to_database) - - $param = '&format='.$format.'&datatoimport='.urlencode($datatoimport).'&filetoimport='.urlencode($filetoimport); - if ($excludefirstline) { - $param .= '&excludefirstline='.urlencode($excludefirstline); - } - if ($endatlinenb) { - $param .= '&endatlinenb='.urlencode($endatlinenb); - } - if ($separator) { - $param .= '&separator='.urlencode($separator); - } - if ($enclosure) { - $param .= '&enclosure='.urlencode($enclosure); - } - - llxHeader('', $langs->trans("NewImport"), $help_url); - - $head = import_prepare_head($param, 4); - - print dol_get_fiche_head($head, 'step4', '', -2); - - print '
'; - print '
'; - - print ''; - - // Module - print ''; - print ''; - - // Lot de donnees a importer - print ''; - print ''; - - print '
'.$langs->trans("Module").''; - $titleofmodule = $objimport->array_import_module[0]['module']->getName(); - // Special cas for import common to module/services - if (in_array($objimport->array_import_code[0], array('produit_supplierprices', 'produit_multiprice', 'produit_languages'))) { - $titleofmodule = $langs->trans("ProductOrService"); - } - print $titleofmodule; - print '
'.$langs->trans("DatasetToImport").''; - $entity = preg_replace('/:.*$/', '', $objimport->array_import_icon[0]); - $entityicon = strtolower(!empty($entitytoicon[$entity]) ? $entitytoicon[$entity] : $entity); - print img_object($objimport->array_import_module[0]['module']->getName(), $entityicon).' '; - print $objimport->array_import_label[0]; - print '
'; - print '
'; - - print load_fiche_titre($langs->trans("InformationOnSourceFile"), '', 'file-export'); - - print '
'; - print '
'; - print ''; - - // Source file format - print ''; - print ''; - - // Separator and enclosure - if ($model == 'csv') { - print ''; - print ''; - } - - // File to import - print ''; - print ''; - - print '
'.$langs->trans("SourceFileFormat").''; - $text = $objmodelimport->getDriverDescForKey($format); - print $form->textwithpicto($objmodelimport->getDriverLabelForKey($format), $text); - print '
'.$langs->trans("CsvOptions").''; - print '
'; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print $langs->trans("Separator").' : '; - print ''; - print '    '.$langs->trans("Enclosure").' : '; - print ' '; - print ''; - print '
'; - print '
'.$langs->trans("FileToImport").''; - $modulepart = 'import'; - $relativepath = GETPOST('filetoimport'); - print ''; - print img_mime($file, '', 'pictofixedwidth'); - print $filetoimport; - print ''; - print '
'; - print '
'; - - print dol_get_fiche_end(); - - print '
'."\n"; - - - // List of source fields - print ''."\n"; - print '
'; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - - print '
'; - print ''; - $s = $langs->trans("SelectImportFields", '{s1}'); - $s = str_replace('{s1}', img_picto('', 'grip_title', '', false, 0, 0, '', '', 0), $s); - print $s; - print ' '; - $htmlother->select_import_model($importmodelid, 'importmodelid', $datatoimport, 1, $user->id); - print ''; - print '
'; - print '
'; - - // Title of array with fields - print '
'; // You can use div-table-responsive-no-min if you dont need reserved height for your table - print ''; - print ''; - print ''; - print ''; - print ''; - - //var_dump($array_match_file_to_database); - - print ''; - - // List of not imported fields - print ''; - - print ''; - print ''; - - print '
'.$langs->trans("FieldsInSourceFile").''.$langs->trans("FieldsInTargetDatabase").'
'; - - $fieldsplaced = array(); - $valforsourcefieldnb = array(); - $listofkeys = array(); - foreach ($array_match_file_to_database as $key => $val) { - $listofkeys[$key] = 1; - } - - print "\n\n"; - print '
'."\n"; - - // List of source fields - $var = true; - $lefti = 1; - foreach ($array_match_file_to_database as $key => $val) { - $var = !$var; - show_elem($fieldssource, $key, $val, $var); // key is field number in source file - //print '> '.$lefti.'-'.$key.'-'.$val; - $listofkeys[$key] = 1; - $fieldsplaced[$key] = 1; - $valforsourcefieldnb[$lefti] = $key; - $lefti++; - - if ($lefti > count($fieldstarget)) { - break; // Other fields are in the not imported area - } - } - //var_dump($valforsourcefieldnb); - - // Complete source fields from count($fieldssource)+1 to count($fieldstarget) - $more = 1; - $num = count($fieldssource); - while ($lefti <= $num) { - $var = !$var; - $newkey = getnewkey($fieldssource, $listofkeys); - show_elem($fieldssource, $newkey, '', $var); // key start after field number in source file - //print '> '.$lefti.'-'.$newkey; - $listofkeys[$key] = 1; - $lefti++; - $more++; - } - - print "
\n"; - print "\n"; - - - print '
'; - - // List of target fields - $height = '24px'; //needs px for css height attribute below - $i = 0; - $mandatoryfieldshavesource = true; - - print ''; - foreach ($fieldstarget as $code => $label) { - print ''; - - $i++; - $entity = (!empty($objimport->array_import_entities[0][$code]) ? $objimport->array_import_entities[0][$code] : $objimport->array_import_icon[0]); - - $tablealias = preg_replace('/(\..*)$/i', '', $code); - $tablename = $objimport->array_import_tables[0][$tablealias]; - - $entityicon = $entitytoicon[$entity] ? $entitytoicon[$entity] : $entity; // $entityicon must string name of picto of the field like 'project', 'company', 'contact', 'modulename', ... - $entitylang = $entitytolang[$entity] ? $entitytolang[$entity] : $objimport->array_import_label[0]; // $entitylang must be a translation key to describe object the field is related to, like 'Company', 'Contact', 'MyModyle', ... - - print ''; - print ''; - // Info field - print ''; - - print ''; - } - print '
=>'.img_object('', $entityicon).' '.$langs->trans($entitylang).''; - $newlabel = preg_replace('/\*$/', '', $label); - $text = $langs->trans($newlabel); - $more = ''; - if (preg_match('/\*$/', $label)) { - $text = ''.$text.''; - $more = ((!empty($valforsourcefieldnb[$i]) && $valforsourcefieldnb[$i] <= count($fieldssource)) ? '' : img_warning($langs->trans("FieldNeedSource"))); - if ($mandatoryfieldshavesource) { - $mandatoryfieldshavesource = (!empty($valforsourcefieldnb[$i]) && ($valforsourcefieldnb[$i] <= count($fieldssource))); - } - //print 'xx'.($i).'-'.$valforsourcefieldnb[$i].'-'.$mandatoryfieldshavesource; - } - print $text; - print ''; - $filecolumn = $array_match_database_to_file[$code]; - // Source field info - $htmltext = ''.$langs->trans("FieldSource").'
'; - if ($filecolumn > count($fieldssource)) { - $htmltext .= $langs->trans("DataComeFromNoWhere").'
'; - } else { - if (empty($objimport->array_import_convertvalue[0][$code])) { // If source file does not need convertion - $filecolumntoshow = $filecolumn; - $htmltext .= $langs->trans("DataComeFromFileFieldNb", $filecolumntoshow).'
'; - } else { - if ($objimport->array_import_convertvalue[0][$code]['rule'] == 'fetchidfromref') { - $htmltext .= $langs->trans("DataComeFromIdFoundFromRef", $filecolumn, $langs->transnoentitiesnoconv($entitylang)).'
'; - } - if ($objimport->array_import_convertvalue[0][$code]['rule'] == 'fetchidfromcodeid') { - $htmltext .= $langs->trans("DataComeFromIdFoundFromCodeId", $filecolumn, $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$code]['dict'])).'
'; - } - } - } - // Source required - $htmltext .= $langs->trans("SourceRequired").': '.yn(preg_match('/\*$/', $label)).'
'; - $example = $objimport->array_import_examplevalues[0][$code]; - // Example - if (empty($objimport->array_import_convertvalue[0][$code])) { // If source file does not need convertion - if ($example) { - $htmltext .= $langs->trans("SourceExample").': '.$example.'
'; - } - } else { - if ($objimport->array_import_convertvalue[0][$code]['rule'] == 'fetchidfromref') { - $htmltext .= $langs->trans("SourceExample").': '.$langs->transnoentitiesnoconv("ExampleAnyRefFoundIntoElement", $entitylang).($example ? ' ('.$langs->transnoentitiesnoconv("Example").': '.$example.')' : '').'
'; - } elseif ($objimport->array_import_convertvalue[0][$code]['rule'] == 'fetchidfromcodeid') { - $htmltext .= $langs->trans("SourceExample").': '.$langs->trans("ExampleAnyCodeOrIdFoundIntoDictionary", $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$code]['dict'])).($example ? ' ('.$langs->transnoentitiesnoconv("Example").': '.$example.')' : '').'
'; - } elseif ($example) { - $htmltext .= $langs->trans("SourceExample").': '.$example.'
'; - } - } - // Format control rule - if (!empty($objimport->array_import_regex[0][$code])) { - $htmltext .= $langs->trans("FormatControlRule").': '.$objimport->array_import_regex[0][$code].'
'; - } - $htmltext .= '
'; - // Target field info - $htmltext .= ''.$langs->trans("FieldTarget").'
'; - if (empty($objimport->array_import_convertvalue[0][$code])) { // If source file does not need convertion - $htmltext .= $langs->trans("DataIsInsertedInto").'
'; - } else { - if ($objimport->array_import_convertvalue[0][$code]['rule'] == 'fetchidfromref') { - $htmltext .= $langs->trans("DataIDSourceIsInsertedInto").'
'; - } - if ($objimport->array_import_convertvalue[0][$code]['rule'] == 'fetchidfromcodeid') { - $htmltext .= $langs->trans("DataCodeIDSourceIsInsertedInto").'
'; - } - } - $htmltext .= $langs->trans("FieldTitle").": ".$langs->trans($newlabel)."
"; - $htmltext .= $langs->trans("Table")." -> ".$langs->trans("Field").': '.$tablename." -> ".preg_replace('/^.*\./', '', $code)."
"; - print $form->textwithpicto($more, $htmltext); - print '
'; - - print '
'.$langs->trans("NotImportedFields").'
'; - - print "\n\n"; - print '\n"; - print "\n"; - - print ''; - $i = 0; - while ($i < $nbofnotimportedfields) { - // Print empty cells - show_elem('', '', 'none', $var, 'nostyle'); - $i++; - } - print '
'; - print '
'; - - - if ($conf->use_javascript_ajax) { - print ''."\n"; - } - - /* - * Action bar - */ - print '
'; - - if (count($array_match_file_to_database)) { - if ($mandatoryfieldshavesource) { - print ''.$langs->trans("NextStep").''; - } else { - print ''.$langs->trans("NextStep").''; - } - } - - print '
'; - - - // Area for profils import - if (count($array_match_file_to_database)) { - print '
'."\n"; - print ''."\n"; - print '
'.$langs->trans("SaveImportModel").'
'; - - print '
'; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - - print '
'; // You can use div-table-responsive-no-min if you dont need reserved height for your table - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - - print ''; - print ''; - print ''; - print ''; - - // List of existing import profils - $sql = "SELECT rowid, label, fk_user, entity"; - $sql .= " FROM ".MAIN_DB_PREFIX."import_model"; - $sql .= " WHERE type = '".$db->escape($datatoimport)."'"; - if (empty($conf->global->EXPORTS_SHARE_MODELS)) { // EXPORTS_SHARE_MODELS means all templates are visible, whatever is owner. - $sql .= " AND fk_user IN (0, ".((int) $user->id).")"; - } - $sql .= " ORDER BY rowid"; - - $resql = $db->query($sql); - if ($resql) { - $num = $db->num_rows($resql); - - $tmpuser = new user($db); - - $i = 0; - while ($i < $num) { - $obj = $db->fetch_object($resql); - - print ''; - print ''; - print ''; - $i++; - } - } else { - dol_print_error($db); - } - - print '
'.$langs->trans("ImportModelName").''.$langs->trans("Visibility").'
'; - $arrayvisibility = array('private'=>$langs->trans("Private"), 'all'=>$langs->trans("Everybody")); - print $form->selectarray('visibility', $arrayvisibility, 'private'); - print ''; - print ''; - print '
'; - print $obj->label; - print ''; - if (empty($obj->fk_user)) { - print $langs->trans("Everybody"); - } else { - $tmpuser->fetch($obj->fk_user); - print $tmpuser->getNomUrl(1); - } - print ''; - print 'rowid.'&filetoimport='.urlencode($filetoimport).'">'; - print img_delete(); - print ''; - print '
'; - print '
'; - - print '
'; - } -} - -if ($step == 4 && $datatoimport && $selectimport) { - $model = $format; - $list = $objmodelimport->liste_modeles($db); - - // Create classe to use for import - $dir = DOL_DOCUMENT_ROOT."/core/modules/import/"; - $file = "import_".$model.".modules.php"; - $classname = "Import".ucfirst($model); - require_once $dir.$file; - $obj = new $classname($db, $datatoimport); - if ($model == 'csv') { - $obj->separator = $separator_used; - $obj->enclosure = $enclosure; - } - if ($model == 'xlsx') { - if (!preg_match('/\.xlsx$/i', $filetoimport)) { - $langs->load("errors"); - $param = '&datatoimport='.$datatoimport.'&format='.$format; - setEventMessages($langs->trans("ErrorFileMustHaveFormat", $model), null, 'errors'); - header("Location: ".$_SERVER["PHP_SELF"].'?step=3'.$param.'&filetoimport='.urlencode($relativepath)); - exit; - } - } - - if (GETPOST('update')) { - $array_match_file_to_database = array(); - } - - // Load source fields in input file - $fieldssource = array(); - $result = $obj->import_open_file($conf->import->dir_temp.'/'.$filetoimport, $langs); - if ($result >= 0) { - // Read first line - $arrayrecord = $obj->import_read_record(); - // Put into array fieldssource starting with 1. - $i = 1; - foreach ($arrayrecord as $key => $val) { - $fieldssource[$i]['example1'] = dol_trunc($val['val'], 24); - $i++; - } - $obj->import_close_file(); - } - - // Load targets fields in database - $fieldstarget = $objimport->array_import_fields[0]; $fieldstarget_tmp = array(); foreach ($fieldstarget as $key => $label) { @@ -1372,44 +894,13 @@ if ($step == 4 && $datatoimport && $selectimport) { } else { $fieldstarget_tmp[$key] = array("label"=>$label,"required"=>false); } - $fieldstarget_tmp[$key]["imported"] = true; + if (!empty($array_match_database_to_file[$key])) { + $fieldstarget_tmp[$key]["imported"] = true; + } else { + $fieldstarget_tmp[$key]["imported"] = false; + } } $fieldstarget = $fieldstarget_tmp; - $maxpos = max(count($fieldssource), count($fieldstarget)); - - //var_dump($array_match_file_to_database); - - // Is it a first time in page (if yes, we must initialize array_match_file_to_database) - if (count($array_match_file_to_database) == 0) { - // This is first input in screen, we need to define - // $array_match_file_to_database - // $serialized_array_match_file_to_database - // $_SESSION["dol_array_match_file_to_database"] - $pos = 1; - $num = count($fieldssource); - while ($pos <= $num) { - if ($num >= 1 && $pos <= $num) { - $posbis = 1; - foreach ($fieldstarget as $key => $val) { - if ($posbis < $pos) { - $posbis++; - continue; - } - // We found the key of targets that is at position pos - $array_match_file_to_database[$pos] = $key; - if ($serialized_array_match_file_to_database) { - $serialized_array_match_file_to_database .= ','; - } - $serialized_array_match_file_to_database .= ($pos.'='.$key); - break; - } - } - $pos++; - } - // Save the match array in session. We now will use the array in session. - $_SESSION["dol_array_match_file_to_database"] = $serialized_array_match_file_to_database; - } - $array_match_database_to_file = array_flip($array_match_file_to_database); //print $serialized_array_match_file_to_database; //print $_SESSION["dol_array_match_file_to_database"]; @@ -1568,7 +1059,7 @@ if ($step == 4 && $datatoimport && $selectimport) { // List of source fields $var = true; $lefti = 1; - foreach ($array_match_file_to_database as $key => $val) { + foreach ($fieldssource as $key => $val) { $var = !$var; show_elem($fieldssource, $key, $val, $var); // key is field number in source file //print '> '.$lefti.'-'.$key.'-'.$val; @@ -1603,13 +1094,28 @@ if ($step == 4 && $datatoimport && $selectimport) { print ''; // List of target fields + $optionsnotused = ""; + foreach ($fieldstarget as $code => $line) { + if (!$line["imported"]) { + $text = ''; + $optionsnotused .= $text; + } + } + $height = '24px'; //needs px for css height attribute below $i = 0; $mandatoryfieldshavesource = true; print ''; - foreach ($fieldstarget as $code => $line) { + if ($i == $minpos) { + break; + } print ''; $entity = (!empty($objimport->array_import_entities[0][$code]) ? $objimport->array_import_entities[0][$code] : $objimport->array_import_icon[0]); @@ -1621,9 +1127,14 @@ if ($step == 4 && $datatoimport && $selectimport) { print ''; print '"; @@ -1691,6 +1203,7 @@ if ($step == 4 && $datatoimport && $selectimport) { $htmltext .= $langs->trans("Table")." -> ".$langs->trans("Field").': '.$tablename." -> ".preg_replace('/^.*\./', '', $code)."
"; print $form->textwithpicto($more, $htmltext); print ''; + $i++; } print '
=>'.img_object('', $entityicon).' '.$langs->trans($entitylang).''; - print ''; + if ($line["imported"]) { + print ''; + print ''; + print ''; + print $optionsnotused; print ''; //print ajax_combobox("select_".$newlabel); print "
'; @@ -1705,11 +1218,11 @@ if ($step == 4 && $datatoimport && $selectimport) { print ''; @@ -2679,7 +2199,7 @@ function show_elem($fieldssource, $pos, $key, $var, $nostyle = '') { global $langs, $bc; - $height = '24px'; + $height = '28px'; if ($key == 'none') { //stop multiple duplicate ids with no number @@ -2693,7 +2213,7 @@ function show_elem($fieldssource, $pos, $key, $var, $nostyle = '') print ''."\n"; } - if ($pos && $pos > count($fieldssource)) { // No fields + if (($pos && $pos > count($fieldssource)) && (!isset($fieldssource[$pos]["imported"]))) { // No fields print ''; print ''; print ''; From 86a8ae8c3dc25a845be8efbec1c3e89774f5f07e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 9 May 2022 15:24:46 +0200 Subject: [PATCH 037/248] NEW Suggest a way to run upgrade per entities. --- ChangeLog | 2 +- htdocs/install/upgrade2.php | 776 +++++++++++++++++++----------------- 2 files changed, 417 insertions(+), 361 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1a0a95aab9e..a458f7eea74 100644 --- a/ChangeLog +++ b/ChangeLog @@ -39,7 +39,7 @@ Following changes may create regressions for some external modules, but were nec * Move massaction 'confirm_createbills' from actions_massactions.inc.php to commande/list.php * Method fetch_all_resources(), fetch_all_used(), fetch_all_available() of DolResource has been removed (they were not used by core code). * Method fetch_all of DolResource has been renamed into fetchAll() to match naming conventions. - +* The hook 'upgrade' and 'doUpgrade2" has been renamed 'doUpgradeBefore' and 'doUpgradeAfterDB'. A new trigger 'doUpgradeAfterFiles' has been introduced. ***** ChangeLog for 15.0.1 compared to 15.0.0 ***** FIX: #19777 #20281 diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php index 924d251702c..cda8fc0bc13 100644 --- a/htdocs/install/upgrade2.php +++ b/htdocs/install/upgrade2.php @@ -167,20 +167,17 @@ if (!GETPOST('action', 'aZ09') || preg_match('/upgrade/i', GETPOST('action', 'aZ } $conf->db->dolibarr_main_db_cryptkey = $dolibarr_main_db_cryptkey; - // Chargement config - if (!$error) { - $conf->setValues($db); - // Reset forced setup after the setValues - if (defined('SYSLOG_FILE')) { - $conf->global->SYSLOG_FILE = constant('SYSLOG_FILE'); - } - $conf->global->MAIN_ENABLE_LOG_TO_HTML = 1; - } + + $listofentities = array(1); // Create the global $hookmanager object include_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php'; $hookmanager = new HookManager($db); - $hookmanager->initHooks(array('upgrade')); + $reshook = $hookmanager->initHooks(array('doUpgradeBefore')); + if ($reshook >= 0 && is_array($hookmanager->resArray)) { + // Example: $hookmanager->resArray = array(2, 3, 10); + $listofentities = array_unique(array_merge($listofentities, $hookmanager->resArray)); + } /*************************************************************************************** @@ -188,385 +185,399 @@ if (!GETPOST('action', 'aZ09') || preg_match('/upgrade/i', GETPOST('action', 'aZ * Migration of data * ***************************************************************************************/ + + // Force to execute this at begin to avoid the new core code into Dolibarr to be broken. + $sql = 'ALTER TABLE '.MAIN_DB_PREFIX.'user ADD COLUMN birth date'; + $db->query($sql, 1); + $sql = 'ALTER TABLE '.MAIN_DB_PREFIX.'user ADD COLUMN dateemployment date'; + $db->query($sql, 1); + $sql = 'ALTER TABLE '.MAIN_DB_PREFIX.'user ADD COLUMN dateemploymentend date'; + $db->query($sql, 1); + $sql = 'ALTER TABLE '.MAIN_DB_PREFIX.'user ADD COLUMN default_range integer'; + $db->query($sql, 1); + $sql = 'ALTER TABLE '.MAIN_DB_PREFIX.'user ADD COLUMN default_c_exp_tax_cat integer'; + $db->query($sql, 1); + $sql = 'ALTER TABLE '.MAIN_DB_PREFIX.'extrafields ADD COLUMN langs varchar(24)'; + $db->query($sql, 1); + $sql = 'ALTER TABLE '.MAIN_DB_PREFIX.'extrafields ADD COLUMN fieldcomputed text'; + $db->query($sql, 1); + $sql = 'ALTER TABLE '.MAIN_DB_PREFIX.'extrafields ADD COLUMN fielddefault varchar(255)'; + $db->query($sql, 1); + $sql = 'ALTER TABLE '.MAIN_DB_PREFIX."extrafields ADD COLUMN enabled varchar(255) DEFAULT '1'"; + $db->query($sql, 1); + $sql = 'ALTER TABLE '.MAIN_DB_PREFIX.'extrafields ADD COLUMN help text'; + $db->query($sql, 1); + $sql = 'ALTER TABLE '.MAIN_DB_PREFIX.'user_rights ADD COLUMN entity integer DEFAULT 1 NOT NULL'; + $db->query($sql, 1); + + $db->begin(); - if (!$error) { - // Current version is $conf->global->MAIN_VERSION_LAST_UPGRADE - // Version to install is DOL_VERSION - $dolibarrlastupgradeversionarray = preg_split('/[\.-]/', isset($conf->global->MAIN_VERSION_LAST_UPGRADE) ? $conf->global->MAIN_VERSION_LAST_UPGRADE : (isset($conf->global->MAIN_VERSION_LAST_INSTALL) ? $conf->global->MAIN_VERSION_LAST_INSTALL : '')); - - // Chaque action de migration doit renvoyer une ligne sur 4 colonnes avec - // dans la 1ere colonne, la description de l'action a faire - // dans la 4eme colonne, le texte 'OK' si fait ou 'AlreadyDone' si rien n'est fait ou 'Error' - - $versiontoarray = explode('.', $versionto); - $versionranarray = explode('.', DOL_VERSION); - - - // Force to execute this at begin to avoid the new core code into Dolibarr to be broken. - $sql = 'ALTER TABLE '.MAIN_DB_PREFIX.'user ADD COLUMN birth date'; - $db->query($sql, 1); - $sql = 'ALTER TABLE '.MAIN_DB_PREFIX.'user ADD COLUMN dateemployment date'; - $db->query($sql, 1); - $sql = 'ALTER TABLE '.MAIN_DB_PREFIX.'user ADD COLUMN dateemploymentend date'; - $db->query($sql, 1); - $sql = 'ALTER TABLE '.MAIN_DB_PREFIX.'user ADD COLUMN default_range integer'; - $db->query($sql, 1); - $sql = 'ALTER TABLE '.MAIN_DB_PREFIX.'user ADD COLUMN default_c_exp_tax_cat integer'; - $db->query($sql, 1); - $sql = 'ALTER TABLE '.MAIN_DB_PREFIX.'extrafields ADD COLUMN langs varchar(24)'; - $db->query($sql, 1); - $sql = 'ALTER TABLE '.MAIN_DB_PREFIX.'extrafields ADD COLUMN fieldcomputed text'; - $db->query($sql, 1); - $sql = 'ALTER TABLE '.MAIN_DB_PREFIX.'extrafields ADD COLUMN fielddefault varchar(255)'; - $db->query($sql, 1); - $sql = 'ALTER TABLE '.MAIN_DB_PREFIX."extrafields ADD COLUMN enabled varchar(255) DEFAULT '1'"; - $db->query($sql, 1); - $sql = 'ALTER TABLE '.MAIN_DB_PREFIX.'extrafields ADD COLUMN help text'; - $db->query($sql, 1); - $sql = 'ALTER TABLE '.MAIN_DB_PREFIX.'user_rights ADD COLUMN entity integer DEFAULT 1 NOT NULL'; - $db->query($sql, 1); - - - $afterversionarray = explode('.', '2.0.0'); - $beforeversionarray = explode('.', '2.7.9'); - if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { - // Script pour V2 -> V2.1 - migrate_paiements($db, $langs, $conf); - - migrate_contracts_det($db, $langs, $conf); - - migrate_contracts_date1($db, $langs, $conf); - - migrate_contracts_date2($db, $langs, $conf); - - migrate_contracts_date3($db, $langs, $conf); - - migrate_contracts_open($db, $langs, $conf); - - migrate_modeles($db, $langs, $conf); - - migrate_price_propal($db, $langs, $conf); - - migrate_price_commande($db, $langs, $conf); - - migrate_price_commande_fournisseur($db, $langs, $conf); - - migrate_price_contrat($db, $langs, $conf); - - migrate_paiementfourn_facturefourn($db, $langs, $conf); - - - // Script pour V2.1 -> V2.2 - migrate_paiements_orphelins_1($db, $langs, $conf); - - migrate_paiements_orphelins_2($db, $langs, $conf); - - migrate_links_transfert($db, $langs, $conf); - - - // Script pour V2.2 -> V2.4 - migrate_commande_expedition($db, $langs, $conf); - - migrate_commande_livraison($db, $langs, $conf); - - migrate_detail_livraison($db, $langs, $conf); - - - // Script pour V2.5 -> V2.6 - migrate_stocks($db, $langs, $conf); - - - // Script pour V2.6 -> V2.7 - migrate_menus($db, $langs, $conf); - - migrate_commande_deliveryaddress($db, $langs, $conf); - - migrate_restore_missing_links($db, $langs, $conf); - - migrate_rename_directories($db, $langs, $conf, '/compta', '/banque'); - - migrate_rename_directories($db, $langs, $conf, '/societe', '/mycompany'); + foreach ($listofentities as $entity) { + // Set $conf context for entity + $conf->setEntityValues($db, $entity); + // Reset forced setup after the setValues + if (defined('SYSLOG_FILE')) { + $conf->global->SYSLOG_FILE = constant('SYSLOG_FILE'); } + $conf->global->MAIN_ENABLE_LOG_TO_HTML = 1; - // Script for 2.8 - $afterversionarray = explode('.', '2.7.9'); - $beforeversionarray = explode('.', '2.8.9'); - //print $versionto.' '.versioncompare($versiontoarray,$afterversionarray).' '.versioncompare($versiontoarray,$beforeversionarray); - if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { - migrate_price_facture($db, $langs, $conf); // Code of this function works for 2.8+ because need a field tva_tx + if (!$error) { + if (count($listofentities) > 1) { + print ''."\n"; + } - migrate_relationship_tables($db, $langs, $conf, 'co_exp', 'fk_commande', 'commande', 'fk_expedition', 'shipping'); + // Current version is $conf->global->MAIN_VERSION_LAST_UPGRADE + // Version to install is DOL_VERSION + $dolibarrlastupgradeversionarray = preg_split('/[\.-]/', isset($conf->global->MAIN_VERSION_LAST_UPGRADE) ? $conf->global->MAIN_VERSION_LAST_UPGRADE : (isset($conf->global->MAIN_VERSION_LAST_INSTALL) ? $conf->global->MAIN_VERSION_LAST_INSTALL : '')); - migrate_relationship_tables($db, $langs, $conf, 'pr_exp', 'fk_propal', 'propal', 'fk_expedition', 'shipping'); + // Chaque action de migration doit renvoyer une ligne sur 4 colonnes avec + // dans la 1ere colonne, la description de l'action a faire + // dans la 4eme colonne, le texte 'OK' si fait ou 'AlreadyDone' si rien n'est fait ou 'Error' - migrate_relationship_tables($db, $langs, $conf, 'pr_liv', 'fk_propal', 'propal', 'fk_livraison', 'delivery'); + $versiontoarray = explode('.', $versionto); + $versionranarray = explode('.', DOL_VERSION); - migrate_relationship_tables($db, $langs, $conf, 'co_liv', 'fk_commande', 'commande', 'fk_livraison', 'delivery'); - migrate_relationship_tables($db, $langs, $conf, 'co_pr', 'fk_propale', 'propal', 'fk_commande', 'commande'); + $afterversionarray = explode('.', '2.0.0'); + $beforeversionarray = explode('.', '2.7.9'); + if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { + // Script pour V2 -> V2.1 + migrate_paiements($db, $langs, $conf); - migrate_relationship_tables($db, $langs, $conf, 'fa_pr', 'fk_propal', 'propal', 'fk_facture', 'facture'); + migrate_contracts_det($db, $langs, $conf); - migrate_relationship_tables($db, $langs, $conf, 'co_fa', 'fk_commande', 'commande', 'fk_facture', 'facture'); + migrate_contracts_date1($db, $langs, $conf); - migrate_project_user_resp($db, $langs, $conf); + migrate_contracts_date2($db, $langs, $conf); - migrate_project_task_actors($db, $langs, $conf); - } + migrate_contracts_date3($db, $langs, $conf); - // Script for 2.9 - $afterversionarray = explode('.', '2.8.9'); - $beforeversionarray = explode('.', '2.9.9'); - if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { - migrate_project_task_time($db, $langs, $conf); + migrate_contracts_open($db, $langs, $conf); - migrate_customerorder_shipping($db, $langs, $conf); + migrate_modeles($db, $langs, $conf); - migrate_shipping_delivery($db, $langs, $conf); + migrate_price_propal($db, $langs, $conf); - migrate_shipping_delivery2($db, $langs, $conf); - } + migrate_price_commande($db, $langs, $conf); - // Script for 3.0 - $afterversionarray = explode('.', '2.9.9'); - $beforeversionarray = explode('.', '3.0.9'); - if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { - // No particular code - } + migrate_price_commande_fournisseur($db, $langs, $conf); - // Script for 3.1 - $afterversionarray = explode('.', '3.0.9'); - $beforeversionarray = explode('.', '3.1.9'); - if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { - migrate_rename_directories($db, $langs, $conf, '/rss', '/externalrss'); + migrate_price_contrat($db, $langs, $conf); - migrate_actioncomm_element($db, $langs, $conf); - } + migrate_paiementfourn_facturefourn($db, $langs, $conf); - // Script for 3.2 - $afterversionarray = explode('.', '3.1.9'); - $beforeversionarray = explode('.', '3.2.9'); - if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { - migrate_price_contrat($db, $langs, $conf); - migrate_mode_reglement($db, $langs, $conf); + // Script pour V2.1 -> V2.2 + migrate_paiements_orphelins_1($db, $langs, $conf); - migrate_clean_association($db, $langs, $conf); - } + migrate_paiements_orphelins_2($db, $langs, $conf); - // Script for 3.3 - $afterversionarray = explode('.', '3.2.9'); - $beforeversionarray = explode('.', '3.3.9'); - if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { - migrate_categorie_association($db, $langs, $conf); - } + migrate_links_transfert($db, $langs, $conf); - // Script for 3.4 - // No specific scripts - // Tasks to do always and only into last targeted version - $afterversionarray = explode('.', '3.6.9'); // target is after this - $beforeversionarray = explode('.', '3.7.9'); // target is before this - if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { - migrate_event_assignement($db, $langs, $conf); - } + // Script pour V2.2 -> V2.4 + migrate_commande_expedition($db, $langs, $conf); - // Scripts for 3.9 - $afterversionarray = explode('.', '3.7.9'); - $beforeversionarray = explode('.', '3.8.9'); - if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { - // No particular code - } + migrate_commande_livraison($db, $langs, $conf); - // Scripts for 4.0 - $afterversionarray = explode('.', '3.9.9'); - $beforeversionarray = explode('.', '4.0.9'); - if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { - migrate_rename_directories($db, $langs, $conf, '/fckeditor', '/medias'); - } + migrate_detail_livraison($db, $langs, $conf); - // Scripts for 5.0 - $afterversionarray = explode('.', '4.0.9'); - $beforeversionarray = explode('.', '5.0.9'); - if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { - // Migrate to add entity value into llx_societe_remise - migrate_remise_entity($db, $langs, $conf); - // Migrate to add entity value into llx_societe_remise_except - migrate_remise_except_entity($db, $langs, $conf); - } + // Script pour V2.5 -> V2.6 + migrate_stocks($db, $langs, $conf); - // Scripts for 6.0 - $afterversionarray = explode('.', '5.0.9'); - $beforeversionarray = explode('.', '6.0.9'); - if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { - if (!empty($conf->multicompany->enabled)) { - global $multicompany_transverse_mode; - // Only if the transverse mode is not used - if (empty($multicompany_transverse_mode)) { - // Migrate to add entity value into llx_user_rights - migrate_user_rights_entity($db, $langs, $conf); + // Script pour V2.6 -> V2.7 + migrate_menus($db, $langs, $conf); - // Migrate to add entity value into llx_usergroup_rights - migrate_usergroup_rights_entity($db, $langs, $conf); + migrate_commande_deliveryaddress($db, $langs, $conf); + + migrate_restore_missing_links($db, $langs, $conf); + + migrate_rename_directories($db, $langs, $conf, '/compta', '/banque'); + + migrate_rename_directories($db, $langs, $conf, '/societe', '/mycompany'); + } + + // Script for 2.8 + $afterversionarray = explode('.', '2.7.9'); + $beforeversionarray = explode('.', '2.8.9'); + //print $versionto.' '.versioncompare($versiontoarray,$afterversionarray).' '.versioncompare($versiontoarray,$beforeversionarray); + if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { + migrate_price_facture($db, $langs, $conf); // Code of this function works for 2.8+ because need a field tva_tx + + migrate_relationship_tables($db, $langs, $conf, 'co_exp', 'fk_commande', 'commande', 'fk_expedition', 'shipping'); + + migrate_relationship_tables($db, $langs, $conf, 'pr_exp', 'fk_propal', 'propal', 'fk_expedition', 'shipping'); + + migrate_relationship_tables($db, $langs, $conf, 'pr_liv', 'fk_propal', 'propal', 'fk_livraison', 'delivery'); + + migrate_relationship_tables($db, $langs, $conf, 'co_liv', 'fk_commande', 'commande', 'fk_livraison', 'delivery'); + + migrate_relationship_tables($db, $langs, $conf, 'co_pr', 'fk_propale', 'propal', 'fk_commande', 'commande'); + + migrate_relationship_tables($db, $langs, $conf, 'fa_pr', 'fk_propal', 'propal', 'fk_facture', 'facture'); + + migrate_relationship_tables($db, $langs, $conf, 'co_fa', 'fk_commande', 'commande', 'fk_facture', 'facture'); + + migrate_project_user_resp($db, $langs, $conf); + + migrate_project_task_actors($db, $langs, $conf); + } + + // Script for 2.9 + $afterversionarray = explode('.', '2.8.9'); + $beforeversionarray = explode('.', '2.9.9'); + if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { + migrate_project_task_time($db, $langs, $conf); + + migrate_customerorder_shipping($db, $langs, $conf); + + migrate_shipping_delivery($db, $langs, $conf); + + migrate_shipping_delivery2($db, $langs, $conf); + } + + // Script for 3.0 + $afterversionarray = explode('.', '2.9.9'); + $beforeversionarray = explode('.', '3.0.9'); + if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { + // No particular code + } + + // Script for 3.1 + $afterversionarray = explode('.', '3.0.9'); + $beforeversionarray = explode('.', '3.1.9'); + if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { + migrate_rename_directories($db, $langs, $conf, '/rss', '/externalrss'); + + migrate_actioncomm_element($db, $langs, $conf); + } + + // Script for 3.2 + $afterversionarray = explode('.', '3.1.9'); + $beforeversionarray = explode('.', '3.2.9'); + if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { + migrate_price_contrat($db, $langs, $conf); + + migrate_mode_reglement($db, $langs, $conf); + + migrate_clean_association($db, $langs, $conf); + } + + // Script for 3.3 + $afterversionarray = explode('.', '3.2.9'); + $beforeversionarray = explode('.', '3.3.9'); + if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { + migrate_categorie_association($db, $langs, $conf); + } + + // Script for 3.4 + // No specific scripts + + // Tasks to do always and only into last targeted version + $afterversionarray = explode('.', '3.6.9'); // target is after this + $beforeversionarray = explode('.', '3.7.9'); // target is before this + if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { + migrate_event_assignement($db, $langs, $conf); + } + + // Scripts for 3.9 + $afterversionarray = explode('.', '3.7.9'); + $beforeversionarray = explode('.', '3.8.9'); + if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { + // No particular code + } + + // Scripts for 4.0 + $afterversionarray = explode('.', '3.9.9'); + $beforeversionarray = explode('.', '4.0.9'); + if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { + migrate_rename_directories($db, $langs, $conf, '/fckeditor', '/medias'); + } + + // Scripts for 5.0 + $afterversionarray = explode('.', '4.0.9'); + $beforeversionarray = explode('.', '5.0.9'); + if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { + // Migrate to add entity value into llx_societe_remise + migrate_remise_entity($db, $langs, $conf); + + // Migrate to add entity value into llx_societe_remise_except + migrate_remise_except_entity($db, $langs, $conf); + } + + // Scripts for 6.0 + $afterversionarray = explode('.', '5.0.9'); + $beforeversionarray = explode('.', '6.0.9'); + if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { + if (!empty($conf->multicompany->enabled)) { + global $multicompany_transverse_mode; + + // Only if the transverse mode is not used + if (empty($multicompany_transverse_mode)) { + // Migrate to add entity value into llx_user_rights + migrate_user_rights_entity($db, $langs, $conf); + + // Migrate to add entity value into llx_usergroup_rights + migrate_usergroup_rights_entity($db, $langs, $conf); + } } } - } - // Scripts for 7.0 - $afterversionarray = explode('.', '6.0.9'); - $beforeversionarray = explode('.', '7.0.9'); - if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { - // Migrate contact association - migrate_event_assignement_contact($db, $langs, $conf); + // Scripts for 7.0 + $afterversionarray = explode('.', '6.0.9'); + $beforeversionarray = explode('.', '7.0.9'); + if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { + // Migrate contact association + migrate_event_assignement_contact($db, $langs, $conf); - migrate_reset_blocked_log($db, $langs, $conf); - } - - // Scripts for 8.0 - $afterversionarray = explode('.', '7.0.9'); - $beforeversionarray = explode('.', '8.0.9'); - if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { - migrate_rename_directories($db, $langs, $conf, '/contracts', '/contract'); - } - - // Scripts for 9.0 - $afterversionarray = explode('.', '8.0.9'); - $beforeversionarray = explode('.', '9.0.9'); - if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { - migrate_user_photospath(); - } - - // Scripts for 11.0 - $afterversionarray = explode('.', '10.0.9'); - $beforeversionarray = explode('.', '11.0.9'); - if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { - migrate_users_socialnetworks(); - migrate_members_socialnetworks(); - migrate_contacts_socialnetworks(); - migrate_thirdparties_socialnetworks(); - } - - // Scripts for 14.0 - $afterversionarray = explode('.', '13.0.9'); - $beforeversionarray = explode('.', '14.0.9'); - if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { - migrate_export_import_profiles('export'); - migrate_export_import_profiles('import'); - } - - // Scripts for 16.0 - $afterversionarray = explode('.', '15.0.9'); - $beforeversionarray = explode('.', '16.0.9'); - if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { - migrate_user_photospath2(); - } - } - - - // Code executed only if migration is LAST ONE. Must always be done. - if (versioncompare($versiontoarray, $versionranarray) >= 0 || versioncompare($versiontoarray, $versionranarray) <= -3) { - // Reload modules (this must be always done and only into last targeted version, because code to reload module may need table structure of last version) - $listofmodule = array( - 'MAIN_MODULE_ACCOUNTING'=>'newboxdefonly', - 'MAIN_MODULE_AGENDA'=>'newboxdefonly', - 'MAIN_MODULE_BOM'=>'menuonly', - 'MAIN_MODULE_BANQUE'=>'menuonly', - 'MAIN_MODULE_BARCODE'=>'newboxdefonly', - 'MAIN_MODULE_CRON'=>'newboxdefonly', - 'MAIN_MODULE_COMMANDE'=>'newboxdefonly', - 'MAIN_MODULE_BLOCKEDLOG'=>'noboxes', - 'MAIN_MODULE_DEPLACEMENT'=>'newboxdefonly', - 'MAIN_MODULE_DON'=>'newboxdefonly', - 'MAIN_MODULE_ECM'=>'newboxdefonly', - 'MAIN_MODULE_EXTERNALSITE'=>'newboxdefonly', - 'MAIN_MODULE_EXPENSEREPORT'=>'newboxdefonly', - 'MAIN_MODULE_FACTURE'=>'newboxdefonly', - 'MAIN_MODULE_FOURNISSEUR'=>'newboxdefonly', - 'MAIN_MODULE_HOLIDAY'=>'newboxdefonly', - 'MAIN_MODULE_MARGIN'=>'menuonly', - 'MAIN_MODULE_MRP'=>'menuonly', - 'MAIN_MODULE_OPENSURVEY'=>'newboxdefonly', - 'MAIN_MODULE_PAYBOX'=>'newboxdefonly', - 'MAIN_MODULE_PRINTING'=>'newboxdefonly', - 'MAIN_MODULE_PRODUIT'=>'newboxdefonly', - 'MAIN_MODULE_RECRUITMENT'=>'menuonly', - 'MAIN_MODULE_RESOURCE'=>'noboxes', - 'MAIN_MODULE_SALARIES'=>'newboxdefonly', - 'MAIN_MODULE_SERVICE'=>'newboxdefonly', - 'MAIN_MODULE_SYSLOG'=>'newboxdefonly', - 'MAIN_MODULE_SOCIETE'=>'newboxdefonly', - 'MAIN_MODULE_STRIPE'=>'menuonly', - 'MAIN_MODULE_TICKET'=>'newboxdefonly', - 'MAIN_MODULE_TAKEPOS'=>'newboxdefonly', - 'MAIN_MODULE_USER'=>'newboxdefonly', //This one must be always done and only into last targeted version) - 'MAIN_MODULE_VARIANTS'=>'newboxdefonly', - 'MAIN_MODULE_WEBSITE'=>'newboxdefonly', - ); - - $result = migrate_reload_modules($db, $langs, $conf, $listofmodule); - if ($result < 0) { - $error++; - } - // Reload menus (this must be always and only into last targeted version) - $result = migrate_reload_menu($db, $langs, $conf); - if ($result < 0) { - $error++; - } - } - - // Can force activation of some module during migration with parameter 'enablemodules=MAIN_MODULE_XXX,MAIN_MODULE_YYY,...' - // In most cases (online install or upgrade) $enablemodules is empty. Can be forced when ran from command line. - if (!$error && $enablemodules) { - // Reload modules (this must be always done and only into last targeted version) - $listofmodules = array(); - $enablemodules = preg_replace('/enablemodules=/', '', $enablemodules); - $tmplistofmodules = explode(',', $enablemodules); - foreach ($tmplistofmodules as $value) { - $listofmodules[$value] = 'forceactivate'; - } - - $resultreloadmodules = migrate_reload_modules($db, $langs, $conf, $listofmodules, 1); - if ($resultreloadmodules < 0) { - $error++; - } - } - - - // Can call a dedicated external upgrade process - if (!$error) { - $parameters = array('versionfrom' => $versionfrom, 'versionto' => $versionto); - $object = new stdClass(); - $action = "upgrade"; - $reshook = $hookmanager->executeHooks('doUpgrade2', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks - if ($hookmanager->resNbOfHooks > 0) { - if ($reshook < 0) { - print ''; - } else { - print ''; + migrate_reset_blocked_log($db, $langs, $conf); } - } else { - //if (! empty($conf->modules)) - if (!empty($conf->modules_parts['hooks'])) { // If there is at least one module with one hook, we show message to say nothing was done - print ''; + + // Scripts for 8.0 + $afterversionarray = explode('.', '7.0.9'); + $beforeversionarray = explode('.', '8.0.9'); + if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { + migrate_rename_directories($db, $langs, $conf, '/contracts', '/contract'); + } + + // Scripts for 9.0 + $afterversionarray = explode('.', '8.0.9'); + $beforeversionarray = explode('.', '9.0.9'); + if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { + migrate_user_photospath(); + } + + // Scripts for 11.0 + $afterversionarray = explode('.', '10.0.9'); + $beforeversionarray = explode('.', '11.0.9'); + if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { + migrate_users_socialnetworks(); + migrate_members_socialnetworks(); + migrate_contacts_socialnetworks(); + migrate_thirdparties_socialnetworks(); + } + + // Scripts for 14.0 + $afterversionarray = explode('.', '13.0.9'); + $beforeversionarray = explode('.', '14.0.9'); + if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { + migrate_export_import_profiles('export'); + migrate_export_import_profiles('import'); + } + + // Scripts for 16.0 + $afterversionarray = explode('.', '15.0.9'); + $beforeversionarray = explode('.', '16.0.9'); + if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) { + migrate_user_photospath2(); + } + } + + + // Code executed only if migration is LAST ONE. Must always be done. + if (versioncompare($versiontoarray, $versionranarray) >= 0 || versioncompare($versiontoarray, $versionranarray) <= -3) { + // Reload modules (this must be always done and only into last targeted version, because code to reload module may need table structure of last version) + $listofmodule = array( + 'MAIN_MODULE_ACCOUNTING'=>'newboxdefonly', + 'MAIN_MODULE_AGENDA'=>'newboxdefonly', + 'MAIN_MODULE_BOM'=>'menuonly', + 'MAIN_MODULE_BANQUE'=>'menuonly', + 'MAIN_MODULE_BARCODE'=>'newboxdefonly', + 'MAIN_MODULE_CRON'=>'newboxdefonly', + 'MAIN_MODULE_COMMANDE'=>'newboxdefonly', + 'MAIN_MODULE_BLOCKEDLOG'=>'noboxes', + 'MAIN_MODULE_DEPLACEMENT'=>'newboxdefonly', + 'MAIN_MODULE_DON'=>'newboxdefonly', + 'MAIN_MODULE_ECM'=>'newboxdefonly', + 'MAIN_MODULE_EXTERNALSITE'=>'newboxdefonly', + 'MAIN_MODULE_EXPENSEREPORT'=>'newboxdefonly', + 'MAIN_MODULE_FACTURE'=>'newboxdefonly', + 'MAIN_MODULE_FOURNISSEUR'=>'newboxdefonly', + 'MAIN_MODULE_HOLIDAY'=>'newboxdefonly', + 'MAIN_MODULE_MARGIN'=>'menuonly', + 'MAIN_MODULE_MRP'=>'menuonly', + 'MAIN_MODULE_OPENSURVEY'=>'newboxdefonly', + 'MAIN_MODULE_PAYBOX'=>'newboxdefonly', + 'MAIN_MODULE_PRINTING'=>'newboxdefonly', + 'MAIN_MODULE_PRODUIT'=>'newboxdefonly', + 'MAIN_MODULE_RECRUITMENT'=>'menuonly', + 'MAIN_MODULE_RESOURCE'=>'noboxes', + 'MAIN_MODULE_SALARIES'=>'newboxdefonly', + 'MAIN_MODULE_SERVICE'=>'newboxdefonly', + 'MAIN_MODULE_SYSLOG'=>'newboxdefonly', + 'MAIN_MODULE_SOCIETE'=>'newboxdefonly', + 'MAIN_MODULE_STRIPE'=>'menuonly', + 'MAIN_MODULE_TICKET'=>'newboxdefonly', + 'MAIN_MODULE_TAKEPOS'=>'newboxdefonly', + 'MAIN_MODULE_USER'=>'newboxdefonly', //This one must be always done and only into last targeted version) + 'MAIN_MODULE_VARIANTS'=>'newboxdefonly', + 'MAIN_MODULE_WEBSITE'=>'newboxdefonly', + ); + + $result = migrate_reload_modules($db, $langs, $conf, $listofmodule); + if ($result < 0) { + $error++; + } + // Reload menus (this must be always and only into last targeted version) + $result = migrate_reload_menu($db, $langs, $conf); + if ($result < 0) { + $error++; + } + } + + // Can force activation of some module during migration with parameter 'enablemodules=MAIN_MODULE_XXX,MAIN_MODULE_YYY,...' + // In most cases (online install or upgrade) $enablemodules is empty. Can be forced when ran from command line. + if (!$error && $enablemodules) { + // Reload modules (this must be always done and only into last targeted version) + $listofmodules = array(); + $enablemodules = preg_replace('/enablemodules=/', '', $enablemodules); + $tmplistofmodules = explode(',', $enablemodules); + foreach ($tmplistofmodules as $value) { + $listofmodules[$value] = 'forceactivate'; + } + + $resultreloadmodules = migrate_reload_modules($db, $langs, $conf, $listofmodules, 1); + if ($resultreloadmodules < 0) { + $error++; + } + } + + + // Can call a dedicated external upgrade process with hook doUpgradeAfterDB() + if (!$error) { + $parameters = array('versionfrom' => $versionfrom, 'versionto' => $versionto, 'conf'=>$conf); + $object = new stdClass(); + $action = "upgrade"; + $reshook = $hookmanager->executeHooks('doUpgradeAfterDB', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks + if ($hookmanager->resNbOfHooks > 0) { + if ($reshook < 0) { + print ''; + } else { + print ''; + } + } else { + //if (! empty($conf->modules)) + if (!empty($conf->modules_parts['hooks'])) { // If there is at least one module with one hook, we show message to say nothing was done + print ''; + } } } } print '
'; //print img_picto(($pos > 0 ? $langs->trans("MoveField", $pos) : ''), 'grip_title', 'class="boxhandle" style="cursor:move;"'); @@ -2720,7 +2240,11 @@ function show_elem($fieldssource, $pos, $key, $var, $nostyle = '') print ''; print $langs->trans("Field").' '.$pos; - $example = $fieldssource[$pos]['example1']; + if (empty($fieldssource[$pos]['example1'])) { + $example = $fieldssource[$pos]['label']; + } else { + $example = $fieldssource[$pos]['example1']; + } if ($example) { if (!utf8_check($example)) { $example = utf8_encode($example); From 7747489259853e3fc9a992564ba384fab1e23f81 Mon Sep 17 00:00:00 2001 From: melina Date: Fri, 6 May 2022 15:49:44 +0200 Subject: [PATCH 029/248] add hook for takepos addline --- htdocs/takepos/invoice.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/htdocs/takepos/invoice.php b/htdocs/takepos/invoice.php index 3a55d82b8ad..61fa267f588 100644 --- a/htdocs/takepos/invoice.php +++ b/htdocs/takepos/invoice.php @@ -558,7 +558,15 @@ if (empty($reshook)) { } if ($idoflineadded <= 0) { $invoice->fetch_thirdparty(); - $idoflineadded = $invoice->addline($prod->description, $price, $qty, $tva_tx, $localtax1_tx, $localtax2_tx, $idproduct, $customer->remise_percent, '', 0, 0, 0, '', $price_base_type, $price_ttc, $prod->type, -1, 0, '', 0, (!empty($parent_line)) ? $parent_line : '', null, '', '', 0, 100, '', null, 0); + $array_options = array(); + + // complete line by hook + $parameters = array('prod' => $prod); + $reshook=$hookmanager->executeHooks('completeTakePosAddLine', $parameters, $invoice, $action); + if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); + + $idoflineadded = $invoice->addline($prod->description, $price, $qty, $tva_tx, $localtax1_tx, $localtax2_tx, $idproduct, $customer->remise_percent, '', 0, 0, 0, '', $price_base_type, $price_ttc, $prod->type, -1, 0, '', 0, (!empty($parent_line)) ? $parent_line : '', null, '', '', $array_options, 100, '', null, 0); + if (!empty($conf->global->TAKEPOS_CUSTOMER_DISPLAY)) { $CUSTOMER_DISPLAY_line1 = $prod->label; $CUSTOMER_DISPLAY_line2 = price($price_ttc); From 19cedae1c148992b8afed629847e910fc1c3be72 Mon Sep 17 00:00:00 2001 From: kevin Date: Fri, 6 May 2022 16:14:38 +0200 Subject: [PATCH 030/248] Add trigger on commonObject setProject --- htdocs/core/class/commonobject.class.php | 27 ++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 25982ceb03c..5bbb65652c1 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -2238,8 +2238,11 @@ abstract class CommonObject * @param int $projectid Project id to link element to * @return int <0 if KO, >0 if OK */ - public function setProject($projectid) + public function setProject($projectid, $notrigger = 0) { + global $user; + $error = 0; + if (!$this->table_element) { dol_syslog(get_class($this)."::setProject was called on objet with property table_element not defined", LOG_ERR); return -1; @@ -2270,13 +2273,33 @@ abstract class CommonObject $sql .= " WHERE rowid = ".((int) $this->id); } + $this->db->begin(); + dol_syslog(get_class($this)."::setProject", LOG_DEBUG); if ($this->db->query($sql)) { $this->fk_project = ((int) $projectid); - return 1; } else { dol_print_error($this->db); + $error++; + } + + // Triggers + if (!$error && !$notrigger) { + // Call triggers + $result = $this->call_trigger(strtoupper($this->element) . '_MODIFY', $user); + if ($result < 0) { + $error++; + } //Do also here what you must do to rollback action if trigger fail + // End call triggers + } + + // Commit or rollback + if ($error) { + $this->db->rollback(); return -1; + } else { + $this->db->commit(); + return 1; } } From 318e403013c4d80cdf59ff8e0486c306fb69d207 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Fri, 6 May 2022 16:15:52 +0200 Subject: [PATCH 031/248] fix: invoice stat --- htdocs/compta/facture/stats/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture/stats/index.php b/htdocs/compta/facture/stats/index.php index 6ee1a057664..cb0e38b7a34 100644 --- a/htdocs/compta/facture/stats/index.php +++ b/htdocs/compta/facture/stats/index.php @@ -102,7 +102,7 @@ if ($mode == 'customer') { $stats->where .= ' AND f.fk_statut IN ('.$db->sanitize($object_status).')'; } if (is_array($custcats) && !empty($custcats)) { - $stats->from .= ' LEFT JOIN '.MAIN_DB_PREFIX.'categorie_societe as cat OmdN (f.fk_soc = cat.fk_soc)'; + $stats->from .= ' LEFT JOIN '.MAIN_DB_PREFIX.'categorie_societe as cat ON (f.fk_soc = cat.fk_soc)'; $stats->where .= ' AND cat.fk_categorie IN ('.$db->sanitize(implode(',', $custcats)).')'; } } From 65eb11efdf0217a30f397d333d26608020f4cfcd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 8 May 2022 17:39:53 +0200 Subject: [PATCH 032/248] Fix sql migration --- htdocs/install/mysql/migration/14.0.0-15.0.0.sql | 3 +++ 1 file changed, 3 insertions(+) diff --git a/htdocs/install/mysql/migration/14.0.0-15.0.0.sql b/htdocs/install/mysql/migration/14.0.0-15.0.0.sql index e5c24156965..5621ca6fad8 100644 --- a/htdocs/install/mysql/migration/14.0.0-15.0.0.sql +++ b/htdocs/install/mysql/migration/14.0.0-15.0.0.sql @@ -519,6 +519,9 @@ CREATE TABLE llx_element_tag import_key varchar(14) )ENGINE=innodb; +ALTER TABLE llx_element_tag ADD COLUMN fk_categorie integer; +ALTER TABLE llx_element_tag ADD COLUMN fk_element integer; + ALTER TABLE llx_element_tag ADD UNIQUE INDEX idx_element_tag_uk (fk_categorie, fk_element); ALTER TABLE llx_element_tag ADD CONSTRAINT fk_element_tag_categorie_rowid FOREIGN KEY (fk_categorie) REFERENCES llx_categorie (rowid); From 0ac89a5eae62e45940fb021beaa9e2e2099ee5f5 Mon Sep 17 00:00:00 2001 From: melina Date: Mon, 9 May 2022 08:23:26 +0200 Subject: [PATCH 033/248] test reshook --- htdocs/takepos/invoice.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/takepos/invoice.php b/htdocs/takepos/invoice.php index 61fa267f588..1574b3c21c6 100644 --- a/htdocs/takepos/invoice.php +++ b/htdocs/takepos/invoice.php @@ -565,7 +565,9 @@ if (empty($reshook)) { $reshook=$hookmanager->executeHooks('completeTakePosAddLine', $parameters, $invoice, $action); if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); - $idoflineadded = $invoice->addline($prod->description, $price, $qty, $tva_tx, $localtax1_tx, $localtax2_tx, $idproduct, $customer->remise_percent, '', 0, 0, 0, '', $price_base_type, $price_ttc, $prod->type, -1, 0, '', 0, (!empty($parent_line)) ? $parent_line : '', null, '', '', $array_options, 100, '', null, 0); + if (empty($reshook)) { + $idoflineadded = $invoice->addline($prod->description, $price, $qty, $tva_tx, $localtax1_tx, $localtax2_tx, $idproduct, $customer->remise_percent, '', 0, 0, 0, '', $price_base_type, $price_ttc, $prod->type, -1, 0, '', 0, (!empty($parent_line)) ? $parent_line : '', null, '', '', $array_options, 100, '', null, 0); + } if (!empty($conf->global->TAKEPOS_CUSTOMER_DISPLAY)) { $CUSTOMER_DISPLAY_line1 = $prod->label; From ec00c6fef2e939532b4a87ff35ba9832d245e133 Mon Sep 17 00:00:00 2001 From: Pierre Ardoin <32256817+mapiolca@users.noreply.github.com> Date: Mon, 9 May 2022 09:49:07 +0200 Subject: [PATCH 034/248] line deleted when updated after rapproched Fix an issue that deletes line when we update data after its rappro. --- htdocs/compta/bank/line.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/htdocs/compta/bank/line.php b/htdocs/compta/bank/line.php index b3675feb63e..ce8644afe9b 100644 --- a/htdocs/compta/bank/line.php +++ b/htdocs/compta/bank/line.php @@ -607,7 +607,11 @@ if ($result) { print dol_get_fiche_end(); - print '

'; + if (!$objp->rappro) { + print '

'; + }else{ + print '

'; + } print ""; From 017eb99e8603302eeb8c96b3ca73d4feb4b911a7 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Mon, 9 May 2022 07:53:37 +0000 Subject: [PATCH 035/248] Fixing style errors. --- htdocs/compta/bank/line.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/compta/bank/line.php b/htdocs/compta/bank/line.php index ce8644afe9b..d1750a0bb94 100644 --- a/htdocs/compta/bank/line.php +++ b/htdocs/compta/bank/line.php @@ -609,9 +609,9 @@ if ($result) { if (!$objp->rappro) { print '

'; - }else{ - print '

'; - } + } else { + print '

'; + } print ""; From 333b22b961507a60156802a2ccbf9b8de9bfc383 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Mon, 9 May 2022 14:32:47 +0200 Subject: [PATCH 036/248] fix: limit filename lenght to show glasses --- htdocs/core/class/html.formfile.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index c01ff5af541..a9f79095242 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -892,7 +892,7 @@ class FormFile } $out .= '>'; $out .= img_mime($file["name"], $langs->trans("File").': '.$file["name"]); - $out .= dol_trunc($file["name"], 150); + $out .= dol_trunc($file["name"], 40); $out .= ''."\n"; $out .= $this->showPreview($file, $modulepart, $relativepath, 0, $param); $out .= '
*** '.$langs->trans("Entity").' '.$entity.'
'; - print ''.$langs->trans('UpgradeExternalModule').': '; - print $hookmanager->error; - print ""; - print '
'; - print ''.$langs->trans('UpgradeExternalModule').': OK'; - print ""; - print '
'; - print ''.$langs->trans('UpgradeExternalModule').': '.$langs->trans("None"); - print '
'; + print ''.$langs->trans('UpgradeExternalModule').': '; + print $hookmanager->error; + print ""; + print '
'; + print ''.$langs->trans('UpgradeExternalModule').' (DB): OK'; + print ""; + print '
'; + print ''.$langs->trans('UpgradeExternalModule').': '.$langs->trans("NodoUpgradeAfterDB"); + print '
'; - if (!$error) { // Set constant to ask to remake a new ping to inform about upgrade (if first ping was done and OK) $sql = 'UPDATE '.MAIN_DB_PREFIX."const SET VALUE = 'torefresh' WHERE name = 'MAIN_FIRST_PING_OK_ID'"; @@ -576,23 +587,68 @@ if (!GETPOST('action', 'aZ09') || preg_match('/upgrade/i', GETPOST('action', 'aZ // We always commit. // Process is designed so we can run it several times whatever is situation. $db->commit(); + + + /*************************************************************************************** + * + * Migration of files + * + ***************************************************************************************/ + + foreach ($listofentities as $entity) { + // Set $conf context for entity + $conf->setEntityValues($db, $entity); + // Reset forced setup after the setValues + if (defined('SYSLOG_FILE')) { + $conf->global->SYSLOG_FILE = constant('SYSLOG_FILE'); + } + $conf->global->MAIN_ENABLE_LOG_TO_HTML = 1; + + + // Copy directory medias + $srcroot = DOL_DOCUMENT_ROOT.'/install/medias'; + $destroot = DOL_DATA_ROOT.'/medias'; + dolCopyDir($srcroot, $destroot, 0, 0); + + + // Actions for all versions (no database change but delete some files and directories) + migrate_delete_old_files($db, $langs, $conf); + migrate_delete_old_dir($db, $langs, $conf); + // Actions for all versions (no database change but create some directories) + dol_mkdir(DOL_DATA_ROOT.'/bank'); + // Actions for all versions (no database change but rename some directories) + migrate_rename_directories($db, $langs, $conf, '/banque/bordereau', '/bank/checkdeposits'); + + + $parameters = array('versionfrom' => $versionfrom, 'versionto' => $versionto, 'conf'=>$conf); + $object = new stdClass(); + $action = "upgrade"; + $reshook = $hookmanager->executeHooks('doUpgradeAfterFiles', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks + if ($hookmanager->resNbOfHooks > 0) { + if ($reshook < 0) { + print ''; + print ''.$langs->trans('UpgradeExternalModule').': '; + print $hookmanager->error; + print ""; + print ''; + } else { + print ''; + print ''.$langs->trans('UpgradeExternalModule').' (Files): OK'; + print ""; + print ''; + } + } else { + //if (! empty($conf->modules)) + if (!empty($conf->modules_parts['hooks'])) { // If there is at least one module with one hook, we show message to say nothing was done + print ''; + print ''.$langs->trans('UpgradeExternalModule').': '.$langs->trans("NodoUpgradeAfterFiles"); + print ''; + } + } + } + $db->close(); - - // Copy directory medias - $srcroot = DOL_DOCUMENT_ROOT.'/install/medias'; - $destroot = DOL_DATA_ROOT.'/medias'; - dolCopyDir($srcroot, $destroot, 0, 0); - - - // Actions for all versions (no database change but delete some files and directories) - migrate_delete_old_files($db, $langs, $conf); - migrate_delete_old_dir($db, $langs, $conf); - // Actions for all versions (no database change but create some directories) - dol_mkdir(DOL_DATA_ROOT.'/bank'); - // Actions for all versions (no database change but rename some directories) - migrate_rename_directories($db, $langs, $conf, '/banque/bordereau', '/bank/checkdeposits'); - $silent = 0; if (!$silent) { print ''; From 720a09dacb744c07311f253450a32810e6a618ea Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 9 May 2022 15:57:10 +0200 Subject: [PATCH 038/248] Fix regression --- htdocs/admin/expensereport_rules.php | 4 ++-- htdocs/comm/propal/card.php | 4 ++-- htdocs/commande/card.php | 4 ++-- htdocs/compta/facture/card.php | 2 +- htdocs/compta/facture/class/facture.class.php | 2 +- htdocs/core/class/commonobject.class.php | 2 +- htdocs/core/lib/functions.lib.php | 4 +++- htdocs/holiday/class/holiday.class.php | 6 +++--- 8 files changed, 15 insertions(+), 13 deletions(-) diff --git a/htdocs/admin/expensereport_rules.php b/htdocs/admin/expensereport_rules.php index 1146232dca3..62fb097841b 100644 --- a/htdocs/admin/expensereport_rules.php +++ b/htdocs/admin/expensereport_rules.php @@ -266,11 +266,11 @@ foreach ($rules as $rule) { if ($rule->fk_c_type_fees == -1) { echo $langs->trans('AllExpenseReport'); } else { - $key = getDictionaryValue(MAIN_DB_PREFIX . 'c_type_fees', 'code', $rule->fk_c_type_fees, false, 'id'); + $key = getDictionaryValue('c_type_fees', 'code', $rule->fk_c_type_fees, false, 'id'); if ($key && $key != $langs->trans($key)) { echo $langs->trans($key); } else { - $value = getDictionaryValue(MAIN_DB_PREFIX . 'c_type_fees', 'label', $rule->fk_c_type_fees, false, 'id'); + $value = getDictionaryValue('c_type_fees', 'label', $rule->fk_c_type_fees, false, 'id'); echo $langs->trans($value ? $value : 'Undefined'); // TODO check to return trans of 'code' } } diff --git a/htdocs/comm/propal/card.php b/htdocs/comm/propal/card.php index 229919d7e5d..22a816acc1d 100644 --- a/htdocs/comm/propal/card.php +++ b/htdocs/comm/propal/card.php @@ -692,7 +692,7 @@ if (empty($reshook)) { $deposit = null; $locationTarget = ''; - $deposit_percent_from_payment_terms = getDictionaryValue(MAIN_DB_PREFIX . 'c_payment_term', 'deposit_percent', $object->cond_reglement_id); + $deposit_percent_from_payment_terms = getDictionaryValue('c_payment_term', 'deposit_percent', $object->cond_reglement_id); if ( !$error && GETPOST('statut', 'int') == $object::STATUS_SIGNED && GETPOST('generate_deposit', 'alpha') == 'on' @@ -1999,7 +1999,7 @@ if ($action == 'create') { array('type' => 'text', 'name' => 'note_private', 'label' => $langs->trans("Note"), 'value' => '') // Field to complete private note (not replace) ); - $deposit_percent_from_payment_terms = getDictionaryValue(MAIN_DB_PREFIX . 'c_payment_term', 'deposit_percent', $object->cond_reglement_id); + $deposit_percent_from_payment_terms = getDictionaryValue('c_payment_term', 'deposit_percent', $object->cond_reglement_id); if (! empty($deposit_percent_from_payment_terms) && ! empty($conf->facture->enabled) && ! empty($user->rights->facture->creer)) { require_once DOL_DOCUMENT_ROOT . '/compta/facture/class/facture.class.php'; diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index 6ba7b9086c3..b1d0cdb9223 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -1184,7 +1184,7 @@ if (empty($reshook)) { $error = 0; $deposit = null; - $deposit_percent_from_payment_terms = getDictionaryValue(MAIN_DB_PREFIX . 'c_payment_term', 'deposit_percent', $object->cond_reglement_id); + $deposit_percent_from_payment_terms = getDictionaryValue('c_payment_term', 'deposit_percent', $object->cond_reglement_id); if ( GETPOST('generate_deposit', 'alpha') == 'on' && ! empty($deposit_percent_from_payment_terms) @@ -2025,7 +2025,7 @@ if ($action == 'create' && $usercancreate) { if ($nbMandated > 0 ) $text .= '
'.$langs->trans("mandatoryPeriodNeedTobeSetMsgValidate").'
'; - $deposit_percent_from_payment_terms = getDictionaryValue(MAIN_DB_PREFIX . 'c_payment_term', 'deposit_percent', $object->cond_reglement_id); + $deposit_percent_from_payment_terms = getDictionaryValue('c_payment_term', 'deposit_percent', $object->cond_reglement_id); if (! empty($deposit_percent_from_payment_terms) && ! empty($conf->facture->enabled) && ! empty($user->rights->facture->creer)) { require_once DOL_DOCUMENT_ROOT . '/compta/facture/class/facture.class.php'; diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index e3fac863c77..7de827ff1d2 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -3290,7 +3290,7 @@ if ($action == 'create') { $typedeposit = GETPOST('typedeposit', 'aZ09'); $valuedeposit = GETPOST('valuedeposit', 'int'); if (empty($typedeposit) && ! empty($objectsrc->deposit_percent)) { - $origin_payment_conditions_deposit_percent = getDictionaryValue(MAIN_DB_PREFIX . 'c_payment_term', 'deposit_percent', $objectsrc->cond_reglement_id); + $origin_payment_conditions_deposit_percent = getDictionaryValue('c_payment_term', 'deposit_percent', $objectsrc->cond_reglement_id); if (! empty($origin_payment_conditions_deposit_percent)) { $typedeposit = 'variable'; } diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 0804f55b1ee..e29ecc251ff 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -1501,7 +1501,7 @@ class Facture extends CommonInvoice return null; } - $payment_conditions_deposit_percent = getDictionaryValue(MAIN_DB_PREFIX . 'c_payment_term', 'deposit_percent', $origin->cond_reglement_id); + $payment_conditions_deposit_percent = getDictionaryValue('c_payment_term', 'deposit_percent', $origin->cond_reglement_id); if (empty($payment_conditions_deposit_percent)) { $origin->error = 'ErrorPaymentConditionsNotEligibleToDepositCreation'; diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index cabb50520fb..0758c696e29 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -2606,7 +2606,7 @@ abstract class CommonObject } if (empty($deposit_percent) || $deposit_percent < 0) { - $deposit_percent = getDictionaryValue(MAIN_DB_PREFIX . 'c_payment_term', 'deposit_percent', $id); + $deposit_percent = getDictionaryValue('c_payment_term', 'deposit_percent', $id); } if ($deposit_percent > 100) { diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 5025347dcb2..04713acbc8f 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -9862,7 +9862,7 @@ function dol_mimetype($file, $default = 'application/octet-stream', $mode = 0) * Return the value of a filed into a dictionary for the record $id. * This also set all the values into a cache for a next search. * - * @param string $tablename Name of dictionary + * @param string $tablename Name of table dictionary (without the MAIN_DB_PREFIX, example: 'c_holiday_types') * @param string $field The name of field where to find the value to return * @param int $id Id of line record * @param bool $checkentity Add filter on entity @@ -9873,6 +9873,8 @@ function getDictionaryValue($tablename, $field, $id, $checkentity = false, $rowi { global $conf, $db; + $tablename = preg_replace('/^'.preg_quote(MAIN_DB_PREFIX, '/').'/', '', $tablename); // Clean name of table for backward compatibility. + $dictvalues = (isset($conf->cache['dictvalues_'.$tablename]) ? $conf->cache['dictvalues_'.$tablename] : null); if (is_null($dictvalues)) { diff --git a/htdocs/holiday/class/holiday.class.php b/htdocs/holiday/class/holiday.class.php index d0bed943429..1e11e81f543 100644 --- a/htdocs/holiday/class/holiday.class.php +++ b/htdocs/holiday/class/holiday.class.php @@ -704,7 +704,7 @@ class Holiday extends CommonObject require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; $error = 0; - $checkBalance = getDictionaryValue(MAIN_DB_PREFIX.'c_holiday_types', 'block_if_negative', $this->fk_type); + $checkBalance = getDictionaryValue('c_holiday_types', 'block_if_negative', $this->fk_type); if ($checkBalance > 0) { $balance = $this->getCPforUser($this->fk_user, $this->fk_type); @@ -817,7 +817,7 @@ class Holiday extends CommonObject global $conf, $langs; $error = 0; - $checkBalance = getDictionaryValue(MAIN_DB_PREFIX.'c_holiday_types', 'block_if_negative', $this->fk_type); + $checkBalance = getDictionaryValue('c_holiday_types', 'block_if_negative', $this->fk_type); if ($checkBalance > 0) { $balance = $this->getCPforUser($this->fk_user, $this->fk_type); @@ -936,7 +936,7 @@ class Holiday extends CommonObject global $conf, $langs; $error = 0; - $checkBalance = getDictionaryValue(MAIN_DB_PREFIX.'c_holiday_types', 'block_if_negative', $this->fk_type); + $checkBalance = getDictionaryValue('c_holiday_types', 'block_if_negative', $this->fk_type); if ($checkBalance > 0 && $this->statut != self::STATUS_DRAFT) { $balance = $this->getCPforUser($this->fk_user, $this->fk_type); From 43e1486dbb033710382d73a8fa8698239a1e9f77 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 9 May 2022 16:42:08 +0200 Subject: [PATCH 039/248] FIX No empty line inserted into accounting_bookkeeping --- htdocs/accountancy/bookkeeping/card.php | 4 +- .../accountancy/class/bookkeeping.class.php | 45 ++++++++++++------- 2 files changed, 32 insertions(+), 17 deletions(-) diff --git a/htdocs/accountancy/bookkeeping/card.php b/htdocs/accountancy/bookkeeping/card.php index d43d35f84c7..0fd0b719cd7 100644 --- a/htdocs/accountancy/bookkeeping/card.php +++ b/htdocs/accountancy/bookkeeping/card.php @@ -431,12 +431,12 @@ if ($action == 'create') { // Account movement print '
'; print ''; - print ''; + print ''; print ''; // Date print ''; + } - $db->free($result); + $db->free($resql); + + $parameters = array('arrayfields'=>$arrayfields, 'sql'=>$sql); + $reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters, $object); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + + print '
'.$langs->trans("NumMvts").''.$object->piece_num.''.($mode == '_tmp' ? ''.$langs->trans("Draft").'' : $object->piece_num).'
'; - print ''; // Ref print '\n"; // Creation date @@ -405,7 +404,7 @@ if ($result) { print ""; print '"; print "\n"; From d21f5eca830a341bb780a39c96f5390421ab0f2d Mon Sep 17 00:00:00 2001 From: amarchal Date: Mon, 9 May 2022 20:13:06 +0200 Subject: [PATCH 044/248] add hidden option SUPPLIER_ORDER_ALLOW_NEGATIVE_QTY_FOR_SUPPLIER_ORDER_RETURN --- htdocs/fourn/class/fournisseur.commande.class.php | 7 ++++++- htdocs/fourn/commande/dispatch.php | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 128c2ab3356..1d26fb5cfab 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -2084,7 +2084,12 @@ class CommandeFournisseur extends CommonOrder // $price should take into account discount (except if option STOCK_EXCLUDE_DISCOUNT_FOR_PMP is on) $mouv->origin = &$this; $mouv->setOrigin($this->element, $this->id); - $result = $mouv->reception($user, $product, $entrepot, $qty, $price, $comment, $eatby, $sellby, $batch); + // Method change if qty < 0 + if (!empty($conf->global->SUPPLIER_ORDER_ALLOW_NEGATIVE_QTY_FOR_SUPPLIER_ORDER_RETURN) && $qty < 0) { + $result = $mouv->livraison($user, $product, $entrepot, $qty*(-1), $price, $comment, $now, $eatby, $sellby, $batch); + } else { + $result = $mouv->reception($user, $product, $entrepot, $qty, $price, $comment, $eatby, $sellby, $batch); + } if ($result < 0) { $this->error = $mouv->error; $this->errors = $mouv->errors; diff --git a/htdocs/fourn/commande/dispatch.php b/htdocs/fourn/commande/dispatch.php index 166da07ab03..362741e1641 100644 --- a/htdocs/fourn/commande/dispatch.php +++ b/htdocs/fourn/commande/dispatch.php @@ -802,7 +802,7 @@ if ($id > 0 || !empty($ref)) { $nbfreeproduct++; } else { $remaintodispatch = price2num($objp->qty - ((float) $products_dispatched[$objp->rowid]), 5); // Calculation of dispatched - if ($remaintodispatch < 0) { + if ($remaintodispatch < 0 && empty($conf->global->SUPPLIER_ORDER_ALLOW_NEGATIVE_QTY_FOR_SUPPLIER_ORDER_RETURN)) { $remaintodispatch = 0; } From ef184567248af5dbeea8cbd63be5cd2d965ad756 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 9 May 2022 21:56:21 +0200 Subject: [PATCH 045/248] Fix regression in dol_eval --- htdocs/core/lib/functions.lib.php | 8 ++-- test/phpunit/SecurityTest.php | 62 +++++++++++++++++-------------- 2 files changed, 38 insertions(+), 32 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 22ff541f7d5..43a549655b9 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -8200,7 +8200,7 @@ function verifCond($strToEvaluate) * @param string $s String to evaluate * @param int $returnvalue 0=No return (used to execute eval($a=something)). 1=Value of eval is returned (used to eval($something)). * @param int $hideerrors 1=Hide errors - * @param string $onlysimplestring 0=Accept all chars, 1=Accept only simple string with char 'a-z0-9\s$_->&|=';, 2=Accept also '!?():"\';,/' + * @param string $onlysimplestring 0=Accept all chars, 1=Accept only simple string with char 'a-z0-9\s^$_+-.*\/>&|=!?():"\',/';, 2=Accept also ';[]' * @return mixed Nothing or return result of eval */ function dol_eval($s, $returnvalue = 0, $hideerrors = 1, $onlysimplestring = '1') @@ -8218,7 +8218,7 @@ function dol_eval($s, $returnvalue = 0, $hideerrors = 1, $onlysimplestring = '1' // Test dangerous char (used for RCE), we allow only PHP variable testing. if ($onlysimplestring == '1') { //print preg_quote('$_->&|', '/'); - if (preg_match('/[^a-z0-9\s'.preg_quote('$_+-*/>&|=!?():"', '/').']/i', $s)) { + if (preg_match('/[^a-z0-9\s'.preg_quote('^$_+-.*/>&|=!?():"\',/', '/').']/i', $s)) { if ($returnvalue) { return 'Bad string syntax to evaluate (found chars that are not chars for simplestring): '.$s; } else { @@ -8228,7 +8228,7 @@ function dol_eval($s, $returnvalue = 0, $hideerrors = 1, $onlysimplestring = '1' } } elseif ($onlysimplestring == '2') { //print preg_quote('$_->&|', '/'); - if (preg_match('/[^a-z0-9\s'.preg_quote('^$_+-*/>&|=!?():"\';,/', '/').']/i', $s)) { + if (preg_match('/[^a-z0-9\s'.preg_quote('^$_+-.*/>&|=!?():"\',/;[]', '/').']/i', $s)) { if ($returnvalue) { return 'Bad string syntax to evaluate (found chars that are not chars for simplestring): '.$s; } else { @@ -8245,7 +8245,7 @@ function dol_eval($s, $returnvalue = 0, $hideerrors = 1, $onlysimplestring = '1' return ''; } } - if (strpos($s, '.') !== false) { + if (preg_match('/[^0-9]+\.[^0-9]+/', $s)) { // We refuse . if not between 2 numbers if ($returnvalue) { return 'Bad string syntax to evaluate (dot char is forbidden): '.$s; } else { diff --git a/test/phpunit/SecurityTest.php b/test/phpunit/SecurityTest.php index fe5cbd01462..b33ec06504a 100644 --- a/test/phpunit/SecurityTest.php +++ b/test/phpunit/SecurityTest.php @@ -584,34 +584,6 @@ class SecurityTest extends PHPUnit\Framework\TestCase return $result; } - /** - * testCheckLoginPassEntity - * - * @return void - */ - public function testCheckLoginPassEntity() - { - $login=checkLoginPassEntity('loginbidon', 'passwordbidon', 1, array('dolibarr')); - print __METHOD__." login=".$login."\n"; - $this->assertEquals($login, ''); - - $login=checkLoginPassEntity('admin', 'passwordbidon', 1, array('dolibarr')); - print __METHOD__." login=".$login."\n"; - $this->assertEquals($login, ''); - - $login=checkLoginPassEntity('admin', 'admin', 1, array('dolibarr')); // Should works because admin/admin exists - print __METHOD__." login=".$login."\n"; - $this->assertEquals($login, 'admin', 'The test to check if pass of user "admin" is "admin" has failed'); - - $login=checkLoginPassEntity('admin', 'admin', 1, array('http','dolibarr')); // Should work because of second authentication method - print __METHOD__." login=".$login."\n"; - $this->assertEquals($login, 'admin'); - - $login=checkLoginPassEntity('admin', 'admin', 1, array('forceuser')); - print __METHOD__." login=".$login."\n"; - $this->assertEquals($login, ''); // Expected '' because should failed because login 'auto' does not exists - } - /** * testEncodeDecode * @@ -919,6 +891,11 @@ class SecurityTest extends PHPUnit\Framework\TestCase print "result = ".$result."\n"; $this->assertContains('Bad string syntax to evaluate', $result); + $result=dol_eval("90402.38+267678+0", 1, 1, 1); + print "result = ".$result."\n"; + $this->assertEquals('358080.38', $result); + + global $leftmenu; $leftmenu = 'admintools'; $result=dol_eval('$conf->currency && preg_match(\'/^(admintools|all)/\',$leftmenu)', 1, 0, '2'); @@ -936,4 +913,33 @@ class SecurityTest extends PHPUnit\Framework\TestCase print "result = ".$result."\n"; $this->assertContains('Bad string syntax to evaluate', $result); } + + + /** + * testCheckLoginPassEntity + * + * @return void + */ + public function testCheckLoginPassEntity() + { + $login=checkLoginPassEntity('loginbidon', 'passwordbidon', 1, array('dolibarr')); + print __METHOD__." login=".$login."\n"; + $this->assertEquals($login, ''); + + $login=checkLoginPassEntity('admin', 'passwordbidon', 1, array('dolibarr')); + print __METHOD__." login=".$login."\n"; + $this->assertEquals($login, ''); + + $login=checkLoginPassEntity('admin', 'admin', 1, array('dolibarr')); // Should works because admin/admin exists + print __METHOD__." login=".$login."\n"; + $this->assertEquals($login, 'admin', 'The test to check if pass of user "admin" is "admin" has failed'); + + $login=checkLoginPassEntity('admin', 'admin', 1, array('http','dolibarr')); // Should work because of second authentication method + print __METHOD__." login=".$login."\n"; + $this->assertEquals($login, 'admin'); + + $login=checkLoginPassEntity('admin', 'admin', 1, array('forceuser')); + print __METHOD__." login=".$login."\n"; + $this->assertEquals($login, ''); // Expected '' because should failed because login 'auto' does not exists + } } From 80ed7af114a92258a7d42ceea428de88e106c4cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alo=C3=AFs=20Micard?= Date: Tue, 10 May 2022 10:18:53 +0200 Subject: [PATCH 046/248] formConfirm: pass action even when not confirming --- htdocs/core/class/html.form.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 2817a8222d1..46beb66f7d4 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -4382,7 +4382,7 @@ class Form $dialogconfirm .= '-'.$button; } $pageyes = $page.(preg_match('/\?/', $page) ? '&' : '?').'action='.$action.'&confirm=yes'; - $pageno = ($useajax == 2 ? $page.(preg_match('/\?/', $page) ? '&' : '?').'confirm=no' : ''); + $pageno = ($useajax == 2 ? $page.(preg_match('/\?/', $page) ? '&' : '?').'action='.$action.'&confirm=no' : ''); // Add input fields into list of fields to read during submit (inputok and inputko) if (is_array($formquestion)) { From 2e6f4862f9bf42d279bbbfa8f0c14ee31dc8c7ce Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 May 2022 10:57:51 +0200 Subject: [PATCH 047/248] Fix creation of thirdparty when module supplier not enabled NEw can use the clicktoclipboard feature when clicking on value --- htdocs/core/js/lib_foot.js.php | 2 +- htdocs/societe/card.php | 15 +++------------ 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/htdocs/core/js/lib_foot.js.php b/htdocs/core/js/lib_foot.js.php index 997132ca132..9167e08e599 100644 --- a/htdocs/core/js/lib_foot.js.php +++ b/htdocs/core/js/lib_foot.js.php @@ -230,7 +230,7 @@ print ' } ); - jQuery(\'.clipboardCPButton, .clipboardCPValueToPrint\').click(function() { + jQuery(\'.clipboardCPValue, .clipboardCPButton, .clipboardCPValueToPrint\').click(function() { /* console.log(this.parentNode); */ console.log("We click on a clipboardCPButton or clipboardCPValueToPrint class and we want to copy content of clipboardCPValue class"); diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index 7d28edb1dc9..a620bd02d39 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -84,6 +84,7 @@ $error = 0; $errors = array(); $action = (GETPOST('action', 'aZ09') ? GETPOST('action', 'aZ09') : 'view'); $cancel = GETPOST('cancel', 'alpha'); $backtopage = GETPOST('backtopage', 'alpha'); +$backtopageforcancel = GETPOST('backtopageforcancel', 'alpha'); $confirm = GETPOST('confirm', 'alpha'); $socid = GETPOST('socid', 'int') ?GETPOST('socid', 'int') : GETPOST('id', 'int'); @@ -135,16 +136,6 @@ $upload_dir = $conf->societe->multidir_output[isset($object->entity) ? $object-> // Security check $result = restrictedArea($user, 'societe', $socid, '&societe', '', 'fk_soc', 'rowid', 0); -/* -if ($object->id > 0) { - if ($object->client == 0 && $object->fournisseur > 0) { - if (!empty($user->rights->fournisseur->lire)) { - accessforbidden(); - } - } -} -*/ - /* @@ -413,11 +404,11 @@ if (empty($reshook)) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("ThirdPartyName")), null, 'errors'); $error++; } - if (GETPOST('client') < 0) { + if (GETPOST('client', 'int') && GETPOST('client', 'int') < 0) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("ProspectCustomer")), null, 'errors'); $error++; } - if (GETPOST('fournisseur') < 0) { + if (GETPOSTISSET('fournisseur') && GETPOST('fournisseur', 'int') < 0) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Supplier")), null, 'errors'); $error++; } From 7c0c56bf7b1e3690fb06ec8341597a2e3b902457 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 May 2022 11:07:29 +0200 Subject: [PATCH 048/248] css --- htdocs/theme/eldy/global.inc.php | 3 +++ htdocs/theme/md/style.css.php | 3 +++ 2 files changed, 6 insertions(+) diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index ecb98d59734..55b716b0e0c 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -4720,6 +4720,9 @@ div.titre { padding-bottom: 5px; font-weight: 400; } +div.titre.small { + font-size: 1em; +} div.fiche > table.table-fiche-title:first-of-type div { color: var(--colortexttitlenotab); font-size: 1.1em; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 60d7bae21cd..4532fa1d226 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -4591,6 +4591,9 @@ div.titre { text-transform: uppercase; /* text-shadow: 1px 1px 2px #FFFFFF; */ } +div.titre.small { + font-size: 1em; +} div.titre { color: var(--colortexttitlenotab); } From fc718e68ee47aa19a39ac1342b63bb1c83c5b3fc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 May 2022 11:38:56 +0200 Subject: [PATCH 049/248] css --- htdocs/comm/propal/list.php | 13 ++++- htdocs/compta/bank/various_payment/list.php | 48 +++++++++++++------ htdocs/compta/facture/list.php | 19 ++++++-- htdocs/compta/sociales/list.php | 27 +++++++++-- htdocs/compta/tva/list.php | 36 ++++++++++---- htdocs/contact/consumption.php | 2 +- htdocs/contact/list.php | 24 +++++++--- .../modulebuilder/template/myobject_list.php | 2 +- htdocs/societe/list.php | 6 +-- 9 files changed, 133 insertions(+), 44 deletions(-) diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index eb5b310edd1..c989cd34d39 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -2133,7 +2133,7 @@ if ($resql) { $totalarray['nbfield']++; } - print "\n"; + print ''."\n"; $i++; } @@ -2141,6 +2141,17 @@ if ($resql) { // Show total line include DOL_DOCUMENT_ROOT.'/core/tpl/list_print_total.tpl.php'; + // If no record found + if ($num == 0) { + $colspan = 1; + foreach ($arrayfields as $key => $val) { + if (!empty($val['checked'])) { + $colspan++; + } + } + print ''; + } + $db->free($resql); $parameters = array('arrayfields'=>$arrayfields, 'sql'=>$sql); diff --git a/htdocs/compta/bank/various_payment/list.php b/htdocs/compta/bank/various_payment/list.php index bbec4f23fc6..92d38d95274 100644 --- a/htdocs/compta/bank/various_payment/list.php +++ b/htdocs/compta/bank/various_payment/list.php @@ -40,7 +40,6 @@ $socid = GETPOST("socid", "int"); if ($user->socid) { $socid = $user->socid; } -$result = restrictedArea($user, 'banque', '', '', ''); $optioncss = GETPOST('optioncss', 'alpha'); @@ -173,6 +172,11 @@ $arrayfields = array( $arrayfields = dol_sort_array($arrayfields, 'position'); +$object = new PaymentVarious($db); + +$result = restrictedArea($user, 'banque', '', '', ''); + + /* * Actions */ @@ -271,19 +275,19 @@ if ($search_all) { $sql .= $db->order($sortfield, $sortorder); $totalnboflines = 0; -$result = $db->query($sql); -if ($result) { - $totalnboflines = $db->num_rows($result); +$resql = $db->query($sql); +if ($resql) { + $totalnboflines = $db->num_rows($resql); } $sql .= $db->plimit($limit + 1, $offset); -$result = $db->query($sql); -if ($result) { - $num = $db->num_rows($result); +$resql = $db->query($sql); +if ($resql) { + $num = $db->num_rows($resql); // Direct jump if only one record found if ($num == 1 && !empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && $search_all) { - $obj = $db->fetch_object($result); + $obj = $db->fetch_object($resql); $id = $obj->rowid; header("Location: ".DOL_URL_ROOT.'/compta/bank/various_payment/card.php?id='.$id); exit; @@ -541,7 +545,7 @@ if ($result) { $totalarray = array(); while ($i < min($num, $limit)) { - $obj = $db->fetch_object($result); + $obj = $db->fetch_object($resql); $variousstatic->id = $obj->rowid; $variousstatic->ref = $obj->rowid; @@ -704,7 +708,7 @@ if ($result) { $totalarray['nbfield']++; } - print ""; + print ''."\n"; $i++; } @@ -712,11 +716,27 @@ if ($result) { // Show total line include DOL_DOCUMENT_ROOT.'/core/tpl/list_print_total.tpl.php'; - print "
'; + print ''; if ($action != 'editdate') { diff --git a/htdocs/accountancy/class/bookkeeping.class.php b/htdocs/accountancy/class/bookkeeping.class.php index 507292d777a..3ed498bcc78 100644 --- a/htdocs/accountancy/class/bookkeeping.class.php +++ b/htdocs/accountancy/class/bookkeeping.class.php @@ -1851,27 +1851,42 @@ class BookKeeping extends CommonObject if ($next_piecenum < 0) { $error++; } - $sql = 'INSERT INTO '.MAIN_DB_PREFIX.$this->table_element.' (doc_date, doc_type,'; - $sql .= ' doc_ref, fk_doc, fk_docdet, entity, thirdparty_code, subledger_account, subledger_label,'; - $sql .= ' numero_compte, label_compte, label_operation, debit, credit,'; - $sql .= ' montant, sens, fk_user_author, import_key, code_journal, journal_label, piece_num, date_creation)'; - $sql .= ' SELECT doc_date, doc_type,'; - $sql .= ' doc_ref, fk_doc, fk_docdet, entity, thirdparty_code, subledger_account, subledger_label,'; - $sql .= ' numero_compte, label_compte, label_operation, debit, credit,'; - $sql .= ' montant, sens, fk_user_author, import_key, code_journal, journal_label, '.((int) $next_piecenum).", '".$this->db->idate($now)."'"; - $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity); + + // Delete if there is an empty line + $sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity)." AND numero_compte IS NULL AND debit = 0 AND credit = 0"; $resql = $this->db->query($sql); if (!$resql) { $error++; $this->errors[] = 'Error '.$this->db->lasterror(); dol_syslog(__METHOD__.' '.join(',', $this->errors), LOG_ERR); } - $sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity); - $resql = $this->db->query($sql); - if (!$resql) { - $error++; - $this->errors[] = 'Error '.$this->db->lasterror(); - dol_syslog(__METHOD__.' '.join(',', $this->errors), LOG_ERR); + + if (!$error) { + $sql = 'INSERT INTO '.MAIN_DB_PREFIX.$this->table_element.' (doc_date, doc_type,'; + $sql .= ' doc_ref, fk_doc, fk_docdet, entity, thirdparty_code, subledger_account, subledger_label,'; + $sql .= ' numero_compte, label_compte, label_operation, debit, credit,'; + $sql .= ' montant, sens, fk_user_author, import_key, code_journal, journal_label, piece_num, date_creation)'; + $sql .= ' SELECT doc_date, doc_type,'; + $sql .= ' doc_ref, fk_doc, fk_docdet, entity, thirdparty_code, subledger_account, subledger_label,'; + $sql .= ' numero_compte, label_compte, label_operation, debit, credit,'; + $sql .= ' montant, sens, fk_user_author, import_key, code_journal, journal_label, '.((int) $next_piecenum).", '".$this->db->idate($now)."'"; + $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity); + $resql = $this->db->query($sql); + if (!$resql) { + $error++; + $this->errors[] = 'Error '.$this->db->lasterror(); + dol_syslog(__METHOD__.' '.join(',', $this->errors), LOG_ERR); + } + } + + if (!$error) { + $sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity); + $resql = $this->db->query($sql); + if (!$resql) { + $error++; + $this->errors[] = 'Error '.$this->db->lasterror(); + dol_syslog(__METHOD__.' '.join(',', $this->errors), LOG_ERR); + } } } elseif ($direction == 1) { $sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity); From b3bfe22f58abfe6216da53ba748da067eb6e7fe4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 9 May 2022 16:45:57 +0200 Subject: [PATCH 040/248] FIX Error management --- .../accountancy/class/bookkeeping.class.php | 76 +++++++++++-------- 1 file changed, 43 insertions(+), 33 deletions(-) diff --git a/htdocs/accountancy/class/bookkeeping.class.php b/htdocs/accountancy/class/bookkeeping.class.php index 3ed498bcc78..94c0b717aef 100644 --- a/htdocs/accountancy/class/bookkeeping.class.php +++ b/htdocs/accountancy/class/bookkeeping.class.php @@ -1852,13 +1852,15 @@ class BookKeeping extends CommonObject $error++; } - // Delete if there is an empty line - $sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity)." AND numero_compte IS NULL AND debit = 0 AND credit = 0"; - $resql = $this->db->query($sql); - if (!$resql) { - $error++; - $this->errors[] = 'Error '.$this->db->lasterror(); - dol_syslog(__METHOD__.' '.join(',', $this->errors), LOG_ERR); + if (!$error) { + // Delete if there is an empty line + $sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity)." AND numero_compte IS NULL AND debit = 0 AND credit = 0"; + $resql = $this->db->query($sql); + if (!$resql) { + $error++; + $this->errors[] = 'Error '.$this->db->lasterror(); + dol_syslog(__METHOD__.' '.join(',', $this->errors), LOG_ERR); + } } if (!$error) { @@ -1889,34 +1891,42 @@ class BookKeeping extends CommonObject } } } elseif ($direction == 1) { - $sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity); - $resql = $this->db->query($sql); - if (!$resql) { - $error++; - $this->errors[] = 'Error '.$this->db->lasterror(); - dol_syslog(__METHOD__.' '.join(',', $this->errors), LOG_ERR); + if (!$error) { + $sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity); + $resql = $this->db->query($sql); + if (!$resql) { + $error++; + $this->errors[] = 'Error '.$this->db->lasterror(); + dol_syslog(__METHOD__.' '.join(',', $this->errors), LOG_ERR); + } } - $sql = 'INSERT INTO '.MAIN_DB_PREFIX.$this->table_element.'_tmp (doc_date, doc_type,'; - $sql .= ' doc_ref, fk_doc, fk_docdet, thirdparty_code, subledger_account, subledger_label,'; - $sql .= ' numero_compte, label_compte, label_operation, debit, credit,'; - $sql .= ' montant, sens, fk_user_author, import_key, code_journal, journal_label, piece_num)'; - $sql .= ' SELECT doc_date, doc_type,'; - $sql .= ' doc_ref, fk_doc, fk_docdet, thirdparty_code, subledger_account, subledger_label,'; - $sql .= ' numero_compte, label_compte, label_operation, debit, credit,'; - $sql .= ' montant, sens, fk_user_author, import_key, code_journal, journal_label, piece_num'; - $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity); - $resql = $this->db->query($sql); - if (!$resql) { - $error++; - $this->errors[] = 'Error '.$this->db->lasterror(); - dol_syslog(__METHOD__.' '.join(',', $this->errors), LOG_ERR); + + if (!$error) { + $sql = 'INSERT INTO '.MAIN_DB_PREFIX.$this->table_element.'_tmp (doc_date, doc_type,'; + $sql .= ' doc_ref, fk_doc, fk_docdet, thirdparty_code, subledger_account, subledger_label,'; + $sql .= ' numero_compte, label_compte, label_operation, debit, credit,'; + $sql .= ' montant, sens, fk_user_author, import_key, code_journal, journal_label, piece_num)'; + $sql .= ' SELECT doc_date, doc_type,'; + $sql .= ' doc_ref, fk_doc, fk_docdet, thirdparty_code, subledger_account, subledger_label,'; + $sql .= ' numero_compte, label_compte, label_operation, debit, credit,'; + $sql .= ' montant, sens, fk_user_author, import_key, code_journal, journal_label, piece_num'; + $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity); + $resql = $this->db->query($sql); + if (!$resql) { + $error++; + $this->errors[] = 'Error '.$this->db->lasterror(); + dol_syslog(__METHOD__.' '.join(',', $this->errors), LOG_ERR); + } } - $sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity); - $resql = $this->db->query($sql); - if (!$resql) { - $error++; - $this->errors[] = 'Error '.$this->db->lasterror(); - dol_syslog(__METHOD__.' '.join(',', $this->errors), LOG_ERR); + + if (!$error) { + $sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity); + $resql = $this->db->query($sql); + if (!$resql) { + $error++; + $this->errors[] = 'Error '.$this->db->lasterror(); + dol_syslog(__METHOD__.' '.join(',', $this->errors), LOG_ERR); + } } } if (!$error) { From 0cac14c82fafb90f3b27f2803c09c9bfbc8e479d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 9 May 2022 16:51:31 +0200 Subject: [PATCH 041/248] Fix trans --- .../accountancy/class/bookkeeping.class.php | 49 ++++++++++++------- htdocs/langs/en_US/accountancy.lang | 2 +- htdocs/langs/fr_FR/accountancy.lang | 2 +- 3 files changed, 34 insertions(+), 19 deletions(-) diff --git a/htdocs/accountancy/class/bookkeeping.class.php b/htdocs/accountancy/class/bookkeeping.class.php index 21b723b003b..ad2720f4675 100644 --- a/htdocs/accountancy/class/bookkeeping.class.php +++ b/htdocs/accountancy/class/bookkeeping.class.php @@ -1843,8 +1843,8 @@ class BookKeeping extends CommonObject /** * Transform transaction * - * @param number $direction If 0 tmp => real, if 1 real => tmp - * @param string $piece_num Piece num + * @param number $direction If 0: tmp => real, if 1: real => tmp + * @param string $piece_num Piece num = Transaction ref * @return int int <0 if KO, >0 if OK */ public function transformTransaction($direction = 0, $piece_num = '') @@ -1862,27 +1862,42 @@ class BookKeeping extends CommonObject if ($next_piecenum < 0) { $error++; } - $sql = 'INSERT INTO '.MAIN_DB_PREFIX.$this->table_element.' (doc_date, doc_type,'; - $sql .= ' doc_ref, fk_doc, fk_docdet, entity, thirdparty_code, subledger_account, subledger_label,'; - $sql .= ' numero_compte, label_compte, label_operation, debit, credit,'; - $sql .= ' montant, sens, fk_user_author, import_key, code_journal, journal_label, piece_num, date_creation)'; - $sql .= ' SELECT doc_date, doc_type,'; - $sql .= ' doc_ref, fk_doc, fk_docdet, entity, thirdparty_code, subledger_account, subledger_label,'; - $sql .= ' numero_compte, label_compte, label_operation, debit, credit,'; - $sql .= ' montant, sens, fk_user_author, import_key, code_journal, journal_label, '.((int) $next_piecenum).", '".$this->db->idate($now)."'"; - $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity); + + // Delete if there is an empty line + $sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity)." AND numero_compte IS NULL AND debit = 0 AND credit = 0"; $resql = $this->db->query($sql); if (!$resql) { $error++; $this->errors[] = 'Error '.$this->db->lasterror(); dol_syslog(__METHOD__.' '.join(',', $this->errors), LOG_ERR); } - $sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity); - $resql = $this->db->query($sql); - if (!$resql) { - $error++; - $this->errors[] = 'Error '.$this->db->lasterror(); - dol_syslog(__METHOD__.' '.join(',', $this->errors), LOG_ERR); + + if (!$error) { + $sql = 'INSERT INTO '.MAIN_DB_PREFIX.$this->table_element.' (doc_date, doc_type,'; + $sql .= ' doc_ref, fk_doc, fk_docdet, entity, thirdparty_code, subledger_account, subledger_label,'; + $sql .= ' numero_compte, label_compte, label_operation, debit, credit,'; + $sql .= ' montant, sens, fk_user_author, import_key, code_journal, journal_label, piece_num, date_creation)'; + $sql .= ' SELECT doc_date, doc_type,'; + $sql .= ' doc_ref, fk_doc, fk_docdet, entity, thirdparty_code, subledger_account, subledger_label,'; + $sql .= ' numero_compte, label_compte, label_operation, debit, credit,'; + $sql .= ' montant, sens, fk_user_author, import_key, code_journal, journal_label, '.((int) $next_piecenum).", '".$this->db->idate($now)."'"; + $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity); + $resql = $this->db->query($sql); + if (!$resql) { + $error++; + $this->errors[] = 'Error '.$this->db->lasterror(); + dol_syslog(__METHOD__.' '.join(',', $this->errors), LOG_ERR); + } + } + + if (!$error) { + $sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity); + $resql = $this->db->query($sql); + if (!$resql) { + $error++; + $this->errors[] = 'Error '.$this->db->lasterror(); + dol_syslog(__METHOD__.' '.join(',', $this->errors), LOG_ERR); + } } } elseif ($direction == 1) { $sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity); diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index 8283da55f41..eddc43c9f38 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -289,7 +289,7 @@ ValidateHistory=Bind Automatically AutomaticBindingDone=Automatic bindings done (%s) - Automatic binding not possible for some record (%s) ErrorAccountancyCodeIsAlreadyUse=Error, you cannot delete this accounting account because it is used -MvtNotCorrectlyBalanced=Movement not correctly balanced. Debit = %s | Credit = %s +MvtNotCorrectlyBalanced=Movement not correctly balanced. Debit = %s & Credit = %s Balancing=Balancing FicheVentilation=Binding card GeneralLedgerIsWritten=Transactions are written in the Ledger diff --git a/htdocs/langs/fr_FR/accountancy.lang b/htdocs/langs/fr_FR/accountancy.lang index fa9e2203eea..4c3ee5f939f 100644 --- a/htdocs/langs/fr_FR/accountancy.lang +++ b/htdocs/langs/fr_FR/accountancy.lang @@ -289,7 +289,7 @@ ValidateHistory=Lier automatiquement AutomaticBindingDone=Liaisons automatiques effectuées (%s) - Liaison automatique impossible pour certains enregistrements (%s) ErrorAccountancyCodeIsAlreadyUse=Erreur, vous ne pouvez pas détruire de compte comptable car il est utilisé -MvtNotCorrectlyBalanced=Mouvement non équilibré. Débit = %s| Crédit = %s +MvtNotCorrectlyBalanced=Mouvement non équilibré. Débit = %s & Crédit = %s Balancing=Équilibrage FicheVentilation=Fiche lien GeneralLedgerIsWritten=Les transactions sont enregistrées dans le grand livre From 32a1c201546925ba55c1014eb43df4f00ba21642 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 9 May 2022 17:33:45 +0200 Subject: [PATCH 042/248] Fix phpcs --- htdocs/core/class/html.form.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index c803c83e97a..28c3c975a51 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -4030,7 +4030,7 @@ class Form * > 0 : force deposit percentage (for example, from company object) * @return string */ - public function getSelectConditionsPaiements($selected = 0, $htmlname = 'condid', $filtertype = -1, $addempty = 0, $noinfoadmin = 0, $deposit_percent = -1) + public function getSelectConditionsPaiements($selected = 0, $htmlname = 'condid', $filtertype = -1, $addempty = 0, $noinfoadmin = 0, $morecss = '', $deposit_percent = -1) { global $langs, $user, $conf; From d0c95d87afe960e3074d611aa39d2f68433351b1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 9 May 2022 18:46:23 +0200 Subject: [PATCH 043/248] Debug v16 --- htdocs/admin/ticket.php | 176 +++++++----------- .../boxes/box_graph_nb_ticket_last_x_days.php | 27 ++- .../core/boxes/box_graph_nb_tickets_type.php | 4 +- .../boxes/box_graph_ticket_by_severity.php | 10 +- .../core/boxes/box_last_modified_ticket.php | 6 +- htdocs/core/boxes/box_last_ticket.php | 20 +- htdocs/core/class/html.formcategory.class.php | 5 +- htdocs/core/modules/modTicket.class.php | 4 +- htdocs/ticket/index.php | 39 ++-- 9 files changed, 129 insertions(+), 162 deletions(-) diff --git a/htdocs/admin/ticket.php b/htdocs/admin/ticket.php index f257b040636..f902c3fb39b 100644 --- a/htdocs/admin/ticket.php +++ b/htdocs/admin/ticket.php @@ -99,6 +99,50 @@ if ($action == 'updateMask') { // par appel methode canBeActivated dolibarr_set_const($db, "TICKET_ADDON", $value, 'chaine', 0, '', $conf->entity); +} elseif ($action == 'setvarworkflow') { + $param_auto_read = GETPOST('TICKET_AUTO_READ_WHEN_CREATED_FROM_BACKEND', 'alpha'); + $res = dolibarr_set_const($db, 'TICKET_AUTO_READ_WHEN_CREATED_FROM_BACKEND', $param_auto_read, 'chaine', 0, '', $conf->entity); + if (!($res > 0)) { + $error++; + } + + $param_auto_assign = GETPOST('TICKET_AUTO_ASSIGN_USER_CREATE', 'alpha'); + $res = dolibarr_set_const($db, 'TICKET_AUTO_ASSIGN_USER_CREATE', $param_auto_assign, 'chaine', 0, '', $conf->entity); + if (!($res > 0)) { + $error++; + } + + $param_limit_view = GETPOST('TICKET_LIMIT_VIEW_ASSIGNED_ONLY', 'alpha'); + $res = dolibarr_set_const($db, 'TICKET_LIMIT_VIEW_ASSIGNED_ONLY', $param_limit_view, 'chaine', 0, '', $conf->entity); + if (!($res > 0)) { + $error++; + } + + if (GETPOSTISSET('product_category_id')) { + $param_ticket_product_category = GETPOST('product_category_id', 'int'); + $res = dolibarr_set_const($db, 'TICKET_PRODUCT_CATEGORY', $param_ticket_product_category, 'chaine', 0, '', $conf->entity); + if (!($res > 0)) { + $error++; + } + } + + $param_delay_first_response = GETPOST('delay_first_response', 'int'); + $res = dolibarr_set_const($db, 'TICKET_DELAY_BEFORE_FIRST_RESPONSE', $param_delay_first_response, 'chaine', 0, '', $conf->entity); + if (!($res > 0)) { + $error++; + } + + $param_delay_between_responses = GETPOST('delay_between_responses', 'int'); + $res = dolibarr_set_const($db, 'TICKET_DELAY_SINCE_LAST_RESPONSE', $param_delay_between_responses, 'chaine', 0, '', $conf->entity); + if (!($res > 0)) { + $error++; + } + + $param_auto_notify_close = GETPOST('TICKET_NOTIFY_AT_CLOSING', 'alpha'); + $res = dolibarr_set_const($db, 'TICKET_NOTIFY_AT_CLOSING', $param_auto_notify_close, 'chaine', 0, '', $conf->entity); + if (!($res > 0)) { + $error++; + } } elseif ($action == 'setvar') { include_once DOL_DOCUMENT_ROOT."/core/lib/files.lib.php"; @@ -146,50 +190,6 @@ if ($action == 'updateMask') { if (!($res > 0)) { $error++; } -} - -if ($action == 'setvarworkflow') { - $param_auto_read = GETPOST('TICKET_AUTO_READ_WHEN_CREATED_FROM_BACKEND', 'alpha'); - $res = dolibarr_set_const($db, 'TICKET_AUTO_READ_WHEN_CREATED_FROM_BACKEND', $param_auto_read, 'chaine', 0, '', $conf->entity); - if (!($res > 0)) { - $error++; - } - - $param_auto_assign = GETPOST('TICKET_AUTO_ASSIGN_USER_CREATE', 'alpha'); - $res = dolibarr_set_const($db, 'TICKET_AUTO_ASSIGN_USER_CREATE', $param_auto_assign, 'chaine', 0, '', $conf->entity); - if (!($res > 0)) { - $error++; - } -} - -if ($action == 'setvarworkflowother' || $action == 'setvarworkflow') { - $param_ticket_product_category = GETPOST('product_category_id', 'int'); - $res = dolibarr_set_const($db, 'TICKET_PRODUCT_CATEGORY', $param_ticket_product_category, 'chaine', 0, '', $conf->entity); - if (!($res > 0)) { - $error++; - } -} - -if ($action == 'setvarother') { - $param_must_exists = GETPOST('TICKET_EMAIL_MUST_EXISTS', 'alpha'); - $res = dolibarr_set_const($db, 'TICKET_EMAIL_MUST_EXISTS', $param_must_exists, 'chaine', 0, '', $conf->entity); - if (!($res > 0)) { - $error++; - } - - $param_disable_email = GETPOST('TICKET_DISABLE_NOTIFICATION_MAILS', 'alpha'); - $res = dolibarr_set_const($db, 'TICKET_DISABLE_NOTIFICATION_MAILS', $param_disable_email, 'chaine', 0, '', $conf->entity); - if (!($res > 0)) { - $error++; - } - - if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { - $param_show_module_logo = GETPOST('TICKET_SHOW_MODULE_LOGO', 'alpha'); - $res = dolibarr_set_const($db, 'TICKET_SHOW_MODULE_LOGO', $param_show_module_logo, 'chaine', 0, '', $conf->entity); - if (!($res > 0)) { - $error++; - } - } if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { $param_notification_also_main_addressemail = GETPOST('TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS', 'alpha'); @@ -198,34 +198,9 @@ if ($action == 'setvarother') { $error++; } } - - $param_limit_view = GETPOST('TICKET_LIMIT_VIEW_ASSIGNED_ONLY', 'alpha'); - $res = dolibarr_set_const($db, 'TICKET_LIMIT_VIEW_ASSIGNED_ONLY', $param_limit_view, 'chaine', 0, '', $conf->entity); - if (!($res > 0)) { - $error++; - } - - $param_delay_first_response = GETPOST('delay_first_response', 'int'); - $res = dolibarr_set_const($db, 'TICKET_DELAY_BEFORE_FIRST_RESPONSE', $param_delay_first_response, 'chaine', 0, '', $conf->entity); - if (!($res > 0)) { - $error++; - } - - $param_delay_between_responses = GETPOST('delay_between_responses', 'int'); - $res = dolibarr_set_const($db, 'TICKET_DELAY_SINCE_LAST_RESPONSE', $param_delay_between_responses, 'chaine', 0, '', $conf->entity); - if (!($res > 0)) { - $error++; - } - - $param_auto_notify_close = GETPOST('TICKET_NOTIFY_AT_CLOSING', 'alpha'); - $res = dolibarr_set_const($db, 'TICKET_NOTIFY_AT_CLOSING', $param_auto_notify_close, 'chaine', 0, '', $conf->entity); - if (!($res > 0)) { - $error++; - } } - /* * View */ @@ -384,8 +359,8 @@ if ($resql) { print '
'; -print "
'; print $langs->trans('Docdate'); print '
\n"; -print "\n"; +print '
'."\n"; +print ''."\n"; print ''; print ''; print '\n"; @@ -502,13 +477,14 @@ foreach ($dirmodels as $reldir) { print '
'.$langs->trans("Name").''.$langs->trans("Description").''.$langs->trans("Status")."
'; print '
'; -if (empty($conf->use_javascript_ajax)) { - print '
'; - print ''; - print ''; -} + +print ''; +print ''; +print ''; +print ''; print load_fiche_titre($langs->trans("Other"), '', ''); +print '
'; print ''; print ''; @@ -563,34 +539,24 @@ print $formcategory->textwithpicto('', $langs->trans("TicketsAutoNotifyCloseHelp print ''; print ''; -// Choose which product category is used for tickets -if ($conf->use_javascript_ajax) { - print ''; - print ''; - print ''; +if (! empty($conf->product->enabled)) { + print ''; + print ''; + print ''; + print ''; } -print ''; -print ''; -print ''; -print ''; - -// Define wanted maximum time elapsed before answers to tickets -print ''; -print ''; - print ''; print '"; print ''; print ''; print ''; print '"; print ''; print ''; print '
'.$langs->trans("TicketChooseProductCategory").''; + $formcategory->selectProductCategory($conf->global->TICKET_PRODUCT_CATEGORY, 'product_category_id'); + if ($conf->use_javascript_ajax) { + print ajax_combobox('select_'.$htmlname); + } + print ''; + print $formcategory->textwithpicto('', $langs->trans("TicketChooseProductCategoryHelp"), 1, 'help'); + print '
'.$langs->trans("TicketChooseProductCategory").''; -$formcategory->selectProductCategory($conf->global->TICKET_PRODUCT_CATEGORY, 'product_category_id'); -if ($conf->use_javascript_ajax) { - print ajax_combobox('select_'.$htmlname); -} -print ''; -print $formcategory->textwithpicto('', $langs->trans("TicketChooseProductCategoryHelp"), 1, 'help'); -print '
'.$langs->trans("TicketsDelayBeforeFirstAnswer")." - - + '; print $formcategory->textwithpicto('', $langs->trans("TicketsDelayBeforeFirstAnswerHelp"), 1, 'help'); @@ -600,8 +566,7 @@ print '
'.$langs->trans("TicketsDelayBetweenAnswers")." - - + '; print $formcategory->textwithpicto('', $langs->trans("TicketsDelayBetweenAnswersHelp"), 1, 'help'); @@ -610,9 +575,7 @@ print '

'; -print '
'; -print ''; -print '
'; +print $formcategory->buttonsSaveCancel("Save", '', array(), 0, 'reposition'); print ''; @@ -622,9 +585,10 @@ print load_fiche_titre($langs->trans("Notification"), '', ''); print ''; -print ''; +print ''; print ''; print ''; +print ''; print ''; print ''; @@ -699,7 +663,7 @@ print ''; print '
'.$langs->trans("Email").'
'; -print $formcategory->buttonsSaveCancel("Save", ''); +print $formcategory->buttonsSaveCancel("Save", '', array(), 0, 'reposition'); print ''; diff --git a/htdocs/core/boxes/box_graph_nb_ticket_last_x_days.php b/htdocs/core/boxes/box_graph_nb_ticket_last_x_days.php index 5c8bd2c8555..b75d0752334 100644 --- a/htdocs/core/boxes/box_graph_nb_ticket_last_x_days.php +++ b/htdocs/core/boxes/box_graph_nb_ticket_last_x_days.php @@ -31,7 +31,7 @@ require_once DOL_DOCUMENT_ROOT."/core/boxes/modules_boxes.php"; class box_graph_nb_ticket_last_x_days extends ModeleBoxes { - public $boxcode = "box_nb_ticket_last_x_days"; + public $boxcode = "box_graph_nb_ticket_last_x_days"; public $boximg = "ticket"; public $boxlabel; public $depends = array("ticket"); @@ -102,18 +102,17 @@ class box_graph_nb_ticket_last_x_days extends ModeleBoxes 'text' => $text, 'limit' => dol_strlen($text) ); - $today = date_time_set(date_create(), 0, 0); - $todayformat = date('Y-m-d', date_timestamp_get($today)); - $intervaltosub = new DateInterval('P'.dol_escape_htmltag($days - 1).'D'); - $intervaltoadd = new DateInterval('P1D'); - $minimumdatec = date_sub($today, $intervaltosub); - $minimumdatecformated = date('Y-m-d', date_timestamp_get($minimumdatec)); + $today = dol_now(); + $intervaltoadd = 1; + $minimumdatec = dol_time_plus_duree($today, -1 * ($days - 1), 'd'); + $minimumdatecformated = dol_print_date($minimumdatec, 'dayrfc'); if ($user->rights->ticket->read) { $sql = "SELECT CAST(t.datec AS DATE) as datec, COUNT(t.datec) as nb"; $sql .= " FROM ".MAIN_DB_PREFIX."ticket as t"; - $sql .= " WHERE CAST(t.datec AS DATE) > DATE_SUB(CURRENT_DATE, INTERVAL ".$days." DAY)"; + $sql .= " WHERE CAST(t.datec AS DATE) > '".$this->db->idate($minimumdatec)."'"; $sql .= " GROUP BY CAST(t.datec AS DATE)"; + $resql = $this->db->query($sql); if ($resql) { $num = $this->db->num_rows($resql); @@ -122,18 +121,18 @@ class box_graph_nb_ticket_last_x_days extends ModeleBoxes $objp = $this->db->fetch_object($resql); while ($minimumdatecformated < $objp->datec) { $dataseries[] = array('label' => dol_print_date($minimumdatecformated, 'day'), 'data' => 0); - $minimumdatec = date_add($minimumdatec, $intervaltoadd); - $minimumdatecformated = date('Y-m-d', date_timestamp_get($minimumdatec)); + $minimumdatec = dol_time_plus_duree($minimumdatec, $intervaltoadd, 'd'); + $minimumdatecformated = dol_print_date($minimumdatec, 'dayrfc'); } $dataseries[] = array('label' => dol_print_date($objp->datec, 'day'), 'data' => $objp->nb); - $minimumdatec = date_add($minimumdatec, $intervaltoadd); - $minimumdatecformated = date('Y-m-d', date_timestamp_get($minimumdatec)); + $minimumdatec = dol_time_plus_duree($minimumdatec, $intervaltoadd, 'd'); + $minimumdatecformated = dol_print_date($minimumdatec, 'dayrfc'); $i++; } while (count($dataseries) < $days) { $dataseries[] = array('label' => dol_print_date($minimumdatecformated, 'day'), 'data' => 0); - $minimumdatec = date_add($minimumdatec, $intervaltoadd); - $minimumdatecformated = date('Y-m-d', date_timestamp_get($minimumdatec)); + $minimumdatec = dol_time_plus_duree($minimumdatec, $intervaltoadd, 'd'); + $minimumdatecformated = dol_print_date($minimumdatec, 'dayrfc'); $i++; } } else { diff --git a/htdocs/core/boxes/box_graph_nb_tickets_type.php b/htdocs/core/boxes/box_graph_nb_tickets_type.php index 2da54d84e7a..88d930e9e27 100644 --- a/htdocs/core/boxes/box_graph_nb_tickets_type.php +++ b/htdocs/core/boxes/box_graph_nb_tickets_type.php @@ -31,7 +31,7 @@ require_once DOL_DOCUMENT_ROOT."/core/boxes/modules_boxes.php"; class box_graph_nb_tickets_type extends ModeleBoxes { - public $boxcode = "box_nb_tickets_type"; + public $boxcode = "box_graph_nb_tickets_type"; public $boximg = "ticket"; public $boxlabel; public $depends = array("ticket"); @@ -171,7 +171,7 @@ class box_graph_nb_tickets_type extends ModeleBoxes } $stringtoprint .= '
'; $this->info_box_contents[][]=array( - 'td' => 'center', + 'td' => 'class="center"', 'text' => $stringtoprint ); } else { diff --git a/htdocs/core/boxes/box_graph_ticket_by_severity.php b/htdocs/core/boxes/box_graph_ticket_by_severity.php index 5e69a49e88e..3c8756cf544 100644 --- a/htdocs/core/boxes/box_graph_ticket_by_severity.php +++ b/htdocs/core/boxes/box_graph_ticket_by_severity.php @@ -191,19 +191,19 @@ class box_graph_ticket_by_severity extends ModeleBoxes } $stringtoprint .= ''; $this->info_box_contents[][]=array( - 'td' => 'center', + 'td' => 'class="center"', 'text' => $stringtoprint ); } else { $this->info_box_contents[0][0] = array( - 'td' => 'class="center opacitymedium"', - 'text' => $langs->trans("BoxNoTicketSeverity") + 'td' => '', + 'text' => ''.$langs->trans("BoxNoTicketSeverity").'' ); } } else { $this->info_box_contents[0][0] = array( - 'td' => 'class="left"', - 'text' => $langs->trans("ReadPermissionNotAllowed"), + 'td' => '', + 'text' => ''.$langs->trans("ReadPermissionNotAllowed").'', ); } } diff --git a/htdocs/core/boxes/box_last_modified_ticket.php b/htdocs/core/boxes/box_last_modified_ticket.php index 300a13803c5..fd8ecd95eaf 100644 --- a/htdocs/core/boxes/box_last_modified_ticket.php +++ b/htdocs/core/boxes/box_last_modified_ticket.php @@ -177,15 +177,15 @@ class box_last_modified_ticket extends ModeleBoxes } if ($num == 0) { - $this->info_box_contents[$i][0] = array('td' => 'class="center"', 'text'=>$langs->trans("BoxLastModifiedTicketNoRecordedTickets")); + $this->info_box_contents[$i][0] = array('td' => '', 'text'=>''.$langs->trans("BoxLastModifiedTicketNoRecordedTickets").''); } } else { dol_print_error($this->db); } } else { $this->info_box_contents[0][0] = array( - 'td' => 'class="left"', - 'text' => $langs->trans("ReadPermissionNotAllowed"), + 'td' => '', + 'text' => ''.$langs->trans("ReadPermissionNotAllowed").'', ); } } diff --git a/htdocs/core/boxes/box_last_ticket.php b/htdocs/core/boxes/box_last_ticket.php index 25cb353b268..41ac39c1239 100644 --- a/htdocs/core/boxes/box_last_ticket.php +++ b/htdocs/core/boxes/box_last_ticket.php @@ -85,9 +85,9 @@ class box_last_ticket extends ModeleBoxes ); if ($user->rights->ticket->read) { - $sql = "SELECT t.rowid as id, t.ref, t.track_id, t.fk_soc, t.fk_user_create, t.fk_user_assign, t.subject, t.message, t.fk_statut, t.type_code, t.category_code, t.severity_code, t.datec, t.date_read, t.date_close, t.origin_email "; - $sql .= ", type.label as type_label, category.label as category_label, severity.label as severity_label"; - $sql .= ", s.nom as company_name, s.email as socemail, s.client, s.fournisseur"; + $sql = "SELECT t.rowid as id, t.ref, t.track_id, t.fk_soc, t.fk_user_create, t.fk_user_assign, t.subject, t.message, t.fk_statut as status, t.type_code, t.category_code, t.severity_code, t.datec, t.date_read, t.date_close, t.origin_email,"; + $sql .= " type.label as type_label, category.label as category_label, severity.label as severity_label,"; + $sql .= " s.nom as company_name, s.email as socemail, s.client, s.fournisseur"; $sql .= " FROM ".MAIN_DB_PREFIX."ticket as t"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_ticket_type as type ON type.code=t.type_code"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_ticket_category as category ON category.code=t.category_code"; @@ -113,6 +113,7 @@ class box_last_ticket extends ModeleBoxes while ($i < $num) { $objp = $this->db->fetch_object($resql); + $datec = $this->db->jdate($objp->datec); //$dateterm = $this->db->jdate($objp->fin_validite); //$dateclose = $this->db->jdate($objp->date_close); @@ -122,7 +123,8 @@ class box_last_ticket extends ModeleBoxes $ticket->id = $objp->id; $ticket->track_id = $objp->track_id; $ticket->ref = $objp->ref; - $ticket->fk_statut = $objp->fk_statut; + $ticket->fk_statut = $objp->status; + $ticket->status = $objp->status; $ticket->subject = $objp->subject; if ($objp->fk_soc > 0) { $thirdparty = new Societe($this->db); @@ -149,8 +151,8 @@ class box_last_ticket extends ModeleBoxes // Subject $this->info_box_contents[$i][$r] = array( 'td' => 'class="tdoverflowmax200"', - 'text' => ''.$objp->subject.'', // Some event have no ref - 'url' => DOL_URL_ROOT."/ticket/card.php?track_id=".$objp->track_id, + 'text' => ''.dol_escape_htmltag($objp->subject).'', // Some event have no ref + 'url' => DOL_URL_ROOT."/ticket/card.php?track_id=".urlencode($objp->track_id), ); $r++; @@ -180,14 +182,14 @@ class box_last_ticket extends ModeleBoxes } if ($num == 0) { - $this->info_box_contents[$i][0] = array('td' => 'class="center"', 'text' => $langs->trans("BoxLastTicketNoRecordedTickets")); + $this->info_box_contents[$i][0] = array('td' => '', 'text' => ''.$langs->trans("BoxLastTicketNoRecordedTickets").''); } } else { dol_print_error($this->db); } } else { - $this->info_box_contents[0][0] = array('td' => 'class="left"', - 'text' => $langs->trans("ReadPermissionNotAllowed")); + $this->info_box_contents[0][0] = array('td' => '', + 'text' => ''.$langs->trans("ReadPermissionNotAllowed").''); } } diff --git a/htdocs/core/class/html.formcategory.class.php b/htdocs/core/class/html.formcategory.class.php index 707b5d5d0ac..c0e07b6bb7a 100644 --- a/htdocs/core/class/html.formcategory.class.php +++ b/htdocs/core/class/html.formcategory.class.php @@ -72,7 +72,10 @@ class FormCategory extends Form { global $conf; - $sql = "SELECT cp.fk_categorie as cat_index, cat.label FROM `llx_categorie_product` as cp INNER JOIN llx_categorie as cat ON cat.rowid = cp.fk_categorie GROUP BY cp.fk_categorie;"; + $sql = "SELECT cp.fk_categorie as cat_index, cat.label"; + $sql .= " FROM ".MAIN_DB_PREFIX."categorie_product as cp"; + $sql .= " INNER JOIN ".MAIN_DB_PREFIX."categorie as cat ON cat.rowid = cp.fk_categorie"; + $sql .= " GROUP BY cp.fk_categorie, cat.label"; dol_syslog(get_class($this)."::selectProductCategory", LOG_DEBUG); $resql = $this->db->query($sql); diff --git a/htdocs/core/modules/modTicket.class.php b/htdocs/core/modules/modTicket.class.php index 688da3061d9..fc7e72388ea 100644 --- a/htdocs/core/modules/modTicket.class.php +++ b/htdocs/core/modules/modTicket.class.php @@ -171,8 +171,8 @@ class modTicket extends DolibarrModules 0=>array('file'=>'box_last_ticket.php', 'enabledbydefaulton'=>'Home'), 1=>array('file'=>'box_last_modified_ticket.php', 'enabledbydefaulton'=>'Home'), 2=>array('file'=>'box_ticket_by_severity.php', 'enabledbydefaulton'=>'ticketindex'), - 3=>array('file'=>'box_nb_ticket_last_x_days.php', 'enabledbydefaulton'=>'ticketindex'), - 4=>array('file'=>'box_nb_tickets_type.php', 'enabledbydefaulton'=>'ticketindex'), + 3=>array('file'=>'box_graph_nb_ticket_last_x_days.php', 'enabledbydefaulton'=>'ticketindex'), + 4=>array('file'=>'box_graph_nb_tickets_type.php', 'enabledbydefaulton'=>'ticketindex'), 5=>array('file'=>'box_new_vs_close_ticket.php', 'enabledbydefaulton'=>'ticketindex') ); // Boxes list diff --git a/htdocs/ticket/index.php b/htdocs/ticket/index.php index b55c81f72fa..8e6e09f3fcf 100644 --- a/htdocs/ticket/index.php +++ b/htdocs/ticket/index.php @@ -55,8 +55,9 @@ $userid = $user->id; // Security check $result = restrictedArea($user, 'ticket', 0, '', '', '', ''); -$nowyear = strftime("%Y", dol_now()); -$year = GETPOST('year') > 0 ? GETPOST('year') : $nowyear; +$nowarray = dol_getdate(dol_now(), true); +$nowyear = $nowarray['year']; +$year = GETPOST('year', 'int') > 0 ? GETPOST('year', 'int') : $nowyear; $startyear = $year - (empty($conf->global->MAIN_STATS_GRAPHS_SHOW_N_YEARS) ? 2 : max(1, min(10, $conf->global->MAIN_STATS_GRAPHS_SHOW_N_YEARS))); $endyear = $year; @@ -76,7 +77,6 @@ $object = new Ticket($db); $resultboxes = FormOther::getBoxesArea($user, "11"); // Load $resultboxes (selectboxlist + boxactivated + boxlista + boxlistb) $form = new Form($db); -$tickesupstatic = new Ticket($db); llxHeader('', $langs->trans('TicketsIndex'), ''); @@ -108,7 +108,6 @@ if (empty($shownb) && empty($showtot)) { $shownb = 0; } -$nowarray = dol_getdate(dol_now(), true); if (empty($endyear)) { $endyear = $nowarray['year']; } @@ -204,21 +203,21 @@ if ($result) { $dataseries = array(); $colorseries = array(); - $dataseries[] = array('label' => $langs->transnoentitiesnoconv($tickesupstatic->statuts_short[Ticket::STATUS_NOT_READ]), 'data' => round($tick['unread'])); + $dataseries[] = array('label' => $langs->transnoentitiesnoconv($object->statuts_short[Ticket::STATUS_NOT_READ]), 'data' => round($tick['unread'])); $colorseries[Ticket::STATUS_NOT_READ] = '-'.$badgeStatus0; - $dataseries[] = array('label' => $langs->transnoentitiesnoconv($tickesupstatic->statuts_short[Ticket::STATUS_READ]), 'data' => round($tick['read'])); + $dataseries[] = array('label' => $langs->transnoentitiesnoconv($object->statuts_short[Ticket::STATUS_READ]), 'data' => round($tick['read'])); $colorseries[Ticket::STATUS_READ] = $badgeStatus1; - $dataseries[] = array('label' => $langs->transnoentitiesnoconv($tickesupstatic->statuts_short[Ticket::STATUS_ASSIGNED]), 'data' => round($tick['assigned'])); + $dataseries[] = array('label' => $langs->transnoentitiesnoconv($object->statuts_short[Ticket::STATUS_ASSIGNED]), 'data' => round($tick['assigned'])); $colorseries[Ticket::STATUS_ASSIGNED] = $badgeStatus3; - $dataseries[] = array('label' => $langs->transnoentitiesnoconv($tickesupstatic->statuts_short[Ticket::STATUS_IN_PROGRESS]), 'data' => round($tick['inprogress'])); + $dataseries[] = array('label' => $langs->transnoentitiesnoconv($object->statuts_short[Ticket::STATUS_IN_PROGRESS]), 'data' => round($tick['inprogress'])); $colorseries[Ticket::STATUS_IN_PROGRESS] = $badgeStatus4; - $dataseries[] = array('label' => $langs->transnoentitiesnoconv($tickesupstatic->statuts_short[Ticket::STATUS_WAITING]), 'data' => round($tick['waiting'])); + $dataseries[] = array('label' => $langs->transnoentitiesnoconv($object->statuts_short[Ticket::STATUS_WAITING]), 'data' => round($tick['waiting'])); $colorseries[Ticket::STATUS_WAITING] = '-'.$badgeStatus4; - $dataseries[] = array('label' => $langs->transnoentitiesnoconv($tickesupstatic->statuts_short[Ticket::STATUS_NEED_MORE_INFO]), 'data' => round($tick['needmoreinfo'])); + $dataseries[] = array('label' => $langs->transnoentitiesnoconv($object->statuts_short[Ticket::STATUS_NEED_MORE_INFO]), 'data' => round($tick['needmoreinfo'])); $colorseries[Ticket::STATUS_NEED_MORE_INFO] = '-'.$badgeStatus3; - $dataseries[] = array('label' => $langs->transnoentitiesnoconv($tickesupstatic->statuts_short[Ticket::STATUS_CANCELED]), 'data' => round($tick['canceled'])); + $dataseries[] = array('label' => $langs->transnoentitiesnoconv($object->statuts_short[Ticket::STATUS_CANCELED]), 'data' => round($tick['canceled'])); $colorseries[Ticket::STATUS_CANCELED] = $badgeStatus9; - $dataseries[] = array('label' => $langs->transnoentitiesnoconv($tickesupstatic->statuts_short[Ticket::STATUS_CLOSED]), 'data' => round($tick['closed'])); + $dataseries[] = array('label' => $langs->transnoentitiesnoconv($object->statuts_short[Ticket::STATUS_CLOSED]), 'data' => round($tick['closed'])); $colorseries[Ticket::STATUS_CLOSED] = $badgeStatus6; } else { dol_print_error($db); @@ -358,18 +357,18 @@ if ($result) { while ($i < $num) { $objp = $db->fetch_object($result); - $tickesupstatic->id = $objp->rowid; - $tickesupstatic->ref = $objp->ref; - $tickesupstatic->track_id = $objp->track_id; - $tickesupstatic->fk_statut = $objp->fk_statut; - $tickesupstatic->progress = $objp->progress; - $tickesupstatic->subject = $objp->subject; + $object->id = $objp->rowid; + $object->ref = $objp->ref; + $object->track_id = $objp->track_id; + $object->fk_statut = $objp->fk_statut; + $object->progress = $objp->progress; + $object->subject = $objp->subject; print '
'; - print $tickesupstatic->getNomUrl(1); + print $object->getNomUrl(1); print "'; - print $tickesupstatic->getLibStatut(5); + print $object->getLibStatut(5); print "
'.$langs->trans("NoRecordFound").'
"; - print ''; - print ''; + // If no record found + if ($num == 0) { + $colspan = 1; + foreach ($arrayfields as $key => $val) { + if (!empty($val['checked'])) { + $colspan++; + } + } + print '
'.$langs->trans("NoRecordFound").'
'."\n"; + print '
'."\n"; + + print ''."\n"; } else { dol_print_error($db); } diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 2ef50801717..5937eda916c 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -2415,16 +2415,27 @@ if ($resql) { include DOL_DOCUMENT_ROOT.'/core/tpl/list_print_total.tpl.php'; } + // If no record found + if ($num == 0) { + $colspan = 1; + foreach ($arrayfields as $key => $val) { + if (!empty($val['checked'])) { + $colspan++; + } + } + print ''.$langs->trans("NoRecordFound").''; + } + $db->free($resql); $parameters = array('arrayfields'=>$arrayfields, 'sql'=>$sql); - $reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters); // Note that $action and $object may have been modified by hook + $reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters, $object); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; - print "\n"; - print ''; + print ''."\n"; + print ''."\n"; - print "\n"; + print ''."\n"; // Show the file area only when this page is not opend from the Extended POS if ($contextpage != 'poslist') { diff --git a/htdocs/compta/sociales/list.php b/htdocs/compta/sociales/list.php index 8d63e52256e..082a485f817 100644 --- a/htdocs/compta/sociales/list.php +++ b/htdocs/compta/sociales/list.php @@ -713,16 +713,35 @@ while ($i < min($num, $limit)) { $totalarray['nbfield']++; } - print ''; + print ''."\n"; + $i++; } // Show total line include DOL_DOCUMENT_ROOT.'/core/tpl/list_print_total.tpl.php'; -print ''; -print ''; -print ''; +// If no record found +if ($num == 0) { + $colspan = 1; + foreach ($arrayfields as $key => $val) { + if (!empty($val['checked'])) { + $colspan++; + } + } + print ''.$langs->trans("NoRecordFound").''; +} + +$db->free($resql); + +$parameters = array('arrayfields'=>$arrayfields, 'sql'=>$sql); +$reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters, $object); // Note that $action and $object may have been modified by hook +print $hookmanager->resPrint; + +print ''."\n"; +print ''."\n"; + +print ''."\n"; // End of page llxFooter(); diff --git a/htdocs/compta/tva/list.php b/htdocs/compta/tva/list.php index f1731420852..5f76b2e9190 100644 --- a/htdocs/compta/tva/list.php +++ b/htdocs/compta/tva/list.php @@ -190,8 +190,8 @@ $sql .= $db->order($sortfield, $sortorder); $nbtotalofrecords = ''; if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) { - $result = $db->query($sql); - $nbtotalofrecords = $db->num_rows($result); + $resql = $db->query($sql); + $nbtotalofrecords = $db->num_rows($resql); // if total resultset is smaller then paging size (filtering), goto and load page 0 if (($page * $limit) > $nbtotalofrecords) { @@ -202,15 +202,15 @@ if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) { $sql .= $db->plimit($limit + 1, $offset); -$result = $db->query($sql); -if (!$result) { +$resql = $db->query($sql); +if (!$resql) { dol_print_error($db); llxFooter(); $db->close(); exit; } -$num = $db->num_rows($result); +$num = $db->num_rows($resql); $param = ''; if (!empty($contextpage) && $contextpage != $_SERVER['PHP_SELF']) { @@ -429,7 +429,7 @@ print ''; $i = 0; $totalarray = array(); while ($i < min($num, $limit)) { - $obj = $db->fetch_object($result); + $obj = $db->fetch_object($resql); $tva_static->id = $obj->rowid; $tva_static->ref = $obj->rowid; @@ -549,11 +549,27 @@ $totalarray['nbfield']++; // Show total line include DOL_DOCUMENT_ROOT.'/core/tpl/list_print_total.tpl.php'; -print ''; -print ''; -print ''; +// If no record found +if ($num == 0) { + $colspan = 1; + foreach ($arrayfields as $key => $val) { + if (!empty($val['checked'])) { + $colspan++; + } + } + print ''.$langs->trans("NoRecordFound").''; +} -$db->free($result); +$db->free($resql); + +$parameters = array('arrayfields'=>$arrayfields, 'sql'=>$sql); +$reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters, $object); // Note that $action and $object may have been modified by hook +print $hookmanager->resPrint; + +print ''."\n"; +print ''."\n"; + +print ''."\n"; // End of page llxFooter(); diff --git a/htdocs/contact/consumption.php b/htdocs/contact/consumption.php index 631bf932640..02813cee469 100644 --- a/htdocs/contact/consumption.php +++ b/htdocs/contact/consumption.php @@ -355,7 +355,7 @@ if (empty($elementTypeArray) && !$object->thirdparty->client && !$object->thirdp // Define type of elements $typeElementString = $form->selectarray("type_element", $elementTypeArray, GETPOST('type_element'), $showempty, 0, 0, '', 0, 0, $disabled, '', 'maxwidth150onsmartphone'); -$button = ''; +$button = ''; $param = ''; $param .= "&sref=".urlencode($sref); diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php index 31b2153c2c8..93d61f8a903 100644 --- a/htdocs/contact/list.php +++ b/htdocs/contact/list.php @@ -1309,19 +1309,31 @@ while ($i < min($num, $limit)) { $i++; } +// Show total line +include DOL_DOCUMENT_ROOT.'/core/tpl/list_print_total.tpl.php'; + +// If no record found +if ($num == 0) { + $colspan = 1; + foreach ($arrayfields as $key => $val) { + if (!empty($val['checked'])) { + $colspan++; + } + } + print ''.$langs->trans("NoRecordFound").''; +} + $db->free($resql); $parameters = array('arrayfields'=>$arrayfields, 'sql'=>$sql); $reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters, $object, $action); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; -print ""; -print ""; - -//if ($num > $limit || $page) print_barre_liste('', $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_companies.png', 0, '', '', $limit, 1); - -print ''; +print ''."\n"; +print ''."\n"; +print ''."\n"; +// End of page llxFooter(); $db->close(); diff --git a/htdocs/modulebuilder/template/myobject_list.php b/htdocs/modulebuilder/template/myobject_list.php index 8771ad0f9b6..9638eb4ce7f 100644 --- a/htdocs/modulebuilder/template/myobject_list.php +++ b/htdocs/modulebuilder/template/myobject_list.php @@ -811,7 +811,7 @@ if ($num == 0) { $db->free($resql); $parameters = array('arrayfields'=>$arrayfields, 'sql'=>$sql); -$reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters, $object); // Note that $action and $object may have been modified by hook +$reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters, $object, $action); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; print ''."\n"; diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index 746b4dc0db0..e7b9e5097ea 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -863,9 +863,6 @@ $arrayofmassactions = array( // 'builddoc'=>img_picto('', 'pdf', 'class="pictofixedwidth"').$langs->trans("PDFMerge"), ); //if($user->rights->societe->creer) $arrayofmassactions['createbills']=$langs->trans("CreateInvoiceForThisCustomer"); -if ($user->rights->societe->supprimer) { - $arrayofmassactions['predelete'] = img_picto('', 'delete', 'class="pictofixedwidth"').$langs->trans("Delete"); -} if ($user->rights->societe->creer) { $arrayofmassactions['preaffecttag'] = img_picto('', 'category', 'class="pictofixedwidth"').$langs->trans("AffectTag"); } @@ -881,6 +878,9 @@ if ($user->rights->societe->creer) { if (GETPOST('nomassaction', 'int') || in_array($massaction, array('presend', 'predelete', 'preaffecttag', 'preenable', 'preclose'))) { $arrayofmassactions = array(); } +if ($user->rights->societe->supprimer) { + $arrayofmassactions['predelete'] = img_picto('', 'delete', 'class="pictofixedwidth"').$langs->trans("Delete"); +} $massactionbutton = $form->selectMassAction('', $arrayofmassactions); $typefilter = ''; From e3ff7b43ab699f4d1a6dbe9a1b001d372a7b12d2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 May 2022 11:39:55 +0200 Subject: [PATCH 050/248] Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop --- htdocs/accountancy/journal/sellsjournal.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/htdocs/accountancy/journal/sellsjournal.php b/htdocs/accountancy/journal/sellsjournal.php index a4cda49af64..426bc6d7795 100644 --- a/htdocs/accountancy/journal/sellsjournal.php +++ b/htdocs/accountancy/journal/sellsjournal.php @@ -422,6 +422,9 @@ if ($action == 'writebookkeeping') { if ($k == getDolGlobalString('ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT')) { $bookkeeping->subledger_account = $tabcompany[$key]['code_compta']; $bookkeeping->subledger_label = $tabcompany[$key]['name']; + } else { + $bookkeeping->subledger_account = ''; + $bookkeeping->subledger_label = ''; } } else { $bookkeeping->subledger_account = ''; From 7e94d53882ee35c99bf42182846a0b45a6842505 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 May 2022 11:51:39 +0200 Subject: [PATCH 051/248] Clean not used files --- build/makepack-dolibarr.pl | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/build/makepack-dolibarr.pl b/build/makepack-dolibarr.pl index 906601d94d4..b648bd7aff7 100755 --- a/build/makepack-dolibarr.pl +++ b/build/makepack-dolibarr.pl @@ -582,9 +582,7 @@ if ($nboftargetok) { $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/teclib*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/timesheet*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/webmail*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/themes/oblyon*`; - $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/themes/allscreen*`; - $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/theme/common/octicons/LICENSE`; + $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/theme/common/fontawesome-5/svgs`; # Removed other test files $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/public/test`; From 218749ead4cdb8093a2b0487be0d4450d925682a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 May 2022 11:52:22 +0200 Subject: [PATCH 052/248] Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop --- .../theme/common/weather/weather-clear-night.png | Bin 2276 -> 0 bytes htdocs/theme/common/weather/weather-clear.png | Bin 7439 -> 0 bytes .../common/weather/weather-clouds-night.png | Bin 4363 -> 0 bytes htdocs/theme/common/weather/weather-clouds.png | Bin 6267 -> 0 bytes .../common/weather/weather-few-clouds-night.png | Bin 2212 -> 0 bytes .../theme/common/weather/weather-few-clouds.png | Bin 5730 -> 0 bytes .../common/weather/weather-freezing-rain.png | Bin 5046 -> 0 bytes htdocs/theme/common/weather/weather-hail.png | Bin 5090 -> 0 bytes .../theme/common/weather/weather-many-clouds.png | Bin 4399 -> 0 bytes htdocs/theme/common/weather/weather-mist.png | Bin 1524 -> 0 bytes .../theme/common/weather/weather-showers-day.png | Bin 6954 -> 0 bytes .../common/weather/weather-showers-night.png | Bin 6123 -> 0 bytes .../weather/weather-showers-scattered-day.png | Bin 6317 -> 0 bytes .../weather/weather-showers-scattered-night.png | Bin 5171 -> 0 bytes .../common/weather/weather-showers-scattered.png | Bin 4937 -> 0 bytes htdocs/theme/common/weather/weather-showers.png | Bin 5138 -> 0 bytes .../theme/common/weather/weather-snow-rain.png | Bin 5406 -> 0 bytes .../weather/weather-snow-scattered-day.png | Bin 6823 -> 0 bytes .../weather/weather-snow-scattered-night.png | Bin 5583 -> 0 bytes .../common/weather/weather-snow-scattered.png | Bin 5038 -> 0 bytes htdocs/theme/common/weather/weather-snow.png | Bin 5332 -> 0 bytes .../theme/common/weather/weather-storm-day.png | Bin 7437 -> 0 bytes .../theme/common/weather/weather-storm-night.png | Bin 7471 -> 0 bytes htdocs/theme/common/weather/weather-storm.png | Bin 7261 -> 0 bytes 24 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 htdocs/theme/common/weather/weather-clear-night.png delete mode 100644 htdocs/theme/common/weather/weather-clear.png delete mode 100644 htdocs/theme/common/weather/weather-clouds-night.png delete mode 100644 htdocs/theme/common/weather/weather-clouds.png delete mode 100644 htdocs/theme/common/weather/weather-few-clouds-night.png delete mode 100644 htdocs/theme/common/weather/weather-few-clouds.png delete mode 100644 htdocs/theme/common/weather/weather-freezing-rain.png delete mode 100644 htdocs/theme/common/weather/weather-hail.png delete mode 100644 htdocs/theme/common/weather/weather-many-clouds.png delete mode 100644 htdocs/theme/common/weather/weather-mist.png delete mode 100644 htdocs/theme/common/weather/weather-showers-day.png delete mode 100644 htdocs/theme/common/weather/weather-showers-night.png delete mode 100644 htdocs/theme/common/weather/weather-showers-scattered-day.png delete mode 100644 htdocs/theme/common/weather/weather-showers-scattered-night.png delete mode 100644 htdocs/theme/common/weather/weather-showers-scattered.png delete mode 100644 htdocs/theme/common/weather/weather-showers.png delete mode 100644 htdocs/theme/common/weather/weather-snow-rain.png delete mode 100644 htdocs/theme/common/weather/weather-snow-scattered-day.png delete mode 100644 htdocs/theme/common/weather/weather-snow-scattered-night.png delete mode 100644 htdocs/theme/common/weather/weather-snow-scattered.png delete mode 100644 htdocs/theme/common/weather/weather-snow.png delete mode 100644 htdocs/theme/common/weather/weather-storm-day.png delete mode 100644 htdocs/theme/common/weather/weather-storm-night.png delete mode 100644 htdocs/theme/common/weather/weather-storm.png diff --git a/htdocs/theme/common/weather/weather-clear-night.png b/htdocs/theme/common/weather/weather-clear-night.png deleted file mode 100644 index f89b2ad8cada273150187dffce8aeae88aa91083..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2276 zcmVDgE0yw36#QR45dvp8emRp(IPtQNR*?KecbElxdV$G=m z&<5RKhOgXu@N(zBWb-_|)9kJ<(I#Wcv1$3U!S}!Wx$Y-!f7D4Ssmw_QQ1HV2Zu1rA z-F27KTxn<9#mB?PMOR8vQYwxl(+~gP2WeX*8Ond1krrtt53_Vw4E^=y_F4huNI3Y8!nT7X9zpNtHTLKp!x97?`AT)V@Q zKNuuJ*f;>%{r%6f=UwMHO{O4q8n}#zK?n{Zj?CC4Aj42$N%e|{! z{^oN2j`r@0cl_YhyHAtiQ7P>y%SfL$5sqF<^vaY8IRU3@nwLE6qWIQq z6hO}ZLHj*VY@RzHBLPYVtP@jG0wsn1GLRc0ERo=*j46pIsaRx3$GrI6J8kD3z_6ScOX!IHyDaOck`CWWtzVv6mr^FvlbU?Xm52?|Z_qg|iU=rT>+?c;Lij zRMI(+#S~WI^WS?u#KEQH2q^{23>nLYB}Vep*>R(XULN0W1OT&Md;i_StqBo14t>BO zCnZN1lw>T@W(k*=SmvyRl#p-;pMVOZJamkC=vo_RBLL2uw+FXaCBWqX70Z;Y$z*km z+#Zm#pEWXE3?)W>D5!)uV1kR~7&Qu9{{K7=zZ|}u6~K}Q@3~>vOUYI5KjW}mUSi3$ zFJC|F;qY^Y%+V$$qtL5U-6srLC1y=oaWJ=w8h^dyy}u^Fpiy3PiX(Lm1xIk0BcVY9 zkCK!cE-@2|qjt2+VHt76mG%**7RPBIYy*(IVQINWH?MYN{R~<)XsXaiJ8R%=5UanwW6eN1`^M0L4phjIO+l(xm;ZmNR|?4 zkTIZ1NrQPT2~9i|tHu8Q*m#tA)`7#l*#H>3MZ=QPW28{7oL>==Q86T?&jL96FcW}R1#y9;p`QrQu^&f|6M+PhWhW5d>|dJ9n1N>A{rZ>*mXeS;JT;^ap$5=-8WO;$EyeiilB+nV;efiKVIONWs53{0 zJ}&m>TcVi&43t;++_VUB@ilPvStX$W*)Ni}4ZeC}M=mh*@IV%AXm%cJOmo@ER$xQ~ zUzkg0lz{3=2ZL{=)M?SeW1>;Z(7`9BMGaR~&|()Iphl0Ow6?%lcFeFel|@(6QBs`w zBPKV@2(WEhf8R(=#G^rtruH@8qN|;>&DDU*k zr6;V)QZX5oLY#(q&Ok(s4lb66;`fIg7gtUxDFt8ztbIKtD$;m!nXDoG%D6Vp5fBMX7wWi5L*?JNLueBPuoopd6fYc)NQ~zkO6=_Ly}I z9t+ga01klmOGQp1%v^P1_2;q7&smLYcfZ0O3d05ggiu^#|J80Y*fSuYB;_c}twh1(G_mI_KOu_JPq0_M67Edt$rUq zW=ce&^t-sUG32Bq)Al`X^_F@>WlrP_Ngll6jGugtxy)`nEOYqusmq3y0>Mx_FDS8k z%?f3FVEesq@!@)WLT5-20^WD#pZTErUABikJQB5|CM{6vQ5F;&D^I|RZNC4k55Lk+ zgG}L1!dWtRf8(_mT7QUtnZBuE)M|H_#qB8jOIjWQRd~RgV$a9W7~(G_I|R@lsdR8^-t{Da~bc#-nqm7 z?=|L)hoP{ebi611arl+_k6r4Qt%zK~PtmzzgHyUmuu@xV4q892Pus=#qJs-hv)oO+ y%uyROr}}KU1u*Cjy`Vo7dc$jTZLZC=xqb};coKLhwc*160000 diff --git a/htdocs/theme/common/weather/weather-clear.png b/htdocs/theme/common/weather/weather-clear.png deleted file mode 100644 index ed1d48065f3fb3aee5b7d47cef6f0d869b6ccca7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7439 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 l$L+Wsx8ru)j@xlN{y+LoGz5R`r|zkH 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 UJ;M`Knu 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 M07*qoM6N<$f^50evj6}9 diff --git a/htdocs/theme/common/weather/weather-hail.png b/htdocs/theme/common/weather/weather-hail.png deleted file mode 100644 index 9df0bdc24d720eefffadef0e5bd4727de341b2db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5090 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 diff --git a/htdocs/theme/common/weather/weather-mist.png b/htdocs/theme/common/weather/weather-mist.png deleted file mode 100644 index a2b57a5e408e01d4324463b276d147fa6f97cf13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1524 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 diff --git a/htdocs/theme/common/weather/weather-showers-night.png b/htdocs/theme/common/weather/weather-showers-night.png deleted file mode 100644 index 1fff3febf5c3132287309a8eede8dd0e70c122be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6123 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 diff --git a/htdocs/theme/common/weather/weather-showers-scattered-day.png b/htdocs/theme/common/weather/weather-showers-scattered-day.png deleted file mode 100644 index ae098117351df526fee6029e0a03bad1359ac36e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6317 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 diff --git a/htdocs/theme/common/weather/weather-showers-scattered-night.png b/htdocs/theme/common/weather/weather-showers-scattered-night.png deleted file mode 100644 index ad0283a08db6c9ea96cae7dc4e6705e128b0e9ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5171 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 Hu0mjfn)^)Q diff --git a/htdocs/theme/common/weather/weather-showers.png b/htdocs/theme/common/weather/weather-showers.png deleted file mode 100644 index 38cd41f03b512a5199eadd727722dfb41c233914..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5138 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 A)Bpeg diff --git a/htdocs/theme/common/weather/weather-snow-rain.png b/htdocs/theme/common/weather/weather-snow-rain.png deleted file mode 100644 index dc742aa1c4c7872fa28f7b862f5d710bd44318b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5406 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 IM6N<$g78RZ!~g&Q diff --git a/htdocs/theme/common/weather/weather-snow-scattered-day.png b/htdocs/theme/common/weather/weather-snow-scattered-day.png deleted file mode 100644 index 0048fec3df022aee9473c8896c1b34e2aef75ba7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6823 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 VXn=*I4|D(k002ovPDHLkV1hQR51{}6 diff --git a/htdocs/theme/common/weather/weather-snow-scattered-night.png b/htdocs/theme/common/weather/weather-snow-scattered-night.png deleted file mode 100644 index d8b0ccaa7ff12a3b92460a113a497ab758135e84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5583 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 m7ylScFu?>9OfbO&6J7#*#BHSJbzbfO0000; z1CT6D)`p*xnWgTT?wRSiw)y{S+qUfut`%4_xPi581=hCt857^VW6yLCT2+;2t7{!t zd*6t(pZ7%azb@gQBz*|*1RzB=Pr~pvLLExwz!b_D&_KBea))0R&rvma3m${E19W>4-SG`nUiu#fKmoppa1f!3|(cXYlk;K0g5Q9{@n#0^A58#?Z!UU_+5GQXvu5L@7#$6+#e4 zDfM1SO^J(6p3`wgiq%<6!WTOJDlZ0+9XN0nlrKHiiI0N}w7i zAVY%IJd6lss;Mx9CsDznDj=B%JzyKyRHZ3GQ=ugyo3DLO54Zm{4~r_hp0~Qziq)sz zSX!L@z_DY8!yo_nM?ZZ3``!fgCP+eQDFzL3)q?V*xOpx zqwSU+%KD5eae@g9dAny_-i)iv*2c|5rN%VEk}8W|`{`&l?Vt6ah1KLqt7}bD2!JGs zGzuf__4{*`SYH3W_r3GImtA&Q6Y&3Z0A<*p!;oNAY>WwOsO~`63moiha(sEx-zsDO z*<{D{hvTuM64v%2)=|ns)@#vSpQN*VRWIMV+x7&MeH*)N5LrLQ>)`77g@`tCZr%ZVUX}3q~!nd-kC$65n z!o1+%;?lZMKHlcW2*x^+B#|hJM8rszroNx1Ad=UHl3qX6cyn|67a#h-Tkp5Bve?Wr z4V%r?9*~WUjF@J#DL@L~_#1Tg>{)sC(&^yr*IZbOn#1bGPKt?cFjC#xeY|mL#M1Pw z+|c!Jxa$UYv_WLBZW}2dU#3#3Wh$Xyz!{{P{ReB!5uhoXzd#y3sV-i0I%W{i*bF*X-5YMoPS9j+)5 z0R`_>0X5c=Wx0r$L0_?dSNr``)|wlxT1|AcUiZ!gGMGOzJNxEGKjQAscl;T8*ux%X zY;kJ6*dUJMppqoJE7j^Ps+G#U&z?JX$Ab27p64cxk|_5%0Aoks*fM42_y43?p377t~wpY#xN6L{W^h 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 From 419fd940252948802230b477cbdc85d3bebc097f Mon Sep 17 00:00:00 2001 From: lvessiller Date: Tue, 10 May 2022 12:08:23 +0200 Subject: [PATCH 053/248] NEW uncheck send message when private message is checked --- htdocs/core/class/html.formticket.class.php | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/htdocs/core/class/html.formticket.class.php b/htdocs/core/class/html.formticket.class.php index aba62587fa1..331fe542cb4 100644 --- a/htdocs/core/class/html.formticket.class.php +++ b/htdocs/core/class/html.formticket.class.php @@ -1208,19 +1208,37 @@ class FormTicket jQuery(document).ready(function() { send_email=' . $send_email.'; if (send_email) { + if (!jQuery("#send_msg_email").is(":checked")) { + jQuery("#send_msg_email").prop("checked", true).trigger("change"); + } jQuery(".email_line").show(); } else { + if (!jQuery("#private_message").is(":checked")) { + jQuery("#private_message").prop("checked", true).trigger("change"); + } jQuery(".email_line").hide(); } jQuery("#send_msg_email").click(function() { if(jQuery(this).is(":checked")) { + if (jQuery("#private_message").is(":checked")) { + jQuery("#private_message").prop("checked", false).trigger("change"); + } jQuery(".email_line").show(); } else { jQuery(".email_line").hide(); } - });'; + }); + + jQuery("#private_message").click(function() { + if (jQuery(this).is(":checked")) { + if (jQuery("#send_msg_email").is(":checked")) { + jQuery("#send_msg_email").prop("checked", false).trigger("change"); + } + jQuery(".email_line").hide(); + } + });'; print '}); '; From ed13280ea10d932419615a0bb64199354b078e28 Mon Sep 17 00:00:00 2001 From: lmarcouiller Date: Tue, 10 May 2022 12:15:52 +0200 Subject: [PATCH 054/248] fix bug in select boxes --- htdocs/imports/import.php | 163 ++++++++++++++++---------------- htdocs/langs/en_US/exports.lang | 1 + 2 files changed, 85 insertions(+), 79 deletions(-) diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php index a8fa3013ea2..d4b7ad4e4b6 100644 --- a/htdocs/imports/import.php +++ b/htdocs/imports/import.php @@ -35,8 +35,6 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/import.lib.php'; // Load translation files required by the page $langs->loadLangs(array('exports', 'compta', 'errors')); -$selectimport = true; - // Security check $result = restrictedArea($user, 'import'); @@ -321,54 +319,6 @@ if ($step == 4 && $action == 'select_model') { $_SESSION["dol_array_match_file_to_database"] = $serialized_array_match_file_to_database; } } - -if ($action == 'saveorder') { - // Enregistrement de la position des champs - dol_syslog("boxorder=".GETPOST('boxorder')." datatoimport=".GETPOST("datatoimport"), LOG_DEBUG); - $part = explode(':', GETPOST('boxorder')); - $colonne = $part[0]; - $list = $part[1]; - dol_syslog('column='.$colonne.' list='.$list); - - // Init targets fields array - $fieldstarget = $objimport->array_import_fields[0]; - - // Reinit match arrays. We redefine array_match_file_to_database - $serialized_array_match_file_to_database = ''; - $array_match_file_to_database = array(); - $fieldsarray = explode(',', $list); - $pos = 0; - foreach ($fieldsarray as $fieldnb) { // For each elem in list. fieldnb start from 1 to ... - // Get name of database fields at position $pos and put it into $namefield - $posbis = 0; $namefield = ''; - foreach ($fieldstarget as $key => $val) { // key: val: - //dol_syslog('AjaxImport key='.$key.' val='.$val); - if ($posbis < $pos) { - $posbis++; - continue; - } - // We found the key of targets that is at position pos - $namefield = $key; - //dol_syslog('AjaxImport Field name found for file field nb '.$fieldnb.'='.$namefield); - - break; - } - - if ($fieldnb && $namefield) { - $array_match_file_to_database[$fieldnb] = $namefield; - if ($serialized_array_match_file_to_database) { - $serialized_array_match_file_to_database .= ','; - } - $serialized_array_match_file_to_database .= ($fieldnb.'='.$namefield); - } - - $pos++; - } - - // We save new matching in session - $_SESSION["dol_array_match_file_to_database"] = $serialized_array_match_file_to_database; - dol_syslog('dol_array_match_file_to_database='.$serialized_array_match_file_to_database); -} if ($action == 'saveselectorder') { // Enregistrement de la position des champs $serialized_array_match_file_to_database = ''; @@ -793,7 +743,7 @@ if ($step == 3 && $datatoimport) { // STEP 4: Page to make matching between source file and database fields -if ($step == 4 && $datatoimport && $selectimport) { +if ($step == 4 && $datatoimport) { $serialized_array_match_file_to_database = isset($_SESSION["dol_array_match_file_to_database_select"]) ? $_SESSION["dol_array_match_file_to_database_select"] : ''; $array_match_file_to_database = array(); $fieldsarray = explode(',', $serialized_array_match_file_to_database); @@ -885,7 +835,8 @@ if ($step == 4 && $datatoimport && $selectimport) { $array_match_database_to_file = array_flip($array_match_file_to_database); $fieldstarget_tmp = array(); - + $arraykeysfieldtarget = array_keys($fieldstarget); + $position = 0; foreach ($fieldstarget as $key => $label) { $isrequired = preg_match('/\*$/', $label); if (!empty($isrequired)) { @@ -896,9 +847,27 @@ if ($step == 4 && $datatoimport && $selectimport) { } if (!empty($array_match_database_to_file[$key])) { $fieldstarget_tmp[$key]["imported"] = true; + $fieldstarget_tmp[$key]["position"] = $array_match_database_to_file[$key]-1; + $keytoswap = $key; + while (!empty($array_match_database_to_file[$keytoswap])) { + if ($position+1 > $array_match_database_to_file[$keytoswap]) { + $keytoswapwith = $array_match_database_to_file[$keytoswap]-1; + $tmp = [$keytoswap=>$fieldstarget_tmp[$keytoswap]]; + unset($fieldstarget_tmp[$keytoswap]); + $fieldstarget_tmp = arrayInsert($fieldstarget_tmp, $keytoswapwith, $tmp); + $keytoswapwith = $arraykeysfieldtarget[$array_match_database_to_file[$keytoswap]-1]; + $tmp = $fieldstarget_tmp[$keytoswapwith]; + unset($fieldstarget_tmp[$keytoswapwith]); + $fieldstarget_tmp[$keytoswapwith] = $tmp; + $keytoswap = $keytoswapwith; + } else { + break; + } + } } else { $fieldstarget_tmp[$key]["imported"] = false; } + $position++; } $fieldstarget = $fieldstarget_tmp; @@ -1144,7 +1113,6 @@ if ($step == 4 && $datatoimport && $selectimport) { print ''; print $optionsnotused; print ''; - //print ajax_combobox("select_".$newlabel); print ""; print ''; $filecolumn = !empty($array_match_database_to_file[$code])?$array_match_database_to_file[$code]:0; @@ -1210,7 +1178,7 @@ if ($step == 4 && $datatoimport && $selectimport) { print ''; // List of not imported fields - print ''.$langs->trans("NotImportedFields").''; + print ''.$langs->trans("NotUsedFields").''; print ''; @@ -1261,15 +1229,42 @@ if ($step == 4 && $datatoimport && $selectimport) { print '$(".targetselectchange").focus(function(){'."\n"; print 'previousselectedvalueimport = $(this).val();'."\n"; print 'previousselectedlabelimport = $(this).children("option:selected").text();'."\n"; + print 'console.log(previousselectedvalueimport)'."\n"; print '})'."\n"; print '$(".targetselectchange").change(function(){'."\n"; print 'if(previousselectedlabelimport != "" && previousselectedvalueimport != -1){'."\n"; - print '$(".targetselectchange").not($( this )).append(new Option(previousselectedlabelimport,previousselectedvalueimport));'."\n"; + print '$(".targetselectchange").not($(this)).append(new Option(previousselectedlabelimport,previousselectedvalueimport));'."\n"; + print 'let valuetochange = $(this).val(); '."\n"; + print '$(".boxtdunused").each(function(){'."\n"; + print 'if ($(this).text().includes(valuetochange)){'."\n"; + print 'arraychild = $(this)[0].childNodes'."\n"; + print 'arraytexttomodify = arraychild[0].textContent.split(" ")'."\n"; + print 'arraytexttomodify[1] = previousselectedvalueimport '."\n"; + print 'textmodified = arraytexttomodify.join(" ") '."\n"; + print 'arraychild[0].textContent = textmodified'."\n"; + print 'arraychild[1].innerHTML = previousselectedlabelimport'."\n"; + print '}'."\n"; + print '})'."\n"; print '}'."\n"; print 'if($( this ).val() != -1){'."\n"; print '$(".targetselectchange").not($( this )).find(\'option[value="\'+$( this ).val()+\'"]\').remove();'."\n"; - print '$(".targetselectchange").not($( this )).find(\'option[value="\'+$( this ).val()+\'"]\').remove();'."\n"; print '}'."\n"; + print '$(this).blur()'."\n"; + print 'arrayselectedfields = [];'."\n"; + print 'arrayselectedfields.push("0");'."\n"; + print '$(".targetselectchange").each(function(){'."\n"; + print 'value = $(this).val()'."\n"; + print 'arrayselectedfields.push(value);'."\n"; + print '});'."\n"; + print '$.ajax({'."\n"; + print 'type: "POST",'."\n"; + print 'dataType: "json",'."\n"; + print 'url: "'.$_SERVER["PHP_SELF"].'?action=saveselectorder",'."\n"; + print 'data: "selectorder="+arrayselectedfields.toString(),'."\n"; + print 'success: function(){'."\n"; + print 'console.log("Select order saved");'."\n"; + print '},'."\n"; + print '});'."\n"; print '});'."\n"; print '})'."\n"; print ''."\n"; @@ -1282,31 +1277,10 @@ if ($step == 4 && $datatoimport && $selectimport) { if (count($array_match_file_to_database)) { if ($mandatoryfieldshavesource) { - print ''.$langs->trans("NextStep").''; + print ''.$langs->trans("NextStep").''; } else { print ''.$langs->trans("NextStep").''; } - if ($conf->use_javascript_ajax) { - print ''."\n"; - } } print ''; @@ -2238,7 +2212,11 @@ function show_elem($fieldssource, $pos, $key, $var, $nostyle = '') // The image must have the class 'boxhandle' beause it's value used in DOM draggable objects to define the area used to catch the full object //print img_picto($langs->trans("MoveField", $pos), 'grip_title', 'class="boxhandle" style="cursor:move;"'); print ''; - print ''; + if (isset($fieldssource[$pos]['imported']) && $fieldssource[$pos]['imported'] == false) { + print ''; + } else { + print ''; + } print $langs->trans("Field").' '.$pos; if (empty($fieldssource[$pos]['example1'])) { $example = $fieldssource[$pos]['label']; @@ -2289,3 +2267,30 @@ function getnewkey(&$fieldssource, &$listofkey) $listofkey[$i] = 1; return $i; } +/** + * Return array with element inserted in it at position $position + * + * @param array $array Array of field source + * @param mixed $position key of postion to insert to + * @param array $insertArray Array to insert + * @return array + */ +function arrayInsert($array, $position, $insertArray) +{ + $ret = []; + + if ($position == count($array)) { + $ret = $array + $insertArray; + } else { + $i = 0; + foreach ($array as $key => $value) { + if ($position == $i++) { + $ret += $insertArray; + } + + $ret[$key] = $value; + } + } + + return $ret; +} diff --git a/htdocs/langs/en_US/exports.lang b/htdocs/langs/en_US/exports.lang index a20741472b7..44cb98d3679 100644 --- a/htdocs/langs/en_US/exports.lang +++ b/htdocs/langs/en_US/exports.lang @@ -136,3 +136,4 @@ NbUpdate=Number of updated lines: %s MultipleRecordFoundWithTheseFilters=Multiple records have been found with these filters: %s StocksWithBatch=Stocks and location (warehouse) of products with batch/serial number WarningFirstImportedLine=The first line(s) will not be imported with the current selection +NotUsedFields=Fields of database not used \ No newline at end of file From 6f8eef9550fd9c886b7f8229cd98f29ef62e19d0 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Tue, 10 May 2022 12:56:22 +0200 Subject: [PATCH 055/248] FIX missing executeHooks --- htdocs/install/upgrade2.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php index cda8fc0bc13..f7a97c8af82 100644 --- a/htdocs/install/upgrade2.php +++ b/htdocs/install/upgrade2.php @@ -173,7 +173,12 @@ if (!GETPOST('action', 'aZ09') || preg_match('/upgrade/i', GETPOST('action', 'aZ // Create the global $hookmanager object include_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php'; $hookmanager = new HookManager($db); - $reshook = $hookmanager->initHooks(array('doUpgradeBefore')); + $hookmanager->initHooks(array('upgrade2')); + + $parameters = array('versionfrom' => $versionfrom, 'versionto' => $versionto); + $object = new stdClass(); + $action = "upgrade"; + $reshook = $hookmanager->executeHooks('doUpgradeBefore', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks if ($reshook >= 0 && is_array($hookmanager->resArray)) { // Example: $hookmanager->resArray = array(2, 3, 10); $listofentities = array_unique(array_merge($listofentities, $hookmanager->resArray)); From 8692038be2c48980ea19191998843cdf1df76440 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Tue, 10 May 2022 14:03:09 +0200 Subject: [PATCH 056/248] FIX missing loading of global conf --- htdocs/install/upgrade2.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php index cda8fc0bc13..1818a1bc327 100644 --- a/htdocs/install/upgrade2.php +++ b/htdocs/install/upgrade2.php @@ -167,6 +167,9 @@ if (!GETPOST('action', 'aZ09') || preg_match('/upgrade/i', GETPOST('action', 'aZ } $conf->db->dolibarr_main_db_cryptkey = $dolibarr_main_db_cryptkey; + // Load global conf + $conf->setValues($db); + $listofentities = array(1); @@ -4616,7 +4619,7 @@ function migrate_user_photospath2() if ($entity > 1) { $dir = DOL_DATA_ROOT.'/'.$entity.'/users'; } else { - $dir = $conf->user->multidir_output[$entity]; // $conf->user->multidir_output[] for each entity is construct by the multicompany module + $dir = DOL_DATA_ROOT.'/users'; } if ($dir) { From 91d539bbefc24f2c8693887a05b014ce6d51e2cb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 May 2022 14:38:40 +0200 Subject: [PATCH 057/248] Clean code of not used method --- htdocs/core/class/cunits.class.php | 30 ++++++++++++------- htdocs/core/class/validate.class.php | 15 ++++++---- .../class/ProductCombination.class.php | 25 ++++++++++------ 3 files changed, 44 insertions(+), 26 deletions(-) diff --git a/htdocs/core/class/cunits.class.php b/htdocs/core/class/cunits.class.php index d7571b8ca90..dfc22fd37ec 100644 --- a/htdocs/core/class/cunits.class.php +++ b/htdocs/core/class/cunits.class.php @@ -463,22 +463,30 @@ class CUnits // extends CommonObject } /** - * get scale of unit factor - * @param int $id id of unit in dictionary - * @return float|int + * Get scale of unit factor + * + * @param int $id Id of unit in dictionary + * @return float|int Scale of unit */ public function scaleOfUnitPow($id) { $base = 10; - // TODO : add base col into unit dictionary table - $unit = $this->db->getRow("SELECT scale, unit_type from ".$this->db->prefix()."c_units WHERE rowid = ".intval($id)); - if ($unit) { - // TODO : if base exist in unit dictionary table remove this convertion exception and update convertion infos in database exemple time hour currently scale 3600 will become scale 2 base 60 - if ($unit->unit_type == 'time') { - return floatval($unit->scale); - } - return pow($base, floatval($unit->scale)); + $sql = "SELECT scale, unit_type FROM ".$this->db->prefix()."c_units WHERE rowid = ".((int) $id); + + $resql = $this->db->query($sql); + if ($resql) { + // TODO : add base col into unit dictionary table + $unit = $this->db->fetch_object($sql); + if ($unit) { + // TODO : if base exists in unit dictionary table, remove this convertion exception and update convertion infos in database. + // Example time hour currently scale 3600 will become scale 2 base 60 + if ($unit->unit_type == 'time') { + return floatval($unit->scale); + } + + return pow($base, floatval($unit->scale)); + } } return 0; diff --git a/htdocs/core/class/validate.class.php b/htdocs/core/class/validate.class.php index d3aa5707c05..ac4c14f7937 100644 --- a/htdocs/core/class/validate.class.php +++ b/htdocs/core/class/validate.class.php @@ -281,14 +281,17 @@ class Validate } foreach ($value_arr as $val) { - $sql = "SELECT ".$col." FROM ".$this->db->prefix().$table." WHERE ".$col." = '".$this->db->escape($val)."'"; // nore quick than count(*) to check existing of a row - $resql = $this->db->getRow($sql); + $sql = "SELECT ".$col." FROM ".$this->db->prefix().$table." WHERE ".$col." = '".$this->db->escape($val)."' LIMIT 1"; // more quick than count(*) to check existing of a row + $resql = $this->db->query($sql); if ($resql) { - continue; - } else { - $this->error = $this->outputLang->trans('RequireValidExistingElement'); - return false; + $obj = $this->db->fetch_object($resql); + if ($obj) { + continue; + } } + // If something was wrong + $this->error = $this->outputLang->trans('RequireValidExistingElement'); + return false; } return true; diff --git a/htdocs/variants/class/ProductCombination.class.php b/htdocs/variants/class/ProductCombination.class.php index 2de511811a7..63e721c0d37 100644 --- a/htdocs/variants/class/ProductCombination.class.php +++ b/htdocs/variants/class/ProductCombination.class.php @@ -1057,12 +1057,16 @@ class ProductCombinationLevel */ public function fetch($rowid) { - $sql = "SELECT rowid, fk_product_attribute_combination, fk_price_level, variation_price, variation_price_percentage FROM ".MAIN_DB_PREFIX.$this->table_element." WHERE rowid = ".(int) $rowid; + $sql = "SELECT rowid, fk_product_attribute_combination, fk_price_level, variation_price, variation_price_percentage"; + $sql .= " FROM ".MAIN_DB_PREFIX.$this->table_element; + $sql .= " WHERE rowid = ".(int) $rowid; - $obj = $this->db->getRow($sql); - - if ($obj) { - return $this->fetchFormObj($obj); + $resql = $this->db->query($sql); + if ($resql) { + $obj = $this->db->fetch_object($resql); + if ($obj) { + return $this->fetchFormObj($obj); + } } return -1; @@ -1141,11 +1145,14 @@ class ProductCombinationLevel $sql = "SELECT rowid id"; $sql .= " FROM ".MAIN_DB_PREFIX.$this->table_element; $sql .= " WHERE fk_product_attribute_combination = ".(int) $this->fk_product_attribute_combination; - $sql .= ' AND fk_price_level = '.intval($this->fk_price_level); + $sql .= ' AND fk_price_level = '.((int) $this->fk_price_level); - $existObj = $this->db->getRow($sql); - if ($existObj) { - $this->id = $existObj->id; + $resql = $this->db->query($sql); + if ($resql) { + $obj = $this->db->fetch_object($resql); + if ($obj) { + $this->id = $obj->id; + } } } From 8ef75ecc7c1dd5f47e59c7af5f676cf2870e8ff3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 May 2022 15:27:43 +0200 Subject: [PATCH 058/248] Better fix fox #20807 --- htdocs/compta/bank/line.php | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/htdocs/compta/bank/line.php b/htdocs/compta/bank/line.php index d1750a0bb94..90a35b30c86 100644 --- a/htdocs/compta/bank/line.php +++ b/htdocs/compta/bank/line.php @@ -52,11 +52,12 @@ if (!empty($conf->salaries->enabled)) { $id = GETPOST('rowid', 'int'); -$accountid = (GETPOST('id', 'int') ? GETPOST('id', 'int') : GETPOST('account', 'int')); +$rowid = GETPOST("rowid", 'int'); +$accountoldid = GETPOST('account', 'int'); // GETPOST('account') is old account id +$accountid = GETPOST('accountid', 'int'); // GETPOST('accountid') is new account id $ref = GETPOST('ref', 'alpha'); $action = GETPOST('action', 'aZ09'); $confirm = GETPOST('confirm', 'alpha'); -$rowid = GETPOST("rowid", 'int'); $orig_account = GETPOST("orig_account"); $backtopage = GETPOST('backtopage', 'alpha'); $cancel = GETPOST('cancel', 'alpha'); @@ -68,7 +69,7 @@ if ($user->socid) { $socid = $user->socid; } -$result = restrictedArea($user, 'banque', $accountid, 'bank_account'); +$result = restrictedArea($user, 'banque', $accountoldid, 'bank_account'); if (!$user->rights->banque->lire && !$user->rights->banque->consolidate) { accessforbidden(); } @@ -126,15 +127,19 @@ if ($user->rights->banque->modifier && $action == "update") { $acline->fetch($rowid); $acsource = new Account($db); - $acsource->fetch($id); + $acsource->fetch($accountoldid); $actarget = new Account($db); if (GETPOST('accountid', 'int') > 0 && !$acline->rappro && !$acline->getVentilExportCompta()) { // We ask to change bank account $actarget->fetch(GETPOST('accountid', 'int')); } else { - $actarget->fetch($id); + $actarget->fetch($accountoldid); } + if (!($actarget->id > 0)) { + setEventMessages($langs->trans("ErrorFailedToLoadBankAccount"), null, 'errors'); + $error++; + } if ($actarget->courant == Account::TYPE_CASH && GETPOST('value', 'alpha') != 'LIQ') { setEventMessages($langs->trans("ErrorCashAccountAcceptsOnlyCashMoney"), null, 'errors'); $error++; @@ -228,7 +233,7 @@ if ($user->rights->banque->consolidate && ($action == 'num_releve' || $action == $db->begin(); $sql = "UPDATE ".MAIN_DB_PREFIX."bank"; - $sql .= " SET num_releve=".($num_rel ? "'".$db->escape($num_rel)."'" : "null"); + $sql .= " SET num_releve = ".($num_rel ? "'".$db->escape($num_rel)."'" : "null"); if (empty($num_rel)) { $sql .= ", rappro = 0"; } else { @@ -302,7 +307,6 @@ if ($result) { print ''; print ''; print ''; - print ''; print dol_get_fiche_head($head, 'bankline', $langs->trans('LineRecord'), 0, 'accountline', 0); @@ -607,11 +611,7 @@ if ($result) { print dol_get_fiche_end(); - if (!$objp->rappro) { - print '

    '; - } else { - print '

    '; - } + print '

    '; print ""; From f28dd2827bbbbddef81e2eead50cad2efd86f8c3 Mon Sep 17 00:00:00 2001 From: kevin Date: Tue, 10 May 2022 15:41:38 +0200 Subject: [PATCH 059/248] Update Ticket::setProject method signature --- htdocs/ticket/class/ticket.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php index d63fa68dbfb..2d517be8ef0 100644 --- a/htdocs/ticket/class/ticket.class.php +++ b/htdocs/ticket/class/ticket.class.php @@ -2020,7 +2020,7 @@ class Ticket extends CommonObject * @param int $projectid Project id to link element to * @return int <0 if KO, >0 if OK */ - public function setProject($projectid) + public function setProject($projectid, $notrigger = 0) { if (!$this->table_element) { dol_syslog(get_class($this)."::setProject was called on objet with property table_element not defined", LOG_ERR); From a10e8c369656795d4ffe700e6ee070235c0cb65d Mon Sep 17 00:00:00 2001 From: kevin Date: Tue, 10 May 2022 15:44:41 +0200 Subject: [PATCH 060/248] Remove method Ticket::setProject because method already defined into parent CommonObject --- htdocs/ticket/class/ticket.class.php | 32 ---------------------------- 1 file changed, 32 deletions(-) diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php index 2d517be8ef0..72ec8625e0e 100644 --- a/htdocs/ticket/class/ticket.class.php +++ b/htdocs/ticket/class/ticket.class.php @@ -2013,38 +2013,6 @@ class Ticket extends CommonObject } } - /** - * Link element with a project - * Override core function because of key name 'fk_project' used for this module - * - * @param int $projectid Project id to link element to - * @return int <0 if KO, >0 if OK - */ - public function setProject($projectid, $notrigger = 0) - { - if (!$this->table_element) { - dol_syslog(get_class($this)."::setProject was called on objet with property table_element not defined", LOG_ERR); - return -1; - } - - $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; - if ($projectid) { - $sql .= ' SET fk_project = '.((int) $projectid); - } else { - $sql .= ' SET fk_project = NULL'; - } - $sql .= ' WHERE rowid = '.((int) $this->id); - - dol_syslog(get_class($this)."::setProject sql=".$sql); - if ($this->db->query($sql)) { - $this->fk_project = ((int) $projectid); - return 1; - } else { - dol_print_error($this->db); - return -1; - } - } - /** * Link element with a contract * From 7e439a824848546a539229f3fd19de4e5fabcf1d Mon Sep 17 00:00:00 2001 From: lmarcouiller Date: Tue, 10 May 2022 15:50:01 +0200 Subject: [PATCH 061/248] add of selectimportfieldsource in lang --- htdocs/imports/import.php | 8 +++++--- htdocs/langs/en_US/exports.lang | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php index d4b7ad4e4b6..15d83cfe8e7 100644 --- a/htdocs/imports/import.php +++ b/htdocs/imports/import.php @@ -791,8 +791,10 @@ if ($step == 4 && $datatoimport) { // Put into array fieldssource starting with 1. $i = 1; foreach ($arrayrecord as $key => $val) { - $fieldssource[$i]['example1'] = dol_trunc($val['val'], 24); - $i++; + if ($val["type"] != -1) { + $fieldssource[$i]['example1'] = dol_trunc($val['val'], 24); + $i++; + } } $obj->import_close_file(); } @@ -994,7 +996,7 @@ if ($step == 4 && $datatoimport) { print '
    '; print ''; - $s = $langs->trans("SelectImportFields", '{s1}'); + $s = $langs->trans("SelectImportFieldsSource", '{s1}'); $s = str_replace('{s1}', img_picto('', 'grip_title', '', false, 0, 0, '', '', 0), $s); print $s; print ' '; diff --git a/htdocs/langs/en_US/exports.lang b/htdocs/langs/en_US/exports.lang index 44cb98d3679..e7ac91e5722 100644 --- a/htdocs/langs/en_US/exports.lang +++ b/htdocs/langs/en_US/exports.lang @@ -136,4 +136,5 @@ NbUpdate=Number of updated lines: %s MultipleRecordFoundWithTheseFilters=Multiple records have been found with these filters: %s StocksWithBatch=Stocks and location (warehouse) of products with batch/serial number WarningFirstImportedLine=The first line(s) will not be imported with the current selection -NotUsedFields=Fields of database not used \ No newline at end of file +NotUsedFields=Fields of database not used +SelectImportFieldsSource = Choose the source file fields you want to import and their target field in database by choosing the fields in each select boxes, or select a predefined import profile: From fea6771a7a883bbcd64a8e87656ddaec8389ee62 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 May 2022 15:57:52 +0200 Subject: [PATCH 062/248] Module Partnership is stable --- htdocs/core/modules/modPartnership.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/modPartnership.class.php b/htdocs/core/modules/modPartnership.class.php index f37d7d2403d..8ebbd3029b7 100644 --- a/htdocs/core/modules/modPartnership.class.php +++ b/htdocs/core/modules/modPartnership.class.php @@ -75,7 +75,7 @@ class modPartnership extends DolibarrModules // $this->editor_url = 'https://www.example.com'; // Possible values for version are: 'development', 'experimental', 'dolibarr', 'dolibarr_deprecated' or a version string like 'x.y.z' - $this->version = 'experimental'; + $this->version = 'dolibarr'; // Url to the file with your last numberversion of this module //$this->url_last_version = 'http://www.example.com/versionmodule.txt'; From c9a0dd327f8e2886329a56421759f119a7d5d09b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 May 2022 16:04:20 +0200 Subject: [PATCH 063/248] Fix default value --- htdocs/core/lib/company.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index 4bf8a0e7219..e98a25ddbee 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -271,7 +271,7 @@ function societe_prepare_head(Societe $object) $h++; } - if (getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR') == 'thirdparty') { + if (getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR', 'thirdparty') == 'thirdparty') { if (!empty($user->rights->partnership->read)) { $langs->load("partnership"); $nbPartnership = is_array($object->partnerships) ? count($object->partnerships) : 0; From 3a5fe5063d4d2514d5c6acccb0b673cb71b5773f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 May 2022 16:19:00 +0200 Subject: [PATCH 064/248] Debug v16 --- htdocs/adherents/partnership.php | 17 ++++++++++++----- htdocs/core/actions_massactions.inc.php | 6 +++--- htdocs/core/lib/company.lib.php | 2 +- htdocs/core/modules/modPartnership.class.php | 3 +-- htdocs/core/tpl/card_presend.tpl.php | 2 +- htdocs/core/tpl/massactions_pre.tpl.php | 2 +- htdocs/partnership/admin/setup.php | 6 +++--- htdocs/partnership/class/partnership.class.php | 2 +- .../class/partnershiputils.class.php | 4 ++-- htdocs/partnership/partnership_card.php | 2 +- htdocs/partnership/partnership_list.php | 2 +- htdocs/public/partnership/new.php | 4 ++-- htdocs/societe/partnership.php | 6 +++--- 13 files changed, 32 insertions(+), 26 deletions(-) diff --git a/htdocs/adherents/partnership.php b/htdocs/adherents/partnership.php index 160a037c187..a01e7d28ed2 100644 --- a/htdocs/adherents/partnership.php +++ b/htdocs/adherents/partnership.php @@ -85,11 +85,18 @@ $usercanclose = $user->rights->partnership->write; // Used by the include of $upload_dir = $conf->partnership->multidir_output[isset($object->entity) ? $object->entity : 1]; -if ($conf->global->PARTNERSHIP_IS_MANAGED_FOR != 'member') accessforbidden(); -if (empty($conf->partnership->enabled)) accessforbidden(); -if (empty($permissiontoread)) accessforbidden(); -if ($action == 'edit' && empty($permissiontoadd)) accessforbidden(); - +if (getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR') != 'member') { + accessforbidden('Partnership module is not activated for members'); +} +if (empty($conf->partnership->enabled)) { + accessforbidden(); +} +if (empty($permissiontoread)) { + accessforbidden(); +} +if ($action == 'edit' && empty($permissiontoadd)) { + accessforbidden(); +} if (($action == 'update' || $action == 'edit') && $object->status != $object::STATUS_DRAFT) { accessforbidden(); } diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php index 383684b377a..b94655fbc14 100644 --- a/htdocs/core/actions_massactions.inc.php +++ b/htdocs/core/actions_massactions.inc.php @@ -90,7 +90,7 @@ if (!$error && $massaction == 'confirm_presend') { if ($objecttmp->element == 'expensereport') { $thirdparty = new User($db); } - if ($objecttmp->element == 'partnership' && $conf->global->PARTNERSHIP_IS_MANAGED_FOR == 'member') { + if ($objecttmp->element == 'partnership' && getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR') == 'member') { $thirdparty = new Adherent($db); } if ($objecttmp->element == 'holiday') { @@ -110,7 +110,7 @@ if (!$error && $massaction == 'confirm_presend') { if ($objecttmp->element == 'expensereport') { $thirdpartyid = $objecttmp->fk_user_author; } - if ($objecttmp->element == 'partnership' && $conf->global->PARTNERSHIP_IS_MANAGED_FOR == 'member') { + if ($objecttmp->element == 'partnership' && getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR') == 'member') { $thirdpartyid = $objecttmp->fk_member; } if ($objecttmp->element == 'holiday') { @@ -264,7 +264,7 @@ if (!$error && $massaction == 'confirm_presend') { $fuser = new User($db); $fuser->fetch($objectobj->fk_user_author); $sendto = $fuser->email; - } elseif ($objectobj->element == 'partnership' && $conf->global->PARTNERSHIP_IS_MANAGED_FOR == 'member') { + } elseif ($objectobj->element == 'partnership' && getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR') == 'member') { $fadherent = new Adherent($db); $fadherent->fetch($objectobj->fk_member); $sendto = $fadherent->email; diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index 197a6c95687..4938d20c3c4 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -263,7 +263,7 @@ function societe_prepare_head(Societe $object) $h++; } - if (getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR') == 'thirdparty') { + if (getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR', 'thirdparty') == 'thirdparty') { if (!empty($user->rights->partnership->read)) { $langs->load("partnership"); $nbPartnership = is_array($object->partnerships) ? count($object->partnerships) : 0; diff --git a/htdocs/core/modules/modPartnership.class.php b/htdocs/core/modules/modPartnership.class.php index 8ebbd3029b7..13877c7418f 100644 --- a/htdocs/core/modules/modPartnership.class.php +++ b/htdocs/core/modules/modPartnership.class.php @@ -177,8 +177,7 @@ class modPartnership extends DolibarrModules // Array to add new pages in new tabs $this->tabs = array(); - $tabtoadd = (!empty(getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR')) && getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR') == 'member') ? 'member' : 'thirdparty'; - + $tabtoadd = getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR', 'thirdparty'); if ($tabtoadd == 'member') { $fk_mainmenu = "members"; } else { diff --git a/htdocs/core/tpl/card_presend.tpl.php b/htdocs/core/tpl/card_presend.tpl.php index 83f96c1bcb1..0c744e165d3 100644 --- a/htdocs/core/tpl/card_presend.tpl.php +++ b/htdocs/core/tpl/card_presend.tpl.php @@ -152,7 +152,7 @@ if ($action == 'presend') { $fuser = new User($db); $fuser->fetch($object->fk_user_author); $liste['thirdparty'] = $fuser->getFullName($outputlangs)." <".$fuser->email.">"; - } elseif ($object->element == 'partnership' && $conf->global->PARTNERSHIP_IS_MANAGED_FOR == 'member') { + } elseif ($object->element == 'partnership' && getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR') == 'member') { $fadherent = new Adherent($db); $fadherent->fetch($object->fk_member); $liste['member'] = $fadherent->getFullName($outputlangs)." <".$fadherent->email.">"; diff --git a/htdocs/core/tpl/massactions_pre.tpl.php b/htdocs/core/tpl/massactions_pre.tpl.php index 207dc1b7265..678bf219bef 100644 --- a/htdocs/core/tpl/massactions_pre.tpl.php +++ b/htdocs/core/tpl/massactions_pre.tpl.php @@ -131,7 +131,7 @@ if ($massaction == 'presend') { $fuser = new User($db); $fuser->fetch($thirdpartyid); $liste['thirdparty'] = $fuser->getFullName($langs)." <".$fuser->email.">"; - } elseif ($objecttmp->element == 'partnership' && $conf->global->PARTNERSHIP_IS_MANAGED_FOR == 'member') { + } elseif ($objecttmp->element == 'partnership' && getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR') == 'member') { $fadherent = new Adherent($db); $fadherent->fetch($objecttmp->fk_member); $liste['member'] = $fadherent->getFullName($langs)." <".$fadherent->email.">"; diff --git a/htdocs/partnership/admin/setup.php b/htdocs/partnership/admin/setup.php index 100dc7027a3..a398a6860b1 100644 --- a/htdocs/partnership/admin/setup.php +++ b/htdocs/partnership/admin/setup.php @@ -124,8 +124,8 @@ print ''; print ''.$langs->trans("PARTNERSHIP_IS_MANAGED_FOR").''; print ''; print ''; print ajax_combobox('select_PARTNERSHIP_IS_MANAGED_FOR'); print ''; @@ -133,7 +133,7 @@ print ''.$langs->trans("partnershipforthirdparty print ''; -//if (!empty($conf->global->PARTNERSHIP_IS_MANAGED_FOR) && $conf->global->PARTNERSHIP_IS_MANAGED_FOR == 'member') { +//if (getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR') == 'member') { print ''.$langs->trans("PARTNERSHIP_NBDAYS_AFTER_MEMBER_EXPIRATION_BEFORE_CANCEL").''; print ''; $dnbdays = '30'; diff --git a/htdocs/partnership/class/partnership.class.php b/htdocs/partnership/class/partnership.class.php index 7d7d6a65d14..030cbf09e79 100644 --- a/htdocs/partnership/class/partnership.class.php +++ b/htdocs/partnership/class/partnership.class.php @@ -199,7 +199,7 @@ class Partnership extends CommonObject $this->db = $db; - if (!empty($conf->global->PARTNERSHIP_IS_MANAGED_FOR) && $conf->global->PARTNERSHIP_IS_MANAGED_FOR == 'member') { + if (!empty($conf->global->PARTNERSHIP_IS_MANAGED_FOR) && getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR') == 'member') { $this->fields['fk_member'] = array('type'=>'integer:Adherent:adherents/class/adherent.class.php:1', 'label'=>'Member', 'enabled'=>'1', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'picto'=>'member', 'csslist'=>'tdoverflowmax150'); } else { $this->fields['fk_soc'] = array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'ThirdParty', 'enabled'=>'1', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'picto'=>'company', 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax150'); diff --git a/htdocs/partnership/class/partnershiputils.class.php b/htdocs/partnership/class/partnershiputils.class.php index ef4f7cfdeb4..9ad2e5b7ca2 100644 --- a/htdocs/partnership/class/partnershiputils.class.php +++ b/htdocs/partnership/class/partnershiputils.class.php @@ -64,7 +64,7 @@ class PartnershipUtils { global $conf, $langs, $user; - $managedfor = empty($conf->global->PARTNERSHIP_IS_MANAGED_FOR) ? 'thirdparty' : $conf->global->PARTNERSHIP_IS_MANAGED_FOR; + $managedfor = getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR', 'thirdparty'); if ($managedfor != 'member') { return 0; // If option 'PARTNERSHIP_IS_MANAGED_FOR' = 'thirdparty', this cron job does nothing. @@ -219,7 +219,7 @@ class PartnershipUtils { global $conf, $langs, $user; - $managedfor = $conf->global->PARTNERSHIP_IS_MANAGED_FOR; + $managedfor = getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR'); $partnership = new Partnership($this->db); $MAXPERCALL = (empty($conf->global->PARTNERSHIP_MAX_WARNING_BACKLINK_PER_CALL) ? 10 : $conf->global->PARTNERSHIP_MAX_WARNING_BACKLINK_PER_CALL); // Limit to 10 per call diff --git a/htdocs/partnership/partnership_card.php b/htdocs/partnership/partnership_card.php index c83a83e6357..9752651ef29 100644 --- a/htdocs/partnership/partnership_card.php +++ b/htdocs/partnership/partnership_card.php @@ -79,7 +79,7 @@ $permissiontodelete = $user->rights->partnership->delete || ($permissiontoadd & $permissionnote = $user->rights->partnership->write; // Used by the include of actions_setnotes.inc.php $permissiondellink = $user->rights->partnership->write; // Used by the include of actions_dellink.inc.php $upload_dir = $conf->partnership->multidir_output[isset($object->entity) ? $object->entity : 1]; -$managedfor = empty($conf->global->PARTNERSHIP_IS_MANAGED_FOR) ? 'thirdparty' : $conf->global->PARTNERSHIP_IS_MANAGED_FOR; +$managedfor = getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR', 'thirdparty'); if (empty($conf->partnership->enabled)) accessforbidden(); if (empty($permissiontoread)) accessforbidden(); diff --git a/htdocs/partnership/partnership_list.php b/htdocs/partnership/partnership_list.php index 42d4354516e..014d576f5d6 100644 --- a/htdocs/partnership/partnership_list.php +++ b/htdocs/partnership/partnership_list.php @@ -74,7 +74,7 @@ $extrafields->fetch_name_optionals_label($object->table_element); $search_array_options = $extrafields->getOptionalsFromPost($object->table_element, '', 'search_'); -$managedfor = empty($conf->global->PARTNERSHIP_IS_MANAGED_FOR) ? 'thirdparty' : $conf->global->PARTNERSHIP_IS_MANAGED_FOR; +$managedfor = getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR', 'thirdparty'); if ($managedfor != 'member' && $sortfield == 'd.datefin') $sortfield = ''; diff --git a/htdocs/public/partnership/new.php b/htdocs/public/partnership/new.php index fe57f4ea424..d7ee25613a8 100644 --- a/htdocs/public/partnership/new.php +++ b/htdocs/public/partnership/new.php @@ -204,9 +204,9 @@ if (empty($reshook) && $action == 'add') { $partnership = new Partnership($db); // We try to find the thirdparty or the member - if (empty($conf->global->PARTNERSHIP_IS_MANAGED_FOR) || $conf->global->PARTNERSHIP_IS_MANAGED_FOR == 'thirdparty') { + if (getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR', 'thirdparty') == 'thirdparty') { $partnership->fk_member = 0; - } elseif ($conf->global->PARTNERSHIP_IS_MANAGED_FOR == 'member') { + } elseif (getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR', 'thirdparty') == 'member') { $partnership->fk_soc = 0; } diff --git a/htdocs/societe/partnership.php b/htdocs/societe/partnership.php index 2ce4884932e..05079d263a9 100644 --- a/htdocs/societe/partnership.php +++ b/htdocs/societe/partnership.php @@ -52,7 +52,7 @@ if (!empty($user->socid)) { $socid = $user->socid; } -if (empty($id) && $socid && (empty($conf->global->PARTNERSHIP_IS_MANAGED_FOR) || $conf->global->PARTNERSHIP_IS_MANAGED_FOR == 'thirdparty')) { +if (empty($id) && $socid && (getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR', 'thirdparty') == 'thirdparty')) { $id = $socid; } @@ -94,8 +94,8 @@ $usercanclose = $user->rights->partnership->write; // Used by the include of act $upload_dir = $conf->partnership->multidir_output[isset($object->entity) ? $object->entity : 1]; -if (!empty($conf->global->PARTNERSHIP_IS_MANAGED_FOR) && $conf->global->PARTNERSHIP_IS_MANAGED_FOR != 'thirdparty') { - accessforbidden(); +if (getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR', 'thirdparty') != 'thirdparty') { + accessforbidden('Partnership is not activated for thirdparties'); } if (empty($conf->partnership->enabled)) { accessforbidden(); From 1f59e329cd20eb246497877327deba9c3dbc6e28 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 May 2022 16:50:33 +0200 Subject: [PATCH 065/248] Work on public form for partnership --- htdocs/core/class/html.form.class.php | 4 +- htdocs/langs/en_US/partnership.lang | 16 +++---- htdocs/partnership/admin/website.php | 39 +++++----------- .../partnership/class/partnership.class.php | 2 +- htdocs/partnership/lib/partnership.lib.php | 2 +- htdocs/public/partnership/new.php | 44 +++++++------------ 6 files changed, 41 insertions(+), 66 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 0feb7e6519d..b91fb4a243c 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -7778,7 +7778,7 @@ class Form * * @param string $htmlname Name of html select area. Must start with "multi" if this is a multiselect * @param array $array Array like array(key => value) or array(key=>array('label'=>..., 'data-...'=>..., 'disabled'=>..., 'css'=>...)) - * @param string|string[] $id Preselected key or preselected keys for multiselect + * @param string|string[] $id Preselected key or preselected keys for multiselect. Use 'ifone' to autoselect record if there is only one record. * @param int|string $show_empty 0 no empty value allowed, 1 or string to add an empty value into list (If 1: key is -1 and value is '' or ' ', If placeholder string: key is -1 and value is the string), <0 to add an empty value with key that is this value. * @param int $key_in_label 1 to show key into label with format "[key] value" * @param int $value_as_key 1 to use value as key @@ -7895,7 +7895,7 @@ class Form } } else { $id = (string) $id; // if $id = 0, then $id = '0' - if ($id != '' && $id == $key && !$disabled) { + if ($id != '' && ($id == $key || ($id == 'ifone' && count($array) == 1)) && !$disabled) { $out .= ' selected'; // To preselect a value } } diff --git a/htdocs/langs/en_US/partnership.lang b/htdocs/langs/en_US/partnership.lang index 9c11e1cda2e..5c85e4d7830 100644 --- a/htdocs/langs/en_US/partnership.lang +++ b/htdocs/langs/en_US/partnership.lang @@ -42,6 +42,7 @@ PARTNERSHIP_BACKLINKS_TO_CHECK=Backlinks to check PARTNERSHIP_NBDAYS_AFTER_MEMBER_EXPIRATION_BEFORE_CANCEL=Nb of days before cancelling status of a partnership when a subscription has expired ReferingWebsiteCheck=Check of website referring ReferingWebsiteCheckDesc=You can enable a feature to check that your partners has added a backlink to your website domains on their own website. +PublicFormRegistrationPartnerDesc=Dolibarr can provide you a public URL/website to allow external visitors to request to be part of the partnership program. # # Object @@ -60,6 +61,11 @@ ConfirmClosePartnershipAsk=Are you sure you want to cancel this partnership? PartnershipType=Partnership type PartnershipRefApproved=Partnership %s approved KeywordToCheckInWebsite=If you want to check that a given keyword is present into the website of each partner, define this keyword here +PartnershipDraft=Draft +PartnershipAccepted=Accepted +PartnershipRefused=Refused +PartnershipCanceled=Canceled +PartnershipManagedFor=Partners are # # Template Mail @@ -83,12 +89,6 @@ CountLastUrlCheckError=Number of errors for last URL check LastCheckBacklink=Date of last URL check ReasonDeclineOrCancel=Reason for declining or canceling -# -# Status -# -PartnershipDraft=Draft -PartnershipAccepted=Accepted -PartnershipRefused=Refused -PartnershipCanceled=Canceled -PartnershipManagedFor=Partners are +NewPartnershipRequest=New partnership request +NewPartnershipRequestDesc=This form allows you to request to be part of one of our partnership program. If you need help to fill this form, please contact by email %s. diff --git a/htdocs/partnership/admin/website.php b/htdocs/partnership/admin/website.php index 5fb48248280..49fd7ff91df 100644 --- a/htdocs/partnership/admin/website.php +++ b/htdocs/partnership/admin/website.php @@ -78,12 +78,14 @@ if ($action == 'update') { $form = new Form($db); +$title = $langs->trans('PartnershipSetup'); +$help_url = ''; //$help_url = 'EN:Module_Partnership|FR:Module_Adhérents|ES:Módulo_Miembros'; -llxHeader('', $langs->trans("PartnershipsSetup"), $help_url); +llxHeader('', $title, $help_url); $linkback = ''.$langs->trans("BackToModuleList").''; -print load_fiche_titre($langs->trans("PartnershipsSetup"), $linkback, 'title_setup'); +print load_fiche_titre($title, $linkback, 'title_setup'); $head = partnershipAdminPrepareHead(); @@ -93,7 +95,7 @@ print '
    '; print ''; print ''; -print dol_get_fiche_head($head, 'website', $langs->trans("Partnerships"), -1, 'user'); +print dol_get_fiche_head($head, 'website', $langs->trans("Partnerships"), -1, 'partnership'); if ($conf->use_javascript_ajax) { print "\n".''; + // Lines to produce From 1555a6540b8cfab2494580b0fc22760bdf7c9420 Mon Sep 17 00:00:00 2001 From: atm-lena Date: Wed, 11 May 2022 12:40:51 +0200 Subject: [PATCH 086/248] Translation --- htdocs/mrp/mo_production.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/mrp/mo_production.php b/htdocs/mrp/mo_production.php index cbe25d529d9..d6dc4d250d0 100644 --- a/htdocs/mrp/mo_production.php +++ b/htdocs/mrp/mo_production.php @@ -1068,7 +1068,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print ''; print '
    '; - // traitement entrepot par défaut + // default warehouse processing print ''; + } } // If ticket created from another object @@ -325,7 +420,7 @@ class FormTicket print ''; print ''; print ''; - print ''.img_picto($langs->trans("Refresh"), 'refresh', 'id="captcha_refresh_img"').''; + print ''.img_picto($langs->trans("Refresh"), 'refresh', 'id="captcha_refresh_img"').''; print ''; print ''; } diff --git a/htdocs/core/lib/ticket.lib.php b/htdocs/core/lib/ticket.lib.php index 2e70bfba3b9..5b220553bfe 100644 --- a/htdocs/core/lib/ticket.lib.php +++ b/htdocs/core/lib/ticket.lib.php @@ -233,7 +233,7 @@ function llxHeaderTicket($title, $head = "", $disablejs = 0, $disablehead = 0, $ print '
    '; print '
    '; if ($urllogo) { - print ''; + print ''; print ''; print ''; diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index 60b2b424aaa..b39d3243376 100644 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -286,6 +286,7 @@ ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=You try to pay in ErrorInvoiceLoadThirdParty=Can't load third-party object for invoice "%s" ErrorInvoiceLoadThirdPartyKey=Third-party key "%s" no set for invoice "%s" ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by actual object status +ErrorAjaxRequestFailed=Request failed # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. diff --git a/htdocs/langs/en_US/ticket.lang b/htdocs/langs/en_US/ticket.lang index c1cfa5e9757..76d6923e43c 100644 --- a/htdocs/langs/en_US/ticket.lang +++ b/htdocs/langs/en_US/ticket.lang @@ -99,6 +99,8 @@ TicketNewEmailBodyHelp=The text specified here will be inserted into the email c TicketParamPublicInterface=Public interface setup TicketsEmailMustExist=Require an existing email address to create a ticket TicketsEmailMustExistHelp=In the public interface, the email address should already be filled in the database to create a new ticket. +TicketCreateThirdPartyWithContactIfNotExist=Create a third party with contact if it does not exist with the given email +TicketCreateThirdPartyWithContactIfNotExistHelp=Create a third party with contact if it does not exist with the given email PublicInterface=Public interface TicketUrlPublicInterfaceLabelAdmin=Alternative URL for public interface TicketUrlPublicInterfaceHelpAdmin=It is possible to define an alias to the web server and thus make available the public interface with another URL (the server must act as a proxy on this new URL) diff --git a/htdocs/langs/fr_FR/errors.lang b/htdocs/langs/fr_FR/errors.lang index 80d4034a1ba..0c682b5a672 100644 --- a/htdocs/langs/fr_FR/errors.lang +++ b/htdocs/langs/fr_FR/errors.lang @@ -277,6 +277,7 @@ ErrorIsNotADraft=%s n'est pas au statut brouillon ErrorExecIdFailed=Impossible d'exécuter la commande "id" ErrorBadCharIntoLoginName=Caractère non autorisé dans le nom de connexion ErrorRequestTooLarge=Error, request too large +ErrorAjaxRequestFailed=La requête a échoué # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Votre paramètre PHP upload_max_filesize (%s) est supérieur au paramètre PHP post_max_size (%s). Ceci n'est pas une configuration cohérente. diff --git a/htdocs/langs/fr_FR/ticket.lang b/htdocs/langs/fr_FR/ticket.lang index e19871f09df..96d7feb6558 100644 --- a/htdocs/langs/fr_FR/ticket.lang +++ b/htdocs/langs/fr_FR/ticket.lang @@ -99,6 +99,8 @@ TicketNewEmailBodyHelp=Le texte spécifié ici sera inséré dans l'e-mail confi TicketParamPublicInterface=Configuration de l'interface publique\n TicketsEmailMustExist=Une adresse e-mail existante est requise pour créer un ticket TicketsEmailMustExistHelp=Pour accéder à l'interface publique et créer un nouveau ticket, votre compte doit déjà être existant. +TicketCreateThirdPartyWithContactIfNotExist=Créer un tiers avec contact s'il n'existe pas avec l'email saisi +TicketCreateThirdPartyWithContactIfNotExistHelp=Créer un tiers avec contact s'il n'existe pas avec l'email saisi PublicInterface=Interface publique TicketUrlPublicInterfaceLabelAdmin=URL alternative pour l'interface publique TicketUrlPublicInterfaceHelpAdmin=Il est possible de définir un alias vers le serveur et de rendre ainsi l'interface publique accessible avec une autre URL (le serveur doit agir comme un proxy sur cette nouvelle URL) diff --git a/htdocs/public/ticket/ajax/ajax.php b/htdocs/public/ticket/ajax/ajax.php new file mode 100644 index 00000000000..a75c796539c --- /dev/null +++ b/htdocs/public/ticket/ajax/ajax.php @@ -0,0 +1,87 @@ + + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/** + * \file htdocs/public/ticket/ajax/ajax.php + * \brief Ajax component for Ticket. + */ + +if (!defined('NOTOKENRENEWAL')) { + define('NOTOKENRENEWAL', '1'); // Disables token renewal +} +if (!defined('NOREQUIREHTML')) { + define('NOREQUIREHTML', '1'); +} +if (!defined('NOREQUIREAJAX')) { + define('NOREQUIREAJAX', '1'); +} +if (!defined('NOREQUIRESOC')) { + define('NOREQUIRESOC', '1'); +} +if (!defined('NOCSRFCHECK')) { + define('NOCSRFCHECK', '1'); +} +// Do not check anti CSRF attack test +if (!defined('NOREQUIREMENU')) { + define('NOREQUIREMENU', '1'); +} +// If there is no need to load and show top and left menu +if (!defined("NOLOGIN")) { + define("NOLOGIN", '1'); +} +if (!defined('NOIPCHECK')) { + define('NOIPCHECK', '1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip +} +if (!defined('NOBROWSERNOTIF')) { + define('NOBROWSERNOTIF', '1'); +} + +include_once '../../../main.inc.php'; // Load $user and permissions + +$action = GETPOST('action', 'aZ09'); +$id = GETPOST('id', 'int'); +$email = GETPOST('email', 'alphanohtml'); + + +/* + * View + */ + +top_httphead(); + +if ($action == 'getContacts') { + $return = array( + 'contacts' => array(), + 'error' => '', + ); + + if (!empty($email)) { + require_once DOL_DOCUMENT_ROOT.'/ticket/class/ticket.class.php'; + + $ticket = new Ticket($db); + $contacts = $ticket->searchContactByEmail($email); + if (is_array($contacts)) { + $return['contacts'] = $contacts; + } else { + $return['error'] = $ticket->errorsToString(); + } + } + + echo json_encode($return); + exit(); +} diff --git a/htdocs/public/ticket/create_ticket.php b/htdocs/public/ticket/create_ticket.php index 371789edc62..f7e6e023a7f 100644 --- a/htdocs/public/ticket/create_ticket.php +++ b/htdocs/public/ticket/create_ticket.php @@ -63,6 +63,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php'; +require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php'; // Load translation files required by the page $langs->loadLangs(array('companies', 'other', 'mails', 'ticket')); @@ -78,6 +79,11 @@ $hookmanager->initHooks(array('publicnewticketcard', 'globalcard')); $object = new Ticket($db); $extrafields = new ExtraFields($db); +$contacts = array(); +$with_contact = null; +if (!empty($conf->global->TICKET_CREATE_THIRD_PARTY_WITH_CONTACT_IF_NOT_EXIST)) { + $with_contact = new Contact($db); +} $extrafields->fetch_name_optionals_label($object->table_element); @@ -153,18 +159,50 @@ if (empty($reshook) && $action == 'create_ticket' && GETPOST('save', 'alpha')) { } } + $contact_lastname = ''; + $contact_firstname = ''; + $company_name = ''; + $contact_phone = ''; + if ($with_contact) { + // set linked contact to add in form + if (is_array($contacts) && count($contacts) == 1) { + $with_contact = current($contacts); + } + + // check mandatory fields on contact + $contact_lastname = trim(GETPOST('contact_lastname', 'alphanohtml')); + $contact_firstname = trim(GETPOST('contact_firstname', 'alphanohtml')); + $company_name = trim(GETPOST('company_name', 'alphanohtml')); + $contact_phone = trim(GETPOST('contact_phone', 'alphanohtml')); + if (!($with_contact->id > 0)) { + // check lastname + if (empty($contact_lastname)) { + $error++; + array_push($object->errors, $langs->trans('ErrorFieldRequired', $langs->transnoentities('Lastname'))); + $action = ''; + } + // check firstname + if (empty($contact_firstname)) { + $error++; + array_push($object->errors, $langs->trans('ErrorFieldRequired', $langs->transnoentities('Firstname'))); + $action = ''; + } + } + } + if (!GETPOST("subject", "restricthtml")) { $error++; array_push($object->errors, $langs->trans("ErrorFieldRequired", $langs->transnoentities("Subject"))); $action = ''; - } elseif (!GETPOST("message", "restricthtml")) { + } + if (!GETPOST("message", "restricthtml")) { $error++; - array_push($object->errors, $langs->trans("ErrorFieldRequired", $langs->transnoentities("message"))); + array_push($object->errors, $langs->trans("ErrorFieldRequired", $langs->transnoentities("Message"))); $action = ''; } // Check email address - if (!isValidEmail($origin_email)) { + if (!empty($origin_email) && !isValidEmail($origin_email)) { $error++; array_push($object->errors, $langs->trans("ErrorBadEmailAddress", $langs->transnoentities("email"))); $action = ''; @@ -193,6 +231,48 @@ if (empty($reshook) && $action == 'create_ticket' && GETPOST('save', 'alpha')) { $object->type_code = GETPOST("type_code", 'aZ09'); $object->category_code = GETPOST("category_code", 'aZ09'); $object->severity_code = GETPOST("severity_code", 'aZ09'); + + if (!is_object($user)) { + $user = new User($db); + } + + // create third-party with contact + $usertoassign = 0; + if ($with_contact && !($with_contact->id > 0)) { + $company = new Societe($db); + if (!empty($company_name)) { + $company->name = $company_name; + } else { + $company->particulier = 1; + $company->name = dolGetFirstLastname($contact_firstname, $contact_lastname); + } + $result = $company->create($user); + if ($result < 0) { + $error++; + $errors = ($company->error ? array($company->error) : $company->errors); + array_push($object->errors, $errors); + $action = 'create_ticket'; + } + + // create contact and link to this new company + if (!$error) { + $with_contact->email = $origin_email; + $with_contact->lastname = $contact_lastname; + $with_contact->firstname = $contact_firstname; + $with_contact->socid = $company->id; + $with_contact->phone_pro = $contact_phone; + $result = $with_contact->create($user); + if ($result < 0) { + $error++; + $errors = ($with_contact->error ? array($with_contact->error) : $with_contact->errors); + array_push($object->errors, $errors); + $action = 'create_ticket'; + } else { + $contacts = array($with_contact); + } + } + } + if (is_array($searched_companies)) { $object->fk_soc = $searched_companies[0]->id; } @@ -206,9 +286,6 @@ if (empty($reshook) && $action == 'create_ticket' && GETPOST('save', 'alpha')) { // Generate new ref $object->ref = $object->getDefaultRef(); - if (!is_object($user)) { - $user = new User($db); - } $object->context['disableticketemail'] = 1; // Disable emails sent by ticket trigger when creation is done from this page, emails are already sent later @@ -402,7 +479,7 @@ if ($action != "infos_success") { print '
    '; } else { print '
    '.$langs->trans('TicketPublicInfoCreateTicket').'
    '; - $formticket->showForm(0, 'edit', 1); + $formticket->showForm(0, 'edit', 1, $with_contact); } } From 94dcee622b22c297011a49e2f1e3efa619585363 Mon Sep 17 00:00:00 2001 From: lvessiller Date: Thu, 12 May 2022 17:58:31 +0200 Subject: [PATCH 109/248] FIX stickler --- htdocs/admin/ticket_public.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/admin/ticket_public.php b/htdocs/admin/ticket_public.php index 29e0cce4036..cb009b54655 100644 --- a/htdocs/admin/ticket_public.php +++ b/htdocs/admin/ticket_public.php @@ -159,7 +159,7 @@ if ($action == 'setTICKET_ENABLE_PUBLIC_INTERFACE') { $errors[] = $db->lasterror(); } } -} elseif (preg_match('/set_(.*)/',$action,$reg)) { +} elseif (preg_match('/set_(.*)/', $action,$reg)) { $code = $reg[1]; $value = GETPOSTISSET($code) ? GETPOST($code, 'int') : 1; $res = dolibarr_set_const($db, $code, $value, 'chaine', 0, '', $conf->entity); @@ -190,7 +190,7 @@ if ($action == 'setTICKET_ENABLE_PUBLIC_INTERFACE') { } } } -} elseif (preg_match('/del_(.*)/',$action,$reg)) { +} elseif (preg_match('/del_(.*)/', $action,$reg)) { $code = $reg[1]; $res = dolibarr_del_const($db, $code, $conf->entity); if (!($res > 0)) { From 775a8c5334704b3f667ebe8a88d74a52512cd5db Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 12 May 2022 20:18:58 +0200 Subject: [PATCH 110/248] Look and feel v16 --- htdocs/core/class/html.form.class.php | 28 ++++++-- htdocs/core/lib/functions.lib.php | 64 ++++++++++++++----- htdocs/main.inc.php | 4 +- .../modulebuilder/template/myobject_card.php | 4 +- htdocs/projet/card.php | 15 ++++- htdocs/societe/card.php | 7 +- htdocs/website/index.php | 6 +- 7 files changed, 97 insertions(+), 31 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index f600f1a5fcb..48a00919d65 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -10079,14 +10079,15 @@ class Form /** * Output the buttons to submit a creation/edit form * - * @param string $save_label Alternative label for save button - * @param string $cancel_label Alternative label for cancel button - * @param array $morebuttons Add additional buttons between save and cancel - * @param bool $withoutdiv Option to remove enclosing centered div - * @param string $morecss More CSS - * @return string Html code with the buttons + * @param string $save_label Alternative label for save button + * @param string $cancel_label Alternative label for cancel button + * @param array $morebuttons Add additional buttons between save and cancel + * @param bool $withoutdiv Option to remove enclosing centered div + * @param string $morecss More CSS + * @param string $dol_openinpopup If the button are shown in a context of a page shown inside a popup, we put here the string name of popup. + * @return string Html code with the buttons */ - public function buttonsSaveCancel($save_label = 'Save', $cancel_label = 'Cancel', $morebuttons = array(), $withoutdiv = 0, $morecss = '') + public function buttonsSaveCancel($save_label = 'Save', $cancel_label = 'Cancel', $morebuttons = array(), $withoutdiv = 0, $morecss = '', $dol_openinpopup = '') { global $langs; @@ -10124,6 +10125,19 @@ class Form } $retstring .= $withoutdiv ? '': '
    '; + if ($dol_openinpopup) { + $retstring .= ''."\n"; + $retstring .= ''; + // TODO @LDR for the save button, in action "add", set parent var to return data and close the window + //$retstring .= 'setid '; + //$retstring .= 'setlabel'; + } + return $retstring; } } diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 14281e47a69..8776381b922 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -1575,36 +1575,70 @@ function dol_syslog($message, $level = LOG_INFO, $ident = 0, $suffixinfilename = * Such buttons must be included inside a HTML form. * * @param string $name A name for the html component - * @param string $label Label of button + * @param string $label Label shown in Popup title top bar * @param string $buttonstring button string * @param string $url Url to open * @param string $disabled Disabled text + * @param string $morecss More CSS + * @param string $backtopagejsfields The back to page must be managed using javascript instead of a redirect. + * Value is 'Name of html component to set with id:Name of html component to set with label' + * TODO Support this mode, for example when used from the page create a project on thirdparty creation. * @return string HTML component with button */ -function dolButtonToOpenUrlInDialogPopup($name, $label, $buttonstring, $url, $disabled = '') +function dolButtonToOpenUrlInDialogPopup($name, $label, $buttonstring, $url, $disabled = '', $morecss = 'button bordertransp', $backtopagejsfields = '') { if (strpos($url, '?') > 0) { - $url .= '&dol_hide_topmenu=1&dol_hide_leftmenu=1&dol_openinpopup=1'; + $url .= '&dol_hide_topmenu=1&dol_hide_leftmenu=1&dol_openinpopup='.urlencode($name); } else { - $url .= '?dol_hide_menuinpopup=1&dol_hide_leftmenu=1&dol_openinpopup=1'; + $url .= '?dol_hide_topmenu=1&dol_hide_leftmenu=1&dol_openinpopup='.urlencode($name); + } + + $out .= ''; + + $backtopagejsfieldsid = ''; $backtopagejsfieldslabel = ''; + if ($backtopagejsfields) { + $url .= '&backtopagejsfields='.urlencode($backtopagejsfields); + $tmpbacktopagejsfields = explode(':', $backtopagejsfields); + $backtopagejsfieldsid = empty($tmpbacktopagejsfields[0]) ? '' : $tmpbacktopagejsfields[0]; + $backtopagejsfieldslabel = empty($tmpbacktopagejsfields[1]) ? '' : $tmpbacktopagejsfields[1]; } //print ''; - $out = ''.$buttonstring.''; + $out .= ''."\n"; + $out .= ''.$buttonstring.''; + $out .= ''; + $out .= ''; + $out .= ''; $out .= ''; $out .= ''; diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 21218f099fe..4581814f0f8 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -1367,11 +1367,11 @@ if (!function_exists("llxHeader")) { print ''."\n"; // top menu and left menu area - if (empty($conf->dol_hide_topmenu) || GETPOST('dol_invisible_topmenu', 'int')) { + if ((empty($conf->dol_hide_topmenu) || GETPOST('dol_invisible_topmenu', 'int')) && !GETPOST('dol_openinpopup', 'aZ09')) { top_menu($head, $title, $target, $disablejs, $disablehead, $arrayofjs, $arrayofcss, $morequerystring, $help_url); } - if (empty($conf->dol_hide_leftmenu)) { + if (empty($conf->dol_hide_leftmenu) && !GETPOST('dol_openinpopup', 'aZ09')) { left_menu('', $help_url, '', '', 1, $title, 1); // $menumanager is retrieved with a global $menumanager inside this function } diff --git a/htdocs/modulebuilder/template/myobject_card.php b/htdocs/modulebuilder/template/myobject_card.php index 6d5c807c3f0..002685415cc 100644 --- a/htdocs/modulebuilder/template/myobject_card.php +++ b/htdocs/modulebuilder/template/myobject_card.php @@ -87,13 +87,15 @@ $langs->loadLangs(array("mymodule@mymodule", "other")); // Get parameters $id = GETPOST('id', 'int'); $ref = GETPOST('ref', 'alpha'); +$lineid = GETPOST('lineid', 'int'); + $action = GETPOST('action', 'aZ09'); $confirm = GETPOST('confirm', 'alpha'); $cancel = GETPOST('cancel', 'aZ09'); $contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'myobjectcard'; // To manage different context of search $backtopage = GETPOST('backtopage', 'alpha'); $backtopageforcancel = GETPOST('backtopageforcancel', 'alpha'); -$lineid = GETPOST('lineid', 'int'); +$dol_openinpopup = GETPOST('dol_openinpopup', 'aZ09'); // Initialize technical objects $object = new MyObject($db); diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index c5fc08a6402..6a27472a7e3 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -46,8 +46,11 @@ $id = GETPOST('id', 'int'); $ref = GETPOST('ref', 'alpha'); $action = GETPOST('action', 'aZ09'); $backtopage = GETPOST('backtopage', 'alpha'); +$backtopagejsfields = GETPOST('backtopagejsfields', 'alpha'); $cancel = GETPOST('cancel', 'alpha'); $confirm = GETPOST('confirm', 'aZ09'); +$dol_openinpopup = GETPOST('dol_openinpopup', 'aZ09'); + $status = GETPOST('status', 'int'); $opp_status = GETPOST('opp_status', 'int'); $opp_percent = price2num(GETPOST('opp_percent', 'alpha')); @@ -505,9 +508,10 @@ if ($action == 'create' && $user->rights->projet->creer) { print load_fiche_titre($titlenew, '', 'project'); print ''; - print ''; print ''; + print ''; print ''; + print ''; print dol_get_fiche_head(); @@ -605,7 +609,7 @@ if ($action == 'create' && $user->rights->projet->creer) { if (!empty($conf->global->PROJECT_FILTER_FOR_THIRDPARTY_LIST)) { $filteronlist = $conf->global->PROJECT_FILTER_FOR_THIRDPARTY_LIST; } - $text = img_picto('', 'company').$form->select_company(GETPOST('socid', 'int'), 'socid', $filteronlist, 'SelectThirdParty', 1, 0, array(), 0, 'minwidth300 widthcentpercentminusxx'); + $text = img_picto('', 'company').$form->select_company(GETPOST('socid', 'int'), 'socid', $filteronlist, 'SelectThirdParty', 1, 0, array(), 0, 'minwidth300 widthcentpercentminusxx maxwidth500'); if (empty($conf->global->PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS) && empty($conf->dol_use_jmobile)) { $texthelp = $langs->trans("IfNeedToUseOtherObjectKeepEmpty"); print $form->textwithtooltip($text.' '.img_help(), $texthelp, 1); @@ -613,7 +617,12 @@ if ($action == 'create' && $user->rights->projet->creer) { print $text; } if (!GETPOSTISSET('backtopage')) { - print ' '; + $url = '/societe/card.php?action=create&client=3&fournisseur=0&backtopage='.urlencode($_SERVER["PHP_SELF"].'?action=create'); + $newbutton = ''; + // TODO @LDR Impletment this + //$tmpbacktopagejsfields = 'socid:search_socid'; + //print dolButtonToOpenUrlInDialogPopup('addthirdparty', $langs->transnoentitiesnoconv('AddThirdParty'), $newbutton, $url, '', '', $tmpbacktopagejsfields); + print ' '.$newbutton.''; } print ''; } diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index 154a376cca7..cbb8de3cf28 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -84,7 +84,9 @@ $error = 0; $errors = array(); $action = (GETPOST('action', 'aZ09') ? GETPOST('action', 'aZ09') : 'view'); $cancel = GETPOST('cancel', 'alpha'); $backtopage = GETPOST('backtopage', 'alpha'); +$backtopagejsfields = GETPOST('backtopagejsfields', 'alpha'); $backtopageforcancel = GETPOST('backtopageforcancel', 'alpha'); +$dol_openinpopup = GETPOST('dol_openinpopup', 'aZ09'); $confirm = GETPOST('confirm', 'alpha'); $socid = GETPOST('socid', 'int') ?GETPOST('socid', 'int') : GETPOST('id', 'int'); @@ -1262,8 +1264,9 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { print ''; // Chrome ignor autocomplete print ''; - print ''; print ''; + print ''; + print ''; print ''; print ''; print ''; @@ -1721,7 +1724,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { print dol_get_fiche_end(); - print $form->buttonsSaveCancel("AddThirdParty"); + print $form->buttonsSaveCancel("AddThirdParty", 'Cancel', null, 0, '', $dol_openinpopup); print ''."\n"; } elseif ($action == 'edit') { diff --git a/htdocs/website/index.php b/htdocs/website/index.php index d454ec8f532..02926e2add8 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -68,6 +68,9 @@ $toselect = GETPOST('toselect', 'array'); // Array of ids of elements selected $contextpage = GETPOST('contextpage', 'aZ') ?GETPOST('contextpage', 'aZ') : 'websitelist'; // To manage different context of search $backtopage = GETPOST('backtopage', 'alpha'); // Go back to a dedicated page $optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print') +$dol_hide_topmenu = GETPOST('dol_hide_topmenu', 'int'); +$dol_hide_leftmenu = GETPOST('dol_hide_leftmenu', 'int'); +$dol_openinpopup = GETPOST('dol_openinpopup', 'aZ09'); $type_container = GETPOST('WEBSITE_TYPE_CONTAINER', 'alpha'); @@ -2558,6 +2561,7 @@ print ''."\n"; print '
    '; print ''; print ''; +print ''; if ($action == 'createsite') { print ''; @@ -2638,7 +2642,7 @@ if (!GETPOST('hide_websitemenu')) { //var_dump($objectpage);exit; - print '
    '; + print '
    '; // // Toolbar for websites From d6f576b2f7f2a961ce227de39d98a1cacea53634 Mon Sep 17 00:00:00 2001 From: lvessiller Date: Fri, 13 May 2022 08:48:05 +0200 Subject: [PATCH 111/248] FIX travis From d624a1e25e2c9d5033650dc307883c544c7c2a15 Mon Sep 17 00:00:00 2001 From: lvessiller Date: Fri, 13 May 2022 08:57:08 +0200 Subject: [PATCH 112/248] FIX stickler-ci --- htdocs/admin/ticket_public.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/admin/ticket_public.php b/htdocs/admin/ticket_public.php index cb009b54655..4df687dd2bd 100644 --- a/htdocs/admin/ticket_public.php +++ b/htdocs/admin/ticket_public.php @@ -159,7 +159,7 @@ if ($action == 'setTICKET_ENABLE_PUBLIC_INTERFACE') { $errors[] = $db->lasterror(); } } -} elseif (preg_match('/set_(.*)/', $action,$reg)) { +} elseif (preg_match('/set_(.*)/', $action, $reg)) { $code = $reg[1]; $value = GETPOSTISSET($code) ? GETPOST($code, 'int') : 1; $res = dolibarr_set_const($db, $code, $value, 'chaine', 0, '', $conf->entity); @@ -190,7 +190,7 @@ if ($action == 'setTICKET_ENABLE_PUBLIC_INTERFACE') { } } } -} elseif (preg_match('/del_(.*)/', $action,$reg)) { +} elseif (preg_match('/del_(.*)/', $action, $reg)) { $code = $reg[1]; $res = dolibarr_del_const($db, $code, $conf->entity); if (!($res > 0)) { From 8e525681cc6cd0f04ed97e46ab27787caf094049 Mon Sep 17 00:00:00 2001 From: lvessiller Date: Fri, 13 May 2022 09:08:01 +0200 Subject: [PATCH 113/248] FIX reload travis From 6106d54632e5cf56f52cb23c1a21810a1e4dcd43 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 13 May 2022 09:54:10 +0200 Subject: [PATCH 114/248] css --- htdocs/theme/eldy/global.inc.php | 2 ++ htdocs/theme/md/style.css.php | 2 +- htdocs/user/card.php | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 2ac2e0744b3..83d7bc120e2 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -3481,6 +3481,8 @@ div .tdtop { vertical-align: top !important; /*padding-top: 10px !important; padding-bottom: 2px !important; */ + padding-top: 6px !important; + padding-bottom: 4px !important; } table.border td, table.bordernooddeven td, div.border div div.tagtd { diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 15c9ef74612..d8a6a1d928c 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -4144,7 +4144,7 @@ div.tabBar .noborder { } div .tdtop { vertical-align: top !important; - padding-top: 5px !important; + padding-top: 8px !important; padding-bottom: 0px !important; } diff --git a/htdocs/user/card.php b/htdocs/user/card.php index 3a27e308172..f789023b8d4 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -1707,7 +1707,7 @@ if ($action == 'create' || $action == 'adduserldap') { print "\n"; // VCard - print ''.$langs->trans("VCard").''; + print ''.$langs->trans("VCard").''; print ''; print ''; print img_picto($langs->trans("Download"), 'vcard.png', 'class="paddingrightonly"'); From 9b0c7d0904e3b2b68b9ff80fe3e017a4b638681d Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Fri, 13 May 2022 09:58:00 +0200 Subject: [PATCH 115/248] new: add hidden option to add export file with date time --- htdocs/exports/class/export.class.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/htdocs/exports/class/export.class.php b/htdocs/exports/class/export.class.php index c87f03f3110..89d0caaa24f 100644 --- a/htdocs/exports/class/export.class.php +++ b/htdocs/exports/class/export.class.php @@ -615,6 +615,9 @@ class Export } else { $filename = "export_".$datatoexport; } + if (!empty($conf->global->EXPORT_NAME_WITH_DT)) { + $filename .= dol_print_date(dol_now(), '%Y%m%d%_%H%M'); + } $filename .= '.'.$objmodel->getDriverExtension(); $dirname = $conf->export->dir_temp.'/'.$user->id; From 89e5d3e1c214c5df76f9fd86969ffc3804a78861 Mon Sep 17 00:00:00 2001 From: lvessiller Date: Fri, 13 May 2022 10:02:35 +0200 Subject: [PATCH 116/248] FIX merge from develop --- htdocs/langs/fr_FR/errors.lang | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/langs/fr_FR/errors.lang b/htdocs/langs/fr_FR/errors.lang index 938c3ab9d36..234dc56941c 100644 --- a/htdocs/langs/fr_FR/errors.lang +++ b/htdocs/langs/fr_FR/errors.lang @@ -283,7 +283,6 @@ ErrorAttributeIsUsedIntoProduct=Cet attribut est utilisé dans une ou plusieurs ErrorAttributeValueIsUsedIntoProduct=Cette valeur d'attribut est utilisée dans une ou plusieurs variantes de produit ErrorPaymentInBothCurrency=Erreur, tous les montants doivent être entrés dans la même colonne. ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=Vous essayez de payer une facture en monnaie %s depuis un compte en %s -ErrorRequestTooLarge=Error, request too large ErrorAjaxRequestFailed=La requête a échoué # Warnings From fa6d738037807376db0f1b58310ef5778133fd01 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Fri, 13 May 2022 10:46:02 +0200 Subject: [PATCH 117/248] NEW: Add event block on facture_rec #20870 --- htdocs/compta/facture/card-rec.php | 15 ++++++++++++++- htdocs/core/lib/functions2.lib.php | 5 +++++ htdocs/user/class/user.class.php | 3 ++- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/facture/card-rec.php b/htdocs/compta/facture/card-rec.php index 6300e387067..18b1e752c0b 100644 --- a/htdocs/compta/facture/card-rec.php +++ b/htdocs/compta/facture/card-rec.php @@ -1695,7 +1695,20 @@ if ($action == 'create') { $somethingshown = $form->showLinkedObjectBlock($object, $linktoelem); - print '
    '; + print ''; + print '
    '; + + $MAXEVENT = 10; + + //$morehtmlcenter = dolGetButtonTitle($langs->trans('SeeAll'), '', 'fa fa-list-alt imgforviewmode', dol_buildpath('/mymodule/myobject_agenda.php', 1).'?id='.$object->id); + + // List of actions on element + include_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php'; + $formactions = new FormActions($db); + $somethingshown = $formactions->showactions($object, $object->element, (is_object($object->thirdparty) ? $object->thirdparty->id : 0), 1, '', $MAXEVENT, '', $morehtmlcenter); + + print '
    '; + print ''; } } diff --git a/htdocs/core/lib/functions2.lib.php b/htdocs/core/lib/functions2.lib.php index 8c419eec3c9..f80f041730e 100644 --- a/htdocs/core/lib/functions2.lib.php +++ b/htdocs/core/lib/functions2.lib.php @@ -2229,6 +2229,11 @@ function dolGetElementUrl($objectid, $objecttype, $withpicto = 0, $option = '') $classpath = 'product/stock/class'; $classfile = 'entrepot'; $classname = 'Entrepot'; + } elseif ($objecttype == 'facturerec') { + $classpath = 'compta/facture/class'; + $classfile = 'facture-rec'; + $classname = 'FactureRec'; + $module='facture'; } if (!empty($conf->$module->enabled)) { diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index 33ca6d0ec9c..b0630f0394e 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -717,7 +717,8 @@ class User extends CommonObject 'knowledgerecord' => 'knowledgerecord@knowledgemanagement', 'skill@hrm' => 'all@hrm', // skill / job / position objects rights are for the moment grouped into right level "all" 'job@hrm' => 'all@hrm', // skill / job / position objects rights are for the moment grouped into right level "all" - 'position@hrm' => 'all@hrm' // skill / job / position objects rights are for the moment grouped into right level "all" + 'position@hrm' => 'all@hrm', // skill / job / position objects rights are for the moment grouped into right level "all" + 'facturerec' => 'facture' ); if (!empty($moduletomoduletouse[$module])) { $module = $moduletomoduletouse[$module]; From 0425becc03d046bdeab6a0a3f04d245c994a8ed6 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Fri, 13 May 2022 11:23:49 +0200 Subject: [PATCH 118/248] add c_action_trigger and fix travis --- htdocs/admin/agenda.php | 3 + .../facture/class/facture-rec.class.php | 93 +++++++++++++++++-- .../install/mysql/data/llx_10_c_regions.sql | 36 +++---- .../mysql/data/llx_c_action_trigger.sql | 7 +- 4 files changed, 113 insertions(+), 26 deletions(-) diff --git a/htdocs/admin/agenda.php b/htdocs/admin/agenda.php index af09d32bc73..52926cf1b19 100644 --- a/htdocs/admin/agenda.php +++ b/htdocs/admin/agenda.php @@ -173,6 +173,9 @@ if (!empty($triggers)) { if ($module == 'contact') { $module = 'societe'; } + if ($module == 'facturerec') { + $module = 'facture'; + } // If 'element' value is myobject@mymodule instead of mymodule $tmparray = explode('@', $module); diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php index 7058364d1f1..aa9479de384 100644 --- a/htdocs/compta/facture/class/facture-rec.class.php +++ b/htdocs/compta/facture/class/facture-rec.class.php @@ -270,6 +270,7 @@ class FactureRec extends CommonInvoice if ($result > 0) { // On positionne en mode brouillon la facture $this->brouillon = 1; + $this->fk_soc = $facsrc->socid; $sql = "INSERT INTO ".MAIN_DB_PREFIX."facture_rec ("; $sql .= "titre"; @@ -301,7 +302,7 @@ class FactureRec extends CommonInvoice $sql .= ", suspended"; $sql .= ") VALUES ("; $sql .= "'".$this->db->escape($this->titre ? $this->titre : $this->title)."'"; - $sql .= ", ".((int) $facsrc->socid); + $sql .= ", ".((int) $this->fk_soc); $sql .= ", ".((int) $conf->entity); $sql .= ", '".$this->db->idate($now)."'"; $sql .= ", ".(!empty($facsrc->total_ttc) ? ((float) $facsrc->total_ttc) : '0'); @@ -1788,10 +1789,13 @@ class FactureRec extends CommonInvoice * * @param int $frequency value of frequency * @param string $unit unit of frequency (d, m, y) + * @param int $notrigger Disable the trigger * @return int <0 if KO, >0 if OK */ - public function setFrequencyAndUnit($frequency, $unit) + public function setFrequencyAndUnit($frequency, $unit, $notrigger = 0) { + global $user; + if (!$this->table_element) { dol_syslog(get_class($this)."::setFrequencyAndUnit was called on objet with property table_element not defined", LOG_ERR); return -1; @@ -1815,6 +1819,16 @@ class FactureRec extends CommonInvoice if (!empty($unit)) { $this->unit_frequency = $unit; } + + if (!$notrigger) { + // Call trigger + $result = $this->call_trigger('BILLREC_MODIFY', $user); + if ($result < 0) { + return $result; + } + // End call triggers + } + return 1; } else { dol_print_error($this->db); @@ -1827,10 +1841,14 @@ class FactureRec extends CommonInvoice * * @param datetime $date date of execution * @param int $increment_nb_gen_done 0 do nothing more, >0 increment nb_gen_done + * @param int $notrigger Disable the trigger * @return int <0 if KO, >0 if OK */ - public function setNextDate($date, $increment_nb_gen_done = 0) + public function setNextDate($date, $increment_nb_gen_done = 0, $notrigger = 0) { + + global $user; + if (!$this->table_element) { dol_syslog(get_class($this)."::setNextDate was called on objet with property table_element not defined", LOG_ERR); return -1; @@ -1848,6 +1866,15 @@ class FactureRec extends CommonInvoice if ($increment_nb_gen_done > 0) { $this->nb_gen_done++; } + + if (!$notrigger) { + // Call trigger + $result = $this->call_trigger('BILLREC_MODIFY', $user); + if ($result < 0) { + return $result; + } + // End call triggers + } return 1; } else { dol_print_error($this->db); @@ -1859,10 +1886,14 @@ class FactureRec extends CommonInvoice * Update the maximum period * * @param int $nb number of maximum period + * @param int $notrigger Disable the trigger * @return int <0 if KO, >0 if OK */ - public function setMaxPeriod($nb) + public function setMaxPeriod($nb, $notrigger = 0) { + + global $user; + if (!$this->table_element) { dol_syslog(get_class($this)."::setMaxPeriod was called on objet with property table_element not defined", LOG_ERR); return -1; @@ -1879,6 +1910,16 @@ class FactureRec extends CommonInvoice dol_syslog(get_class($this)."::setMaxPeriod", LOG_DEBUG); if ($this->db->query($sql)) { $this->nb_gen_max = $nb; + + if (!$notrigger) { + // Call trigger + $result = $this->call_trigger('BILLREC_MODIFY', $user); + if ($result < 0) { + return $result; + } + // End call triggers + } + return 1; } else { dol_print_error($this->db); @@ -1890,10 +1931,13 @@ class FactureRec extends CommonInvoice * Update the auto validate flag of invoice * * @param int $validate 0 to create in draft, 1 to create and validate invoice + * @param int $notrigger Disable the trigger * @return int <0 if KO, >0 if OK */ - public function setAutoValidate($validate) + public function setAutoValidate($validate, $notrigger = 0) { + global $user; + if (!$this->table_element) { dol_syslog(get_class($this)."::setAutoValidate was called on objet with property table_element not defined", LOG_ERR); return -1; @@ -1906,6 +1950,16 @@ class FactureRec extends CommonInvoice dol_syslog(get_class($this)."::setAutoValidate", LOG_DEBUG); if ($this->db->query($sql)) { $this->auto_validate = $validate; + + if (!$notrigger) { + // Call trigger + $result = $this->call_trigger('BILLREC_MODIFY', $user); + if ($result < 0) { + return $result; + } + // End call triggers + } + return 1; } else { dol_print_error($this->db); @@ -1917,10 +1971,13 @@ class FactureRec extends CommonInvoice * Update the auto generate documents * * @param int $validate 0 no document, 1 to generate document + * @param int $notrigger Disable the trigger * @return int <0 if KO, >0 if OK */ - public function setGeneratePdf($validate) + public function setGeneratePdf($validate, $notrigger = 0) { + global $user; + if (!$this->table_element) { dol_syslog(get_class($this)."::setGeneratePdf was called on objet with property table_element not defined", LOG_ERR); return -1; @@ -1933,6 +1990,16 @@ class FactureRec extends CommonInvoice dol_syslog(get_class($this)."::setGeneratePdf", LOG_DEBUG); if ($this->db->query($sql)) { $this->generate_pdf = $validate; + + if (!$notrigger) { + // Call trigger + $result = $this->call_trigger('BILLREC_MODIFY', $user); + if ($result < 0) { + return $result; + } + // End call triggers + } + return 1; } else { dol_print_error($this->db); @@ -1944,10 +2011,12 @@ class FactureRec extends CommonInvoice * Update the model for documents * * @param string $model model of document generator + * @param int $notrigger Disable the trigger * @return int <0 if KO, >0 if OK */ - public function setModelPdf($model) + public function setModelPdf($model, $notrigger = 0) { + global $user; if (!$this->table_element) { dol_syslog(get_class($this)."::setModelPdf was called on objet with property table_element not defined", LOG_ERR); return -1; @@ -1960,6 +2029,16 @@ class FactureRec extends CommonInvoice dol_syslog(get_class($this)."::setModelPdf", LOG_DEBUG); if ($this->db->query($sql)) { $this->model_pdf = $model; + + if (!$notrigger) { + // Call trigger + $result = $this->call_trigger('BILLREC_MODIFY', $user); + if ($result < 0) { + return $result; + } + // End call triggers + } + return 1; } else { dol_print_error($this->db); diff --git a/htdocs/install/mysql/data/llx_10_c_regions.sql b/htdocs/install/mysql/data/llx_10_c_regions.sql index 1ab671f085e..df4f0dabee8 100644 --- a/htdocs/install/mysql/data/llx_10_c_regions.sql +++ b/htdocs/install/mysql/data/llx_10_c_regions.sql @@ -515,22 +515,22 @@ INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) values ( 2 -- Burundi Regions (id country=61) -- https://fr.wikipedia.org/wiki/Provinces_du_Burundi -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6101, '', 0, "Bubanza"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6102, '', 0, "Bujumbura Mairie"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6103, '', 0, "Bujumbura Rural"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6104, '', 0, "Bururi"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6105, '', 0, "Cankuzo"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6106, '', 0, "Cibitoke"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6107, '', 0, "Gitega"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6108, '', 0, "Karuzi"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6109, '', 0, "Kayanza"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6110, '', 0, "Kirundo"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6111, '', 0, "Makamba"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6112, '', 0, "Muramvya"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6113, '', 0, "Muyinga"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6114, '', 0, "Mwaro"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6115, '', 0, "Ngozi"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6116, '', 0, "Rumonge"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6117, '', 0, "Rutana"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6118, '', 0, "Ruyigi"); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6101, '', 0, 'Bubanza'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6102, '', 0, 'Bujumbura Mairie'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6103, '', 0, 'Bujumbura Rural'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6104, '', 0, 'Bururi'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6105, '', 0, 'Cankuzo'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6106, '', 0, 'Cibitoke'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6107, '', 0, 'Gitega'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6108, '', 0, 'Karuzi'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6109, '', 0, 'Kayanza'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6110, '', 0, 'Kirundo'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6111, '', 0, 'Makamba'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6112, '', 0, 'Muramvya'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6113, '', 0, 'Muyinga'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6114, '', 0, 'Mwaro'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6115, '', 0, 'Ngozi'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6116, '', 0, 'Rumonge'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6117, '', 0, 'Rutana'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6118, '', 0, 'Ruyigi'); diff --git a/htdocs/install/mysql/data/llx_c_action_trigger.sql b/htdocs/install/mysql/data/llx_c_action_trigger.sql index d039c285a3e..ab4395f35ed 100644 --- a/htdocs/install/mysql/data/llx_c_action_trigger.sql +++ b/htdocs/install/mysql/data/llx_c_action_trigger.sql @@ -167,10 +167,15 @@ insert into llx_c_action_trigger (code,label,description,elementtype,rang) value insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('TASK_DELETE','Task deleted','Executed when a project task is deleted','project',152); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('ACTION_CREATE','Action added','Executed when an action is added to the agenda','agenda',700); --- oliday +-- holiday insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('HOLIDAY_CREATE','Holiday created','Executed when a holiday is created','holiday',800); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('HOLIDAY_MODIFY','Holiday modified','Executed when a holiday is modified','holiday',801); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('HOLIDAY_VALIDATE','Holiday validated','Executed when a holiday is validated','holiday',802); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('HOLIDAY_APPROVE','Holiday aprouved','Executed when a holiday is aprouved','holiday',803); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('HOLIDAY_CANCEL','Holiday canceled','Executed when a holiday is canceled','holiday',802); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('HOLIDAY_DELETE','Holiday deleted','Executed when a holiday is deleted','holiday',804); + +-- facture rec +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BILLREC_CREATE','Template invoices created','Executed when a Template invoices is created','facturerec',900); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BILLREC_MODIFY','Template invoices update','Executed when a Template invoices is updated','facturerec',901); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BILLREC_DELETE','Template invoices deleted','Executed when a Template invoices is deleted','facturerec',902); From 8ebeb0bf8a57f29e27405df6fd399131282ace06 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Fri, 13 May 2022 11:29:48 +0200 Subject: [PATCH 119/248] =?UTF-8?q?add=20c=5Faction=5Ftrigger=20for=20auto?= =?UTF-8?q?=20batch=20invoice=20cr=C3=A9ation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/compta/facture/class/facture-rec.class.php | 15 ++++++++++++++- .../install/mysql/data/llx_c_action_trigger.sql | 1 + 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php index aa9479de384..a406a48c7f6 100644 --- a/htdocs/compta/facture/class/facture-rec.class.php +++ b/htdocs/compta/facture/class/facture-rec.class.php @@ -1257,9 +1257,10 @@ class FactureRec extends CommonInvoice * * @param int $restrictioninvoiceid 0=All qualified template invoices found. > 0 = restrict action on invoice ID * @param int $forcevalidation 1=Force validation of invoice whatever is template auto_validate flag. + * @param int $notrigger Disable the trigger * @return int 0 if OK, < 0 if KO (this function is used also by cron so only 0 is OK) */ - public function createRecurringInvoices($restrictioninvoiceid = 0, $forcevalidation = 0) + public function createRecurringInvoices($restrictioninvoiceid = 0, $forcevalidation = 0, $notrigger = 0) { global $conf, $langs, $db, $user, $hookmanager; @@ -1339,6 +1340,8 @@ class FactureRec extends CommonInvoice $this->error = $facture->error; $error++; } + + if (!$error && ($facturerec->auto_validate || $forcevalidation)) { $result = $facture->validate($user); if ($result <= 0) { @@ -1357,6 +1360,16 @@ class FactureRec extends CommonInvoice $error++; } } + if (!$error && !$notrigger) { + // Call trigger + $result = $facturerec->call_trigger('BILLREC_CREATEBILL', $user); + if ($result < 0) { + $this->errors = $facturerec->errors; + $this->error = $facturerec->error; + $error++; + } + // End call triggers + } } else { $error++; $this->error = "Failed to load invoice template with id=".$line->rowid.", entity=".$conf->entity."\n"; diff --git a/htdocs/install/mysql/data/llx_c_action_trigger.sql b/htdocs/install/mysql/data/llx_c_action_trigger.sql index ab4395f35ed..e4936c53ba3 100644 --- a/htdocs/install/mysql/data/llx_c_action_trigger.sql +++ b/htdocs/install/mysql/data/llx_c_action_trigger.sql @@ -179,3 +179,4 @@ insert into llx_c_action_trigger (code,label,description,elementtype,rang) value insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BILLREC_CREATE','Template invoices created','Executed when a Template invoices is created','facturerec',900); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BILLREC_MODIFY','Template invoices update','Executed when a Template invoices is updated','facturerec',901); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BILLREC_DELETE','Template invoices deleted','Executed when a Template invoices is deleted','facturerec',902); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BILLREC_AUTOCREATEBILL','Template invoices use to create invoices with auto batch','Executed when a Template invoices is use to create invoice with auto batch','facturerec',903); From 82017d7a394bc2608ba637d06693f548524dae42 Mon Sep 17 00:00:00 2001 From: Thomas Negre Date: Thu, 12 May 2022 14:42:55 +0200 Subject: [PATCH 120/248] allow to modify invoices that have been validated in the past --- htdocs/compta/facture/card.php | 2 +- htdocs/compta/facture/class/facture.class.php | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index 7de827ff1d2..d3132a0cb4a 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -305,7 +305,7 @@ if (empty($reshook)) { $object->fetch($id); if (!empty($conf->global-> INVOICE_CHECK_POSTERIOR_DATE)) { - $last_of_type = $object->willBeLastOfSameType(); + $last_of_type = $object->willBeLastOfSameType($allow_validated_drafts = true); if (empty($object->date_validation) && !$last_of_type[0]) { setEventMessages($langs->transnoentities("ErrorInvoiceIsNotLastOfSameType", $object->ref, dol_print_date($object->date, 'day'), dol_print_date($last_of_type[1], 'day')), null, 'errors'); $action = ''; diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 9079e99dcf8..435b358ae32 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -3009,7 +3009,7 @@ class Facture extends CommonInvoice return -1; } if (!empty($conf->global-> INVOICE_CHECK_POSTERIOR_DATE)) { - $last_of_type = $this->willBeLastOfSameType(); + $last_of_type = $this->willBeLastOfSameType($allow_validated_drafts = true); if (!$last_of_type[0]) { $this->error = $langs->transnoentities("ErrorInvoiceIsNotLastOfSameType", $this->ref, dol_print_date($this->date, 'day'), dol_print_date($last_of_type[1], 'day')); return -1; @@ -5567,9 +5567,10 @@ class Facture extends CommonInvoice /** * See if current invoice date is posterior to the last invoice date among validated invoices of same type. + * @param boolean $allow_validated_drafts return true if the invoice has been validated before returning to DRAFT state. * @return boolean */ - public function willBeLastOfSameType() + public function willBeLastOfSameType($allow_validated_drafts = false) { // get date of last validated invoices of same type $sql = "SELECT datef"; @@ -5586,7 +5587,12 @@ class Facture extends CommonInvoice $last_date = $this->db->jdate($obj->datef); $invoice_date = $this->date; - return [$invoice_date >= $last_date, $last_date]; + $is_last_of_same_type = $invoice_date >= $last_date; + if ($allow_validated_drafts) { + $is_last_of_same_type = $is_last_of_same_type || (!strpos($this->ref, 'PROV') && $this->status == self::STATUS_DRAFT); + } + + return [$is_last_of_same_type, $last_date]; } else { // element is first of type to be validated return [true]; From a77c2c2260ee4fe9b0daf26dcd564659e25ffd7f Mon Sep 17 00:00:00 2001 From: lmarcouiller Date: Fri, 13 May 2022 11:51:58 +0200 Subject: [PATCH 121/248] Fix : import with selectbox --- htdocs/imports/import.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php index 15d83cfe8e7..b87b1e18f1a 100644 --- a/htdocs/imports/import.php +++ b/htdocs/imports/import.php @@ -352,6 +352,7 @@ if ($step == 1 || !$datatoimport) { $serialized_array_match_file_to_database = ''; $array_match_file_to_database = array(); $_SESSION["dol_array_match_file_to_database"] = ''; + $_SESSION["dol_array_match_file_to_database_select"] = ''; $param = ''; if ($excludefirstline) { From 1ba8bc9147588f51b9ae1f720ed6055f33accce3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 14 May 2022 07:51:48 +0200 Subject: [PATCH 122/248] css --- htdocs/societe/list.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index bdc0fae08e0..80b0142a572 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -1466,7 +1466,7 @@ while ($i < min($num, $limit)) { } // Address if (!empty($arrayfields['s.address']['checked'])) { - print ''.dol_escape_htmltag($obj->address).''; + print ''.dol_escape_htmltag($obj->address).''; if (!$i) { $totalarray['nbfield']++; } @@ -1673,7 +1673,7 @@ while ($i < min($num, $limit)) { print $hookmanager->resPrint; // Date creation if (!empty($arrayfields['s.datec']['checked'])) { - print ''; + print ''; print dol_print_date($db->jdate($obj->date_creation), 'dayhour', 'tzuser'); print ''; if (!$i) { @@ -1682,7 +1682,7 @@ while ($i < min($num, $limit)) { } // Date modification if (!empty($arrayfields['s.tms']['checked'])) { - print ''; + print ''; print dol_print_date($db->jdate($obj->date_update), 'dayhour', 'tzuser'); print ''; if (!$i) { @@ -1691,7 +1691,7 @@ while ($i < min($num, $limit)) { } // Status if (!empty($arrayfields['s.status']['checked'])) { - print ''.$companystatic->getLibStatut(5).''; + print ''.$companystatic->getLibStatut(5).''; if (!$i) { $totalarray['nbfield']++; } From 508cbee1a5e008d45535edd8fa994fdc04a20d9e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 15 May 2022 22:29:19 +0200 Subject: [PATCH 123/248] Fix php8 --- htdocs/accountancy/admin/productaccount.php | 14 ++++++------ .../class/accountingaccount.class.php | 10 ++++----- htdocs/accountancy/class/lettering.class.php | 16 +++++++------- htdocs/adherents/class/subscription.class.php | 10 ++++----- htdocs/adherents/index.php | 20 ++++++++--------- htdocs/compta/facture/prelevement.php | 20 ++++++++--------- htdocs/compta/paiement_charge.php | 2 +- htdocs/compta/paiement_vat.php | 2 +- htdocs/compta/prelevement/stats.php | 3 ++- htdocs/contrat/index.php | 22 ++++++++++++------- htdocs/core/boxes/box_boms.php | 2 +- htdocs/core/boxes/box_clients.php | 2 +- htdocs/core/boxes/box_contacts.php | 2 +- htdocs/core/boxes/box_contracts.php | 9 ++++---- htdocs/core/boxes/box_members.php | 2 +- htdocs/core/boxes/box_mos.php | 2 +- htdocs/core/boxes/box_propales.php | 2 +- htdocs/don/payment/payment.php | 2 +- htdocs/expensereport/payment/payment.php | 2 +- .../class/fournisseur.commande.class.php | 2 +- htdocs/loan/payment/payment.php | 2 +- htdocs/ticket/class/ticket.class.php | 7 +++++- 22 files changed, 84 insertions(+), 71 deletions(-) diff --git a/htdocs/accountancy/admin/productaccount.php b/htdocs/accountancy/admin/productaccount.php index 1a682636077..c8cb62cd7e0 100644 --- a/htdocs/accountancy/admin/productaccount.php +++ b/htdocs/accountancy/admin/productaccount.php @@ -395,8 +395,8 @@ $sql .= $db->order($sortfield, $sortorder); $nbtotalofrecords = ''; if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) { - $result = $db->query($sql); - $nbtotalofrecords = $db->num_rows($result); + $resql = $db->query($sql); + $nbtotalofrecords = $db->num_rows($resql); if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0 $page = 0; $offset = 0; @@ -406,9 +406,9 @@ if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) { $sql .= $db->plimit($limit + 1, $offset); dol_syslog("/accountancy/admin/productaccount.php", LOG_DEBUG); -$result = $db->query($sql); -if ($result) { - $num = $db->num_rows($result); +$resql = $db->query($sql); +if ($resql) { + $num = $db->num_rows($resql); $i = 0; $param = ''; @@ -608,7 +608,7 @@ if ($result) { $i = 0; while ($i < min($num, $limit)) { - $obj = $db->fetch_object($result); + $obj = $db->fetch_object($resql); // Ref produit as link $product_static->ref = $obj->ref; @@ -891,7 +891,7 @@ if ($result) { print ''; - $db->free($result); + $db->free($resql); } else { dol_print_error($db); } diff --git a/htdocs/accountancy/class/accountingaccount.class.php b/htdocs/accountancy/class/accountingaccount.class.php index ac943180b58..72efffc2b49 100644 --- a/htdocs/accountancy/class/accountingaccount.class.php +++ b/htdocs/accountancy/class/accountingaccount.class.php @@ -586,11 +586,11 @@ class AccountingAccount extends CommonObject $sql .= ' WHERE a.rowid = ' . ((int) $id); dol_syslog(get_class($this) . '::info sql=' . $sql); - $result = $this->db->query($sql); + $resql = $this->db->query($sql); - if ($result) { - if ($this->db->num_rows($result)) { - $obj = $this->db->fetch_object($result); + if ($resql) { + if ($this->db->num_rows($resql)) { + $obj = $this->db->fetch_object($resql); $this->id = $obj->rowid; if ($obj->fk_user_author) { $cuser = new User($this->db); @@ -605,7 +605,7 @@ class AccountingAccount extends CommonObject $this->date_creation = $this->db->jdate($obj->datec); $this->date_modification = $this->db->jdate($obj->tms); } - $this->db->free($result); + $this->db->free($resql); } else { dol_print_error($this->db); } diff --git a/htdocs/accountancy/class/lettering.class.php b/htdocs/accountancy/class/lettering.class.php index a2718973185..81caaa05358 100644 --- a/htdocs/accountancy/class/lettering.class.php +++ b/htdocs/accountancy/class/lettering.class.php @@ -266,14 +266,14 @@ class Lettering extends BookKeeping $sql .= " ORDER BY ab2.lettering_code DESC"; $sql .= " LIMIT 1 "; - $result = $this->db->query($sql); - if ($result) { - $obj = $this->db->fetch_object($result); + $resqla = $this->db->query($sql); + if ($resqla) { + $obj = $this->db->fetch_object($resqla); $lettre = (empty($obj->lettering_code) ? 'AAA' : $obj->lettering_code); if (!empty($obj->lettering_code)) { $lettre++; } - $this->db->free($result); + $this->db->free($resqla); } else { $this->errors[] = 'Error'.$this->db->lasterror(); $error++; @@ -281,14 +281,14 @@ class Lettering extends BookKeeping $sql = "SELECT SUM(ABS(debit)) as deb, SUM(ABS(credit)) as cred FROM ".MAIN_DB_PREFIX."accounting_bookkeeping WHERE "; $sql .= " rowid IN (".$this->db->sanitize(implode(',', $ids)).") AND lettering_code IS NULL AND subledger_account != ''"; - $result = $this->db->query($sql); - if ($result) { - $obj = $this->db->fetch_object($result); + $resqlb = $this->db->query($sql); + if ($resqlb) { + $obj = $this->db->fetch_object($resqlb); if (!(round(abs($obj->deb), 2) === round(abs($obj->cred), 2))) { $this->errors[] = 'Total not exacts '.round(abs($obj->deb), 2).' vs '.round(abs($obj->cred), 2); $error++; } - $this->db->free($result); + $this->db->free($resqlb); } else { $this->errors[] = 'Erreur sql'.$this->db->lasterror(); $error++; diff --git a/htdocs/adherents/class/subscription.class.php b/htdocs/adherents/class/subscription.class.php index 9aef78174de..b3cfe027197 100644 --- a/htdocs/adherents/class/subscription.class.php +++ b/htdocs/adherents/class/subscription.class.php @@ -490,17 +490,17 @@ class Subscription extends CommonObject $sql .= ' FROM '.MAIN_DB_PREFIX.'subscription as c'; $sql .= ' WHERE c.rowid = '.((int) $id); - $result = $this->db->query($sql); - if ($result) { - if ($this->db->num_rows($result)) { - $obj = $this->db->fetch_object($result); + $resql = $this->db->query($sql); + if ($resql) { + if ($this->db->num_rows($resql)) { + $obj = $this->db->fetch_object($resql); $this->id = $obj->rowid; $this->date_creation = $this->db->jdate($obj->datec); $this->date_modification = $this->db->jdate($obj->datem); } - $this->db->free($result); + $this->db->free($resql); } else { dol_print_error($this->db); } diff --git a/htdocs/adherents/index.php b/htdocs/adherents/index.php index 2b0c295afbd..1ef98dddb6d 100644 --- a/htdocs/adherents/index.php +++ b/htdocs/adherents/index.php @@ -99,12 +99,12 @@ $sql .= " WHERE t.entity IN (".getEntity('member_type').")"; $sql .= " GROUP BY t.rowid, t.libelle, t.subscription, d.statut"; dol_syslog("index.php::select nb of members per type", LOG_DEBUG); -$result = $db->query($sql); -if ($result) { - $num = $db->num_rows($result); +$resql = $db->query($sql); +if ($resql) { + $num = $db->num_rows($resql); $i = 0; while ($i < $num) { - $objp = $db->fetch_object($result); + $objp = $db->fetch_object($resql); $adhtype = new AdherentType($db); $adhtype->id = $objp->rowid; @@ -127,7 +127,7 @@ if ($result) { $i++; } - $db->free($result); + $db->free($resql); } $now = dol_now(); @@ -143,16 +143,16 @@ $sql .= " AND t.rowid = d.fk_adherent_type"; $sql .= " GROUP BY d.fk_adherent_type"; dol_syslog("index.php::select nb of uptodate members by type", LOG_DEBUG); -$result = $db->query($sql); -if ($result) { - $num = $db->num_rows($result); +$resql = $db->query($sql); +if ($resql) { + $num = $db->num_rows($resql); $i = 0; while ($i < $num) { - $objp = $db->fetch_object($result); + $objp = $db->fetch_object($resql); $MembersUpToDate[$objp->fk_adherent_type] = $objp->somme; $i++; } - $db->free(); + $db->free($resql); } /* diff --git a/htdocs/compta/facture/prelevement.php b/htdocs/compta/facture/prelevement.php index 316254b0398..583626f0220 100644 --- a/htdocs/compta/facture/prelevement.php +++ b/htdocs/compta/facture/prelevement.php @@ -310,9 +310,9 @@ if ($object->id > 0) { $sql .= " AND pfd.ext_payment_id IS NULL"; $sql .= " ORDER BY pfd.date_demande DESC"; - $result_sql = $db->query($sql); - if ($result_sql) { - $num = $db->num_rows($result_sql); + $resql = $db->query($sql); + if ($resql) { + $num = $db->num_rows($resql); $numopen = $num; } else { dol_print_error($db); @@ -695,9 +695,9 @@ if ($object->id > 0) { $sql .= " AND pfd.traite = 0"; $sql .= " AND pfd.ext_payment_id IS NULL"; - $result_sql = $db->query($sql); - if ($result_sql) { - $obj = $db->fetch_object($result_sql); + $resql = $db->query($sql); + if ($resql) { + $obj = $db->fetch_object($resql); if ($obj) { $pending = $obj->amount; } @@ -797,17 +797,17 @@ if ($object->id > 0) { $sql .= " AND pfd.ext_payment_id IS NULL"; $sql .= " ORDER BY pfd.date_demande DESC"; - $result_sql = $db->query($sql); + $resql = $db->query($sql); $num = 0; - if ($result_sql) { + if ($resql) { $i = 0; $tmpuser = new User($db); $num = $db->num_rows($result); while ($i < $num) { - $obj = $db->fetch_object($result_sql); + $obj = $db->fetch_object($resql); $tmpuser->id = $obj->user_id; $tmpuser->login = $obj->login; @@ -840,7 +840,7 @@ if ($object->id > 0) { $i++; } - $db->free($result_sql); + $db->free($resql); } else { dol_print_error($db); } diff --git a/htdocs/compta/paiement_charge.php b/htdocs/compta/paiement_charge.php index 7cd49a9427c..640ffc78d99 100644 --- a/htdocs/compta/paiement_charge.php +++ b/htdocs/compta/paiement_charge.php @@ -198,7 +198,7 @@ if ($action == 'create') { if ($resql) { $obj = $db->fetch_object($resql); $sumpaid = $obj->total; - $db->free(); + $db->free($resql); } /*print ''.$langs->trans("AlreadyPaid").''.price($sumpaid,0,$outputlangs,1,-1,-1,$conf->currency).''; print ''.$langs->trans("RemainderToPay").''.price($total-$sumpaid,0,$outputlangs,1,-1,-1,$conf->currency).'';*/ diff --git a/htdocs/compta/paiement_vat.php b/htdocs/compta/paiement_vat.php index 28bc838c296..84d2765b278 100644 --- a/htdocs/compta/paiement_vat.php +++ b/htdocs/compta/paiement_vat.php @@ -194,7 +194,7 @@ if ($action == 'create') { if ($resql) { $obj = $db->fetch_object($resql); $sumpaid = $obj->total; - $db->free(); + $db->free($resql); } /*print ''.$langs->trans("AlreadyPaid").''.price($sumpaid,0,$outputlangs,1,-1,-1,$conf->currency).''; print ''.$langs->trans("RemainderToPay").''.price($total-$sumpaid,0,$outputlangs,1,-1,-1,$conf->currency).'';*/ diff --git a/htdocs/compta/prelevement/stats.php b/htdocs/compta/prelevement/stats.php index 9c30db6e08a..8ee4c854600 100644 --- a/htdocs/compta/prelevement/stats.php +++ b/htdocs/compta/prelevement/stats.php @@ -143,7 +143,8 @@ if ($resql) { print price($total); print ' '; print ""; - $db->free(); + + $db->free($resql); } else { dol_print_error($db); } diff --git a/htdocs/contrat/index.php b/htdocs/contrat/index.php index 99739260b36..db0f515273c 100644 --- a/htdocs/contrat/index.php +++ b/htdocs/contrat/index.php @@ -346,22 +346,27 @@ if ($result) { while ($i < $num) { $obj = $db->fetch_object($result); + $datem = $db->jdate($obj->tms); + + $staticcontrat->ref = ($obj->ref ? $obj->ref : $obj->cid); + $staticcontrat->id = $obj->cid; + + $staticcompany->id = $obj->socid; + $staticcompany->name = $obj->name; print ''; print ''; - $staticcontrat->ref = ($obj->ref ? $obj->ref : $obj->cid); - $staticcontrat->id = $obj->cid; print $staticcontrat->getNomUrl(1, 16); if ($obj->nb_late) { print img_warning($langs->trans("Late")); } print ''; print ''; - $staticcompany->id = $obj->socid; - $staticcompany->name = $obj->name; print $staticcompany->getNomUrl(1, '', 20); print ''; - print ''.dol_print_date($db->jdate($obj->tms), 'dayhour').''; + print ''; + print dol_print_date($datem, 'dayhour'); + print ''; //print ''.$staticcontrat->LibStatut($obj->statut,2).''; print ''.($obj->nb_initial > 0 ? ''.$obj->nb_initial.''.$staticcontratligne->LibStatut(0, 3, -1, 'class="paddingleft"') : '').''; print ''.($obj->nb_running > 0 ? ''.$obj->nb_running.''.$staticcontratligne->LibStatut(4, 3, 0, 'class="marginleft"') : '').''; @@ -451,7 +456,7 @@ if ($resql) { print "\n"; $i++; } - $db->free(); + $db->free($resql); print ""; } else { @@ -532,7 +537,8 @@ if ($resql) { print "\n"; $i++; } - $db->free(); + + $db->free($resql); print ""; } else { @@ -614,7 +620,7 @@ if ($resql) { print "\n"; $i++; } - $db->free(); + $db->free($resql); print ""; } else { diff --git a/htdocs/core/boxes/box_boms.php b/htdocs/core/boxes/box_boms.php index d96fac8bc76..a9a4f8746da 100644 --- a/htdocs/core/boxes/box_boms.php +++ b/htdocs/core/boxes/box_boms.php @@ -147,7 +147,7 @@ class box_boms extends ModeleBoxes } $this->info_box_contents[$line][] = array( - 'td' => 'class="right"', + 'td' => 'class="center nowraponall" title="'.dol_escape_htmltag($langs->trans("DateModification").': '.dol_print_date($datem, 'dayhour', 'tzuserrel')).'"', 'text' => dol_print_date($datem, 'day', 'tzuserrel'), ); diff --git a/htdocs/core/boxes/box_clients.php b/htdocs/core/boxes/box_clients.php index 2afa630860b..4a7ea965006 100644 --- a/htdocs/core/boxes/box_clients.php +++ b/htdocs/core/boxes/box_clients.php @@ -140,7 +140,7 @@ class box_clients extends ModeleBoxes ); $this->info_box_contents[$line][] = array( - 'td' => 'class="center nowraponall"', + 'td' => 'class="center nowraponall" title="'.dol_escape_htmltag($langs->trans("DateModification").': '.dol_print_date($datem, 'dayhour', 'tzuserrel')).'"', 'text' => dol_print_date($datem, "day", 'tzuserrel') ); diff --git a/htdocs/core/boxes/box_contacts.php b/htdocs/core/boxes/box_contacts.php index b2ba608d689..ea35a080d0e 100644 --- a/htdocs/core/boxes/box_contacts.php +++ b/htdocs/core/boxes/box_contacts.php @@ -177,7 +177,7 @@ class box_contacts extends ModeleBoxes ); $this->info_box_contents[$line][] = array( - 'td' => 'class="right"', + 'td' => 'class="center nowraponall" title="'.dol_escape_htmltag($langs->trans("DateModification").': '.dol_print_date($datem, 'dayhour', 'tzuserrel')).'"', 'text' => dol_print_date($datem, "day", 'tzuserrel'), ); diff --git a/htdocs/core/boxes/box_contracts.php b/htdocs/core/boxes/box_contracts.php index 8eeb1b93323..dddafffdc02 100644 --- a/htdocs/core/boxes/box_contracts.php +++ b/htdocs/core/boxes/box_contracts.php @@ -83,8 +83,8 @@ class box_contracts extends ModeleBoxes $thirdpartytmp = new Societe($this->db); $sql = "SELECT s.nom as name, s.rowid as socid, s.email, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.code_compta, s.code_compta_fournisseur,"; - $sql .= " c.rowid, c.ref, c.statut as fk_statut, c.date_contrat, c.datec, c.fin_validite, c.date_cloture"; - $sql .= ", c.ref_customer, c.ref_supplier"; + $sql .= " c.rowid, c.ref, c.statut as fk_statut, c.date_contrat, c.datec, c.tms as date_modification, c.fin_validite, c.date_cloture,"; + $sql .= " c.ref_customer, c.ref_supplier"; $sql .= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."contrat as c"; if (empty($user->rights->societe->client->voir) && !$user->socid) { $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; @@ -117,6 +117,7 @@ class box_contracts extends ModeleBoxes $objp = $this->db->fetch_object($resql); $datec = $this->db->jdate($objp->datec); + $datem = $this->db->jdate($objp->date_modification); $dateterm = $this->db->jdate($objp->fin_validite); $dateclose = $this->db->jdate($objp->date_cloture); $late = ''; @@ -155,8 +156,8 @@ class box_contracts extends ModeleBoxes ); $this->info_box_contents[$line][] = array( - 'td' => 'class="right"', - 'text' => dol_print_date($datec, 'day', 'tzuserrel'), + 'td' => 'class="center nowraponall" title="'.dol_escape_htmltag($langs->trans("DateModification").': '.dol_print_date($datem, 'dayhour', 'tzuserrel')).'"', + 'text' => dol_print_date($datem, 'day', 'tzuserrel'), ); $this->info_box_contents[$line][] = array( diff --git a/htdocs/core/boxes/box_members.php b/htdocs/core/boxes/box_members.php index 5865cba2530..e091d58643b 100644 --- a/htdocs/core/boxes/box_members.php +++ b/htdocs/core/boxes/box_members.php @@ -145,7 +145,7 @@ class box_members extends ModeleBoxes ); $this->info_box_contents[$line][] = array( - 'td' => 'class="center nowraponall"', + 'td' => 'class="center nowraponall" title="'.dol_escape_htmltag($langs->trans("DateModification").': '.dol_print_date($datem, 'dayhour', 'tzuserrel')).'"', 'text' => dol_print_date($datem, "day", 'tzuserrel'), ); diff --git a/htdocs/core/boxes/box_mos.php b/htdocs/core/boxes/box_mos.php index 6436fb8e34e..cff19388c17 100644 --- a/htdocs/core/boxes/box_mos.php +++ b/htdocs/core/boxes/box_mos.php @@ -144,7 +144,7 @@ class box_mos extends ModeleBoxes } $this->info_box_contents[$line][] = array( - 'td' => 'class="center nowraponall"', + 'td' => 'class="center nowraponall" title="'.dol_escape_htmltag($langs->trans("DateModification").': '.dol_print_date($datem, 'dayhour', 'tzuserrel')).'"', 'text' => dol_print_date($datem, 'day', 'tzuserrel'), ); diff --git a/htdocs/core/boxes/box_propales.php b/htdocs/core/boxes/box_propales.php index f3f9496325f..97b7bd5fd51 100644 --- a/htdocs/core/boxes/box_propales.php +++ b/htdocs/core/boxes/box_propales.php @@ -165,7 +165,7 @@ class box_propales extends ModeleBoxes ); $this->info_box_contents[$line][] = array( - 'td' => 'class="center nowraponall"', + 'td' => 'class="center nowraponall" title="'.dol_escape_htmltag($langs->trans("Date").': '.dol_print_date($datem, 'day', 'tzuserrel')).'"', 'text' => dol_print_date($date, 'day', 'tzuserrel'), ); diff --git a/htdocs/don/payment/payment.php b/htdocs/don/payment/payment.php index 5128509c88c..6cc37303346 100644 --- a/htdocs/don/payment/payment.php +++ b/htdocs/don/payment/payment.php @@ -149,7 +149,7 @@ $resql = $db->query($sql); if ($resql) { $obj = $db->fetch_object($resql); $sumpaid = $obj->total; - $db->free(); + $db->free($resql); } diff --git a/htdocs/expensereport/payment/payment.php b/htdocs/expensereport/payment/payment.php index ee80c9bc24a..185b3cdc139 100644 --- a/htdocs/expensereport/payment/payment.php +++ b/htdocs/expensereport/payment/payment.php @@ -212,7 +212,7 @@ if ($action == 'create' || empty($action)) { if ($resql) { $obj = $db->fetch_object($resql); $sumpaid = $obj->total; - $db->free(); + $db->free($resql); } print ''.$langs->trans("AlreadyPaid").''.price($sumpaid, 0, $outputlangs, 1, -1, -1, $conf->currency).''; print ''.$langs->trans("RemainderToPay").''.price($total - $sumpaid, 0, $outputlangs, 1, -1, -1, $conf->currency).''; diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 1d26fb5cfab..b08e31381a1 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -3523,7 +3523,7 @@ class CommandeFournisseur extends CommonOrder empty($this->receptions[$obj->rowid]) ? $this->receptions[$obj->rowid] = $obj->qty : $this->receptions[$obj->rowid] += $obj->qty; $i++; } - $this->db->free(); + $this->db->free($resql); return $num; } else { diff --git a/htdocs/loan/payment/payment.php b/htdocs/loan/payment/payment.php index 47fa5b37846..ac2b967593c 100644 --- a/htdocs/loan/payment/payment.php +++ b/htdocs/loan/payment/payment.php @@ -244,7 +244,7 @@ if ($action == 'create') { if ($resql) { $obj = $db->fetch_object($resql); $sumpaid = $obj->total; - $db->free(); + $db->free($resql); } print '
    '; diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php index 72ec8625e0e..9e097e303c8 100644 --- a/htdocs/ticket/class/ticket.class.php +++ b/htdocs/ticket/class/ticket.class.php @@ -1372,7 +1372,12 @@ class Ticket extends CommonObject $label .= ''.$langs->trans('Ref').': '.$this->ref.'
    '; $label .= ''.$langs->trans('TicketTrackId').': '.$this->track_id.'
    '; $label .= ''.$langs->trans('Subject').': '.$this->subject; - + if ($this->date_creation) { + $label .= '
    '.$langs->trans('DateCreation').': '.$this->date_creation; + } + if ($this->date_modification) { + $label .= '
    '.$langs->trans('DateModification').': '.$this->date_modification; + } $url = DOL_URL_ROOT.'/ticket/card.php?id='.$this->id; if ($option != 'nolink') { From ac60aa47110809121962251bfeba8a1d6f43c4e3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 May 2022 10:45:42 +0200 Subject: [PATCH 124/248] NEW Add filter "opportunity status" on statistics of projects. --- htdocs/projet/class/project.class.php | 6 +- htdocs/projet/class/projectstats.class.php | 24 ++++- htdocs/projet/list.php | 4 +- htdocs/projet/stats/index.php | 89 +++++-------------- .../workstation/class/workstation.class.php | 6 +- 5 files changed, 53 insertions(+), 76 deletions(-) diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 98f2fed52b4..4fd6c3976fe 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -236,14 +236,14 @@ class Project extends CommonObject 'datee' =>array('type'=>'date', 'label'=>'DateEnd', 'enabled'=>1, 'visible'=>1, 'position'=>35), 'description' =>array('type'=>'text', 'label'=>'Description', 'enabled'=>1, 'visible'=>3, 'position'=>55, 'searchall'=>1), 'public' =>array('type'=>'integer', 'label'=>'Visibility', 'enabled'=>1, 'visible'=>1, 'position'=>65), - 'fk_opp_status' =>array('type'=>'integer', 'label'=>'OpportunityStatusShort', 'enabled'=>1, 'visible'=>1, 'position'=>75), - 'opp_percent' =>array('type'=>'double(5,2)', 'label'=>'OpportunityProbabilityShort', 'enabled'=>1, 'visible'=>1, 'position'=>80), + 'fk_opp_status' =>array('type'=>'integer', 'label'=>'OpportunityStatusShort', 'enabled'=>'!empty($conf->global->PROJECT_USE_OPPORTUNITIES)', 'visible'=>1, 'position'=>75), + 'opp_percent' =>array('type'=>'double(5,2)', 'label'=>'OpportunityProbabilityShort', 'enabled'=>'!empty($conf->global->PROJECT_USE_OPPORTUNITIES)', 'visible'=>1, 'position'=>80), 'note_private' =>array('type'=>'text', 'label'=>'NotePrivate', 'enabled'=>1, 'visible'=>0, 'position'=>85, 'searchall'=>1), 'note_public' =>array('type'=>'text', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>0, 'position'=>90, 'searchall'=>1), 'model_pdf' =>array('type'=>'varchar(255)', 'label'=>'ModelPdf', 'enabled'=>1, 'visible'=>0, 'position'=>95), 'date_close' =>array('type'=>'datetime', 'label'=>'DateClosing', 'enabled'=>1, 'visible'=>0, 'position'=>105), 'fk_user_close' =>array('type'=>'integer', 'label'=>'UserClosing', 'enabled'=>1, 'visible'=>0, 'position'=>110), - 'opp_amount' =>array('type'=>'double(24,8)', 'label'=>'OpportunityAmountShort', 'enabled'=>1, 'visible'=>1, 'position'=>115), + 'opp_amount' =>array('type'=>'double(24,8)', 'label'=>'OpportunityAmountShort', 'enabled'=>1, 'visible'=>'!empty($conf->global->PROJECT_USE_OPPORTUNITIES)', 'position'=>115), 'budget_amount' =>array('type'=>'double(24,8)', 'label'=>'Budget', 'enabled'=>1, 'visible'=>1, 'position'=>119), 'usage_bill_time' =>array('type'=>'integer', 'label'=>'UsageBillTimeShort', 'enabled'=>1, 'visible'=>-1, 'position'=>130), 'usage_opportunity' =>array('type'=>'integer', 'label'=>'UsageOpportunity', 'enabled'=>1, 'visible'=>-1, 'position'=>135), diff --git a/htdocs/projet/class/projectstats.class.php b/htdocs/projet/class/projectstats.class.php index efd8ecc3424..9b2314deacc 100644 --- a/htdocs/projet/class/projectstats.class.php +++ b/htdocs/projet/class/projectstats.class.php @@ -28,6 +28,10 @@ class ProjectStats extends Stats public $userid; public $socid; public $year; + public $yearmonth; + public $status; + public $opp_status; + /** * Constructor @@ -180,7 +184,25 @@ class ProjectStats extends Stats } if (!empty($this->status)) { - $sqlwhere[] = " t.fk_opp_status IN (".$this->db->sanitize($this->status).")"; + $sqlwhere[] = " t.fk_statut IN (".$this->db->sanitize($this->status).")"; + } + + if (!empty($this->opp_status)) { + if (is_numeric($this->opp_status) && $this->opp_status > 0) { + $sqlwhere[] = " t.fk_opp_status = ".((int) $this->opp_status); + } + if ($this->opp_status == 'all') { + $sqlwhere[] = " (t.fk_opp_status IS NOT NULL AND t.fk_opp_status <> -1)"; + } + if ($this->opp_status == 'openedopp') { + $sqlwhere[] = " (t.fk_opp_status IS NOT NULL AND t.fk_opp_status <> -1 AND t.fk_opp_status NOT IN (SELECT rowid FROM ".MAIN_DB_PREFIX."c_lead_status WHERE code IN ('WON','LOST')))"; + } + if ($this->opp_status == 'notopenedopp') { + $sqlwhere[] = " (t.fk_opp_status IS NULL OR t.fk_opp_status = -1 OR t.fk_opp_status IN (SELECT rowid FROM ".MAIN_DB_PREFIX."c_lead_status WHERE code = 'WON'))"; + } + if ($this->opp_status == 'none') { + $sqlwhere[] = " (t.fk_opp_status IS NULL OR t.fk_opp_status = -1)"; + } } if (empty($user->rights->projet->all->lire)) { diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index 0d5c4964003..1ba9d6be483 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -1174,8 +1174,8 @@ while ($i < min($num, $limit)) { } // Title if (!empty($arrayfields['p.title']['checked'])) { - print ''; - print dol_trunc($obj->title, 80); + print ''; + print $obj->title; print ''; if (!$i) { $totalarray['nbfield']++; diff --git a/htdocs/projet/stats/index.php b/htdocs/projet/stats/index.php index f41651e15d8..58e8fbb4a01 100644 --- a/htdocs/projet/stats/index.php +++ b/htdocs/projet/stats/index.php @@ -24,18 +24,15 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/dolgraph.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/project.lib.php'; require_once DOL_DOCUMENT_ROOT.'/projet/class/projectstats.class.php'; -// Security check -if (!$user->rights->projet->lire) { - accessforbidden(); -} - - $WIDTH = DolGraph::getDefaultGraphSizeForStats('width'); $HEIGHT = DolGraph::getDefaultGraphSizeForStats('height'); +$search_opp_status = GETPOST("search_opp_status", 'alpha'); + $userid = GETPOST('userid', 'int'); $socid = GETPOST('socid', 'int'); // Security check @@ -44,19 +41,25 @@ if ($user->socid > 0) { $socid = $user->socid; } $nowyear = strftime("%Y", dol_now()); -$year = GETPOST('year') > 0 ?GETPOST('year') : $nowyear; +$year = GETPOST('year', 'int') > 0 ? GETPOST('year', 'int') : $nowyear; $startyear = $year - (empty($conf->global->MAIN_STATS_GRAPHS_SHOW_N_YEARS) ? 2 : max(1, min(10, $conf->global->MAIN_STATS_GRAPHS_SHOW_N_YEARS))); $endyear = $year; // Load translation files required by the page $langs->loadLangs(array('companies', 'projects')); +// Security check +if (!$user->rights->projet->lire) { + accessforbidden(); +} + /* * View */ $form = new Form($db); +$formproject = new FormProjets($db); $includeuserlist = array(); @@ -82,66 +85,11 @@ if (!empty($year)) { $stats_project->year = $year; } -/* -if (!empty($conf->global->PROJECT_USE_OPPORTUNITIES)) -{ - // Current stats of project amount per status - $data1 = $stats_project->getAllProjectByStatus(); - - if (!is_array($data1) && $data1 < 0) { - setEventMessages($stats_project->error, null, 'errors'); +if (!empty($conf->global->PROJECT_USE_OPPORTUNITIES)) { + if ($search_opp_status) { + $stats_project->opp_status = $search_opp_status; } - if (empty($data1)) - { - $showpointvalue = 0; - $nocolor = 1; - $data1 = array(array(0=>$langs->trans("None"), 1=>1)); - } - - $filenamenb = $conf->project->dir_output."/stats/projectbystatus.png"; - $fileurlnb = DOL_URL_ROOT.'/viewimage.php?modulepart=projectstats&file=projectbystatus.png'; - $px = new DolGraph(); - $mesg = $px->isGraphKo(); - if (empty($mesg)) { - $i = 0; $tot = count($data1); $legend = array(); - while ($i <= $tot) - { - $legend[] = $data1[$i][0]; - $i++; - } - - $px->SetData($data1); - unset($data1); - - if ($nocolor) - $px->SetDataColor(array( - array( - 220, - 220, - 220 - ) - )); - - $px->SetLegend($legend); - $px->setShowLegend(0); - $px->setShowPointValue($showpointvalue); - $px->setShowPercent(1); - $px->SetMaxValue($px->GetCeilMaxValue()); - $px->SetWidth($WIDTH); - $px->SetHeight($HEIGHT); - $px->SetShading(3); - $px->SetHorizTickIncrement(1); - $px->SetCssPrefix("cssboxes"); - $px->SetType(array('pie')); - $px->SetTitle($langs->trans('OpportunitiesStatusForProjects')); - $result = $px->draw($filenamenb, $fileurlnb); - if ($result < 0) { - setEventMessages($px->error, null, 'errors'); - } - } else { - setEventMessages(null, $mesg, 'errors'); - } -}*/ +} // Build graphic number of object @@ -285,12 +233,19 @@ print ''.$langs->trans("ThirdParty").''; print img_picto('', 'company', 'class="pictofixedwidth"'); print $form->select_company($socid, 'socid', '', 1, 0, 0, array(), 0, 'widthcentpercentminusx maxwidth300', ''); print ''; +// Opportunity status +if (!empty($conf->global->PROJECT_USE_OPPORTUNITIES)) { + print ''.$langs->trans("OpportunityStatusShort").''; + print $formproject->selectOpportunityStatus('search_opp_status', $search_opp_status, 1, 0, 1, 0, 'maxwidth300', 1); + print ''; +} + // User /*print ''.$langs->trans("ProjectCommercial").''; print $form->select_dolusers($userid, 'userid', 1, array(),0,$includeuserlist); print '';*/ // Year -print ''.$langs->trans("Year").''; +print ''.$langs->trans("Year").' ('.$langs->trans("DateCreation").')'; if (!in_array($year, $arrayyears)) { $arrayyears[$year] = $year; } diff --git a/htdocs/workstation/class/workstation.class.php b/htdocs/workstation/class/workstation.class.php index df6d697f73f..4131f074e85 100644 --- a/htdocs/workstation/class/workstation.class.php +++ b/htdocs/workstation/class/workstation.class.php @@ -101,12 +101,12 @@ class Workstation extends CommonObject public $fields=array( 'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>0, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'comment'=>"Id"), 'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>'1', 'position'=>10, 'notnull'=>1, 'visible'=>1, 'noteditable'=>'0', 'default'=>'', 'index'=>1, 'searchall'=>1, 'showoncombobox'=>'1', 'comment'=>"Reference of object"), - 'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>'1', 'position'=>30, 'notnull'=>1, 'visible'=>1, 'searchall'=>1, 'css'=>'minwidth300', 'showoncombobox'=>'2',), + 'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>'1', 'position'=>30, 'notnull'=>1, 'visible'=>1, 'searchall'=>1, 'css'=>'minwidth300', 'csslist'=>'tdoverflowmax125', 'showoncombobox'=>'2',), 'type' => array('type'=>'varchar(8)', 'label'=>'Type', 'enabled'=>'1', 'position'=>32, 'default'=>1, 'notnull'=>1, 'visible'=>1, 'arrayofkeyval'=>array('HUMAN'=>'Human', 'MACHINE'=>'Machine', 'BOTH'=>'HumanMachine'),), 'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>'1', 'position'=>61, 'notnull'=>0, 'visible'=>0,), 'note_private' => array('type'=>'html', 'label'=>'NotePrivate', 'enabled'=>'1', 'position'=>62, 'notnull'=>0, 'visible'=>0,), - 'date_creation' => array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>'1', 'position'=>500, 'notnull'=>1, 'visible'=>-2,), - 'tms' => array('type'=>'timestamp', 'label'=>'DateModification', 'enabled'=>'1', 'position'=>501, 'notnull'=>0, 'visible'=>-2,), + 'date_creation' => array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>'1', 'position'=>500, 'notnull'=>1, 'visible'=>-2, 'csslist'=>'nowraponall'), + 'tms' => array('type'=>'timestamp', 'label'=>'DateModification', 'enabled'=>'1', 'position'=>501, 'notnull'=>0, 'visible'=>-2, 'csslist'=>'nowraponall'), 'fk_user_creat' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserAuthor', 'enabled'=>'1', 'position'=>510, 'notnull'=>1, 'visible'=>-2, 'foreignkey'=>'user.rowid',), 'fk_user_modif' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserModif', 'enabled'=>'1', 'position'=>511, 'notnull'=>-1, 'visible'=>-2,), 'import_key' => array('type'=>'varchar(14)', 'label'=>'ImportId', 'enabled'=>'1', 'position'=>512, 'notnull'=>-1, 'visible'=>-2,), From e6c103733ed6242fd60127cd57606b7de06216fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Mon, 16 May 2022 11:06:21 +0200 Subject: [PATCH 125/248] dlc dluo are inverted --- htdocs/reception/card.php | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/htdocs/reception/card.php b/htdocs/reception/card.php index c4a3b108b34..9e4cb346398 100644 --- a/htdocs/reception/card.php +++ b/htdocs/reception/card.php @@ -352,8 +352,10 @@ if (empty($reshook)) { } $qty = "qtyl".$i; $comment = "comment".$i; - $eatby = "dlc".$i; - $sellby = "dluo".$i; + // EATBY <-> DLUO see productbatch.class.php + // SELLBY <-> DLC + $eatby = "dluo".$i; + $sellby = "dlc".$i; $batch = "batch".$i; $cost_price = "cost_price".$i; @@ -628,9 +630,11 @@ if (empty($reshook)) { $batch = "batch".$line_id; $dlc = "dlc".$line_id; $dluo = "dluo".$line_id; - $eatby = GETPOST($dlc, 'alpha'); + // EATBY <-> DLUO + $eatby = GETPOST($dluo, 'alpha'); $eatbydate = str_replace('/', '-', $eatby); - $sellby = GETPOST($dluo, 'alpha'); + // SELLBY <-> DLC + $sellby = GETPOST($dlc, 'alpha'); $sellbydate = str_replace('/', '-', $sellby); $line->batch = GETPOST($batch, 'alpha'); $line->eatby = strtotime($eatbydate); @@ -641,8 +645,7 @@ if (empty($reshook)) { setEventMessages($line->error, $line->errors, 'errors'); $error++; } - } else // Product no predefined - { + } else { // Product no predefined $qty = "qtyl".$line_id; $line->id = $line_id; $line->qty = GETPOST($qty, 'int'); From c3673bfc3c20b3fc491437dc546085889e7022f7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 May 2022 13:05:17 +0200 Subject: [PATCH 126/248] NEW A public form for to send a message and create a lead is available --- htdocs/adherents/admin/member.php | 2 +- htdocs/adherents/admin/website.php | 5 +- htdocs/contrat/class/contrat.class.php | 12 +- htdocs/core/class/commonobject.class.php | 11 +- htdocs/core/class/html.formmail.class.php | 4 +- htdocs/core/lib/project.lib.php | 14 +- htdocs/core/tpl/extrafields_add.tpl.php | 2 + htdocs/intracommreport/list.php | 2 +- htdocs/langs/en_US/admin.lang | 3 +- htdocs/langs/en_US/main.lang | 2 + htdocs/langs/en_US/projects.lang | 5 + .../class/price_parser.class.php | 1 - htdocs/projet/admin/website.php | 53 +++++- htdocs/projet/class/project.class.php | 2 + htdocs/projet/list.php | 2 +- htdocs/projet/stats/index.php | 2 +- htdocs/public/members/new.php | 5 +- htdocs/public/partnership/new.php | 4 +- htdocs/public/project/new.php | 174 +++++++++--------- htdocs/theme/eldy/progress.inc.php | 6 +- 20 files changed, 185 insertions(+), 126 deletions(-) diff --git a/htdocs/adherents/admin/member.php b/htdocs/adherents/admin/member.php index d51dd8ef730..64197636d0e 100644 --- a/htdocs/adherents/admin/member.php +++ b/htdocs/adherents/admin/member.php @@ -64,7 +64,7 @@ if ($action == 'set_default') { } elseif ($action == 'del_default') { $ret = delDocumentModel($value, $type); if ($ret > 0) { - if ($conf->global->MEMBER_ADDON_PDF_ODT == "$value") { + if (getDolGlobalString('MEMBER_ADDON_PDF_ODT') == "$value") { dolibarr_del_const($db, 'MEMBER_ADDON_PDF_ODT', $conf->entity); } } diff --git a/htdocs/adherents/admin/website.php b/htdocs/adherents/admin/website.php index ed09c206abf..6199991f29c 100644 --- a/htdocs/adherents/admin/website.php +++ b/htdocs/adherents/admin/website.php @@ -95,12 +95,13 @@ if ($action == 'update') { $form = new Form($db); +$title = $langs->trans("MembersSetup"); $help_url = 'EN:Module_Foundations|FR:Module_Adhérents|ES:Módulo_Miembros'; -llxHeader('', $langs->trans("MembersSetup"), $help_url); +llxHeader('', $title, $help_url); $linkback = '
    '.$langs->trans("BackToModuleList").''; -print load_fiche_titre($langs->trans("MembersSetup"), $linkback, 'title_setup'); +print load_fiche_titre($title, $linkback, 'title_setup'); $head = member_admin_prepare_head(); diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index d85ad51946a..0befd4820ff 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -772,16 +772,6 @@ class Contrat extends CommonObject $now = dol_now(); - /* - if (!is_object($extrafields)) { - require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; - $extrafields = new ExtraFields($this->db); - } - - $line = new ContratLigne($this->db); - $extrafields->fetch_name_optionals_label(ContratLigne::$table_element, true); - */ - $this->lines = array(); $pos = 0; @@ -875,7 +865,7 @@ class Contrat extends CommonObject $line->date_fin_prevue = $this->db->jdate($objp->date_fin_validite); $line->date_fin_reel = $this->db->jdate($objp->date_cloture); - // Retrieve all extrafields for contract + // Retrieve all extrafields for contract line // fetch optionals attributes and labels $line->fetch_optionals(); diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index e1ed8855378..6466754f241 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -7805,7 +7805,7 @@ abstract class CommonObject * @param string $keyprefix Prefix string to add before name and id of field (can be used to avoid duplicate names) * @param string $onetrtd All fields in same tr td. Used by objectline_create.tpl.php for example. * @param string $display_type "card" for form display, "line" for document line display (extrafields on propal line, order line, etc...) - * @return string + * @return string String with html content to show */ public function showOptionals($extrafields, $mode = 'view', $params = null, $keysuffix = '', $keyprefix = '', $onetrtd = 0, $display_type = 'card') { @@ -7814,13 +7814,20 @@ abstract class CommonObject if (!is_object($form)) { $form = new Form($db); } + if (!is_object($extrafields)) { + dol_syslog('Bad parameter extrafields for showOptionals', LOG_ERR); + return 'Bad parameter extrafields for showOptionals'; + } + if (!is_array($extrafields->attributes[$this->table_element])) { + dol_syslog("extrafields->attributes was not loaded with extrafields->fetch_name_optionals_label(table_element);", LOG_WARNING); + } $out = ''; $parameters = array(); $reshook = $hookmanager->executeHooks('showOptionals', $parameters, $this, $action); // Note that $action and $object may have been modified by hook if (empty($reshook)) { - if (key_exists('label', $extrafields->attributes[$this->table_element]) && is_array($extrafields->attributes[$this->table_element]['label']) && count($extrafields->attributes[$this->table_element]['label']) > 0) { + if (is_array($extrafields->attributes[$this->table_element]) && key_exists('label', $extrafields->attributes[$this->table_element]) && is_array($extrafields->attributes[$this->table_element]['label']) && count($extrafields->attributes[$this->table_element]['label']) > 0) { $out .= "\n"; $out .= ' '; $out .= "\n"; diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php index 244da59b5ff..19ea745c8e1 100644 --- a/htdocs/core/class/html.formmail.class.php +++ b/htdocs/core/class/html.formmail.class.php @@ -1533,10 +1533,12 @@ class FormMail extends Form if (!is_object($extrafields)) { $extrafields = new ExtraFields($this->db); } - $extrafields->fetch_name_optionals_label('product', true); $product = new Product($this->db); $product->fetch($line->fk_product, '', '', 1); $product->fetch_optionals(); + + $extrafields->fetch_name_optionals_label($product->table_element, true); + if (is_array($extrafields->attributes[$product->table_element]['label']) && count($extrafields->attributes[$product->table_element]['label']) > 0) { foreach ($extrafields->attributes[$product->table_element]['label'] as $key => $label) { $substit_line['__PRODUCT_EXTRAFIELD_'.strtoupper($key).'__'] = $product->array_options['options_'.$key]; diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index 15162c8b273..68e76e85ca3 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -509,14 +509,12 @@ function project_admin_prepare_head() $head[$h][2] = 'attributes_task'; $h++; - if (getDolGlobalInt('MAIN_FEATURES_LEVEL') >= 2) { - $langs->load("members"); + $langs->load("members"); - $head[$h][0] = DOL_URL_ROOT.'/projet/admin/website.php'; - $head[$h][1] = $langs->trans("BlankSubscriptionForm"); - $head[$h][2] = 'website'; - $h++; - } + $head[$h][0] = DOL_URL_ROOT.'/projet/admin/website.php'; + $head[$h][1] = $langs->trans("BlankSubscriptionForm"); + $head[$h][2] = 'website'; + $h++; complete_head_from_modules($conf, $langs, null, $head, $h, 'project_admin', 'remove'); @@ -2819,7 +2817,7 @@ function getTaskProgressView($task, $label = true, $progressNumber = true, $hide $out .= ' '; } else { // bad - $out .= '
    '; + $out .= '
    '; $out .= '
    '; $out .= '
    '; } diff --git a/htdocs/core/tpl/extrafields_add.tpl.php b/htdocs/core/tpl/extrafields_add.tpl.php index 2f44bbe9c48..fa150d6a27b 100644 --- a/htdocs/core/tpl/extrafields_add.tpl.php +++ b/htdocs/core/tpl/extrafields_add.tpl.php @@ -41,6 +41,7 @@ if (!isset($parameters)) { } $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; if (empty($reshook)) { $params = array(); @@ -48,6 +49,7 @@ if (empty($reshook)) { $params['tpl_context'] = $tpl_context; } $params['cols'] = key_exists('colspanvalue', $parameters) ? $parameters['colspanvalue'] : ''; + print $object->showOptionals($extrafields, 'create', $params); } diff --git a/htdocs/intracommreport/list.php b/htdocs/intracommreport/list.php index b6bfd45c91a..1478dbea83f 100644 --- a/htdocs/intracommreport/list.php +++ b/htdocs/intracommreport/list.php @@ -82,7 +82,7 @@ $form = new Form($db); /* // fetch optionals attributes and labels -$extralabels = $extrafields->fetch_name_optionals_label('intracommreport'); +$extralabels = $extrafields->fetch_name_optionals_label($object->table_element); $search_array_options=$extrafields->getOptionalsFromPost($object->table_element, '', 'search_'); */ diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 3a0e96d58da..8dcd1f9f93d 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -2253,4 +2253,5 @@ HashForPing=Hash used for ping ReadOnlyMode=Is instance in "Read Only" mode DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. -FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') \ No newline at end of file +FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') +DefaultOpportunityStatus=Default opportunity status (first status when lead is created) \ No newline at end of file diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index 530f3b6af0e..97111df74cd 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -1174,3 +1174,5 @@ ConfirmAllocateCommercial=Assign sales representative confirmation ConfirmAllocateCommercialQuestion=Are you sure you want to assign the %s selected record(s)? CommercialsAffected=Sales representatives affected CommercialAffected=Sales representative affected +YourMessage=Votre message +YourMessageHasBeenReceived=Your message has been received. We will answer or contact you as soon as possible. \ No newline at end of file diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index 1e0ed42d3e3..739a35dcebf 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -289,3 +289,8 @@ FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date ErrorPROJECTLEADERRoleMissingRestoreIt=The "PROJECTLEADER" role is missing or has been de-activited, please restore in the dictionary of contact types +LeadPublicFormDesc=You can enable here a public page to allow your prospects to make a first contact to you from a public online form +EnablePublicLeadForm=Enable the public form for contact +NewLeadbyWeb=Your message or request has been recorded. We will answer or contact your soon. +NewLeadForm=New contact form +LeadFromPublicForm=Online lead from public form \ No newline at end of file diff --git a/htdocs/product/dynamic_price/class/price_parser.class.php b/htdocs/product/dynamic_price/class/price_parser.class.php index 9bd986a3c73..764ff919cc7 100644 --- a/htdocs/product/dynamic_price/class/price_parser.class.php +++ b/htdocs/product/dynamic_price/class/price_parser.class.php @@ -154,7 +154,6 @@ class PriceParser //Retrieve all extrafield for product and add it to values $extrafields = new ExtraFields($this->db); - $extrafields->fetch_name_optionals_label('product', true); $product->fetch_optionals(); if (is_array($extrafields->attributes[$product->table_element]['label'])) { foreach ($extrafields->attributes[$product->table_element]['label'] as $key => $label) { diff --git a/htdocs/projet/admin/website.php b/htdocs/projet/admin/website.php index 25497fef436..37b858757ca 100644 --- a/htdocs/projet/admin/website.php +++ b/htdocs/projet/admin/website.php @@ -28,6 +28,7 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/project.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php'; require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; // Load translation files required by the page @@ -35,10 +36,14 @@ $langs->loadLangs(array("admin", "members")); $action = GETPOST('action', 'aZ09'); +$defaultoppstatus = getDolGlobalInt('PROJECT_DEFAULT_OPPORTUNITY_STATUS_FOR_ONLINE_LEAD'); + if (!$user->admin) { accessforbidden(); } +$error = 0; + /* * Actions @@ -54,8 +59,10 @@ if ($action == 'setPROJECT_ENABLE_PUBLIC') { if ($action == 'update') { $public = GETPOST('PROJECT_ENABLE_PUBLIC'); + $defaultoppstatus = GETPOST('PROJECT_DEFAULT_OPPORTUNITY_STATUS_FOR_ONLINE_LEAD', 'int'); $res = dolibarr_set_const($db, "PROJECT_ENABLE_PUBLIC", $public, 'chaine', 0, '', $conf->entity); + $res = dolibarr_set_const($db, "PROJECT_DEFAULT_OPPORTUNITY_STATUS_FOR_ONLINE_LEAD", $defaultoppstatus, 'chaine', 0, '', $conf->entity); if (!($res > 0)) { $error++; @@ -74,13 +81,15 @@ if ($action == 'update') { */ $form = new Form($db); +$formproject = new FormProjets($db); +$title = $langs->trans("ProjectsSetup"); $help_url = ''; -llxHeader('', $langs->trans("ProjectsSetup"), $help_url); +llxHeader('', $title, $help_url); $linkback = ''.$langs->trans("BackToModuleList").''; -print load_fiche_titre($langs->trans("ProjectsSetup"), $linkback, 'title_setup'); +print load_fiche_titre($title, $linkback, 'title_setup'); $head = project_admin_prepare_head(); @@ -90,11 +99,12 @@ print ''; print ''; print ''; -print dol_get_fiche_head($head, 'website', $langs->trans("Projects"), -1, 'user'); +print dol_get_fiche_head($head, 'website', $langs->trans("Projects"), -1, 'project'); print ''.$langs->trans("LeadPublicFormDesc").'

    '; +$param = ''; $enabledisablehtml = $langs->trans("EnablePublicLeadForm").' '; if (empty($conf->global->PROJECT_ENABLE_PUBLIC)) { @@ -111,6 +121,33 @@ if (empty($conf->global->PROJECT_ENABLE_PUBLIC)) { print $enabledisablehtml; print ''; +print '
    '; + +if (!empty($conf->global->PROJECT_ENABLE_PUBLIC)) { + print '
    '; + + print '
    '; + print ''; + + print ''; + print ''; + print ''; + print "\n"; + + // Default opportunity status + print '\n"; + + print '
    '.$langs->trans("Parameter").''.$langs->trans("Value").'
    '; + print $langs->trans("DefaultOpportunityStatus"); + print ''; + print $formproject->selectOpportunityStatus('PROJECT_DEFAULT_OPPORTUNITY_STATUS_FOR_ONLINE_LEAD', GETPOSTISSET('PROJECT_DEFAULT_OPPORTUNITY_STATUS_FOR_ONLINE_LEAD') ? GETPOST('PROJECT_DEFAULT_OPPORTUNITY_STATUS_FOR_ONLINE_LEAD', 'int') : $defaultoppstatus, 1, 0, 0, 0, '', 0, 1); + print "
    '; + print '
    '; + + print '
    '; + print ''; + print '
    '; +} print dol_get_fiche_end(); @@ -120,8 +157,8 @@ print ''; if (!empty($conf->global->PROJECT_ENABLE_PUBLIC)) { print '
    '; //print $langs->trans('FollowingLinksArePublic').'
    '; - print img_picto('', 'globe').' '.$langs->trans('BlankSubscriptionForm').':
    '; - if ($conf->multicompany->enabled) { + print img_picto('', 'globe').' '.$langs->trans('BlankSubscriptionForm').'
    '; + if (!empty($conf->multicompany->enabled)) { $entity_qr = '?entity='.$conf->entity; } else { $entity_qr = ''; @@ -132,7 +169,11 @@ if (!empty($conf->global->PROJECT_ENABLE_PUBLIC)) { $urlwithroot = $urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file //$urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current - print ''.$urlwithroot.'/public/project/new.php'.$entity_qr.''; + print ''; + print ajax_autoselect('publicurlmember'); } // End of page diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 4fd6c3976fe..cadeb278ae7 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -159,7 +159,9 @@ class Project extends CommonObject public $statuts_long; public $statut; // 0=draft, 1=opened, 2=closed + public $opp_status; // opportunity status, into table llx_c_lead_status + public $fk_opp_status; // opportunity status, into table llx_c_lead_status public $opp_percent; // opportunity probability public $email_msgid; diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index 1ba9d6be483..0e6df96a8ed 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -932,7 +932,7 @@ if (!empty($arrayfields['p.public']['checked'])) { // Opp status if (!empty($arrayfields['p.fk_opp_status']['checked'])) { print ''; - print $formproject->selectOpportunityStatus('search_opp_status', $search_opp_status, 1, 0, 1, 0, 'maxwidth100', 1); + print $formproject->selectOpportunityStatus('search_opp_status', $search_opp_status, 1, 0, 1, 0, 'maxwidth100', 1, 0); print ''; } if (!empty($arrayfields['p.opp_amount']['checked'])) { diff --git a/htdocs/projet/stats/index.php b/htdocs/projet/stats/index.php index 58e8fbb4a01..5926451e321 100644 --- a/htdocs/projet/stats/index.php +++ b/htdocs/projet/stats/index.php @@ -236,7 +236,7 @@ print ''; // Opportunity status if (!empty($conf->global->PROJECT_USE_OPPORTUNITIES)) { print ''.$langs->trans("OpportunityStatusShort").''; - print $formproject->selectOpportunityStatus('search_opp_status', $search_opp_status, 1, 0, 1, 0, 'maxwidth300', 1); + print $formproject->selectOpportunityStatus('search_opp_status', $search_opp_status, 1, 0, 1, 0, 'maxwidth300', 1, 1); print ''; } diff --git a/htdocs/public/members/new.php b/htdocs/public/members/new.php index 055ffec56f9..7a27ae14b62 100644 --- a/htdocs/public/members/new.php +++ b/htdocs/public/members/new.php @@ -57,7 +57,6 @@ if (!defined('NOIPCHECK')) { // For MultiCompany module. // Do not use GETPOST here, function is not defined and define must be done before including main.inc.php -// TODO This should be useless. Because entity must be retrieve from object ref and not from url. $entity = (!empty($_GET['entity']) ? (int) $_GET['entity'] : (!empty($_POST['entity']) ? (int) $_POST['entity'] : 1)); if (is_numeric($entity)) { define("DOLENTITY", $entity); @@ -430,7 +429,7 @@ if (empty($reshook) && $action == 'added') { llxHeaderVierge($langs->trans("NewMemberForm")); // Si on a pas ete redirige - print '
    '; + print '

    '; print '
    '; print $langs->trans("NewMemberbyWeb"); print '
    '; @@ -448,7 +447,7 @@ if (empty($reshook) && $action == 'added') { $form = new Form($db); $formcompany = new FormCompany($db); $adht = new AdherentType($db); -$extrafields->fetch_name_optionals_label('adherent'); // fetch optionals attributes and labels +$extrafields->fetch_name_optionals_label($object->table_element); // fetch optionals attributes and labels llxHeaderVierge($langs->trans("NewSubscription")); diff --git a/htdocs/public/partnership/new.php b/htdocs/public/partnership/new.php index cbc1b849115..f6f0efc4fb2 100644 --- a/htdocs/public/partnership/new.php +++ b/htdocs/public/partnership/new.php @@ -419,7 +419,7 @@ if (empty($reshook) && $action == 'added') { llxHeaderVierge($langs->trans("NewPartnershipForm")); // Si on a pas ete redirige - print '
    '; + print '

    '; print '
    '; print $langs->trans("NewPartnershipbyWeb"); print '
    '; @@ -437,7 +437,7 @@ if (empty($reshook) && $action == 'added') { $form = new Form($db); $formcompany = new FormCompany($db); -$extrafields->fetch_name_optionals_label('partnership'); // fetch optionals attributes and labels +$extrafields->fetch_name_optionals_label($partnership->table_element); // fetch optionals attributes and labels llxHeaderVierge($langs->trans("NewPartnershipRequest")); diff --git a/htdocs/public/project/new.php b/htdocs/public/project/new.php index 971031e7a80..85106ce51de 100644 --- a/htdocs/public/project/new.php +++ b/htdocs/public/project/new.php @@ -45,7 +45,6 @@ if (!defined('NOIPCHECK')) { // For MultiCompany module. // Do not use GETPOST here, function is not defined and define must be done before including main.inc.php -// TODO This should be useless. Because entity must be retrieve from object ref and not from url. $entity = (!empty($_GET['entity']) ? (int) $_GET['entity'] : (!empty($_POST['entity']) ? (int) $_POST['entity'] : 1)); if (is_numeric($entity)) { define("DOLENTITY", $entity); @@ -132,9 +131,9 @@ function llxHeaderVierge($title, $head = "", $disablejs = 0, $disablehead = 0, $ print '
    '; } - if (!empty($conf->global->PROJECT_IMAGE_PUBLIC_ORGANIZEDEVENT)) { - print '
    '; - print ''; + if (!empty($conf->global->PROJECT_IMAGE_PUBLIC_NEWLEAD)) { + print '
    '; + print ''; print '
    '; } @@ -159,22 +158,6 @@ function llxFooterVierge() } -$arrayofdata = array(); -if (GETPOST('action') == 'addlead') { - // When a json request is sent - $entityBody = file_get_contents('php://input'); - - if ($entityBody) { - $arrayofdata = json_decode($entityBody, true); - } - - print 'Date received and lead created'; - - $db->close(); - exit; -} - - /* * Actions @@ -194,42 +177,6 @@ if (empty($reshook) && $action == 'add') { $db->begin(); - // test if lead already exists - /* - if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED)) { - if (!GETPOST('login')) { - $error++; - $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Login"))."
    \n"; - } - $sql = "SELECT login FROM ".MAIN_DB_PREFIX."adherent WHERE login='".$db->escape(GETPOST('login'))."'"; - $result = $db->query($sql); - if ($result) { - $num = $db->num_rows($result); - } - if ($num != 0) { - $error++; - $langs->load("errors"); - $errmsg .= $langs->trans("ErrorLoginAlreadyExists")."
    \n"; - } - if (!GETPOSTISSET("pass1") || !GETPOSTISSET("pass2") || GETPOST("pass1", 'none') == '' || GETPOST("pass2", 'none') == '' || GETPOST("pass1", 'none') != GETPOST("pass2", 'none')) { - $error++; - $langs->load("errors"); - $errmsg .= $langs->trans("ErrorPasswordsMustMatch")."
    \n"; - } - if (!GETPOST("email")) { - $error++; - $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("EMail"))."
    \n"; - } - } - */ - if (GETPOST('type') <= 0) { - $error++; - $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Type"))."
    \n"; - } - if (!in_array(GETPOST('morphy'), array('mor', 'phy'))) { - $error++; - $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv('Nature'))."
    \n"; - } if (!GETPOST("lastname")) { $error++; $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Lastname"))."
    \n"; @@ -238,27 +185,87 @@ if (empty($reshook) && $action == 'add') { $error++; $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Firstname"))."
    \n"; } + if (!GETPOST("email")) { + $error++; + $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Email"))."
    \n"; + } + if (!GETPOST("description")) { + $error++; + $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Message"))."
    \n"; + } if (GETPOST("email") && !isValidEmail(GETPOST("email"))) { $error++; $langs->load("errors"); $errmsg .= $langs->trans("ErrorBadEMail", GETPOST("email"))."
    \n"; } + // Set default opportunity status + $defaultoppstatus = getDolGlobalString('PROJECT_DEFAULT_OPPORTUNITY_STATUS_FOR_ONLINE_LEAD'); + if (empty($defaultoppstatus)) { + $error++; + $langs->load("errors"); + $errmsg .= $langs->trans("ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv("Project"))."
    \n"; + } if (!$error) { - // email a peu pres correct et le login n'existe pas $proj = new Project($db); - $proj->statut = -1; + $thirdparty = new Societe($db); + + // Search thirdparty and set it if found to the new created project + $result = $thirdparty->fetch(0, '', '', '', '', '', '', '', '', '', $object->email); + if ($result > 0) { + $proj->socid = $thirdparty->id; + } + + // Defined the ref into $defaultref + $defaultref = ''; + $modele = empty($conf->global->PROJECT_ADDON) ? 'mod_project_simple' : $conf->global->PROJECT_ADDON; + + // Search template files + $file = ''; $classname = ''; $filefound = 0; + $dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']); + foreach ($dirmodels as $reldir) { + $file = dol_buildpath($reldir."core/modules/project/".$modele.'.php', 0); + if (file_exists($file)) { + $filefound = 1; + $classname = $modele; + break; + } + } + + if ($filefound) { + $result = dol_include_once($reldir."core/modules/project/".$modele.'.php'); + $modProject = new $classname; + + $defaultref = $modProject->getNextValue($thirdparty, $object); + } + + if (is_numeric($defaultref) && $defaultref <= 0) { + $defaultref = ''; + } + + if (empty($defaultref)) { + $defaultref = 'PJ'.dol_print_date(dol_now(), 'dayrfc'); + } + + $proj->ref = $defaultref; + $proj->statut = $proj::STATUS_DRAFT; + $proj->status = $proj::STATUS_DRAFT; $proj->email = GETPOST("email"); - $proj->note_private = GETPOST("note_private"); + $proj->public = 1; + $proj->usage_opportunity = 1; + $proj->title = $langs->trans("LeadFromPublicForm"); + $proj->description = GETPOST("description", "alphanohtml"); + $proj->opp_status = $defaultoppstatus; + $proj->fk_opp_status = $defaultoppstatus; - - // Fill array 'array_options' with data from add form + // Fill array 'array_options' with data from the form $extrafields->fetch_name_optionals_label($proj->table_element); $ret = $extrafields->setOptionalsFromPost(null, $proj); if ($ret < 0) { $error++; } + // Create the project $result = $proj->create($user); if ($result > 0) { require_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php'; @@ -275,7 +282,7 @@ if (empty($reshook) && $action == 'add') { $outputlangs = new Translate('', $conf); $outputlangs->setDefaultLang(empty($object->thirdparty->default_lang) ? $mysoc->default_lang : $object->thirdparty->default_lang); // Load traductions files required by page - $outputlangs->loadLangs(array("main", "members")); + $outputlangs->loadLangs(array("main", "members", "projects")); // Get email content from template $arraydefaultmessage = null; $labeltouse = $conf->global->PROJECT_EMAIL_TEMPLATE_AUTOLEAD; @@ -288,11 +295,15 @@ if (empty($reshook) && $action == 'add') { $subject = $arraydefaultmessage->topic; $msg = $arraydefaultmessage->content; } + if (empty($labeltosue)) { + $labeltouse = '['.$mysoc->name.'] '.$langs->trans("YourMessage"); + $msg = $langs->trans("YourMessageHasBeenReceived"); + } $substitutionarray = getCommonSubstitutionArray($outputlangs, 0, null, $object); complete_substitutions_array($substitutionarray, $outputlangs, $object); $subjecttosend = make_substitutions($subject, $substitutionarray, $outputlangs); - $texttosend = make_substitutions(dol_concatdesc($msg, $adht->getMailOnValid()), $substitutionarray, $outputlangs); + $texttosend = make_substitutions($msg, $substitutionarray, $outputlangs); if ($subjecttosend && $texttosend) { $moreinheader = 'X-Dolibarr-Info: send_an_email by public/lead/new.php'."\r\n"; @@ -317,10 +328,11 @@ if (empty($reshook) && $action == 'add') { if (!empty($entity)) { $urlback .= '&entity='.$entity; } - dol_syslog("project lead ".$proj->ref." was created, we redirect to ".$urlback); + + dol_syslog("project lead ".$proj->ref." has been created, we redirect to ".$urlback); } else { $error++; - $errmsg .= join('
    ', $proj->errors); + $errmsg .= $proj->error.'
    '.join('
    ', $proj->errors); } } @@ -334,23 +346,16 @@ if (empty($reshook) && $action == 'add') { } } -// Create lead from $arrayofdata -if (empty($reshook) && !empty($arrayofdata)) { - // TODO - dol_syslog(var_export($arrayofdata, true)); - // ... -} - // Action called after a submitted was send and member created successfully // If MEMBER_URL_REDIRECT_SUBSCRIPTION is set to url we never go here because a redirect was done to this url. // backtopage parameter with an url was set on member submit page, we never go here because a redirect was done to this url. if (empty($reshook) && $action == 'added') { - llxHeaderVierge($langs->trans("NewMemberForm")); + llxHeaderVierge($langs->trans("NewLeadForm")); // Si on a pas ete redirige - print '
    '; + print '

    '; print '
    '; - print $langs->trans("NewMemberbyWeb"); + print $langs->trans("NewLeadbyWeb"); print '
    '; llxFooterVierge(); @@ -365,8 +370,8 @@ if (empty($reshook) && $action == 'added') { $form = new Form($db); $formcompany = new FormCompany($db); -$extrafields->fetch_name_optionals_label('project'); // fetch optionals attributes and labels +$extrafields->fetch_name_optionals_label($object->table_element); // fetch optionals attributes and labels llxHeaderVierge($langs->trans("NewContact")); @@ -415,14 +420,16 @@ jQuery(document).ready(function () { print ''."\n"; // Lastname -print ''."\n"; +print ''."\n"; // Firstname -print ''."\n"; +print ''."\n"; +// EMail +print ''."\n"; // Company print ''."\n"; // Address print ''."\n"; +print ''."\n"; // Zip / Town print ''; if (empty($conf->global->SOCIETE_DISABLE_STATE)) { print ''; } -// EMail -print ''."\n"; + // Other attributes $tpl_context = 'public'; // define template context to public include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_add.tpl.php'; // Comments print ''; -print ''; -print ''; +print ''; +print ''; print ''."\n"; print "
    '.$langs->trans("Lastname").' *
    '.$langs->trans("Lastname").' *
    '.$langs->trans("Firstname").' *
    '.$langs->trans("Firstname").' *
    '.$langs->trans("Email").' *
    '.$langs->trans("Company").'
    '.$langs->trans("Address").''."\n"; -print '
    '.$langs->trans('Zip').' / '.$langs->trans('Town').''; print $formcompany->select_ziptown(GETPOST('zipcode'), 'zipcode', array('town', 'selectcountry_id', 'state_id'), 6, 1); @@ -453,21 +460,20 @@ print '
    '.$langs->trans('State').''; if ($country_code) { - print $formcompany->select_state(GETPOST("state_id"), $country_code); + print $formcompany->select_state(GETPOST("state_id", 'int'), $country_code); } else { print ''; } print '
    '.$langs->trans("Email").' *
    '.$langs->trans("Comments").''.$langs->trans("Message").' *
    \n"; diff --git a/htdocs/theme/eldy/progress.inc.php b/htdocs/theme/eldy/progress.inc.php index e74c84cf89e..1bc40e2f2fc 100644 --- a/htdocs/theme/eldy/progress.inc.php +++ b/htdocs/theme/eldy/progress.inc.php @@ -194,4 +194,8 @@ body[class*="colorblind-"] .progress-bar-red, body[class*="colorblind-"] .progre } .progress-bar-consumed { background-color: rgb(0, 0, 0, 0.15); -} \ No newline at end of file +} +.progress-bar-consumed-late { + background-color: ; +} + From 84fccb098870ae8871bfc821d011f167ace5312e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 May 2022 13:57:11 +0200 Subject: [PATCH 127/248] Debug v16 --- htdocs/core/class/extrafields.class.php | 31 ++++++++++++----- htdocs/core/lib/project.lib.php | 12 ++++--- htdocs/projet/admin/project.php | 2 +- htdocs/public/project/new.php | 45 ++++++++++++++++++++++--- htdocs/societe/class/societe.class.php | 2 +- 5 files changed, 72 insertions(+), 20 deletions(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 3a396e365d7..768031467bc 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -1948,14 +1948,15 @@ class ExtraFields /** * Fill array_options property of object by extrafields value (using for data sent by forms) * - * @param array $extralabels Deprecated (old $array of extrafields, now set this to null) - * @param object $object Object - * @param string $onlykey Only some keys are filled: - * 'string' => When we make update of only one extrafield ($action = 'update_extras'), calling page can set this to avoid to have other extrafields being reset. - * '@GETPOSTISSET' => When we make update of several extrafields ($action = 'update'), calling page can set this to avoid to have fields not into POST being reset. - * @return int 1 if array_options set, 0 if no value, -1 if error (field required missing for example) + * @param array $extralabels Deprecated (old $array of extrafields, now set this to null) + * @param object $object Object + * @param string $onlykey Only some keys are filled: + * 'string' => When we make update of only one extrafield ($action = 'update_extras'), calling page can set this to avoid to have other extrafields being reset. + * '@GETPOSTISSET' => When we make update of several extrafields ($action = 'update'), calling page can set this to avoid to have fields not into POST being reset. + * @param int $todefaultifmissing 1=Set value to the default value in database if value is mandatory and missing + * @return int 1 if array_options set, 0 if no value, -1 if error (field required missing for example) */ - public function setOptionalsFromPost($extralabels, &$object, $onlykey = '') + public function setOptionalsFromPost($extralabels, &$object, $onlykey = '', $todefaultifmissing = 0) { global $_POST, $langs; @@ -2015,8 +2016,10 @@ class ExtraFields || (!is_array($_POST["options_".$key]) && isset($_POST["options_".$key]) && $this->attributes[$object->table_element]['type'][$key] == 'sellist' && $_POST['options_'.$key] == '0') || (is_array($_POST["options_".$key]) && empty($_POST["options_".$key]))) { //print 'ccc'.$value.'-'.$this->attributes[$object->table_element]['required'][$key]; + + // Field is not defined. We mark this as a problem. We may fix it later if there is a default value and $todefaultifmissing is set. $nofillrequired++; - $error_field_required[] = $langs->transnoentitiesnoconv($value); + $error_field_required[$key] = $langs->transnoentitiesnoconv($value); } } @@ -2047,12 +2050,22 @@ class ExtraFields } } + if (!empty($error_field_required[$key]) && $todefaultifmissing) { + // Value is required but we have a default value and we asked to set empty value to the default value + if (!empty($this->attributes[$object->table_element]['default']) && !is_null($this->attributes[$object->table_element]['default'][$key])) { + $value_key = $this->attributes[$object->table_element]['default'][$key]; + unset($error_field_required[$key]); + $nofillrequired--; + } + } + $object->array_options["options_".$key] = $value_key; } if ($nofillrequired) { $langs->load('errors'); - setEventMessages($langs->trans('ErrorFieldsRequired').' : '.implode(', ', $error_field_required), null, 'errors'); + $this->error = $langs->trans('ErrorFieldsRequired').' : '.implode(', ', $error_field_required); + setEventMessages($this->error, null, 'errors'); return -1; } else { return 1; diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index 68e76e85ca3..56aa24a8523 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -509,12 +509,14 @@ function project_admin_prepare_head() $head[$h][2] = 'attributes_task'; $h++; - $langs->load("members"); + if (!empty($conf->global->PROJECT_USE_OPPORTUNITIES)) { + $langs->load("members"); - $head[$h][0] = DOL_URL_ROOT.'/projet/admin/website.php'; - $head[$h][1] = $langs->trans("BlankSubscriptionForm"); - $head[$h][2] = 'website'; - $h++; + $head[$h][0] = DOL_URL_ROOT.'/projet/admin/website.php'; + $head[$h][1] = $langs->trans("BlankSubscriptionForm"); + $head[$h][2] = 'website'; + $h++; + } complete_head_from_modules($conf, $langs, null, $head, $h, 'project_admin', 'remove'); diff --git a/htdocs/projet/admin/project.php b/htdocs/projet/admin/project.php index 4bfb899cffe..36ef3a501ff 100644 --- a/htdocs/projet/admin/project.php +++ b/htdocs/projet/admin/project.php @@ -265,7 +265,7 @@ print ' '."\n"; print ''; print ''.$langs->trans("ManageOpportunitiesStatus").''; print ''; -print ajax_constantonoff("PROJECT_USE_OPPORTUNITIES"); +print ajax_constantonoff("PROJECT_USE_OPPORTUNITIES", null, null, 0, 0, 1); print ''; print ""; print ''; diff --git a/htdocs/public/project/new.php b/htdocs/public/project/new.php index 85106ce51de..4838c88c5a1 100644 --- a/htdocs/public/project/new.php +++ b/htdocs/public/project/new.php @@ -206,16 +206,53 @@ if (empty($reshook) && $action == 'add') { $errmsg .= $langs->trans("ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv("Project"))."
    \n"; } - if (!$error) { - $proj = new Project($db); - $thirdparty = new Societe($db); + $proj = new Project($db); + $thirdparty = new Societe($db); + if (!$error) { // Search thirdparty and set it if found to the new created project $result = $thirdparty->fetch(0, '', '', '', '', '', '', '', '', '', $object->email); if ($result > 0) { $proj->socid = $thirdparty->id; - } + } else { + // Create the prospect + if (GETPOST('societe')) { + $thirdparty->name = GETPOST('societe'); + $thirdparty->name_alias = dolGetFirstLastname(GETPOST('firstname'), GETPOST('lastname')); + } else { + $thirdparty->name = dolGetFirstLastname(GETPOST('firstname'), GETPOST('lastname')); + } + $thirdparty->address = GETPOST('address'); + $thirdparty->zip = GETPOST('zip'); + $thirdparty->town = GETPOST('town'); + $thirdparty->country_id = GETPOST('country_id', 'int'); + $thirdparty->state_id = GETPOST('state_id'); + $thirdparty->client = $thirdparty::PROSPECT; + $thirdparty->code_client = 'auto'; + $thirdparty->code_fournisseur = 'auto'; + // Fill array 'array_options' with data from the form + $extrafields->fetch_name_optionals_label($thirdparty->table_element); + $ret = $extrafields->setOptionalsFromPost(null, $thirdparty, '', 1); + //var_dump($thirdparty->array_options);exit; + if ($ret < 0) { + $error++; + $errmsg = ($extrafields->error ? $extrafields->error.'
    ' : '').join('
    ', $extrafields->errors); + } + + if (!$error) { + $result = $thirdparty->create($user); + if ($result <= 0) { + $error++; + $errmsg = ($thirdparty->error ? $thirdparty->error.'
    ' : '').join('
    ', $thirdparty->errors); + } else { + $proj->socid = $thirdparty->id; + } + } + } + } + + if (!$error) { // Defined the ref into $defaultref $defaultref = ''; $modele = empty($conf->global->PROJECT_ADDON) ? 'mod_project_simple' : $conf->global->PROJECT_ADDON; diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index 1d32063c27b..30f8515e92c 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -956,7 +956,7 @@ class Societe extends CommonObject $sql .= ", accountancy_code_sell"; $sql .= ") VALUES ("; $sql .= $this->id; - $sql .= ", ".$conf->entity; + $sql .= ", ".((int) $conf->entity); $sql .= ", '".$this->db->escape($this->accountancy_code_customer)."'"; $sql .= ", '".$this->db->escape($this->accountancy_code_supplier)."'"; $sql .= ", '".$this->db->escape($this->accountancy_code_buy)."'"; From a92974c8184a8f47b9e7688c1f047210964ac564 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 May 2022 14:08:16 +0200 Subject: [PATCH 128/248] Fix typo --- htdocs/comm/action/class/actioncomm.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index 9d122cfce7e..f22cea8d04e 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -1598,7 +1598,7 @@ class ActionComm extends CommonObject //$tooltip .= '
    '.img_picto('', 'email').' '.$langs->trans("Email").''; $tooltip .= '
    '.$langs->trans('MailTopic').': '.$this->email_subject; $tooltip .= '
    '.$langs->trans('MailFrom').': '.str_replace(array('<', '>'), array('&lt', '&gt'), $this->email_from); - $tooltip .= '
    '.$langs->trans('MailTo').':, '.str_replace(array('<', '>'), array('&lt', '&gt'), $this->email_to); + $tooltip .= '
    '.$langs->trans('MailTo').': '.str_replace(array('<', '>'), array('&lt', '&gt'), $this->email_to); if (!empty($this->email_tocc)) { $tooltip .= '
    '.$langs->trans('MailCC').': '.str_replace(array('<', '>'), array('&lt', '&gt'), $this->email_tocc); } From 7926945477f4cc7ffb47ddb14bce36c60b290efb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 May 2022 14:49:06 +0200 Subject: [PATCH 129/248] FIX update of recruitment should not fill email_msgid in actioncomm --- htdocs/core/actions_addupdatedelete.inc.php | 2 +- ...terface_50_modAgenda_ActionsAuto.class.php | 23 +++++++++++-------- .../class/recruitmentcandidature.class.php | 5 ++++ .../recruitmentcandidature_card.php | 2 ++ 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/htdocs/core/actions_addupdatedelete.inc.php b/htdocs/core/actions_addupdatedelete.inc.php index f97d4aa94ee..cec127eeac4 100644 --- a/htdocs/core/actions_addupdatedelete.inc.php +++ b/htdocs/core/actions_addupdatedelete.inc.php @@ -121,7 +121,7 @@ if ($action == 'add' && !empty($permissiontoadd)) { // Fill array 'array_options' with data from add form if (!$error) { - $ret = $extrafields->setOptionalsFromPost(null, $object); + $ret = $extrafields->setOptionalsFromPost(null, $object, '', 1); if ($ret < 0) { $error++; } diff --git a/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php b/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php index 187e3f5a156..0e018514353 100644 --- a/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php +++ b/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php @@ -924,7 +924,8 @@ class InterfaceActionsAuto extends DolibarrTriggers } } - // If trackid is not defined, we set it + // If trackid is not defined, we set it. + // Note that it should be set by caller. This is for compatibility purpose only. if (empty($object->trackid)) { // See also similar list into emailcollector.class.php if (preg_match('/^COMPANY_/', $action)) { @@ -1039,15 +1040,17 @@ class InterfaceActionsAuto extends DolibarrTriggers $actioncomm->contact_id = $contactforaction->id; // deprecated, use ->socpeopleassigned instead $actioncomm->authorid = $user->id; // User saving action $actioncomm->userownerid = $user->id; // Owner of action - // Fields defined when action is an email (content should be into object->actionmsg to be added into note, subject into object->actionms2 to be added into label) - $actioncomm->email_msgid = empty($object->email_msgid) ? null : $object->email_msgid; - $actioncomm->email_from = empty($object->email_from) ? null : $object->email_from; - $actioncomm->email_sender = empty($object->email_sender) ? null : $object->email_sender; - $actioncomm->email_to = empty($object->email_to) ? null : $object->email_to; - $actioncomm->email_tocc = empty($object->email_tocc) ? null : $object->email_tocc; - $actioncomm->email_tobcc = empty($object->email_tobcc) ? null : $object->email_tobcc; - $actioncomm->email_subject = empty($object->email_subject) ? null : $object->email_subject; - $actioncomm->errors_to = empty($object->errors_to) ? null : $object->errors_to; + // Fields defined when action is an email (content should be into object->actionmsg to be added into event note, subject should be into object->actionms2 to be added into event label) + if (!property_exists($object, 'email_fields_no_propagate_in_actioncomm') || empty($object->email_fields_no_propagate_in_actioncomm)) { + $actioncomm->email_msgid = empty($object->email_msgid) ? null : $object->email_msgid; + $actioncomm->email_from = empty($object->email_from) ? null : $object->email_from; + $actioncomm->email_sender = empty($object->email_sender) ? null : $object->email_sender; + $actioncomm->email_to = empty($object->email_to) ? null : $object->email_to; + $actioncomm->email_tocc = empty($object->email_tocc) ? null : $object->email_tocc; + $actioncomm->email_tobcc = empty($object->email_tobcc) ? null : $object->email_tobcc; + $actioncomm->email_subject = empty($object->email_subject) ? null : $object->email_subject; + $actioncomm->errors_to = empty($object->errors_to) ? null : $object->errors_to; + } // Object linked (if link is for thirdparty, contact, project it is a recording error. We should not have links in link table // for such objects because there is already a dedicated field into table llx_actioncomm or llx_actioncomm_resources. diff --git a/htdocs/recruitment/class/recruitmentcandidature.class.php b/htdocs/recruitment/class/recruitmentcandidature.class.php index 77b5b5b21ae..fb08409eb27 100644 --- a/htdocs/recruitment/class/recruitmentcandidature.class.php +++ b/htdocs/recruitment/class/recruitmentcandidature.class.php @@ -62,6 +62,11 @@ class RecruitmentCandidature extends CommonObject */ public $picto = 'recruitmentcandidature'; + /** + * @var int Do not exploit fields email_xxx into triggers. + */ + public $email_fields_no_propagate_in_actioncomm; + const STATUS_DRAFT = 0; const STATUS_VALIDATED = 1; diff --git a/htdocs/recruitment/recruitmentcandidature_card.php b/htdocs/recruitment/recruitmentcandidature_card.php index eca3a497e61..186864deb84 100644 --- a/htdocs/recruitment/recruitmentcandidature_card.php +++ b/htdocs/recruitment/recruitmentcandidature_card.php @@ -134,7 +134,9 @@ if (empty($reshook)) { $triggermodname = 'RECRUITMENTCANDIDATURE_MODIFY'; // Name of trigger action code to execute when we modify record // Actions cancel, add, update, update_extras, confirm_validate, confirm_delete, confirm_deleteline, confirm_clone, confirm_close, confirm_setdraft, confirm_reopen + $object->email_fields_no_propagate_in_actioncomm = 1; include DOL_DOCUMENT_ROOT.'/core/actions_addupdatedelete.inc.php'; + $object->email_fields_no_propagate_in_actioncomm = 0; // Actions when linking object each other include DOL_DOCUMENT_ROOT.'/core/actions_dellink.inc.php'; From b75c0d805b73079221ade5240fd80caabf85c83d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 May 2022 15:01:33 +0200 Subject: [PATCH 130/248] Add more field --- htdocs/install/mysql/tables/llx_webhook_target-webhook.sql | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/install/mysql/tables/llx_webhook_target-webhook.sql b/htdocs/install/mysql/tables/llx_webhook_target-webhook.sql index 1e0cc0fdbac..21446e1f775 100644 --- a/htdocs/install/mysql/tables/llx_webhook_target-webhook.sql +++ b/htdocs/install/mysql/tables/llx_webhook_target-webhook.sql @@ -28,7 +28,9 @@ CREATE TABLE llx_webhook_target( fk_user_modif integer, import_key varchar(14), status integer DEFAULT 0 NOT NULL, - url varchar(255) NOT NULL, - trigger_codes text NOT NULL + url varchar(255) NOT NULL, + connection_method varchar(255) NULL, -- to store the way to authenticate to the webhook + connection_data varchar(255) NULL, -- to store the data to use to authenticate to the webhook + trigger_codes text NOT NULL -- list of selected trigger that must call the webhook -- END MODULEBUILDER FIELDS ) ENGINE=innodb; From 8410ba709a4e410dafc1867a49f7903bb7bc45d3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 May 2022 15:02:24 +0200 Subject: [PATCH 131/248] Fix field --- htdocs/install/mysql/tables/llx_webhook_target-webhook.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/tables/llx_webhook_target-webhook.sql b/htdocs/install/mysql/tables/llx_webhook_target-webhook.sql index 21446e1f775..28802156847 100644 --- a/htdocs/install/mysql/tables/llx_webhook_target-webhook.sql +++ b/htdocs/install/mysql/tables/llx_webhook_target-webhook.sql @@ -31,6 +31,6 @@ CREATE TABLE llx_webhook_target( url varchar(255) NOT NULL, connection_method varchar(255) NULL, -- to store the way to authenticate to the webhook connection_data varchar(255) NULL, -- to store the data to use to authenticate to the webhook - trigger_codes text NOT NULL -- list of selected trigger that must call the webhook + trigger_codes text NULL -- list of selected trigger that must call the webhook -- END MODULEBUILDER FIELDS ) ENGINE=innodb; From 7c444364851992677970022ae3fdb920b1f29378 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 May 2022 15:04:57 +0200 Subject: [PATCH 132/248] Fix phpunit --- .../install/mysql/data/llx_10_c_regions.sql | 43 +++++++++---------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/htdocs/install/mysql/data/llx_10_c_regions.sql b/htdocs/install/mysql/data/llx_10_c_regions.sql index 1ab671f085e..752bc7de395 100644 --- a/htdocs/install/mysql/data/llx_10_c_regions.sql +++ b/htdocs/install/mysql/data/llx_10_c_regions.sql @@ -146,6 +146,27 @@ INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) values ( 5 INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) values ( 56, 5601, '', 0, 'Brasil'); +-- Burundi Regions (id country=61) -- https://fr.wikipedia.org/wiki/Provinces_du_Burundi +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6101, '', 0, 'Bubanza'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6102, '', 0, 'Bujumbura Mairie'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6103, '', 0, 'Bujumbura Rural'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6104, '', 0, 'Bururi'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6105, '', 0, 'Cankuzo'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6106, '', 0, 'Cibitoke'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6107, '', 0, 'Gitega'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6108, '', 0, 'Karuzi'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6109, '', 0, 'Kayanza'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6110, '', 0, 'Kirundo'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6111, '', 0, 'Makamba'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6112, '', 0, 'Muramvya'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6113, '', 0, 'Muyinga'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6114, '', 0, 'Mwaro'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6115, '', 0, 'Ngozi'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6116, '', 0, 'Rumonge'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6117, '', 0, 'Rutana'); +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6118, '', 0, 'Ruyigi'); + + -- Canada Region (id country=14) INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) values ( 14, 1401, '', 0, 'Canada'); @@ -512,25 +533,3 @@ INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) values ( 2 INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) values ( 232, 23208, '', 0, 'Nor-Oriental'); INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) values ( 232, 23209, '', 0, 'Zuliana'); - - --- Burundi Regions (id country=61) -- https://fr.wikipedia.org/wiki/Provinces_du_Burundi -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6101, '', 0, "Bubanza"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6102, '', 0, "Bujumbura Mairie"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6103, '', 0, "Bujumbura Rural"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6104, '', 0, "Bururi"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6105, '', 0, "Cankuzo"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6106, '', 0, "Cibitoke"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6107, '', 0, "Gitega"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6108, '', 0, "Karuzi"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6109, '', 0, "Kayanza"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6110, '', 0, "Kirundo"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6111, '', 0, "Makamba"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6112, '', 0, "Muramvya"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6113, '', 0, "Muyinga"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6114, '', 0, "Mwaro"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6115, '', 0, "Ngozi"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6116, '', 0, "Rumonge"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6117, '', 0, "Rutana"); -INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) VALUES ( 61, 6118, '', 0, "Ruyigi"); - From 783337604de542e435b19d6cf7621707d7c60cf5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 May 2022 15:28:36 +0200 Subject: [PATCH 133/248] Fix regression in address formating --- htdocs/core/lib/functions.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 8776381b922..8772cd55714 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -2257,7 +2257,7 @@ function dol_format_address($object, $withcountry = 0, $sep = "\n", $outputlangs $ret = ''; $countriesusingstate = array('AU', 'CA', 'US', 'IN', 'GB', 'ES', 'UK', 'TR', 'CN'); // See also MAIN_FORCE_STATE_INTO_ADDRESS - $sep = "\n"; + // See format of addresses on https://en.wikipedia.org/wiki/Address // Address if (empty($mode)) { From 80bce5a893c98d21e87b73668aacfef9d38345bc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 May 2022 16:06:00 +0200 Subject: [PATCH 134/248] Look and feel v16 --- htdocs/societe/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/societe/index.php b/htdocs/societe/index.php index eb0c1e35230..e198056b362 100644 --- a/htdocs/societe/index.php +++ b/htdocs/societe/index.php @@ -353,7 +353,7 @@ if ($result) { $lastmodified .= $thirdparty_static->getTypeUrl(); $lastmodified .= ''; // Last modified date - $lastmodified .= ''; + $lastmodified .= 'date_modification, 'dayhour')).'">'; $lastmodified .= dol_print_date($thirdparty_static->date_modification, 'day'); $lastmodified .= ""; $lastmodified .= ''; From 937d0418b4a7e8bf83a4c2cdc9d50fbfc47c051a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 May 2022 16:08:54 +0200 Subject: [PATCH 135/248] Fix tz --- htdocs/core/lib/functions.lib.php | 2 +- htdocs/societe/index.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 8772cd55714..24c39d0f298 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -2357,7 +2357,7 @@ function dol_strftime($fmt, $ts = false, $is_gmt = false) * @param string $tzoutput true or 'gmt' => string is for Greenwich location * false or 'tzserver' => output string is for local PHP server TZ usage * 'tzuser' => output string is for user TZ (current browser TZ with current dst) => In a future, we should have same behaviour than 'tzuserrel' - * 'tzuserrel' => output string is for user TZ (current browser TZ with dst or not, depending on date position) (TODO not implemented yet) + * 'tzuserrel' => output string is for user TZ (current browser TZ with dst or not, depending on date position) * @param Translate $outputlangs Object lang that contains language for text translation. * @param boolean $encodetooutput false=no convert into output pagecode * @return string Formated date or '' if time is null diff --git a/htdocs/societe/index.php b/htdocs/societe/index.php index e198056b362..8cae5ef49f8 100644 --- a/htdocs/societe/index.php +++ b/htdocs/societe/index.php @@ -353,8 +353,8 @@ if ($result) { $lastmodified .= $thirdparty_static->getTypeUrl(); $lastmodified .= ''; // Last modified date - $lastmodified .= 'date_modification, 'dayhour')).'">'; - $lastmodified .= dol_print_date($thirdparty_static->date_modification, 'day'); + $lastmodified .= 'date_modification, 'dayhour', 'tzuserrel')).'">'; + $lastmodified .= dol_print_date($thirdparty_static->date_modification, 'day', 'tzuserrel'); $lastmodified .= ""; $lastmodified .= ''; $lastmodified .= $thirdparty_static->getLibStatut(3); From 5d148a8a995076a575b09a957ca352d40e8c1c8c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 May 2022 16:53:19 +0200 Subject: [PATCH 136/248] Fix alignement --- htdocs/imports/import.php | 43 +++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php index b87b1e18f1a..84ecc417a76 100644 --- a/htdocs/imports/import.php +++ b/htdocs/imports/import.php @@ -1079,16 +1079,16 @@ if ($step == 4 && $datatoimport) { } } - $height = '24px'; //needs px for css height attribute below + $height = '32px'; //needs px for css height attribute below $i = 0; $mandatoryfieldshavesource = true; - print ''; + print '
    '; foreach ($fieldstarget as $code => $line) { if ($i == $minpos) { break; } - print ''; + print ''; $entity = (!empty($objimport->array_import_entities[0][$code]) ? $objimport->array_import_entities[0][$code] : $objimport->array_import_icon[0]); $tablealias = preg_replace('/(\..*)$/i', '', $code); @@ -1116,6 +1116,7 @@ if ($step == 4 && $datatoimport) { print ''; print $optionsnotused; print ''; + //print ajax_combobox('selectorderimport_'.($i+1)); print ""; print ''; diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index cadeb278ae7..b66452b2c5f 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -1206,7 +1206,8 @@ class Project extends CommonObject $label .= ($label ? '
    ' : '').''.$langs->trans('Ref').': '.$this->ref; // The space must be after the : to not being explode when showing the title in img_picto $label .= ($label ? '
    ' : '').''.$langs->trans('Label').': '.$this->title; // The space must be after the : to not being explode when showing the title in img_picto if (isset($this->public)) { - $label .= '
    '.$langs->trans("Visibility").": ".($this->public ? $langs->trans("SharedProject") : $langs->trans("PrivateProject")); + $label .= '
    '.$langs->trans("Visibility").": "; + $label .= ($this->public ? img_picto($langs->trans('SharedProject'), 'world', 'class="paddingrightonly"').$langs->trans("SharedProject") : img_picto($langs->trans('PrivateProject'), 'private', 'class="paddingrightonly"').$langs->trans("PrivateProject")); } if (!empty($this->thirdparty_name)) { $label .= ($label ? '
    ' : '').''.$langs->trans('ThirdParty').': '.$this->thirdparty_name; // The space must be after the : to not being explode when showing the title in img_picto diff --git a/htdocs/projet/comment.php b/htdocs/projet/comment.php index 52a1f581df8..3bea4b5db03 100644 --- a/htdocs/projet/comment.php +++ b/htdocs/projet/comment.php @@ -125,8 +125,10 @@ print '
    '; $filecolumn = !empty($array_match_database_to_file[$code])?$array_match_database_to_file[$code]:0; @@ -1224,7 +1225,7 @@ if ($step == 4 && $datatoimport) { print ''; - if ($conf->use_javascript_ajax) { + if (!empty($conf->use_javascript_ajax)) { print ''."\n"; @@ -2174,24 +2177,24 @@ $db->close(); */ function show_elem($fieldssource, $pos, $key, $var, $nostyle = '') { - global $langs, $bc; + global $langs; - $height = '28px'; + $height = '32px'; if ($key == 'none') { //stop multiple duplicate ids with no number print "\n\n\n"; print '
    '."\n"; - print ''."\n"; + print '
    '."\n"; } else { print "\n\n\n"; print '
    '."\n"; - print '
    '."\n"; + print '
    '."\n"; } if (($pos && $pos > count($fieldssource)) && (!isset($fieldssource[$pos]["imported"]))) { // No fields - print ''; + print ''; print ''; @@ -2200,7 +2203,7 @@ function show_elem($fieldssource, $pos, $key, $var, $nostyle = '') print ''; print ''; } elseif ($key == 'none') { // Empty line - print ''; + print ''; print ''; @@ -2210,7 +2213,7 @@ function show_elem($fieldssource, $pos, $key, $var, $nostyle = '') print ''; } else { // Print field of source file - print ''; + print ''; print ''; + print ''; + print '"; + print ''; // List of not imported fields + /* print ''; print ''; + */ print '
    '; //print img_picto(($pos > 0 ? $langs->trans("MoveField", $pos) : ''), 'grip_title', 'class="boxhandle" style="cursor:move;"'); print '
    '; print ' '; print '
    '; // The image must have the class 'boxhandle' beause it's value used in DOM draggable objects to define the area used to catch the full object //print img_picto($langs->trans("MoveField", $pos), 'grip_title', 'class="boxhandle" style="cursor:move;"'); From c3c29393c101c380422711d13496172af9a7fe4f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 May 2022 18:00:59 +0200 Subject: [PATCH 137/248] Look and feel v16 --- htdocs/core/lib/functions.lib.php | 9 +-- htdocs/imports/import.php | 13 ++-- htdocs/langs/en_US/projects.lang | 2 +- htdocs/projet/card.php | 6 ++ htdocs/projet/class/project.class.php | 3 +- htdocs/projet/comment.php | 2 + htdocs/projet/contact.php | 2 + htdocs/projet/element.php | 2 + htdocs/projet/ganttview.php | 2 + htdocs/projet/list.php | 96 ++++++++++++++------------- htdocs/projet/tasks.php | 2 + htdocs/projet/tasks/comment.php | 2 + htdocs/projet/tasks/contact.php | 2 + htdocs/projet/tasks/document.php | 2 + htdocs/projet/tasks/note.php | 2 + htdocs/projet/tasks/task.php | 2 + htdocs/projet/tasks/time.php | 2 + htdocs/theme/eldy/global.inc.php | 2 +- htdocs/theme/md/style.css.php | 2 +- htdocs/ticket/list.php | 2 + 20 files changed, 98 insertions(+), 59 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 24c39d0f298..559d2516e0a 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3788,7 +3788,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'recent', 'reception', 'recruitmentcandidature', 'recruitmentjobposition', 'resource', 'recurring', 'shapes', 'square', 'stop-circle', 'supplier', 'supplier_proposal', 'supplier_order', 'supplier_invoice', 'timespent', 'title_setup', 'title_accountancy', 'title_bank', 'title_hrm', 'title_agenda', - 'uncheck', 'user-cog', 'user-injured', 'user-md', 'vat', 'website', 'workstation', + 'uncheck', 'user-cog', 'user-injured', 'user-md', 'vat', 'website', 'workstation', 'world', 'private', 'conferenceorbooth', 'eventorganization' ))) { $fakey = $pictowithouttext; @@ -3839,7 +3839,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'title_agenda'=>'calendar-alt', 'uncheck'=>'times', 'uparrow'=>'share', 'vat'=>'money-check-alt', 'vcard'=>'address-card', 'jabber'=>'comment-o', - 'website'=>'globe-americas', 'workstation'=>'pallet', + 'website'=>'globe-americas', 'workstation'=>'pallet', 'world'=>'globe', 'private'=>'user-lock', 'conferenceorbooth'=>'chalkboard-teacher', 'eventorganization'=>'project-diagram' ); if ($pictowithouttext == 'off') { @@ -3908,7 +3908,8 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'error'=>'pictoerror', 'warning'=>'pictowarning', 'switch_on'=>'font-status4', 'switch_on_red'=>'font-status8', 'holiday'=>'infobox-holiday', 'info'=>'opacityhigh', 'invoice'=>'infobox-commande', 'knowledgemanagement'=>'infobox-contrat rotate90', 'loan'=>'infobox-bank_account', - 'payment'=>'infobox-bank_account', 'payment_vat'=>'infobox-bank_account', 'poll'=>'infobox-adherent', 'pos'=>'infobox-bank_account', 'project'=>'infobox-project', 'projecttask'=>'infobox-project', 'propal'=>'infobox-propal', + 'payment'=>'infobox-bank_account', 'payment_vat'=>'infobox-bank_account', 'poll'=>'infobox-adherent', 'pos'=>'infobox-bank_account', 'project'=>'infobox-project', 'projecttask'=>'infobox-project', + 'propal'=>'infobox-propal', 'private'=>'infobox-project', 'reception'=>'flip', 'recruitmentjobposition'=>'infobox-adherent', 'recruitmentcandidature'=>'infobox-adherent', 'resource'=>'infobox-action', 'salary'=>'infobox-bank_account', 'shipment'=>'infobox-commande', 'supplier_invoice'=>'infobox-order_supplier', 'supplier_invoicea'=>'infobox-order_supplier', 'supplier_invoiced'=>'infobox-order_supplier', @@ -3931,7 +3932,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ //'dolly'=>'#a69944', 'dollyrevert'=>'#a69944', 'lot'=>'#a69944', 'map-marker-alt'=>'#aaa', 'mrp'=>'#a69944', 'product'=>'#a69944', 'service'=>'#a69944', 'inventory'=>'#a69944', 'stock'=>'#a69944', 'movement'=>'#a69944', - 'other'=>'#ddd', + 'other'=>'#ddd', 'world'=>'#986c6a', 'partnership'=>'#6c6aa8', 'playdisabled'=>'#ccc', 'printer'=>'#444', 'projectpub'=>'#986c6a', 'reception'=>'#a69944', 'resize'=>'#444', 'rss'=>'#cba', //'shipment'=>'#a69944', 'security'=>'#999', 'square'=>'#888', 'stop-circle'=>'#888', 'stats'=>'#444', 'switch_off'=>'#999', 'technic'=>'#999', 'timespent'=>'#555', diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php index 84ecc417a76..c12b5746e82 100644 --- a/htdocs/imports/import.php +++ b/htdocs/imports/import.php @@ -1097,7 +1097,8 @@ if ($step == 4 && $datatoimport) { $entityicon = !empty($entitytoicon[$entity]) ? $entitytoicon[$entity] : $entity; // $entityicon must string name of picto of the field like 'project', 'company', 'contact', 'modulename', ... $entitylang = $entitytolang[$entity] ? $entitytolang[$entity] : $objimport->array_import_label[0]; // $entitylang must be a translation key to describe object the field is related to, like 'Company', 'Contact', 'MyModyle', ... - print '=>'.img_object('', $entityicon).' '.$langs->trans($entitylang).'=> '.img_object('', $entityicon).' '.$langs->trans($entitylang).''; print ''; //print ajax_combobox('selectorderimport_'.($i+1)); print "'; $filecolumn = !empty($array_match_database_to_file[$code])?$array_match_database_to_file[$code]:0; // Source field info @@ -1182,6 +1185,7 @@ if ($step == 4 && $datatoimport) { print '
    '.$langs->trans("NotUsedFields").'
    '; @@ -1220,6 +1224,7 @@ if ($step == 4 && $datatoimport) { $i++; } print '
    '; print '
    '; diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index 739a35dcebf..e0fa85dd273 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -6,7 +6,7 @@ ProjectLabel=Project label ProjectsArea=Projects Area ProjectStatus=Project status SharedProject=Everybody -PrivateProject=Project contacts +PrivateProject=Assigned contacts ProjectsImContactFor=Projects for which I am explicitly a contact AllAllowedProjects=All project I can read (mine + public) AllProjects=All projects diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index 6a27472a7e3..2db236ff606 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -651,8 +651,10 @@ if ($action == 'create' && $user->rights->projet->creer) { print ''; if (GETPOST('public') == 0) { + print img_picto($langs->trans('PrivateProject'), 'private', 'class="paddingrightonly"'); print $langs->trans("PrivateProject"); } else { + print img_picto($langs->trans('SharedProject'), 'world', 'class="paddingrightonly"'); print $langs->trans("SharedProject"); } } @@ -926,8 +928,10 @@ if ($action == 'create' && $user->rights->projet->creer) { print ''; if ($object->public == 0) { + print img_picto($langs->trans('PrivateProject'), 'private', 'class="paddingrightonly"'); print $langs->trans("PrivateProject"); } else { + print img_picto($langs->trans('SharedProject'), 'world', 'class="paddingrightonly"'); print $langs->trans("SharedProject"); } } @@ -1075,8 +1079,10 @@ if ($action == 'create' && $user->rights->projet->creer) { // Visibility print '
    '.$langs->trans("Visibility").''; if ($object->public) { + print img_picto($langs->trans('SharedProject'), 'world', 'class="paddingrightonly"'); print $langs->trans('SharedProject'); } else { + print img_picto($langs->trans('SharedProject'), 'private', 'class="paddingrightonly"'); print $langs->trans('PrivateProject'); } print '
    '; // Visibility print ''; diff --git a/htdocs/projet/contact.php b/htdocs/projet/contact.php index d1563cbfab8..6eaae5c473d 100644 --- a/htdocs/projet/contact.php +++ b/htdocs/projet/contact.php @@ -349,8 +349,10 @@ if ($id > 0 || !empty($ref)) { // Visibility print ''; diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index 80fccce7912..64f7a221449 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -271,8 +271,10 @@ if (!empty($conf->global->PROJECT_USE_OPPORTUNITIES) || empty($conf->global->PRO // Visibility print ''; diff --git a/htdocs/projet/ganttview.php b/htdocs/projet/ganttview.php index 7266e029985..050528da933 100644 --- a/htdocs/projet/ganttview.php +++ b/htdocs/projet/ganttview.php @@ -171,8 +171,10 @@ if (($id > 0 && is_numeric($id)) || !empty($ref)) { // Visibility print ''; diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index 0e6df96a8ed..5373a80c952 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -924,11 +924,15 @@ if (!empty($arrayfields['p.datee']['checked'])) { print ''; } if (!empty($arrayfields['p.public']['checked'])) { - print ''; } +if (!empty($arrayfields['c.assigned']['checked'])) { + print ''; +} // Opp status if (!empty($arrayfields['p.fk_opp_status']['checked'])) { print ''; } -if (!empty($arrayfields['c.assigned']['checked'])) { - print ''; -} if (!empty($arrayfields['p.usage_opportunity']['checked'])) { print ''; if (!$i) { $totalarray['nbfield']++; } } + // Contacts of project + if (!empty($arrayfields['c.assigned']['checked'])) { + print ''; + } // Opp Status if (!empty($arrayfields['p.fk_opp_status']['checked'])) { print ''; - } // Usage opportunity if (!empty($arrayfields['p.usage_opportunity']['checked'])) { print ''; diff --git a/htdocs/projet/tasks/comment.php b/htdocs/projet/tasks/comment.php index a2bbba52305..c5f655f8e46 100644 --- a/htdocs/projet/tasks/comment.php +++ b/htdocs/projet/tasks/comment.php @@ -185,8 +185,10 @@ if ($id > 0 || !empty($ref)) { // Visibility print ''; diff --git a/htdocs/projet/tasks/contact.php b/htdocs/projet/tasks/contact.php index 0b26161c28c..327d8783256 100644 --- a/htdocs/projet/tasks/contact.php +++ b/htdocs/projet/tasks/contact.php @@ -244,8 +244,10 @@ if ($id > 0 || !empty($ref)) { // Visibility print ''; diff --git a/htdocs/projet/tasks/document.php b/htdocs/projet/tasks/document.php index c57610d0130..0e520989d8c 100644 --- a/htdocs/projet/tasks/document.php +++ b/htdocs/projet/tasks/document.php @@ -200,8 +200,10 @@ if ($object->id > 0) { // Visibility print ''; diff --git a/htdocs/projet/tasks/note.php b/htdocs/projet/tasks/note.php index 5f3d74a3c68..652b195afd4 100644 --- a/htdocs/projet/tasks/note.php +++ b/htdocs/projet/tasks/note.php @@ -190,8 +190,10 @@ if ($object->id > 0) { // Visibility print ''; diff --git a/htdocs/projet/tasks/task.php b/htdocs/projet/tasks/task.php index f6e9b6803af..0c323d5e058 100644 --- a/htdocs/projet/tasks/task.php +++ b/htdocs/projet/tasks/task.php @@ -285,8 +285,10 @@ if ($id > 0 || !empty($ref)) { // Visibility print ''; diff --git a/htdocs/projet/tasks/time.php b/htdocs/projet/tasks/time.php index 6f04cd16a51..fa987805a25 100644 --- a/htdocs/projet/tasks/time.php +++ b/htdocs/projet/tasks/time.php @@ -823,8 +823,10 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser // Visibility print ''; diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 254253f8d04..76e7a74450d 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -3973,7 +3973,7 @@ table.hidepaginationnext .paginationnext { /* Set the color for hover lines */ -.oddeven:hover, .evenodd:hover, .impair:hover, .pair:hover +.oddeven:hover, .evenodd:hover, .oddevenimport:hover, .evenoddimport:hover, .impair:hover, .pair:hover { background: var(--colorbacklinepairhover) !important; /* Must be background to be stronger than background of odd or even */ } diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 5cf1f7a750b..879bd52e864 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -3929,7 +3929,7 @@ ul.noborder li:nth-child(odd):not(.liste_titre) { -webkit-box-shadow: unset; } -.oddeven:hover, .evenodd:hover, .impair:hover, .pair:hover +.oddeven:hover, .evenodd:hover, .oddevenimport:hover, .evenoddimport:hover, .impair:hover, .pair:hover { background: rgb() !important; } diff --git a/htdocs/ticket/list.php b/htdocs/ticket/list.php index a8314c4bf89..5204b0ffea7 100644 --- a/htdocs/ticket/list.php +++ b/htdocs/ticket/list.php @@ -592,8 +592,10 @@ if ($projectid > 0 || $project_ref) { // Visibility print ''; From 04f64dd252d16b4092be1a1de59a68c22dc8eeaf Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 May 2022 18:54:50 +0200 Subject: [PATCH 138/248] Look and feel v16 --- htdocs/projet/card.php | 9 +++++---- htdocs/projet/contact.php | 3 +++ htdocs/projet/element.php | 5 ++++- htdocs/projet/tasks/comment.php | 9 ++++----- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index 2db236ff606..873cb7ce82d 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -1105,21 +1105,22 @@ if ($action == 'create' && $user->rights->projet->creer) { // Opportunity Amount print ''; // Opportunity Weighted Amount + /* print ''; + */ } // Date start - end diff --git a/htdocs/projet/contact.php b/htdocs/projet/contact.php index 6eaae5c473d..3230c325039 100644 --- a/htdocs/projet/contact.php +++ b/htdocs/projet/contact.php @@ -377,6 +377,9 @@ if ($id > 0 || !empty($ref)) { print ''; } diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index 64f7a221449..caad4374da0 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -299,6 +299,9 @@ if (!empty($conf->global->PROJECT_USE_OPPORTUNITIES)) { print ''; } @@ -698,7 +701,7 @@ if (!$showdatefilter) { print $form->selectDate($datee, 'datee', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans("to")); print ''; print '
    '; - print ''; + print ''; print '
    '; print ''; print ''; diff --git a/htdocs/projet/tasks/comment.php b/htdocs/projet/tasks/comment.php index c5f655f8e46..e2686ded9f2 100644 --- a/htdocs/projet/tasks/comment.php +++ b/htdocs/projet/tasks/comment.php @@ -205,19 +205,18 @@ if ($id > 0 || !empty($ref)) { // Opportunity percent print ''; // Opportunity Amount print ''; } From b87b997c7dfdac81b120b85187594329bc63924e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 May 2022 19:19:52 +0200 Subject: [PATCH 139/248] Debug v16 --- htdocs/core/class/html.form.class.php | 7 ++++++- .../eventorganization/conferenceorbooth_list.php | 8 +++++--- .../conferenceorboothattendee_list.php | 15 ++++++++++++--- htdocs/projet/card.php | 10 +++++++--- 4 files changed, 30 insertions(+), 10 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 48a00919d65..05ac16fbfa6 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -234,7 +234,11 @@ class Form if (preg_match('/^(string|safehtmlstring|email)/', $typeofdata)) { $tmp = explode(':', $typeofdata); $ret .= ''; - } elseif (preg_match('/^(numeric|amount|integer)/', $typeofdata)) { + } elseif (preg_match('/^(integer)/', $typeofdata)) { + $tmp = explode(':', $typeofdata); + $valuetoshow = price2num($editvalue ? $editvalue : $value, 0); + $ret .= ''; + } elseif (preg_match('/^(numeric|amount)/', $typeofdata)) { $tmp = explode(':', $typeofdata); $valuetoshow = price2num($editvalue ? $editvalue : $value); $ret .= ''; @@ -280,6 +284,7 @@ class Form $ret .= ''; } + // Button save-cancel if (empty($notabletag)) { $ret .= ''; diff --git a/htdocs/eventorganization/conferenceorboothattendee_list.php b/htdocs/eventorganization/conferenceorboothattendee_list.php index ee7fe97421a..878b1baf992 100644 --- a/htdocs/eventorganization/conferenceorboothattendee_list.php +++ b/htdocs/eventorganization/conferenceorboothattendee_list.php @@ -59,6 +59,7 @@ $conf_or_booth_id = GETPOST('conforboothid', 'int'); $withproject = GETPOST('withproject', 'int'); $fk_project = GETPOST('fk_project', 'int') ? GETPOST('fk_project', 'int') : GETPOST('projectid', 'int'); +$projectid = $fk_project; $withProjectUrl=''; @@ -459,10 +460,12 @@ if ($projectstatic->id > 0 || $confOrBooth > 0) { // Visibility print ''; @@ -541,6 +544,12 @@ if ($projectstatic->id > 0 || $confOrBooth > 0) { print $form->editfieldval($form->textwithpicto($langs->trans('PriceOfRegistration'), $langs->trans("PriceOfRegistrationHelp")), 'price_registration', $projectstatic->price_registration, $projectstatic, 0, 'amount', '', 0, 0, '', 0, '', 'projectid'); print ""; + print '"; + print ''; - print ''; + print ''; print ''; } @@ -970,7 +972,7 @@ if ($action == 'create' && $user->rights->projet->creer) { if ($comefromclone) { print ' checked '; } - print '/>'; + print '/>'; print ''; // Date end @@ -980,7 +982,9 @@ if ($action == 'create' && $user->rights->projet->creer) { // Budget print ''; - print ''; + print ''; print ''; // Description From 71c0f08b6c56b575e7195bc118c460329ec6a20a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 May 2022 19:47:06 +0200 Subject: [PATCH 140/248] Debug v16 --- .../public/eventorganization/attendee_new.php | 240 ++++++++++-------- 1 file changed, 132 insertions(+), 108 deletions(-) diff --git a/htdocs/public/eventorganization/attendee_new.php b/htdocs/public/eventorganization/attendee_new.php index 70bad2a31dc..40e082c6f2e 100644 --- a/htdocs/public/eventorganization/attendee_new.php +++ b/htdocs/public/eventorganization/attendee_new.php @@ -92,15 +92,27 @@ if ($type == 'conf') { $errmsg .= $project->error; } } + +$currentnbofattendees = 0; if ($type == 'global') { $resultproject = $project->fetch($id); if ($resultproject < 0) { $error++; $errmsg .= $project->error; + } else { + $sql = "SELECT COUNT(*) as nb FROM ".MAIN_DB_PREFIX."projet"; + $sql .= " WHERE ".MAIN_DB_PREFIX."eventorganization_conferenceorboothattendee = ".((int) $project->id); + + $resql = $db->query($resql); + if ($resql) { + $obj = $db->fetch_object($resql); + if ($obj) { + $currentnbofattendees = $obj->nb; + } + } } } - // Security check $securekeyreceived = GETPOST('securekey', 'alpha'); $securekeytocompare = dol_hash($conf->global->EVENTORGANIZATION_SECUREKEY.'conferenceorbooth'.$id, 'md5'); @@ -628,6 +640,7 @@ print '
    '; print $langs->trans("EvntOrgWelcomeMessage", $project->title . ' '. $conference->label); print '
    '; +$maxattendees = 0; if ($conference->id) { print $langs->trans("Date").': '; print dol_print_date($conference->datep); @@ -642,138 +655,149 @@ if ($conference->id) { print ' - '; print dol_print_date($project->date_end); } + $maxattendees = $project->max_attendees; } print '
    '; +if ($maxattendees && $currentnbofattendees >= $maxattendees) { + print '
    '; + print '
    '.$langs->trans("MaxNbOfAttendeesReached").'
    '; + print '
    '; +} + + print '
    '; dol_htmloutput_errors($errmsg); -if (!empty($conference->id) && $conference->status==ConferenceOrBooth::STATUS_CONFIRMED || (!empty($project->id) && $project->status==Project::STATUS_VALIDATED)) { - // Print form - print '
    ' . "\n"; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; +if ((!empty($conference->id) && $conference->status == ConferenceOrBooth::STATUS_CONFIRMED) || (!empty($project->id) && $project->status == Project::STATUS_VALIDATED)) { + if (empty($maxattendees) || $currentnbofattendees < $maxattendees) { + // Print form + print '' . "\n"; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; - print '
    '; + print '
    '; - print '
    ' . $langs->trans("FieldsWithAreMandatory", '*') . '
    '; - //print $langs->trans("FieldsWithIsForPublic",'**').'
    '; + print '
    ' . $langs->trans("FieldsWithAreMandatory", '*') . '
    '; + //print $langs->trans("FieldsWithIsForPublic",'**').'
    '; - print dol_get_fiche_head(''); + print dol_get_fiche_head(''); - print ''; + '; - print '
    '.$langs->trans("Visibility").''; if ($object->public) { + print img_picto($langs->trans('SharedProject'), 'world', 'class="paddingrightonly"'); print $langs->trans('SharedProject'); } else { + print img_picto($langs->trans('PrivateProject'), 'private', 'class="paddingrightonly"'); print $langs->trans('PrivateProject'); } print '
    '.$langs->trans("Visibility").''; if ($object->public) { + print img_picto($langs->trans('SharedProject'), 'world', 'class="paddingrightonly"'); print $langs->trans('SharedProject'); } else { + print img_picto($langs->trans('PrivateProject'), 'private', 'class="paddingrightonly"'); print $langs->trans('PrivateProject'); } print '
    '.$langs->trans("Visibility").''; if ($object->public) { + print img_picto($langs->trans('SharedProject'), 'world', 'class="paddingrightonly"'); print $langs->trans('SharedProject'); } else { + print img_picto($langs->trans('PrivateProject'), 'private', 'class="paddingrightonly"'); print $langs->trans('PrivateProject'); } print '
    '.$langs->trans("Visibility").''; if ($object->public) { + print img_picto($langs->trans('SharedProject'), 'world', 'class="paddingrightonly"'); print $langs->trans('SharedProject'); } else { + print img_picto($langs->trans('PrivateProject'), 'private', 'class="paddingrightonly"'); print $langs->trans('PrivateProject'); } print '
    '; + print ''; $array = array(''=>'', 0 => $langs->trans("PrivateProject"), 1 => $langs->trans("SharedProject")); print $form->selectarray('search_public', $array, $search_public); print ''; + print ''; @@ -954,10 +958,6 @@ if (!empty($arrayfields['p.budget_amount']['checked'])) { print ''; print ''; - print ''; print $form->selectyesno('search_usage_opportunity', $search_usage_opportunity, 1, false, 1); @@ -1060,7 +1060,10 @@ if (!empty($arrayfields['p.datee']['checked'])) { print_liste_field_titre($arrayfields['p.datee']['label'], $_SERVER["PHP_SELF"], "p.datee", "", $param, '', $sortfield, $sortorder, 'center '); } if (!empty($arrayfields['p.public']['checked'])) { - print_liste_field_titre($arrayfields['p.public']['label'], $_SERVER["PHP_SELF"], "p.public", "", $param, "", $sortfield, $sortorder); + print_liste_field_titre($arrayfields['p.public']['label'], $_SERVER["PHP_SELF"], "p.public", "", $param, "", $sortfield, $sortorder, 'center '); +} +if (!empty($arrayfields['c.assigned']['checked'])) { + print_liste_field_titre($arrayfields['c.assigned']['label'], $_SERVER["PHP_SELF"], "", '', $param, '', $sortfield, $sortorder, 'center ', ''); } if (!empty($arrayfields['p.fk_opp_status']['checked'])) { print_liste_field_titre($arrayfields['p.fk_opp_status']['label'], $_SERVER["PHP_SELF"], 'p.fk_opp_status', "", $param, '', $sortfield, $sortorder, 'center '); @@ -1077,9 +1080,6 @@ if (!empty($arrayfields['opp_weighted_amount']['checked'])) { if (!empty($arrayfields['p.budget_amount']['checked'])) { print_liste_field_titre($arrayfields['p.budget_amount']['label'], $_SERVER["PHP_SELF"], 'p.budget_amount', "", $param, '', $sortfield, $sortorder, 'right '); } -if (!empty($arrayfields['c.assigned']['checked'])) { - print_liste_field_titre($arrayfields['c.assigned']['label'], $_SERVER["PHP_SELF"], "", '', $param, '', $sortfield, $sortorder, 'center ', ''); -} if (!empty($arrayfields['p.usage_opportunity']['checked'])) { print_liste_field_titre($arrayfields['p.usage_opportunity']['label'], $_SERVER["PHP_SELF"], 'p.usage_opportunity', "", $param, '', $sortfield, $sortorder, 'right '); } @@ -1258,17 +1258,54 @@ while ($i < min($num, $limit)) { } // Visibility if (!empty($arrayfields['p.public']['checked'])) { - print ''; + print ''; if ($obj->public) { - print $langs->trans('SharedProject'); + print img_picto($langs->trans('SharedProject'), 'world', 'class="paddingrightonly"'); + //print $langs->trans('SharedProject'); } else { - print $langs->trans('PrivateProject'); + print img_picto($langs->trans('PrivateProject'), 'private', 'class="paddingrightonly"'); + //print $langs->trans('PrivateProject'); } print ''; + $ifisrt = 1; + foreach (array('internal', 'external') as $source) { + $tab = $object->liste_contact(-1, $source); + $numcontact = count($tab); + if (!empty($numcontact)) { + foreach ($tab as $contactproject) { + //var_dump($contacttask); + if ($source == 'internal') { + $c = new User($db); + } else { + $c = new Contact($db); + } + $c->fetch($contactproject['id']); + if (!empty($c->photo)) { + if (get_class($c) == 'User') { + print $c->getNomUrl(-2, '', 0, 0, 24, 1, '', ($ifisrt ? '' : 'notfirst')); + } else { + print $c->getNomUrl(-2, '', 0, '', -1, 0, ($ifisrt ? '' : 'notfirst')); + } + } else { + if (get_class($c) == 'User') { + print $c->getNomUrl(2, '', 0, 0, 24, 1, '', ($ifisrt ? '' : 'notfirst')); + } else { + print $c->getNomUrl(2, '', 0, '', -1, 0, ($ifisrt ? '' : 'notfirst')); + } + } + $ifisrt = 0; + } + } + } + print ''; @@ -1340,41 +1377,6 @@ while ($i < min($num, $limit)) { $totalarray['pos'][$totalarray['nbfield']] = 'p.budget_amount'; } } - // Contacts of project - if (!empty($arrayfields['c.assigned']['checked'])) { - print ''; - $ifisrt = 1; - foreach (array('internal', 'external') as $source) { - $tab = $object->liste_contact(-1, $source); - $numcontact = count($tab); - if (!empty($numcontact)) { - foreach ($tab as $contactproject) { - //var_dump($contacttask); - if ($source == 'internal') { - $c = new User($db); - } else { - $c = new Contact($db); - } - $c->fetch($contactproject['id']); - if (!empty($c->photo)) { - if (get_class($c) == 'User') { - print $c->getNomUrl(-2, '', 0, 0, 24, 1, '', ($ifisrt ? '' : 'notfirst')); - } else { - print $c->getNomUrl(-2, '', 0, '', -1, 0, ($ifisrt ? '' : 'notfirst')); - } - } else { - if (get_class($c) == 'User') { - print $c->getNomUrl(2, '', 0, 0, 24, 1, '', ($ifisrt ? '' : 'notfirst')); - } else { - print $c->getNomUrl(2, '', 0, '', -1, 0, ($ifisrt ? '' : 'notfirst')); - } - } - $ifisrt = 0; - } - } - } - print ''; diff --git a/htdocs/projet/tasks.php b/htdocs/projet/tasks.php index aabca026f20..eacd507b35c 100644 --- a/htdocs/projet/tasks.php +++ b/htdocs/projet/tasks.php @@ -603,8 +603,10 @@ if ($id > 0 || !empty($ref)) { // Visibility print '
    '.$langs->trans("Visibility").''; if ($object->public) { + print img_picto($langs->trans('SharedProject'), 'world', 'class="paddingrightonly"'); print $langs->trans('SharedProject'); } else { + print img_picto($langs->trans('PrivateProject'), 'private', 'class="paddingrightonly"'); print $langs->trans('PrivateProject'); } print '
    '.$langs->trans("Visibility").''; if ($projectstatic->public) { + print img_picto($langs->trans('SharedProject'), 'world', 'class="paddingrightonly"'); print $langs->trans('SharedProject'); } else { + print img_picto($langs->trans('PrivateProject'), 'private', 'class="paddingrightonly"'); print $langs->trans('PrivateProject'); } print '
    '.$langs->trans("Visibility").''; if ($projectstatic->public) { + print img_picto($langs->trans('SharedProject'), 'world', 'class="paddingrightonly"'); print $langs->trans('SharedProject'); } else { + print img_picto($langs->trans('PrivateProject'), 'private', 'class="paddingrightonly"'); print $langs->trans('PrivateProject'); } print '
    '.$langs->trans("Visibility").''; if ($projectstatic->public) { + print img_picto($langs->trans('SharedProject'), 'world', 'class="paddingrightonly"'); print $langs->trans('SharedProject'); } else { + print img_picto($langs->trans('PrivateProject'), 'private', 'class="paddingrightonly"'); print $langs->trans('PrivateProject'); } print '
    '.$langs->trans("Visibility").''; if ($projectstatic->public) { + print img_picto($langs->trans('SharedProject'), 'world', 'class="paddingrightonly"'); print $langs->trans('SharedProject'); } else { + print img_picto($langs->trans('PrivateProject'), 'private', 'class="paddingrightonly"'); print $langs->trans('PrivateProject'); } print '
    '.$langs->trans("Visibility").''; if ($projectstatic->public) { + print img_picto($langs->trans('SharedProject'), 'world', 'class="paddingrightonly"'); print $langs->trans('SharedProject'); } else { + print img_picto($langs->trans('PrivateProject'), 'private', 'class="paddingrightonly"'); print $langs->trans('PrivateProject'); } print '
    '.$langs->trans("Visibility").''; if ($projectstatic->public) { + print img_picto($langs->trans('SharedProject'), 'world', 'class="paddingrightonly"'); print $langs->trans('SharedProject'); } else { + print img_picto($langs->trans('PrivateProject'), 'private', 'class="paddingrightonly"'); print $langs->trans('PrivateProject'); } print '
    '.$langs->trans("Visibility").''; if ($projectstat->public) { + print img_picto($langs->trans('SharedProject'), 'world', 'class="paddingrightonly"'); print $langs->trans('SharedProject'); } else { + print img_picto($langs->trans('PrivateProject'), 'private', 'class="paddingrightonly"'); print $langs->trans('PrivateProject'); } print '
    '.$langs->trans("OpportunityAmount").''; - /*if ($object->opp_status) - { - print price($obj->opp_amount, 1, $langs, 1, 0, -1, $conf->currency); - }*/ if (strcmp($object->opp_amount, '')) { print ''.price($object->opp_amount, 0, $langs, 1, 0, -1, $conf->currency).''; + if (strcmp($object->opp_percent, '')) { + print '       '.$langs->trans("Weighted").': '.price($object->opp_amount * $object->opp_percent / 100, 0, $langs, 1, 0, -1, $conf->currency).''; + } } print '
    '.$langs->trans('OpportunityWeightedAmount').''; if (strcmp($object->opp_amount, '') && strcmp($object->opp_percent, '')) { print ''.price($object->opp_amount * $object->opp_percent / 100, 0, $langs, 1, 0, -1, $conf->currency).''; } print '
    '.$langs->trans("OpportunityAmount").''; if (strcmp($object->opp_amount, '')) { print ''.price($object->opp_amount, '', $langs, 0, 0, 0, $conf->currency).''; + if (strcmp($object->opp_percent, '')) { + print '       '.$langs->trans("Weighted").': '.price($object->opp_amount * $object->opp_percent / 100, 0, $langs, 1, 0, -1, $conf->currency).''; + } } print '
    '.$langs->trans("OpportunityAmount").''; if (strcmp($object->opp_amount, '')) { print ''.price($object->opp_amount, '', $langs, 1, 0, 0, $conf->currency).''; + if (strcmp($object->opp_percent, '')) { + print '       '.$langs->trans("Weighted").': '.price($object->opp_amount * $object->opp_percent / 100, 0, $langs, 1, 0, -1, $conf->currency).''; + } } print '
    '.$langs->trans("OpportunityProbability").''; - if (strcmp($object->opp_percent, '')) { + if (strcmp($projectstatic->opp_percent, '')) { print price($projectstatic->opp_percent, 0, $langs, 1, 0).' %'; } print '
    '.$langs->trans("OpportunityAmount").''; - /*if ($object->opp_status) - { - print price($obj->opp_amount, 1, $langs, 1, 0, -1, $conf->currency); - }*/ if (strcmp($projectstatic->opp_amount, '')) { print price($projectstatic->opp_amount, 0, $langs, 1, 0, -1, $conf->currency); + if (strcmp($projectstatic->opp_percent, '')) { + print '       '.$langs->trans("Weighted").': '.price($projectstatic->opp_amount * $projectstatic->opp_percent / 100, 0, $langs, 1, 0, -1, $conf->currency).''; + } } print '
    '; } diff --git a/htdocs/eventorganization/conferenceorbooth_list.php b/htdocs/eventorganization/conferenceorbooth_list.php index 88dad1bbac0..6d42d881ab8 100644 --- a/htdocs/eventorganization/conferenceorbooth_list.php +++ b/htdocs/eventorganization/conferenceorbooth_list.php @@ -333,10 +333,12 @@ if ($projectid > 0) { // Visibility print '
    '.$langs->trans("Visibility").''; - if ($project->public) { - print $langs->trans('SharedProject'); + if ($project->public == 0) { + print img_picto($langs->trans('PrivateProject'), 'private', 'class="paddingrightonly"'); + print $langs->trans("PrivateProject"); } else { - print $langs->trans('PrivateProject'); + print img_picto($langs->trans('SharedProject'), 'world', 'class="paddingrightonly"'); + print $langs->trans("SharedProject"); } print '
    '.$langs->trans("Visibility").''; - if ($projectstatic->public) { - print $langs->trans('SharedProject'); + if ($projectstatic->public == 0) { + print img_picto($langs->trans('PrivateProject'), 'private', 'class="paddingrightonly"'); + print $langs->trans("PrivateProject"); } else { - print $langs->trans('PrivateProject'); + print img_picto($langs->trans('SharedProject'), 'world', 'class="paddingrightonly"'); + print $langs->trans("SharedProject"); } print '
    '; + print $form->editfieldkey($form->textwithpicto($langs->trans('MaxNbOfAttendees'), ''), 'max_attendees', '', $projectstatic, $permissiontoadd, 'integer:3', '&withproject=1', 0, 0, 'projectid'); + print ''; + print $form->editfieldval($form->textwithpicto($langs->trans('MaxNbOfAttendees'), ''), 'max_attendees', $projectstatic->max_attendees, $projectstatic, $permissiontoadd, 'integer:3', '', 0, 0, '&withproject=1', 0, '', 'projectid'); + print "
    '.$langs->trans("EventOrganizationICSLink").''; // Define $urlwithroot $urlwithouturlroot = preg_replace('/'.preg_quote(DOL_URL_ROOT, '/').'$/i', '', trim($dolibarr_main_url_root)); diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index 873cb7ce82d..df50f0703e0 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -959,7 +959,9 @@ if ($action == 'create' && $user->rights->projet->creer) { // Opportunity amount print '
    '.$langs->trans("OpportunityAmount").''; + print $langs->getCurrencySymbol($conf->currency); + print '
    '.$langs->trans("Budget").''; + print $langs->getCurrencySymbol($conf->currency); + print '
    ' . "\n"; + print '
    ' . "\n"; - // Email - print '' . "\n"; - - // Company - print '' . "\n"; - - // Email company for invoice - if ($project->price_registration) { - print '' . "\n"; - } + print '' . "\n"; - // Address - print '' . "\n"; + // Company + print '' . "\n"; - // Zip / Town - print ''; + // Email company for invoice + if ($project->price_registration) { + print '' . "\n"; + } - // Country - print '' . "\n"; + + // Zip / Town + print ''; + + // Country + print ''; - // State - if (empty($conf->global->SOCIETE_DISABLE_STATE)) { - print ''; + // State + if (empty($conf->global->SOCIETE_DISABLE_STATE)) { + print ''; } + + if ($project->price_registration) { + print ''; + } + + $notetoshow = $note_public; + print ''; + + print "
    ' . $langs->trans("EmailAttendee") . '*'; - print img_picto('', 'email', 'class="pictofixedwidth"'); - print '
    ' . $langs->trans("Company"); - if (!empty(floatval($project->price_registration))) { - print '*'; - } - print ' '; - print img_picto('', 'company', 'class="pictofixedwidth"'); - print '
    ' . $langs->trans("EmailCompanyForInvoice") . ''; + // Email + print '
    ' . $langs->trans("EmailAttendee") . '*'; print img_picto('', 'email', 'class="pictofixedwidth"'); - print '
    ' . $langs->trans("Address") . '' . "\n"; - print '
    ' . $langs->trans("Company"); + if (!empty(floatval($project->price_registration))) { + print '*'; + } + print ' '; + print img_picto('', 'company', 'class="pictofixedwidth"'); + print '
    ' . $langs->trans('Zip') . ' / ' . $langs->trans('Town') . ''; - print $formcompany->select_ziptown(GETPOST('zipcode'), 'zipcode', array('town', 'selectcountry_id', 'state_id'), 6, 1); - print ' / '; - print $formcompany->select_ziptown(GETPOST('town'), 'town', array('zipcode', 'selectcountry_id', 'state_id'), 0, 1); - print '
    ' . $langs->trans("EmailCompanyForInvoice") . ''; + print img_picto('', 'email', 'class="pictofixedwidth"'); + print '
    ' . $langs->trans('Country') . '*'; - print img_picto('', 'country', 'class="pictofixedwidth"'); - $country_id = GETPOST('country_id'); - if (!$country_id && !empty($conf->global->MEMBER_NEWFORM_FORCECOUNTRYCODE)) { - $country_id = getCountry($conf->global->MEMBER_NEWFORM_FORCECOUNTRYCODE, 2, $db, $langs); - } - if (!$country_id && !empty($conf->geoipmaxmind->enabled)) { - $country_code = dol_user_country(); - //print $country_code; - if ($country_code) { - $new_country_id = getCountry($country_code, 3, $db, $langs); - //print 'xxx'.$country_code.' - '.$new_country_id; - if ($new_country_id) { - $country_id = $new_country_id; + // Address + print '
    ' . $langs->trans("Address") . '' . "\n"; + print '
    ' . $langs->trans('Zip') . ' / ' . $langs->trans('Town') . ''; + print $formcompany->select_ziptown(GETPOST('zipcode'), 'zipcode', array('town', 'selectcountry_id', 'state_id'), 6, 1); + print ' / '; + print $formcompany->select_ziptown(GETPOST('town'), 'town', array('zipcode', 'selectcountry_id', 'state_id'), 0, 1); + print '
    ' . $langs->trans('Country') . '*'; + print img_picto('', 'country', 'class="pictofixedwidth"'); + $country_id = GETPOST('country_id'); + if (!$country_id && !empty($conf->global->MEMBER_NEWFORM_FORCECOUNTRYCODE)) { + $country_id = getCountry($conf->global->MEMBER_NEWFORM_FORCECOUNTRYCODE, 2, $db, $langs); + } + if (!$country_id && !empty($conf->geoipmaxmind->enabled)) { + $country_code = dol_user_country(); + //print $country_code; + if ($country_code) { + $new_country_id = getCountry($country_code, 3, $db, $langs); + //print 'xxx'.$country_code.' - '.$new_country_id; + if ($new_country_id) { + $country_id = $new_country_id; + } } } - } - $country_code = getCountry($country_id, 2, $db, $langs); - print $form->select_country($country_id, 'country_id'); - print '
    ' . $langs->trans('State') . ''; - if ($country_code) { - print $formcompany->select_state(GETPOST("state_id"), $country_code); - } else { - print ''; + $country_code = getCountry($country_id, 2, $db, $langs); + print $form->select_country($country_id, 'country_id', '', 0, 'minwidth200 widthcentpercentminusx maxwidth300'); + print '
    ' . $langs->trans('State') . ''; + if ($country_code) { + print img_picto('', 'state', 'class="pictofixedwidth"'); + print $formcompany->select_state(GETPOST("state_id"), $country_code); + } else { + print ''; + } + print '
    ' . $langs->trans('Price') . ''; + print price($project->price_registration, 1, $langs, 1, -1, -1, $conf->currency); + print '
    ' . $langs->trans('Note') . ''; + if (!empty($conf->global->EVENTORGANIZATION_DEFAULT_NOTE_ON_REGISTRATION)) { + $notetoshow = str_replace('\n', "\n", $conf->global->EVENTORGANIZATION_DEFAULT_NOTE_ON_REGISTRATION); + } + print ''; print '
    \n"; + + print dol_get_fiche_end(); + + // Save + print '
    '; + print ''; + if (!empty($backtopage)) { + print '     '; + } + print '
    '; + + + print "\n"; + print "
    "; + print '
    '; } - - if ($project->price_registration) { - print '' . $langs->trans('Price') . ''; - print price($project->price_registration, 1, $langs, 1, -1, -1, $conf->currency); - print ''; - } - - $notetoshow = $note_public; - print '' . $langs->trans('Note') . ''; - if (!empty($conf->global->EVENTORGANIZATION_DEFAULT_NOTE_ON_REGISTRATION)) { - $notetoshow = str_replace('\n', "\n", $conf->global->EVENTORGANIZATION_DEFAULT_NOTE_ON_REGISTRATION); - } - print ''; - print ''; - - print "\n"; - - print dol_get_fiche_end(); - - // Save - print '
    '; - print ''; - if (!empty($backtopage)) { - print '     '; - } - print '
    '; - - - print "\n"; - print "
    "; - print ''; } else { print $langs->trans("ConferenceIsNotConfirmed"); } From c020325587e6e3781ce242a295eb6a0082d0888c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 May 2022 19:54:49 +0200 Subject: [PATCH 141/248] Debug v16 --- htdocs/categories/index.php | 3 ++- htdocs/product/class/product.class.php | 28 ++++++++++++++++---------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/htdocs/categories/index.php b/htdocs/categories/index.php index f4456ed79bf..4a9e771416c 100644 --- a/htdocs/categories/index.php +++ b/htdocs/categories/index.php @@ -102,7 +102,8 @@ if (empty($nosearch)) { print ''.$langs->trans("Search").''; print ''; print ''; - print $langs->trans("Name").':'; + print $langs->trans("Name").':'; + print ''; print ''; diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index a6cac07d7e1..9a48b184c73 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -4895,17 +4895,23 @@ class Product extends CommonObject $label .= "
    ".$langs->trans("PMPValue").': '.price($this->pmp, 0, '', 1, -1, -1, $conf->currency); } - if (!empty($conf->accounting->enabled) && $this->status) { - include_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php'; - $label .= '
    '.$langs->trans('ProductAccountancySellCode').': '.length_accountg($this->accountancy_code_sell); - $label .= '
    '.$langs->trans('ProductAccountancySellIntraCode').': '.length_accountg($this->accountancy_code_sell_intra); - $label .= '
    '.$langs->trans('ProductAccountancySellExportCode').': '.length_accountg($this->accountancy_code_sell_export); - } - if (!empty($conf->accounting->enabled) && $this->status_buy) { - include_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php'; - $label .= '
    '.$langs->trans('ProductAccountancyBuyCode').': '.length_accountg($this->accountancy_code_buy); - $label .= '
    '.$langs->trans('ProductAccountancyBuyIntraCode').': '.length_accountg($this->accountancy_code_buy_intra); - $label .= '
    '.$langs->trans('ProductAccountancyBuyExportCode').': '.length_accountg($this->accountancy_code_buy_export); + if (!empty($conf->accounting->enabled)) { + if ($this->status) { + include_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php'; + $label .= '
    '; + $label .= '
    '.$langs->trans('ProductAccountancySellCode').': '.length_accountg($this->accountancy_code_sell); + $label .= '
    '.$langs->trans('ProductAccountancySellIntraCode').': '.length_accountg($this->accountancy_code_sell_intra); + $label .= '
    '.$langs->trans('ProductAccountancySellExportCode').': '.length_accountg($this->accountancy_code_sell_export); + } + if ($this->status_buy) { + include_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php'; + if (empty($this->status)) { + $label .= '
    '; + } + $label .= '
    '.$langs->trans('ProductAccountancyBuyCode').': '.length_accountg($this->accountancy_code_buy); + $label .= '
    '.$langs->trans('ProductAccountancyBuyIntraCode').': '.length_accountg($this->accountancy_code_buy_intra); + $label .= '
    '.$langs->trans('ProductAccountancyBuyExportCode').': '.length_accountg($this->accountancy_code_buy_export); + } } $linkclose = ''; From 049799c2e615e7c5ebacb7b245af2cf839fb9254 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 May 2022 20:28:00 +0200 Subject: [PATCH 142/248] Update to ckeditor 4.18 --- COPYRIGHT | 2 +- ChangeLog | 2 +- SECURITY.md | 5 +- htdocs/core/class/doleditor.class.php | 19 +- htdocs/includes/ckeditor/UPGRADE.md | 2 +- htdocs/includes/ckeditor/ckeditor/CHANGES.md | 942 +++++--- htdocs/includes/ckeditor/ckeditor/LICENSE.md | 25 +- htdocs/includes/ckeditor/ckeditor/README.md | 10 +- htdocs/includes/ckeditor/ckeditor/SECURITY.md | 10 + .../ckeditor/ckeditor/adapters/jquery.js | 8 +- .../ckeditor/bender-runner.config.json | 16 + .../ckeditor/ckeditor/build-config.js | 86 +- htdocs/includes/ckeditor/ckeditor/ckeditor.js | 2042 +++++++++-------- htdocs/includes/ckeditor/ckeditor/config.js | 2 +- .../includes/ckeditor/ckeditor/contents.css | 2 +- htdocs/includes/ckeditor/ckeditor/lang/af.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/ar.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/az.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/bg.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/bn.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/bs.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/ca.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/cs.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/cy.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/da.js | 5 + .../includes/ckeditor/ckeditor/lang/de-ch.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/de.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/el.js | 5 + .../includes/ckeditor/ckeditor/lang/en-au.js | 5 + .../includes/ckeditor/ckeditor/lang/en-ca.js | 5 + .../includes/ckeditor/ckeditor/lang/en-gb.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/en.js | 6 +- htdocs/includes/ckeditor/ckeditor/lang/eo.js | 5 + .../includes/ckeditor/ckeditor/lang/es-mx.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/es.js | 6 +- htdocs/includes/ckeditor/ckeditor/lang/et.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/eu.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/fa.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/fi.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/fo.js | 5 + .../includes/ckeditor/ckeditor/lang/fr-ca.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/fr.js | 6 +- htdocs/includes/ckeditor/ckeditor/lang/gl.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/gu.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/he.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/hi.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/hr.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/hu.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/id.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/is.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/it.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/ja.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/ka.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/km.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/ko.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/ku.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/lt.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/lv.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/mk.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/mn.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/ms.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/nb.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/nl.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/no.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/oc.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/pl.js | 5 + .../includes/ckeditor/ckeditor/lang/pt-br.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/pt.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/ro.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/ru.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/si.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/sk.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/sl.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/sq.js | 5 + .../ckeditor/ckeditor/lang/sr-latn.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/sr.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/sv.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/th.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/tr.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/tt.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/ug.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/uk.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/vi.js | 5 + .../includes/ckeditor/ckeditor/lang/zh-cn.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/zh.js | 5 + .../plugins/a11yhelp/dialogs/a11yhelp.js | 2 +- .../dialogs/lang/_translationstatus.txt | 2 +- .../plugins/a11yhelp/dialogs/lang/af.js | 2 +- .../plugins/a11yhelp/dialogs/lang/ar.js | 16 +- .../plugins/a11yhelp/dialogs/lang/az.js | 2 +- .../plugins/a11yhelp/dialogs/lang/bg.js | 6 +- .../plugins/a11yhelp/dialogs/lang/ca.js | 2 +- .../plugins/a11yhelp/dialogs/lang/cs.js | 6 +- .../plugins/a11yhelp/dialogs/lang/cy.js | 2 +- .../plugins/a11yhelp/dialogs/lang/da.js | 12 +- .../plugins/a11yhelp/dialogs/lang/de-ch.js | 19 +- .../plugins/a11yhelp/dialogs/lang/de.js | 2 +- .../plugins/a11yhelp/dialogs/lang/el.js | 2 +- .../plugins/a11yhelp/dialogs/lang/en-au.js | 16 +- .../plugins/a11yhelp/dialogs/lang/en-gb.js | 16 +- .../plugins/a11yhelp/dialogs/lang/en.js | 16 +- .../plugins/a11yhelp/dialogs/lang/eo.js | 2 +- .../plugins/a11yhelp/dialogs/lang/es-mx.js | 2 +- .../plugins/a11yhelp/dialogs/lang/es.js | 2 +- .../plugins/a11yhelp/dialogs/lang/et.js | 2 +- .../plugins/a11yhelp/dialogs/lang/eu.js | 2 +- .../plugins/a11yhelp/dialogs/lang/fa.js | 6 +- .../plugins/a11yhelp/dialogs/lang/fi.js | 2 +- .../plugins/a11yhelp/dialogs/lang/fo.js | 16 +- .../plugins/a11yhelp/dialogs/lang/fr-ca.js | 2 +- .../plugins/a11yhelp/dialogs/lang/fr.js | 2 +- .../plugins/a11yhelp/dialogs/lang/gl.js | 2 +- .../plugins/a11yhelp/dialogs/lang/gu.js | 16 +- .../plugins/a11yhelp/dialogs/lang/he.js | 2 +- .../plugins/a11yhelp/dialogs/lang/hi.js | 16 +- .../plugins/a11yhelp/dialogs/lang/hr.js | 2 +- .../plugins/a11yhelp/dialogs/lang/hu.js | 2 +- .../plugins/a11yhelp/dialogs/lang/id.js | 2 +- .../plugins/a11yhelp/dialogs/lang/it.js | 2 +- .../plugins/a11yhelp/dialogs/lang/ja.js | 2 +- .../plugins/a11yhelp/dialogs/lang/km.js | 16 +- .../plugins/a11yhelp/dialogs/lang/ko.js | 2 +- .../plugins/a11yhelp/dialogs/lang/ku.js | 2 +- .../plugins/a11yhelp/dialogs/lang/lt.js | 16 +- .../plugins/a11yhelp/dialogs/lang/lv.js | 4 +- .../plugins/a11yhelp/dialogs/lang/mk.js | 6 +- .../plugins/a11yhelp/dialogs/lang/mn.js | 16 +- .../plugins/a11yhelp/dialogs/lang/nb.js | 2 +- .../plugins/a11yhelp/dialogs/lang/nl.js | 2 +- .../plugins/a11yhelp/dialogs/lang/no.js | 2 +- .../plugins/a11yhelp/dialogs/lang/oc.js | 2 +- .../plugins/a11yhelp/dialogs/lang/pl.js | 2 +- .../plugins/a11yhelp/dialogs/lang/pt-br.js | 2 +- .../plugins/a11yhelp/dialogs/lang/pt.js | 2 +- .../plugins/a11yhelp/dialogs/lang/ro.js | 2 +- .../plugins/a11yhelp/dialogs/lang/ru.js | 2 +- .../plugins/a11yhelp/dialogs/lang/si.js | 2 +- .../plugins/a11yhelp/dialogs/lang/sk.js | 4 +- .../plugins/a11yhelp/dialogs/lang/sl.js | 2 +- .../plugins/a11yhelp/dialogs/lang/sq.js | 2 +- .../plugins/a11yhelp/dialogs/lang/sr-latn.js | 2 +- .../plugins/a11yhelp/dialogs/lang/sr.js | 2 +- .../plugins/a11yhelp/dialogs/lang/sv.js | 2 +- .../plugins/a11yhelp/dialogs/lang/th.js | 16 +- .../plugins/a11yhelp/dialogs/lang/tr.js | 2 +- .../plugins/a11yhelp/dialogs/lang/tt.js | 16 +- .../plugins/a11yhelp/dialogs/lang/ug.js | 2 +- .../plugins/a11yhelp/dialogs/lang/uk.js | 2 +- .../plugins/a11yhelp/dialogs/lang/vi.js | 2 +- .../plugins/a11yhelp/dialogs/lang/zh-cn.js | 2 +- .../plugins/a11yhelp/dialogs/lang/zh.js | 2 +- .../ckeditor/plugins/about/dialogs/about.js | 4 +- .../plugins/clipboard/dialogs/paste.js | 2 +- .../colordialog/dialogs/colordialog.css | 2 +- .../colordialog/dialogs/colordialog.js | 2 +- .../copyformatting/styles/copyformatting.css | 2 +- .../plugins/dialog/dialogDefinition.js | 2 +- .../ckeditor/plugins/dialog/styles/dialog.css | 18 + .../ckeditor/plugins/div/dialogs/div.js | 17 +- .../ckeditor/plugins/exportpdf/CHANGELOG.md | 72 + .../ckeditor/plugins/exportpdf/LICENSE.md | 18 + .../ckeditor/plugins/exportpdf/README.md | 102 + .../plugins/exportpdf/plugindefinition.js | 1 + .../plugins/exportpdf/tests/_helpers/tools.js | 5 + .../plugins/exportpdf/tests/authentication.js | 6 + .../plugins/exportpdf/tests/exportpdf.js | 10 + .../tests/manual/configfilename.html | 27 + .../exportpdf/tests/manual/configfilename.md | 46 + .../exportpdf/tests/manual/emptyeditor.html | 18 + .../exportpdf/tests/manual/emptyeditor.md | 34 + .../exportpdf/tests/manual/integration.html | 148 ++ .../exportpdf/tests/manual/integration.md | 12 + .../tests/manual/integrations/easyimage.html | 27 + .../tests/manual/integrations/easyimage.md | 26 + .../exportpdf/tests/manual/notifications.html | 19 + .../exportpdf/tests/manual/notifications.md | 36 + .../tests/manual/notificationsasync.html | 45 + .../tests/manual/notificationsasync.md | 27 + .../exportpdf/tests/manual/paperformat.html | 29 + .../exportpdf/tests/manual/paperformat.md | 18 + .../exportpdf/tests/manual/readonly.html | 18 + .../exportpdf/tests/manual/readonly.md | 28 + .../exportpdf/tests/manual/stylesheets.html | 36 + .../exportpdf/tests/manual/stylesheets.md | 19 + .../exportpdf/tests/manual/tokenfetching.html | 23 + .../exportpdf/tests/manual/tokenfetching.md | 19 + .../tests/manual/tokentwoeditorscorrect.html | 38 + .../tests/manual/tokentwoeditorscorrect.md | 14 + .../tests/manual/tokentwoeditorswrong.html | 38 + .../tests/manual/tokentwoeditorswrong.md | 14 + .../tests/manual/tokenwithouturl.html | 19 + .../exportpdf/tests/manual/tokenwithouturl.md | 31 + .../exportpdf/tests/manual/wrongendpoint.html | 21 + .../exportpdf/tests/manual/wrongendpoint.md | 34 + .../plugins/exportpdf/tests/notification.js | 4 + .../plugins/exportpdf/tests/resourcespaths.js | 9 + .../plugins/exportpdf/tests/statistics.js | 3 + .../plugins/exportpdf/tests/stylesheets.js | 18 + .../ckeditor/plugins/find/dialogs/find.js | 44 +- .../ckeditor/plugins/forms/dialogs/button.js | 10 +- .../plugins/forms/dialogs/checkbox.js | 6 +- .../ckeditor/plugins/forms/dialogs/form.js | 4 +- .../plugins/forms/dialogs/hiddenfield.js | 8 +- .../ckeditor/plugins/forms/dialogs/radio.js | 4 +- .../ckeditor/plugins/forms/dialogs/select.js | 32 +- .../plugins/forms/dialogs/textarea.js | 11 +- .../plugins/forms/dialogs/textfield.js | 16 +- .../ckeditor/ckeditor/plugins/icons.png | Bin 12453 -> 12237 bytes .../ckeditor/ckeditor/plugins/icons_hidpi.png | Bin 41377 -> 38309 bytes .../ckeditor/plugins/iframe/dialogs/iframe.js | 15 +- .../ckeditor/plugins/image/dialogs/image.js | 52 +- .../ckeditor/plugins/link/dialogs/anchor.js | 10 +- .../ckeditor/plugins/link/dialogs/link.js | 52 +- .../plugins/liststyle/dialogs/liststyle.js | 14 +- .../plugins/pastefromgdocs/filter/default.js | 8 + .../pastefromlibreoffice/filter/default.js | 11 + .../plugins/pastefromword/filter/default.js | 94 +- .../plugins/pastetools/filter/common.js | 24 + .../plugins/pastetools/filter/image.js | 12 + .../plugins/preview/images/pagebreak.gif | Bin 0 -> 99 bytes .../plugins/preview/styles/screen.css | 10 + .../ckeditor/plugins/scayt/CHANGELOG.md | 18 +- .../ckeditor/plugins/scayt/LICENSE.md | 4 +- .../ckeditor/ckeditor/plugins/scayt/README.md | 14 +- .../ckeditor/plugins/smiley/dialogs/smiley.js | 2 +- .../dialogs/lang/_translationstatus.txt | 2 +- .../plugins/specialchar/dialogs/lang/af.js | 2 +- .../plugins/specialchar/dialogs/lang/ar.js | 2 +- .../plugins/specialchar/dialogs/lang/az.js | 2 +- .../plugins/specialchar/dialogs/lang/bg.js | 2 +- .../plugins/specialchar/dialogs/lang/ca.js | 2 +- .../plugins/specialchar/dialogs/lang/cs.js | 2 +- .../plugins/specialchar/dialogs/lang/cy.js | 2 +- .../plugins/specialchar/dialogs/lang/da.js | 6 +- .../plugins/specialchar/dialogs/lang/de-ch.js | 12 +- .../plugins/specialchar/dialogs/lang/de.js | 2 +- .../plugins/specialchar/dialogs/lang/el.js | 2 +- .../plugins/specialchar/dialogs/lang/en-au.js | 2 +- .../plugins/specialchar/dialogs/lang/en-ca.js | 2 +- .../plugins/specialchar/dialogs/lang/en-gb.js | 2 +- .../plugins/specialchar/dialogs/lang/en.js | 2 +- .../plugins/specialchar/dialogs/lang/eo.js | 2 +- .../plugins/specialchar/dialogs/lang/es-mx.js | 2 +- .../plugins/specialchar/dialogs/lang/es.js | 2 +- .../plugins/specialchar/dialogs/lang/et.js | 2 +- .../plugins/specialchar/dialogs/lang/eu.js | 2 +- .../plugins/specialchar/dialogs/lang/fa.js | 2 +- .../plugins/specialchar/dialogs/lang/fi.js | 2 +- .../plugins/specialchar/dialogs/lang/fr-ca.js | 2 +- .../plugins/specialchar/dialogs/lang/fr.js | 2 +- .../plugins/specialchar/dialogs/lang/gl.js | 2 +- .../plugins/specialchar/dialogs/lang/he.js | 2 +- .../plugins/specialchar/dialogs/lang/hr.js | 2 +- .../plugins/specialchar/dialogs/lang/hu.js | 2 +- .../plugins/specialchar/dialogs/lang/id.js | 20 +- .../plugins/specialchar/dialogs/lang/it.js | 2 +- .../plugins/specialchar/dialogs/lang/ja.js | 2 +- .../plugins/specialchar/dialogs/lang/km.js | 2 +- .../plugins/specialchar/dialogs/lang/ko.js | 2 +- .../plugins/specialchar/dialogs/lang/ku.js | 2 +- .../plugins/specialchar/dialogs/lang/lt.js | 2 +- .../plugins/specialchar/dialogs/lang/lv.js | 2 +- .../plugins/specialchar/dialogs/lang/nb.js | 2 +- .../plugins/specialchar/dialogs/lang/nl.js | 2 +- .../plugins/specialchar/dialogs/lang/no.js | 2 +- .../plugins/specialchar/dialogs/lang/oc.js | 2 +- .../plugins/specialchar/dialogs/lang/pl.js | 2 +- .../plugins/specialchar/dialogs/lang/pt-br.js | 2 +- .../plugins/specialchar/dialogs/lang/pt.js | 2 +- .../plugins/specialchar/dialogs/lang/ro.js | 2 +- .../plugins/specialchar/dialogs/lang/ru.js | 2 +- .../plugins/specialchar/dialogs/lang/si.js | 2 +- .../plugins/specialchar/dialogs/lang/sk.js | 2 +- .../plugins/specialchar/dialogs/lang/sl.js | 2 +- .../plugins/specialchar/dialogs/lang/sq.js | 2 +- .../specialchar/dialogs/lang/sr-latn.js | 2 +- .../plugins/specialchar/dialogs/lang/sr.js | 2 +- .../plugins/specialchar/dialogs/lang/sv.js | 2 +- .../plugins/specialchar/dialogs/lang/th.js | 2 +- .../plugins/specialchar/dialogs/lang/tr.js | 2 +- .../plugins/specialchar/dialogs/lang/tt.js | 2 +- .../plugins/specialchar/dialogs/lang/ug.js | 2 +- .../plugins/specialchar/dialogs/lang/uk.js | 2 +- .../plugins/specialchar/dialogs/lang/vi.js | 2 +- .../plugins/specialchar/dialogs/lang/zh-cn.js | 2 +- .../plugins/specialchar/dialogs/lang/zh.js | 2 +- .../specialchar/dialogs/specialchar.js | 22 +- .../ckeditor/plugins/table/dialogs/table.js | 37 +- .../plugins/tabletools/dialogs/tableCell.js | 30 +- .../plugins/templates/dialogs/templates.css | 2 +- .../plugins/templates/dialogs/templates.js | 15 +- .../plugins/templates/templatedefinition.js | 4 + .../plugins/templates/templates/default.js | 2 +- .../ckeditor/skins/moono-lisa/dialog.css | 4 +- .../ckeditor/skins/moono-lisa/dialog_ie.css | 4 +- .../ckeditor/skins/moono-lisa/dialog_ie8.css | 4 +- .../skins/moono-lisa/dialog_iequirks.css | 4 +- .../ckeditor/skins/moono-lisa/editor.css | 4 +- .../skins/moono-lisa/editor_gecko.css | 4 +- .../ckeditor/skins/moono-lisa/editor_ie.css | 4 +- .../ckeditor/skins/moono-lisa/editor_ie8.css | 4 +- .../skins/moono-lisa/editor_iequirks.css | 4 +- .../ckeditor/skins/moono-lisa/icons.png | Bin 12453 -> 12237 bytes .../ckeditor/skins/moono-lisa/icons_hidpi.png | Bin 41377 -> 38309 bytes .../ckeditor/skins/moono-lisa/readme.md | 2 +- htdocs/includes/ckeditor/ckeditor/styles.js | 2 +- htdocs/theme/eldy/ckeditor/config.js | 2 +- htdocs/theme/md/ckeditor/config.js | 2 +- htdocs/website/index.php | 2 +- 309 files changed, 3980 insertions(+), 1841 deletions(-) create mode 100644 htdocs/includes/ckeditor/ckeditor/SECURITY.md create mode 100644 htdocs/includes/ckeditor/ckeditor/bender-runner.config.json create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/af.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/ar.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/az.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/bg.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/bn.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/bs.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/ca.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/cs.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/cy.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/da.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/de-ch.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/de.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/el.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/en-au.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/en-ca.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/en-gb.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/eo.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/es-mx.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/et.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/eu.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/fa.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/fi.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/fo.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/fr-ca.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/gl.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/gu.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/he.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/hi.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/hr.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/hu.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/id.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/is.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/it.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/ja.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/ka.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/km.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/ko.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/ku.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/lt.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/lv.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/mk.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/mn.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/ms.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/nb.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/nl.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/no.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/oc.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/pl.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/pt-br.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/pt.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/ro.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/ru.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/si.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/sk.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/sl.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/sq.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/sr-latn.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/sr.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/sv.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/th.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/tr.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/tt.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/ug.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/uk.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/vi.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/zh-cn.js create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/zh.js create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/dialog/styles/dialog.css create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/CHANGELOG.md create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/LICENSE.md create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/README.md create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/plugindefinition.js create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/_helpers/tools.js create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/authentication.js create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/exportpdf.js create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/configfilename.html create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/configfilename.md create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/emptyeditor.html create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/emptyeditor.md create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/integration.html create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/integration.md create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/integrations/easyimage.html create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/integrations/easyimage.md create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/notifications.html create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/notifications.md create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/notificationsasync.html create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/notificationsasync.md create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/paperformat.html create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/paperformat.md create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/readonly.html create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/readonly.md create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/stylesheets.html create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/stylesheets.md create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokenfetching.html create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokenfetching.md create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokentwoeditorscorrect.html create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokentwoeditorscorrect.md create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokentwoeditorswrong.html create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokentwoeditorswrong.md create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokenwithouturl.html create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokenwithouturl.md create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/wrongendpoint.html create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/wrongendpoint.md create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/notification.js create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/resourcespaths.js create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/statistics.js create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/stylesheets.js create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/pastefromgdocs/filter/default.js create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/pastefromlibreoffice/filter/default.js create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/pastetools/filter/common.js create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/pastetools/filter/image.js create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/preview/images/pagebreak.gif create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/preview/styles/screen.css create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/templates/templatedefinition.js diff --git a/COPYRIGHT b/COPYRIGHT index a2101a1db0a..de293e3867e 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -24,7 +24,6 @@ Component Version License GPL Compatible ------------------------------------------------------------------------------------- PHP libraries: ADOdb-Date 0.36 Modified BSD License Yes Date convertion (not into rpm package) -CKEditor 4.12.1 LGPL-2.1+ Yes Editor WYSIWYG EvalMath 1.0 BSD Yes Safe math expressions evaluation Escpos-php 2.2 MIT License Yes Thermal receipt printer library, for use with ESC/POS compatible printers GeoIP2 0.2.0 Apache License 2.0 Yes Lib to make geoip convert @@ -50,6 +49,7 @@ TCPDI 1.0.0 LGPL-3+ / Apache 2.0 Yes JS libraries: Ace 1.4.14 BSD Yes JS library to get code syntaxique coloration in a textarea. ChartJS 3.7.1 MIT License Yes JS library for graph +CKEditor 4.18 LGPL-2.1+ Yes Editor WYSIWYG jQuery 3.6.0 MIT License Yes JS library jQuery UI 1.13.1 GPL and MIT License Yes JS library plugin UI jQuery select2 4.0.13 GPL and Apache License Yes JS library plugin for sexier multiselect. Warning: 4.0.6+ create troubles without patching css diff --git a/ChangeLog b/ChangeLog index a458f7eea74..7a815b66dcd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,7 +9,7 @@ English Dolibarr ChangeLog For users: --------------- -NEW: PHP 8.0 compatibility +NEW: PHP 8.1 compatibility diff --git a/SECURITY.md b/SECURITY.md index c55d6d26ab0..cd3156bece9 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -6,8 +6,9 @@ This file contains some policies about the security reports on Dolibarr ERP CRM | Version | Supported | | ---------- | ---------------------- | -| <= 14.0.4 | :x: | -| >= 14.0.5+ | :white_check_mark: except CSRF attacks| +| <= 15.0.0 | :x: | +| >= 15.0.1+ | :white_check_mark: except CSRF attacks| +| >= 16.0.0 | :white_check_mark: | | >= develop | :white_check_mark: | ## Reporting a Vulnerability diff --git a/htdocs/core/class/doleditor.class.php b/htdocs/core/class/doleditor.class.php index 23c04a98a81..2be0c36c56c 100644 --- a/htdocs/core/class/doleditor.class.php +++ b/htdocs/core/class/doleditor.class.php @@ -170,6 +170,9 @@ class DolEditor if (empty($conf->global->FCKEDITOR_ENABLE_WSC)) { // spellchecker has end of life december 2021 $pluginstodisable .= ',wsc'; } + if (empty($conf->global->FCKEDITOR_ENABLE_PDF)) { + $pluginstodisable .= ',exportpdf'; + } $scaytautostartup = ''; if (!empty($conf->global->FCKEDITOR_ENABLE_SCAYT_AUTOSTARTUP)) { $scaytautostartup = 'scayt_autoStartup: true,'; @@ -189,14 +192,14 @@ class DolEditor tmpeditor = CKEDITOR.replace(\''.$this->htmlname.'\', { /* property:xxx is same than CKEDITOR.config.property = xxx */ - customConfig : ckeditorConfig, - removePlugins : \''.$pluginstodisable.'\', - readOnly : '.($this->readonly ? 'true' : 'false').', - htmlEncodeOutput :'.$htmlencode_force.', - allowedContent :'.($disallowAnyContent ? 'false' : 'true').', /* Advanced Content Filter (ACF) is own when allowedContent is false */ - extraAllowedContent : \'a[target];div{float,display}\', /* Add the style float and display into div to default other allowed tags */ - disallowedContent : '.($disallowAnyContent ? '\'\'' : '\'\'').', /* Tags that are not allowed */ - fullPage : '.($fullpage ? 'true' : 'false').', /* if true, the html, header and body tags are kept */ + customConfig: ckeditorConfig, + removePlugins: \''.$pluginstodisable.'\', + readOnly: '.($this->readonly ? 'true' : 'false').', + htmlEncodeOutput:'.$htmlencode_force.', + allowedContent:'.($disallowAnyContent ? 'false' : 'true').', /* Advanced Content Filter (ACF) is own when allowedContent is false */ + extraAllowedContent: \'a[target];div{float,display}\', /* Add the style float and display into div to default other allowed tags */ + disallowedContent: '.($disallowAnyContent ? '\'\'' : '\'\'').', /* Tags that are not allowed */ + fullPage: '.($fullpage ? 'true' : 'false').', /* if true, the html, header and body tags are kept */ toolbar: \''.$this->toolbarname.'\', toolbarStartupExpanded: '.($this->toolbarstartexpanded ? 'true' : 'false').', width: '.($this->width ? '\''.$this->width.'\'' : '\'\'').', diff --git a/htdocs/includes/ckeditor/UPGRADE.md b/htdocs/includes/ckeditor/UPGRADE.md index e35dc6cff39..73d46f6eb74 100644 --- a/htdocs/includes/ckeditor/UPGRADE.md +++ b/htdocs/includes/ckeditor/UPGRADE.md @@ -6,4 +6,4 @@ To upgrade ckeditor: - Choose skin mona-lisa - Choose all languages - Download -- Repalce files and remove dir 'samples'. \ No newline at end of file +- Replace files and remove dir 'samples'. \ No newline at end of file diff --git a/htdocs/includes/ckeditor/ckeditor/CHANGES.md b/htdocs/includes/ckeditor/ckeditor/CHANGES.md index 225251b7913..94ecf8517b9 100644 --- a/htdocs/includes/ckeditor/ckeditor/CHANGES.md +++ b/htdocs/includes/ckeditor/ckeditor/CHANGES.md @@ -1,71 +1,495 @@ CKEditor 4 Changelog ==================== +## CKEditor 4.18.0 + +**Security Updates:** + +* Fixed an XSS vulnerability in the core module reported by GitHub Security Lab team member [Kevin Backhouse](https://github.com/kevinbackhouse). + + Issue summary: The vulnerability allowed to inject malformed HTML bypassing content sanitization, which could result in executing a JavaScript code. See [CVE-2022-24728](https://github.com/ckeditor/ckeditor4/security/advisories/GHSA-4fc4-4p5g-6w89) for more details. + +* Fixed a Regular expression Denial of Service (ReDoS) vulnerability in dialog plugin discovered by the CKEditor 4 team during our regular security audit. + + Issue summary: The vulnerability allowed to abuse a dialog input validator regular expression, which could cause a significant performance drop resulting in a browser tab freeze. See [CVE-2022-24729](https://github.com/ckeditor/ckeditor4/security/advisories/GHSA-f6rf-9m92-x2hh) for more details. + +You can read more details in the relevant security advisory and [contact us](security@cksource.com) if you have more questions. + +**An upgrade is highly recommended!** + +**Highlights:** + +[Web Spell Checker](https://webspellchecker.com/) ended support for WebSpellChecker Dialog on December 31st, 2021. This means the plugin is not supported any longer. Therefore, we decided to deprecate and remove the WebSpellChecker Dialog plugin from CKEditor 4 presets. + +We strongly encourage everyone to choose one of the other available spellchecking solutions - [Spell Check As You Type (SCAYT)](https://ckeditor.com/cke4/addon/scayt) or [WProofreader](https://ckeditor.com/cke4/addon/wproofreader). + +Fixed issues: + +* [#5097](https://github.com/ckeditor/ckeditor4/issues/5097): [Chrome] Fixed: Incorrect conversion of points to pixels while using [`CKEDITOR.tools.convertToPx()`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_tools.html#method-convertToPx). +* [#5044](https://github.com/ckeditor/ckeditor4/issues/5044): Fixed: `select` elements with `multiple` attribute had incorrect styling. Thanks to [John R. D'Orazio](https://github.com/JohnRDOrazio)! + +Other changes: + +* [#5093](https://github.com/ckeditor/ckeditor4/issues/5093): Deprecated and removed WebSpellChecker Dialog from presets. +* [#5127](https://github.com/ckeditor/ckeditor4/issues/5127): Deprecated the [`CKEDITOR.rnd`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR.html#property-rnd) property to discourage using it in a security-sensitive context. +* [#5087](https://github.com/ckeditor/ckeditor4/issues/5087): Improved the jQuery adapter by replacing a deprecated jQuery API with existing counterparts. Thanks to [Fran Boon](https://github.com/flavour)! +* [#5128](https://github.com/ckeditor/ckeditor4/issues/5128): Improved the [Emoji](https://ckeditor.com/cke4/addon/emoji) definitions encoding set by the [`config.emoji_emojiListUrl`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-emoji_emojiListUrl) configuration option. + +## CKEditor 4.17.2 + +Fixed issues: + +* [#4934](https://github.com/ckeditor/ckeditor4/issues/4934): Fixed: Active focus in dialog tabs is not visible in the High Contrast mode. +* [#547](https://github.com/ckeditor/ckeditor4/issues/547): Fixed: Dragging and dropping elements like images within a table is no longer available. +* [#4875](https://github.com/ckeditor/ckeditor4/issues/4875): Fixed: It is not possible to delete multiple selected lists. +* [#4873](https://github.com/ckeditor/ckeditor4/issues/4873): Fixed: Pasting content from MS Word and Outlook with horizontal lines prevents images from being uploaded. +* [#4952](https://github.com/ckeditor/ckeditor4/issues/4952): Fixed: Dragging and dropping images within a table cell appends additional elements. +* [#4761](https://github.com/ckeditor/ckeditor4/issues/4761): Fixed: Some CSS files are missing unique timestamp used to prevent browser to cache static resources between editor releases. +* [#4987](https://github.com/ckeditor/ckeditor4/issues/4987): Fixed: [Find/Replace](https://ckeditor.com/cke4/addon/find) is not recognizing more than one space character. +* [#5061](https://github.com/ckeditor/ckeditor4/issues/5061): Fixed: [Find/Replace](https://ckeditor.com/cke4/addon/find) plugin incorrectly handles multiple whitespace during replacing text. +* [#5004](https://github.com/ckeditor/ckeditor4/issues/5004): Fixed: `MutationObserver` used in [IFrame Editing Area](https://ckeditor.com/cke4/addon/wysiwygarea) plugin causes memory leaks. +* [#4994](https://github.com/ckeditor/ckeditor4/issues/4994): Fixed: [Easy Image](https://ckeditor.com/cke4/addon/easyimage) plugin caused content pasted from Word to turn into an image. + +API changes: + +* [#4918](https://github.com/ckeditor/ckeditor4/issues/4918): Explicitly set the [`config.useComputedState`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-useComputedState) default value to `true`. Thanks to [Shabab Karim](https://github.com/shabab477)! +* [#4761](https://github.com/ckeditor/ckeditor4/issues/4761): The [`CKEDITOR.appendTimestamp()`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR.html#method-appendTimestamp) function was added. +* [#4761](https://github.com/ckeditor/ckeditor4/issues/4761): [`CKEDITOR.dom.document#appendStyleSheet()`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dom_document.html#method-appendStyleSheet) and [`CKEDITOR.tools.buildStyleHtml()`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_tools.html#method-buildStyleHtml) now use the newly added [`CKEDITOR.appendTimestamp()`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR.html#method-appendTimestamp) function to correctly handle caching of CSS files. + +Other changes: + +* [#5014](https://github.com/ckeditor/ckeditor4/issues/5014): Fixed: Toolbar configurator fails when plugin does not define a toolbar group. Thanks to [SuperPat](https://github.com/SuperPat45)! + +## CKEditor 4.17.1 + +**Highlights:** + +Due to a regression in CKEeditor 4.17.0 version that was only revealed after the release and affected a limited area of operation, CSS assets loaded via relative links started to point into invalid location when loaded from external resources. + +We have therefore decided to immediately release CKEditor 4.17.1 that fixed this problem. If you have already upgraded to v4.17.0, make sure to upgrade to v4.17.1 to avoid this regression. + +Fixed issues: + +* [#4979](https://github.com/ckeditor/ckeditor4/issues/3757): Fixed: Added cache key in [#4761](https://github.com/ckeditor/ckeditor4/issues/4761) started to breaking relative links for external CSS resources. The fix has been reverted and will be corrected in the next editor version. + +## CKEditor 4.17 + +**Security Updates:** + +* Fixed XSS vulnerability in the core module reported by [William Bowling](https://github.com/wbowling). + + Issue summary: The vulnerability allowed to inject malformed comments HTML bypassing content sanitization, which could result in executing JavaScript code. See [CVE-2021-41165](https://github.com/ckeditor/ckeditor4/security/advisories/GHSA-7h26-63m7-qhf2) for more details. + +* Fixed XSS vulnerability in the core module reported by [Maurice Dauer](https://twitter.com/laytonctf). + + Issue summary: The vulnerability allowed to inject malformed HTML bypassing content sanitization, which could result in executing JavaScript code. See [CVE-2021-41164](https://github.com/ckeditor/ckeditor4/security/advisories/GHSA-pvmx-g8h5-cprj) for more details. + +You can read more details in the relevant security advisory and [contact us](security@cksource.com) if you have more questions. + +**An upgrade is highly recommended!** + +**Highlights:** + +Adobe [ended support of Flash Player](https://www.adobe.com/products/flashplayer/end-of-life.html) on December 31, 2020 and blocked Flash content from running in Flash Player beginning January 12, 2021. +We have decided to deprecate and remove the [Flash](https://ckeditor.com/cke4/addon/flash) plugin from CKEditor 4 to help protect users' systems and discourage using insecure software. + +New Features: + +* [#3433](https://github.com/ckeditor/ckeditor4/issues/3433): Marked required fields in dialogs with asterisk (`*`) symbol. +* [#4374](https://github.com/ckeditor/ckeditor4/issues/4374): Integrated the [Maximize](https://ckeditor.com/cke4/addon/maximize) plugin with browser's History API. +* [#4461](https://github.com/ckeditor/ckeditor4/issues/4461): Introduced the possibility to delay editor initialization while it is in a detached DOM element. +* [#4462](https://github.com/ckeditor/ckeditor4/issues/4462): Introduced support for reattaching editor container element to DOM. +* [#4612](https://github.com/ckeditor/ckeditor4/issues/4612): Allow pasting images as Base64 from [clipboard](https://ckeditor.com/cke4/addon/clipboard) in all browsers except IE. +* [#4681](https://github.com/ckeditor/ckeditor4/issues/4681): Allow drag and drop images as Base64. +* [#4750](https://github.com/ckeditor/ckeditor4/issues/4750): Added notification for pasting and dropping unsupported file types into the editor. +* [#4807](https://github.com/ckeditor/ckeditor4/issues/4807): [Chrome] Improved the performance of pasting large images. Thanks to [FlowIT-JIT](https://github.com/FlowIT-JIT)! +* [#4850](https://github.com/ckeditor/ckeditor4/issues/4850): Added support for loading [content templates](https://ckeditor.com/cke4/addon/templates) from HTML files. Thanks to [Fynn96](https://github.com/Fynn96)! +* [#4874](https://github.com/ckeditor/ckeditor4/issues/4874): Added the [`config.clipboard_handleImages`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-clipboard_handleImages) configuration option for enabling and disabling built-in support for pasting and dropping images in the [Clipboard](https://ckeditor.com/cke4/addon/clipboard) plugin. Thanks to [FlowIT-JIT](https://github.com/FlowIT-JIT)! +* [#4026](https://github.com/ckeditor/ckeditor4/issues/4026): [Preview](https://ckeditor.com/cke4/addon/preview) plugin now uses the [`editor#title`](http://localhost/ckeditor4-docs/build/docs/ckeditor4/latest/api/CKEDITOR_editor.html#property-title) property for the title of the preview window. Thanks to [Ely](https://github.com/Elyasin)! +* [#4467](https://github.com/ckeditor/ckeditor4/issues/4467): Added support for inserting content next to a block [widgets](https://ckeditor.com/cke4/addon/widget) using keyboard navigation. Thanks to [bunglegrind](https://github.com/bunglegrind)! + +Fixed Issues: + +* [#3757](https://github.com/ckeditor/ckeditor4/issues/3757): [Firefox] Fixed: images pasted from [clipboard](https://ckeditor.com/cke4/addon/clipboard) are not inserted as Base64-encoded images. +* [#3876](https://github.com/ckeditor/ckeditor4/issues/3876): Fixed: The [Print](https://ckeditor.com/cke4/addon/print) plugin incorrectly prints links and images. +* [#4444](https://github.com/ckeditor/ckeditor4/issues/4444): [Firefox] Fixed: Print preview is incorrectly loaded from CDN. +* [#4596](https://github.com/ckeditor/ckeditor4/issues/4596): Fixed: Incorrect handling of HSL/HSLA values in [`CKEDITOR.tools.color`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_tools_color.html). +* [#4597](https://github.com/ckeditor/ckeditor4/issues/4597): Fixed: Incorrect color conversion for HSL/HSLA values in [`CKEDITOR.tools.color`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_tools_color.html). +* [#4604](https://github.com/ckeditor/ckeditor4/issues/4604): Fixed: [`CKEDITOR.plugins.clipboard.dataTransfer#getTypes()`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_plugins_clipboard_dataTransfer.html#method-getTypes) returns no types. +* [#4761](https://github.com/ckeditor/ckeditor4/issues/4761): Fixed: Not all resources loaded by the editor respect the cache key. +* [#4783](https://github.com/ckeditor/ckeditor4/issues/4783): Fixed: The [Accessibility Help](https://ckeditor.com/cke4/addon/a11yhelp) dialog does not contain info about focus being moved back to the editing area upon activating a toolbar button. +* [#4790](https://github.com/ckeditor/ckeditor4/issues/4790): Fixed: Printing page is invoked before the printed page is fully loaded. +* [#4874](https://github.com/ckeditor/ckeditor4/issues/4874): Fixed: Built-in support for pasting and dropping images in the [Clipboard](https://ckeditor.com/cke4/addon/clipboard) plugin restricts third party plugins from handling image pasting. Thanks to [FlowIT-JIT](https://github.com/FlowIT-JIT)! +* [#4888](https://github.com/ckeditor/ckeditor4/issues/4888): Fixed: The [`CKEDITOR.dialog#setState()`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dialog.html#method-setState) method throws error when there is no "OK" button in the dialog. +* [#4858](https://github.com/ckeditor/ckeditor4/issues/4858): Fixed: The [Autolink](https://ckeditor.com/cke4/addon/autolink) plugin incorrectly escapes the `&` characters when pasting links into the editor. +* [#4892](https://github.com/ckeditor/ckeditor4/issues/4892): Fixed: Focus of buttons in dialogs is not visible enough in High Contrast mode. +* [#3858](https://github.com/ckeditor/ckeditor4/issues/3858): Fixed: Pasting content in `ENTER_BR` [enter mode](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-enterMode) crashes the editor. +* [#4891](https://github.com/ckeditor/ckeditor4/issues/4891): Fixed: The [Autogrow](https://ckeditor.com/cke4/addon/autogrow) plugin applies fixed width to the editor. + +API Changes: + +* [#4462](https://github.com/ckeditor/ckeditor4/issues/4462): [`CKEDITOR.editor#getSelection()`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_editor.html#method-getSelection) now returns `null` if the editor is in recreating state. +* [#4583](https://github.com/ckeditor/ckeditor4/issues/4583): Added support for new, comma-less color syntax to [`CKEDITOR.tools.color`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_tools_color.html). +* [#4604](https://github.com/ckeditor/ckeditor4/issues/4604): Added the [`CKEDITOR.plugins.clipboard.dataTransfer#isFileTransfer()`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_plugins_clipboard_dataTransfer.html#method-isFileTransfer) method. +* [#4790](https://github.com/ckeditor/ckeditor4/issues/4790): Added `callback` parameter to [`CKEDITOR.plugins.preview#createPreview()`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_plugins_preview.html#method-createPreview) method. + +Other Changes: + +* [#4866](https://github.com/ckeditor/ckeditor4/issues/#4866): The [Flash](https://ckeditor.com/cke4/addon/flash) plugin is now deprecated and has been removed from CKEditor 4. +* [#4901](https://github.com/ckeditor/ckeditor4/issues/4901): Redesigned buttons placement in the [Content templates](https://ckeditor.com/cke4/addon/templates) dialog to make it more UX friendly. Thanks to [Fynn96](https://github.com/Fynn96)! + +## CKEditor 4.16.2 + +**Security Updates:** + +* Fixed XSS vulnerability in the [Clipboard](https://ckeditor.com/cke4/addon/clipboard) plugin reported by [Anton Subbotin](https://github.com/skavans). + + Issue summary: The vulnerability allowed to abuse paste functionality using malformed HTML, which could result in injecting arbitrary HTML into the editor. See [CVE-2021-32809](https://github.com/ckeditor/ckeditor4/security/advisories/GHSA-7889-rm5j-hpgg) for more details. + +* Fixed XSS vulnerability in the [Widget](https://ckeditor.com/cke4/addon/widget) plugin reported by [Anton Subbotin](https://github.com/skavans). + + Issue summary: The vulnerability allowed to abuse undo functionality using malformed [Widget](https://ckeditor.com/cke4/addon/widget) HTML, which could result in executing JavaScript code. See [CVE-2021-32808](https://github.com/ckeditor/ckeditor4/security/advisories/GHSA-6226-h7ff-ch6c) for more details. + +* Fixed XSS vulnerability in the [Fake Objects](https://ckeditor.com/cke4/addon/fakeobjects) plugin reported by [Mika Kulmala](https://github.com/kulmik). + + Issue summary: The vulnerability allowed to inject malformed [Fake Objects](https://ckeditor.com/cke4/addon/fakeobjects) HTML, which could result in executing JavaScript code. See [CVE-2021-37695](https://github.com/ckeditor/ckeditor4/security/advisories/GHSA-m94c-37g6-cjhc) for more details. + +You can read more details in the relevant security advisory and [contact us](security@cksource.com) if you have more questions. + +**An upgrade is highly recommended!** + +Fixed Issues: +* [#4777](https://github.com/ckeditor/ckeditor4/issues/4777): Fixed: HTML comments in widgets not processed correctly. +* [#4733](https://github.com/ckeditor/ckeditor4/pull/4733): Fixed: [Link](https://ckeditor.com/cke4/addon/link) prevent duplicate anchors in text with styles. + * [#4728](https://github.com/ckeditor/ckeditor4/issues/4728): Fixed: Multiple anchors in one line and multi-line with text style. + * [#3863](https://github.com/ckeditor/ckeditor4/issues/3863): Fixed: Multiple anchors in single word with text style. +* [#3819](https://github.com/ckeditor/ckeditor4/issues/3819): [Chrome] Fixed: After removing one of the two consecutive spaces, the ` ` character appears in the editor instead of a space. +* [#4666](https://github.com/ckeditor/ckeditor4/pull/4666): [IE] Introduce CSS.escape polyfill. Thanks to [limingli0707](https://github.com/limingli0707)! + * [#681](https://github.com/ckeditor/ckeditor4/issues/681): Fixed: Table elements (td, tr, th, ..) with an id that starts with dot (.) causes javascript runtime err. + * [#641](https://github.com/ckeditor/ckeditor4/issues/641): Fixed: UploadImage Plugin Widgets not working in IE, Opera, Safari, PhantomJS. +* [#3638](https://github.com/ckeditor/ckeditor4/issues/3638): Fixed: Opening the same dialog twice causes it to become hidden under the dialog's page cover. +* [#4247](https://github.com/ckeditor/ckeditor4/issues/4247): Fixed: [Color Button](https://ckeditor.com/cke4/addon/colorbutton)'s incorrect rendering on the first opening. +* [#4555](https://github.com/ckeditor/ckeditor4/issues/4555): Fixed: [Font](https://ckeditor.com/cke4/addon/font) styles with attributes are not applied correctly when used multiple times over the same selection. +* [#4782](https://github.com/ckeditor/ckeditor4/issues/4782): [Firefox] Fixed: `TypeError` is thrown when switching to Source View and back while [Autocomplete](https://ckeditor.com/cke4/addon/autocomplete) plugin is enabled. + +## CKEditor 4.16.1 + +Fixed Issues: +* [#4617](https://github.com/ckeditor/ckeditor4/issues/4617): Fixed: [Autocomplete](https://ckeditor.com/cke4/addon/autocomplete) is not accessible in inline editors. +* [#4493](https://github.com/ckeditor/ckeditor4/issues/4493): Fixed: The [drop-down](https://ckeditor.com/cke4/addon/richcombo) label does not reflect the current value of the drop-down. +* [#1572](https://github.com/ckeditor/ckeditor4/issues/1572): Fixed: A paragraph before or after a [widget](https://ckeditor.com/cke4/addon/widget) cannot be removed. Thanks to [bunglegrind](https://github.com/bunglegrind)! +* [#4301](https://github.com/ckeditor/ckeditor4/issues/4301): Fixed: Pasted content is overwritten when pasted in an initially empty editor with the [`div` Enter mode](https://ckeditor.com/docs/ckeditor4/latest/features/enterkey.html). +* [#4351](https://github.com/ckeditor/ckeditor4/issues/4351): Fixed: Incorrect values for RGBA/HSLA colors in [Color Dialog](https://ckeditor.com/cke4/addon/colordialog). +* [#4509](https://github.com/ckeditor/ckeditor4/issues/4509): Fixed: Incorrect handling of drag & drop inside [widgets](https://ckeditor.com/cke4/addon/widget) and nested editables. +* [#4611](https://github.com/ckeditor/ckeditor4/issues/4611): [Android, iOS] Fixed: Incorrect hover styles for buttons in the toolbar on mobile devices. +* [#4652](https://github.com/ckeditor/ckeditor4/issues/4652): Fixed: [Event data](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_eventInfo.html) set to `false` is treated as an event cancellation. +* [#4659](https://github.com/ckeditor/ckeditor4/issues/4659): Fixed: [`CKEDITOR.htmlParser`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_htmlParser.html) does not treat `--!>` as a comment end tag correctly. + +## CKEditor 4.16 + +**Security Updates:** + +* Fixed ReDoS vulnerability in the [Autolink](https://ckeditor.com/cke4/addon/autolink) plugin. + + Issue summary: It was possible to execute a ReDoS-type attack inside CKEditor 4 by persuading a victim to paste a specially crafted URL-like text into the editor and press Enter or Space. + +* Fixed ReDoS vulnerability in the [Advanced Tab for Dialogs](https://ckeditor.com/cke4/addon/dialogadvtab) plugin. + + Issue summary: It was possible to execute a ReDoS-type attack inside CKEditor 4 by persuading a victim to paste a specially crafted text into the Styles dialog. + +**An upgrade is highly recommended!** + +New Features: + +* [#2800](https://github.com/ckeditor/ckeditor4/issues/2800): Unsupported image formats are now gracefully handled by the [Paste from Word](https://ckeditor.com/cke4/addon/pastefromword) plugin on paste, additionally showing descriptive error messages. +* [#2800](https://github.com/ckeditor/ckeditor4/issues/2800): Unsupported image formats are now gracefully handled by the [Paste from LibreOffice](https://ckeditor.com/cke4/addon/pastefromlibreoffice) plugin on paste, additionally showing descriptive error messages. +* [#3582](https://github.com/ckeditor/ckeditor4/issues/3582): Introduced smart positioning of the [Autocomplete](https://ckeditor.com/cke4/addon/autocomplete) panel used by the [Mentions](https://ckeditor.com/cke4/addon/mentions) and [Emoji](https://ckeditor.com/cke4/addon/emoji) plugins. The panel will now be additionally positioned related to the browser viewport to be always fully visible. +* [#4388](https://github.com/ckeditor/ckeditor4/issues/4388): Added the option to remove an iframe created with the [IFrame Dialog](https://ckeditor.com/cke4/addon/iframe) plugin from the sequential keyboard navigation using the `tabindex` attribute. Thanks to [Timo Kirkkala](https://github.com/kirkkala)! + +Fixed Issues: + +* [#1134](https://github.com/ckeditor/ckeditor4/issues/1134): [Safari] Fixed: [Paste from Word](https://ckeditor.com/cke4/addon/pastefromword) does not embed images. +* [#2800](https://github.com/ckeditor/ckeditor4/issues/2800): Fixed: No images are imported from Microsoft Word when the content is pasted via the [Paste from Word](https://ckeditor.com/cke4/addon/pastefromword) plugin if there is at least one image of unsupported format. +* [#4379](https://github.com/ckeditor/ckeditor4/issues/4379): [Edge] Fixed: Incorrect detection of the [high contrast mode](https://ckeditor.com/docs/ckeditor4/latest/guide/dev_a11y.html#high-contrast-mode). +* [#4422](https://github.com/ckeditor/ckeditor4/issues/4422): Fixed: Missing space between the button name and the keyboard shortcut inside the button label in the [high contrast mode](https://ckeditor.com/docs/ckeditor4/latest/guide/dev_a11y.html#high-contrast-mode). +* [#2208](https://github.com/ckeditor/ckeditor4/issues/2208): [IE] Fixed: The [Autolink](https://ckeditor.com/cke4/addon/autolink) plugin duplicates the native browser implementation. +* [#1824](https://github.com/ckeditor/ckeditor4/issues/1824): Fixed: The [Autolink](https://ckeditor.com/cke4/addon/autolink) plugin should require the [Link](https://ckeditor.com/cke4/addon/link) plugin. +* [#4253](https://github.com/ckeditor/ckeditor4/issues/4253): Fixed: The [Editor Placeholder](https://ckeditor.com/cke4/addon/editorplaceholder) plugin throws an error during the editor initialization with [`config.fullPage`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-fullPage) enabled when there is no `` tag in the editor content. +* [#4372](https://github.com/ckeditor/ckeditor4/issues/4372): Fixed: The [Autogrow](https://ckeditor.com/cke4/addon/autogrow) plugin changes the editor's width when used with an absolute [`config.width`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-width) value. + +API Changes: + +* [#4358](https://github.com/ckeditor/ckeditor4/issues/4358): Introduced the [`CKEDITOR.tools.color`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_tools_color.html) class which adds colors validation and methods for converting colors between various formats: named colors, HEX, RGB, RGBA, HSL and HSLA. +* [#3782](https://github.com/ckeditor/ckeditor4/issues/3782): Moved the [`CKEDITOR.plugins.pastetools.filters.word.images`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_plugins_pastetools_filters_word_images.html) filters to the [`CKEDITOR.plugins.pastetools.filters.image`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_plugins_pastetools_filters_image.html) namespace. +* [#4297](https://github.com/ckeditor/ckeditor4/issues/4297): All [`CKEDITOR.plugins.pastetools.filters`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_plugins_pastetools_filters.html) are now available under the [`CKEDITOR.pasteTools`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR.html#property-pasteTools) alias. +* [#4394](https://github.com/ckeditor/ckeditor4/issues/4394): Introduced [`CKEDITOR.ajax`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_ajax.html) specialized loading methods for loading binary ([`CKEDITOR.ajax.loadBinary()`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_ajax.html#method-loadBinary)) and text ([`CKEDITOR.ajax.loadText()`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_ajax.html#method-loadText)) data. + +Other Changes: + +* The [WebSpellChecker](https://ckeditor.com/cke4/addon/wsc) (WSC) plugin is now disabled by default in [Standard and Full presets](https://ckeditor.com/cke4/presets). It can be enabled via [`extraPlugins`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-extraPlugins) configuration option. + +## CKEditor 4.15.1 + +**Security Updates:** + +* Fixed XSS vulnerability in the [Color History feature](https://ckeditor.com/docs/ckeditor4/latest/features/colorbutton.html#color-history) reported by [Mark Wade](https://github.com/mark-wade). + + Issue summary: It was possible to execute an XSS-type attack inside CKEditor 4 by persuading a victim to paste a specially crafted HTML code into the [Color Button](https://ckeditor.com/cke4/addon/colorbutton) dialog. + +**An upgrade is highly recommended!** + +Fixed Issues: + +* [#4293](https://github.com/ckeditor/ckeditor4/issues/4293): Fixed: The [`CKEDITOR.inlineAll()`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR.html#method-inlineAll) method tries to initialize inline editor also on elements with an editor already attached to them. +* [#3961](https://github.com/ckeditor/ckeditor4/issues/3961): Fixed: The [Table Resize](https://ckeditor.com/cke4/addon/tableresize) plugin prevents editing of merged cells. +* [#3649](https://github.com/ckeditor/ckeditor4/issues/3649): Fixed: Applying a [block format](https://ckeditor.com/docs/ckeditor4/latest/features/format.html) should remove existing block styles. +* [#4282](https://github.com/ckeditor/ckeditor4/issues/4282): Fixed: The [script loader](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_scriptLoader.html) does not execute callback for scripts already loaded when called for the second time. Thanks to [Alexander Korotkevich](https://github.com/aldoom)! +* [#4273](https://github.com/ckeditor/ckeditor4/issues/4273): Fixed: A memory leak in the [`CKEDITOR.domReady()`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR.html#method-domReady) method connected with not removing `load` event listeners. Thanks to [rohit1](https://github.com/rohit1)! +* [#1330](https://github.com/ckeditor/ckeditor4/issues/1330): Fixed: Incomplete CSS margin parsing if an `auto` or `0` value is used. +* [#4286](https://github.com/ckeditor/ckeditor4/issues/4286): Fixed: The [Auto Grow](https://ckeditor.com/cke4/addon/autogrow) plugin causes the editor width to be set to `0` on editor resize. +* [#848](https://github.com/ckeditor/ckeditor4/issues/848): Fixed: Arabic text not being "bound" correctly when pasting. Thanks to [Thomas Hunkapiller](https://github.com/devoidfury) and [J. Ivan Duarte Rodríguez](https://github.com/jidrone-mbm)! + +API Changes: + +* [#3649](https://github.com/ckeditor/ckeditor4/issues/3649): Added a new [`stylesRemove`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_editor.html#event-stylesRemove) editor event. + +Other Changes: + +* [#4262](https://github.com/ckeditor/ckeditor4/issues/4262): Removed the global reference to the `stylesLoaded` variable. Thanks to [Levi Carter](https://github.com/swiftMessenger)! +* Updated the [Export to PDF](https://ckeditor.com/cke4/addon/exportpdf) plugin to `1.0.1` version: + * Improved external CSS support for [classic editor](https://ckeditor.com/docs/ckeditor4/latest/examples/classic.html) by handling exceptions and displaying convenient [error messages](https://ckeditor.com/docs/ckeditor4/latest/guide/dev_errors.html#exportpdf-stylesheets-incaccessible). + +## CKEditor 4.15 + +New features: + +* [#3940](https://github.com/ckeditor/ckeditor4/issues/3940): Introduced the `colorName` property for customizing foreground and background styles in the [Color Button](https://ckeditor.com/cke4/addon/colorbutton) plugin via the [`config.colorButton_foreStyle`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-colorButton_foreStyle) and [`config.colorButton_backStyle`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-colorButton_backStyle) configuration options. +* [#3793](https://github.com/ckeditor/ckeditor4/issues/3793): Introduced the [Editor Placeholder](https://ckeditor.com/cke4/addon/editorplaceholder) plugin. +* [#1795](https://github.com/ckeditor/ckeditor4/issues/1795): The colors picked from the [Color Dialog](https://ckeditor.com/cke4/addon/colordialog) are now stored in the [Color Button](https://ckeditor.com/cke4/addon/colorbutton) palette and can be reused easily. +* [#3783](https://github.com/ckeditor/ckeditor4/issues/3783): The colors used in the document are now displayed as a part of the [Color Button](https://ckeditor.com/cke4/addon/colorbutton) palette. + +Fixed Issues: + +* [#4060](https://github.com/ckeditor/ckeditor4/issues/4060): Fixed: The content inside a [widget](https://ckeditor.com/cke4/addon/widget) nested editable is escaped twice. +* [#4183](https://github.com/ckeditor/ckeditor4/issues/4183): [Safari] Fixed: Incorrect image dimensions when using the [Easy Image](https://ckeditor.com/cke4/addon/easyimage) plugin alongside the [IFrame Editing Area](https://ckeditor.com/cke4/addon/wysiwygarea) plugin. +* [#3693](https://github.com/ckeditor/ckeditor4/issues/3693): Fixed: Incorrect default values for several [Color Button](https://ckeditor.com/cke4/addon/colorbutton) configuration variables in the API documentation. +* [#3795](https://github.com/ckeditor/ckeditor4/issues/3795): Fixed: Setting the [`config.dataIndentationChars`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-dataIndentationChars) configuration option to an empty string is ignored and replaced by a tab (`\t`) character. Thanks to [Thomas Grinderslev](https://github.com/Znegl)! +* [#4107](https://github.com/ckeditor/ckeditor4/issues/4107): Fixed: Multiple [Autocomplete](https://ckeditor.com/cke4/addon/autocomplete) instances cause keyboard navigation issues. +* [#4041](https://github.com/ckeditor/ckeditor4/issues/4041): Fixed: The[`selection.scrollIntoView`](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dom_selection.html#method-scrollIntoView) method throws an error when the editor selection is not set. +* [#3361](https://github.com/ckeditor/ckeditor4/issues/3361): Fixed: Loading multiple [custom editor configurations](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-customConfig) is prone to a race condition between these. +* [#4007](https://github.com/ckeditor/ckeditor4/issues/4007): Fixed: Screen readers do not announce the [Rich Combo](https://ckeditor.com/cke4/addon/richcombo) plugin is collapsed or expanded. +* [#4141](https://github.com/ckeditor/ckeditor4/issues/4141): Fixed: The styles are incorrectly applied when there is a ` + +

    Divarea Editor

    +
    + Divarea Editor +
    + +

    Inline Editor

    +
    + Inline Editor +
    + + diff --git a/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/stylesheets.md b/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/stylesheets.md new file mode 100644 index 00000000000..96a3d8725e7 --- /dev/null +++ b/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/stylesheets.md @@ -0,0 +1,19 @@ +@bender-tags: exportpdf, feature, 31 +@bender-ui: collapsed +@bender-include: ../_helpers/tools.js +@bender-ckeditor-plugins: toolbar, basicstyles, notification + +**Note:** This test uses Bootstrap CDN. If something goes wrong, check if the link works correctly first. + +1. Use `Export to PDF` button in the first editor. +1. Open generated file. + + **Expected:** + + Text from editor was converted to a green badge. + + **Unexpected:** + + Content is the same as in the editor. + +1. Repeat the same steps for the second and third editor. diff --git a/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokenfetching.html b/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokenfetching.html new file mode 100644 index 00000000000..60d8205cb13 --- /dev/null +++ b/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokenfetching.html @@ -0,0 +1,23 @@ +
    +

    Foo bar

    +
    + +
    + + diff --git a/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokenfetching.md b/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokenfetching.md new file mode 100644 index 00000000000..de9ba3587c2 --- /dev/null +++ b/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokenfetching.md @@ -0,0 +1,19 @@ +@bender-tags: exportpdf, feature, 77 +@bender-ui: collapsed +@bender-include: ../_helpers/tools.js +@bender-ckeditor-plugins: wysiwygarea, toolbar, basicstyles, notification, format + +Note: You need the Internet connection to run this test. + +1. Click `Export to PDF` toolbar button. +1. Examine the area in the red frame below. + + **Expected:** There is a long token string in the frame. + + **Unexpected:** Frame is empty or says 'undefined'. + +1. Wait for the file to download and open it. + + **Expected:** No information about being created with CKEditor was added. + + **Unexpected:** There is an additional note about CKEditor at the bottom of page. diff --git a/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokentwoeditorscorrect.html b/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokentwoeditorscorrect.html new file mode 100644 index 00000000000..183c3df0c57 --- /dev/null +++ b/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokentwoeditorscorrect.html @@ -0,0 +1,38 @@ +

    Editor 1

    +
    +

    Foo bar

    +
    +
    + +

    Editor 2

    +
    +

    Foo bar

    +
    +
    + + diff --git a/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokentwoeditorscorrect.md b/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokentwoeditorscorrect.md new file mode 100644 index 00000000000..3f6b9bfe548 --- /dev/null +++ b/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokentwoeditorscorrect.md @@ -0,0 +1,14 @@ +@bender-tags: exportpdf, feature, 77 +@bender-ui: collapsed +@bender-include: ../_helpers/tools.js +@bender-ckeditor-plugins: wysiwygarea, toolbar, basicstyles, notification, format + +Note: You need the Internet connection to run this test. + +1. Click `Export to PDF` button in both editors. + +1. Examine the area in the red frames below each editor. + + **Expected:** Content of two boxes are two different long strings. + + **Unexpected:** Values in both boxes are the same or one of them says `undefined`. diff --git a/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokentwoeditorswrong.html b/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokentwoeditorswrong.html new file mode 100644 index 00000000000..f3efc6c03a4 --- /dev/null +++ b/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokentwoeditorswrong.html @@ -0,0 +1,38 @@ +

    Editor 1

    +
    +

    Foo bar

    +
    +
    + +

    Editor 2

    +
    +

    Foo bar

    +
    +
    + + diff --git a/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokentwoeditorswrong.md b/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokentwoeditorswrong.md new file mode 100644 index 00000000000..a718c443f2a --- /dev/null +++ b/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokentwoeditorswrong.md @@ -0,0 +1,14 @@ +@bender-tags: exportpdf, feature, 77 +@bender-ui: collapsed +@bender-include: ../_helpers/tools.js +@bender-ckeditor-plugins: wysiwygarea, toolbar, basicstyles, notification, format + +Note: You need the Internet connection to run this test. + +1. Click `Export to PDF` button in both editors. + +1. Examine the area in the red frames below each editor. + + **Expected:** First box contains token value and the second one `undefined`. + + **Unexpected:** Values in both boxes are the same or none of them is `undefined`. diff --git a/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokenwithouturl.html b/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokenwithouturl.html new file mode 100644 index 00000000000..a7236ab7a59 --- /dev/null +++ b/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokenwithouturl.html @@ -0,0 +1,19 @@ +
    +

    Foo bar

    +
    + +
    + + diff --git a/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokenwithouturl.md b/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokenwithouturl.md new file mode 100644 index 00000000000..2de03aaee32 --- /dev/null +++ b/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/tokenwithouturl.md @@ -0,0 +1,31 @@ +@bender-tags: exportpdf, feature, 77 +@bender-ui: collapsed +@bender-include: ../_helpers/tools.js +@bender-ckeditor-plugins: wysiwygarea, toolbar, basicstyles, notification, format + +Note: You need the Internet connection to run this test. + +1. Open and examine console. + + **Expected:** `exportpdf-no-token-url` warning appeared. + + **Unexpected:** No warning. + +1. Click `Export to PDF` button in the editor. +1. Examine the area in the red frame below. + + **Expected:** Frame has text `undefined`. + + **Unexpected:** There is a long token string in the frame. + +1. Examine console. + + **Expected:** `exportpdf-no-token` warning appeared. + + **Unexpected:** No warning. + +1. Wait for the file to download and open it. + + **Expected:** File contains info about being created with CKEditor. + + **Unexpected:** No copyright info was added. diff --git a/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/wrongendpoint.html b/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/wrongendpoint.html new file mode 100644 index 00000000000..efd801dbc71 --- /dev/null +++ b/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/wrongendpoint.html @@ -0,0 +1,21 @@ +
    +

    Hello world!

    +
    + +
    +

    Hello world!

    +
    + + diff --git a/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/wrongendpoint.md b/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/wrongendpoint.md new file mode 100644 index 00000000000..7231719ad77 --- /dev/null +++ b/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/manual/wrongendpoint.md @@ -0,0 +1,34 @@ +@bender-tags: exportpdf, feature, 4 +@bender-ui: collapsed +@bender-include: ../_helpers/tools.js +@bender-ckeditor-plugins: wysiwygarea, toolbar, notification + +**Note:** Errors in console during this test are allowed. + +1. Click `Export to PDF` button in the first editor. + + **Expected:** + + * Warning notification with `Error occured.` message appeared. + * Button is clickable. + * File wasn't downloaded. + + **Unexpected:** + + * Notification didn't show up. + * Button wasn't reenabled. + * File was downloaded. + +2. Click `Export to PDF` button in the second editor. + + **Expected:** + + * Alert appeared instead of notification. + * Button is clickable. + * File wasn't downloaded. + + **Unexpected:** + + * Notification didn't show up. + * Button wasn't reenabled. + * File was downloaded. diff --git a/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/notification.js b/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/notification.js new file mode 100644 index 00000000000..ebd706d9ede --- /dev/null +++ b/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/notification.js @@ -0,0 +1,4 @@ +(function(){bender.loadExternalPlugin("exportpdf","/apps/plugin/");CKEDITOR.plugins.load("exportpdf",function(){function c(a,b){var c=a._.notificationArea.notifications[0];assert.areSame(b.message,c.message,"Message should be the same.");assert.areSame(b.type,c.type,"Type should be the same.");assert.areSame(b.progress,c.progress,"Progress should be the same.")}bender.editors={successEditor:{config:exportPdfUtils.getDefaultConfig("unit")},errorEditor:{config:exportPdfUtils.getDefaultConfig("unit")}}; +bender.test({setUp:function(){bender.tools.ignoreUnsupportedEnvironment("exportpdf");sinon.stub(CKEDITOR.plugins.exportpdf,"downloadFile")},tearDown:function(){CKEDITOR.plugins.exportpdf.downloadFile.restore()},"test notifications and progress steps are correct in happy path":function(){var a=this.editors.successEditor;this.editorBots.successEditor.setHtmlWithSelection('\x3cp id\x3d"test"\x3eHello, World!\x3c/p\x3e^');a.once("exportPdf",function(){c(a,{message:"Processing PDF document...",type:"progress", +progress:0})});a.once("exportPdf",function(){c(a,{message:"Processing PDF document...",type:"progress",progress:.2})},null,null,16);exportPdfUtils.useXHR(a,function(b){b.addEventListener("progress",function(){c(a,{message:"Processing PDF document...",type:"progress",progress:.8})});b.addEventListener("loadend",function(){c(a,{message:"Document is ready!",type:"success",progress:1})});b.respond(200,{},"")})},"test notifications and progress steps are correct in sad path":function(){var a=this.editors.errorEditor; +this.editorBots.errorEditor.setHtmlWithSelection('\x3cp id\x3d"test"\x3eHello, World!\x3c/p\x3e^');exportPdfUtils.useXHR(a,function(b){var d=sinon.stub(console,"error",function(a){assert.areSame("Validation failed.",a.message,"Message from endpoint is incorrect.");d.restore()});b.addEventListener("loadend",function(){c(a,{message:"Error occurred.",type:"warning"})});b.respond(400,{},'{ "message": "Validation failed." }')})}})})})(); \ No newline at end of file diff --git a/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/resourcespaths.js b/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/resourcespaths.js new file mode 100644 index 00000000000..1964499f080 --- /dev/null +++ b/htdocs/includes/ckeditor/ckeditor/plugins/exportpdf/tests/resourcespaths.js @@ -0,0 +1,9 @@ +(function(){bender.loadExternalPlugin("exportpdf","/apps/plugin/");CKEDITOR.plugins.load("exportpdf",function(){function a(a,d,b){b=exportPdfUtils.getDefaultConfig("unit",b||{});bender.editorBot.create({name:"editor"+Date.now(),config:b},function(b){var c=b.editor;b.setHtmlWithSelection(a);c.once("exportPdf",function(b){assert.areEqual(a,b.data.html)},null,null,10);c.once("exportPdf",function(a){a.cancel();assert.areEqual('\x3cdiv class\x3d"cke_editable cke_contents_ltr"\x3e'+d+"\x3c/div\x3e",a.data.html)}, +null,null,16);c.execCommand("exportPdf")})}function b(a,b){a=a.replace(/\/$/g,"");b&&0b.length){var d=this._.walker.textNode;if(d)a.setStartAfter(d);else return null}else d=b[0],b=b[b.length-1],a.setStart(d.textNode,d.offset),a.setEnd(b.textNode,b.offset+1);return a},updateFromDomRange:function(a){var b=new n(a);this._.cursors=[];do a=b.next(),a.character&&this._.cursors.push(a);while(a.character);this._.rangeLength=this._.cursors.length},setMatched:function(){this._.isMatched=!0},clearMatched:function(){this._.isMatched= -!1},isMatched:function(){return this._.isMatched},highlight:function(){if(!(1>this._.cursors.length)){this._.highlightRange&&this.removeHighlight();var a=this.toDomRange(),b=a.createBookmark();z.applyToRange(a,c);a.moveToBookmark(b);this._.highlightRange=a;b=a.startContainer;b.type!=CKEDITOR.NODE_ELEMENT&&(b=b.getParent());b.scrollIntoView();this.updateFromDomRange(a)}},removeHighlight:function(){if(this._.highlightRange){var a=this._.highlightRange.createBookmark();z.removeFromRange(this._.highlightRange, -c);this._.highlightRange.moveToBookmark(a);this.updateFromDomRange(this._.highlightRange);this._.highlightRange=null}},isReadOnly:function(){return this._.highlightRange?this._.highlightRange.startContainer.isReadOnly():0},moveBack:function(){var a=this._.walker.back(),b=this._.cursors;a.hitMatchBoundary&&(this._.cursors=b=[]);b.unshift(a);b.length>this._.rangeLength&&b.pop();return a},moveNext:function(){var a=this._.walker.next(),b=this._.cursors;a.hitMatchBoundary&&(this._.cursors=b=[]);b.push(a); -b.length>this._.rangeLength&&b.shift();return a},getEndCharacter:function(){var a=this._.cursors;return 1>a.length?null:a[a.length-1].character},getNextCharacterRange:function(a){var b,d;d=this._.cursors;d=(b=d[d.length-1])&&b.textNode?new n(y(b)):this._.walker;return new t(d,a)},getCursors:function(){return this._.cursors}};var A=function(a,b){var d=[-1];b&&(a=a.toLowerCase());for(var c=0;c=b||8192<=b&& -8202>=b||E.test(a)},f={searchRange:null,matchRange:null,find:function(a,b,d,e,D,u){this.matchRange?(this.matchRange.removeHighlight(),this.matchRange=this.matchRange.getNextCharacterRange(a.length)):this.matchRange=new t(new n(this.searchRange),a.length);for(var h=new A(a,!b),k=0,l="%";null!==l;){for(this.matchRange.moveNext();l=this.matchRange.getEndCharacter();){k=h.feedCharacter(l);if(2==k)break;this.matchRange.moveNext().hitMatchBoundary&&h.reset()}if(2==k){if(d){var g=this.matchRange.getCursors(), -p=g[g.length-1],g=g[0],m=c.createRange();m.setStartAt(c.editable(),CKEDITOR.POSITION_AFTER_START);m.setEnd(g.textNode,g.offset);g=m;p=y(p);g.trim();p.trim();g=new n(g,!0);p=new n(p,!0);if(!B(g.back().character)||!B(p.next().character))continue}this.matchRange.setMatched();!1!==D&&this.matchRange.highlight();return!0}}this.matchRange.clearMatched();this.matchRange.removeHighlight();return e&&!u?(this.searchRange=r(1),this.matchRange=null,f.find.apply(this,Array.prototype.slice.call(arguments).concat([!0]))): -!1},replaceCounter:0,replace:function(a,b,d,e,f,u,h){m=1;a=0;a=this.hasMatchOptionsChanged(b,e,f);if(!this.matchRange||!this.matchRange.isMatched()||this.matchRange._.isReplaced||this.matchRange.isReadOnly()||a)a&&this.matchRange&&(this.matchRange.clearMatched(),this.matchRange.removeHighlight(),this.matchRange=null),a=this.find(b,e,f,u,!h);else{this.matchRange.removeHighlight();b=this.matchRange.toDomRange();d=c.document.createText(d);if(!h){var k=c.getSelection();k.selectRanges([b]);c.fire("saveSnapshot")}b.deleteContents(); -b.insertNode(d);h||(k.selectRanges([b]),c.fire("saveSnapshot"));this.matchRange.updateFromDomRange(b);h||this.matchRange.highlight();this.matchRange._.isReplaced=!0;this.replaceCounter++;a=1}m=0;return a},matchOptions:null,hasMatchOptionsChanged:function(a,b,d){a=[a,b,d].join(".");b=this.matchOptions&&this.matchOptions!=a;this.matchOptions=a;return b}},e=c.lang.find;return{title:e.title,resizable:CKEDITOR.DIALOG_RESIZE_NONE,minWidth:350,minHeight:170,buttons:[CKEDITOR.dialog.cancelButton(c,{label:c.lang.common.close})], -contents:[{id:"find",label:e.find,title:e.find,accessKey:"",elements:[{type:"hbox",widths:["230px","90px"],children:[{type:"text",id:"txtFindFind",label:e.findWhat,isChanged:!1,labelLayout:"horizontal",accessKey:"F"},{type:"button",id:"btnFind",align:"left",style:"width:100%",label:e.find,onClick:function(){var a=this.getDialog();f.find(a.getValueOf("find","txtFindFind"),a.getValueOf("find","txtFindCaseChk"),a.getValueOf("find","txtFindWordChk"),a.getValueOf("find","txtFindCyclic"))||alert(e.notFoundMsg)}}]}, -{type:"fieldset",className:"cke_dialog_find_fieldset",label:CKEDITOR.tools.htmlEncode(e.findOptions),style:"margin-top:29px",children:[{type:"vbox",padding:0,children:[{type:"checkbox",id:"txtFindCaseChk",isChanged:!1,label:e.matchCase},{type:"checkbox",id:"txtFindWordChk",isChanged:!1,label:e.matchWord},{type:"checkbox",id:"txtFindCyclic",isChanged:!1,"default":!0,label:e.matchCyclic}]}]}]},{id:"replace",label:e.replace,accessKey:"M",elements:[{type:"hbox",widths:["230px","90px"],children:[{type:"text", -id:"txtFindReplace",label:e.findWhat,isChanged:!1,labelLayout:"horizontal",accessKey:"F"},{type:"button",id:"btnFindReplace",align:"left",style:"width:100%",label:e.replace,onClick:function(){var a=this.getDialog();f.replace(a,a.getValueOf("replace","txtFindReplace"),a.getValueOf("replace","txtReplace"),a.getValueOf("replace","txtReplaceCaseChk"),a.getValueOf("replace","txtReplaceWordChk"),a.getValueOf("replace","txtReplaceCyclic"))||alert(e.notFoundMsg)}}]},{type:"hbox",widths:["230px","90px"],children:[{type:"text", -id:"txtReplace",label:e.replaceWith,isChanged:!1,labelLayout:"horizontal",accessKey:"R"},{type:"button",id:"btnReplaceAll",align:"left",style:"width:100%",label:e.replaceAll,isChanged:!1,onClick:function(){var a=this.getDialog();f.replaceCounter=0;f.searchRange=r(1);f.matchRange&&(f.matchRange.removeHighlight(),f.matchRange=null);for(c.fire("saveSnapshot");f.replace(a,a.getValueOf("replace","txtFindReplace"),a.getValueOf("replace","txtReplace"),a.getValueOf("replace","txtReplaceCaseChk"),a.getValueOf("replace", -"txtReplaceWordChk"),!1,!0););f.replaceCounter?(alert(e.replaceSuccessMsg.replace(/%1/,f.replaceCounter)),c.fire("saveSnapshot")):alert(e.notFoundMsg)}}]},{type:"fieldset",label:CKEDITOR.tools.htmlEncode(e.findOptions),children:[{type:"vbox",padding:0,children:[{type:"checkbox",id:"txtReplaceCaseChk",isChanged:!1,label:e.matchCase},{type:"checkbox",id:"txtReplaceWordChk",isChanged:!1,label:e.matchWord},{type:"checkbox",id:"txtReplaceCyclic",isChanged:!1,"default":!0,label:e.matchCyclic}]}]}]}],onLoad:function(){var a= -this,b,d=0;this.on("hide",function(){d=0});this.on("show",function(){d=1});this.selectPage=CKEDITOR.tools.override(this.selectPage,function(c){return function(e){c.call(a,e);var f=a._.tabs[e],h;h="find"===e?"txtFindWordChk":"txtReplaceWordChk";b=a.getContentElement(e,"find"===e?"txtFindFind":"txtFindReplace");a.getContentElement(e,h);f.initialized||(CKEDITOR.document.getById(b._.inputId),f.initialized=!0);if(d){var k;e="find"===e?1:0;var f=1-e,l,g=q.length;for(l=0;l=b||8192<=b&&8202>=b||F.test(a)}function r(a){var b=d.getSelection().getRanges()[0],c=d.editable();b&&!a?(a=b.clone(),a.collapse(!0)):(a=d.createRange(),a.setStartAt(c,CKEDITOR.POSITION_AFTER_START));a.setEndAt(c,CKEDITOR.POSITION_BEFORE_END);return a}function G(a,b){var c=b.replace(H,function(a){a=a.split("");return CKEDITOR.tools.array.map(a,function(a,b){return 0=== +b%2?" ":a}).join("")});return a.document.createText(c)}var A=new CKEDITOR.style(CKEDITOR.tools.extend({attributes:{"data-cke-highlight":1},fullMatch:1,ignoreReadonly:1,childRule:function(){return 0}},d.config.find_highlight,!0));n.prototype={next:function(){return this.move()},back:function(){return this.move(!0)},move:function(a){var b=this.textNode;if(null===b)return w.call(this);this._.matchBoundary=!1;if(b&&a&&0b.length){var c=this._.walker.textNode;if(c)a.setStartAfter(c);else return null}else c=b[0],b=b[b.length-1],a.setStart(c.textNode,c.offset), +a.setEnd(b.textNode,b.offset+1);return a},updateFromDomRange:function(a){var b=new n(a);this._.cursors=[];do a=b.next(),a.character&&this._.cursors.push(a);while(a.character);this._.rangeLength=this._.cursors.length},setMatched:function(){this._.isMatched=!0},clearMatched:function(){this._.isMatched=!1},isMatched:function(){return this._.isMatched},highlight:function(){if(!(1>this._.cursors.length)){this._.highlightRange&&this.removeHighlight();var a=this.toDomRange(),b=a.createBookmark();A.applyToRange(a, +d);a.moveToBookmark(b);this._.highlightRange=a;b=a.startContainer;b.type!=CKEDITOR.NODE_ELEMENT&&(b=b.getParent());b.scrollIntoView();this.updateFromDomRange(a)}},removeHighlight:function(){if(this._.highlightRange){var a=this._.highlightRange.createBookmark();A.removeFromRange(this._.highlightRange,d);this._.highlightRange.moveToBookmark(a);this.updateFromDomRange(this._.highlightRange);this._.highlightRange=null}},isReadOnly:function(){return this._.highlightRange?this._.highlightRange.startContainer.isReadOnly(): +0},moveBack:function(){var a=this._.walker.back(),b=this._.cursors;a.hitMatchBoundary&&(this._.cursors=b=[]);b.unshift(a);b.length>this._.rangeLength&&b.pop();return a},moveNext:function(){var a=this._.walker.next(),b=this._.cursors;a.hitMatchBoundary&&(this._.cursors=b=[]);b.push(a);b.length>this._.rangeLength&&b.shift();return a},getEndCharacter:function(){var a=this._.cursors;return 1>a.length?null:a[a.length-1].character},getNextCharacterRange:function(a){var b,c;c=this._.cursors;c=(b=c[c.length- +1])&&b.textNode?new n(y(b)):this._.walker;return new u(c,a)},getCursors:function(){return this._.cursors}};var B=function(a,b){var c=[-1];b&&(a=a.toLowerCase());for(var d=0;dCKEDITOR.document.$.documentMode?b.document.createElement('\x3cinput name\x3d"'+CKEDITOR.tools.htmlEncode(a)+'"\x3e'):b.document.createElement("input");a.setAttribute("type","hidden");this.commitContent(a);a=b.createFakeElement(a,"cke_hidden","hiddenfield");this.hiddenField?(a.replace(this.hiddenField),b.getSelection().selectElement(a)):b.insertElement(a);return!0},contents:[{id:"info",label:d.lang.forms.hidden.title,title:d.lang.forms.hidden.title,elements:[{id:"_cke_saved_name", -type:"text",label:d.lang.forms.hidden.name,"default":"",accessKey:"N",setup:function(a){this.setValue(a.data("cke-saved-name")||a.getAttribute("name")||"")},commit:function(a){this.getValue()?a.setAttribute("name",this.getValue()):a.removeAttribute("name")}},{id:"value",type:"text",label:d.lang.forms.hidden.value,"default":"",accessKey:"V",setup:function(a){this.setValue(a.getAttribute("value")||"")},commit:function(a){this.getValue()?a.setAttribute("value",this.getValue()):a.removeAttribute("value")}}]}]}}); \ No newline at end of file +CKEDITOR.dialog.add("hiddenfield",function(c){return{title:c.lang.forms.hidden.title,hiddenField:null,minWidth:350,minHeight:110,getModel:function(a){return(a=a.getSelection().getSelectedElement())&&a.data("cke-real-element-type")&&"hiddenfield"==a.data("cke-real-element-type")?a:null},onShow:function(){var a=this.getParentEditor(),b=this.getModel(a);b&&(this.setupContent(a.restoreRealElement(b)),a.getSelection().selectElement(b))},onOk:function(){var a=this.getValueOf("info","_cke_saved_name"),b= +this.getParentEditor(),a=CKEDITOR.env.ie&&8>CKEDITOR.document.$.documentMode?b.document.createElement('\x3cinput name\x3d"'+CKEDITOR.tools.htmlEncode(a)+'"\x3e'):b.document.createElement("input");a.setAttribute("type","hidden");this.commitContent(a);var a=b.createFakeElement(a,"cke_hidden","hiddenfield"),c=this.getModel(b);c?(a.replace(c),b.getSelection().selectElement(a)):b.insertElement(a);return!0},contents:[{id:"info",label:c.lang.forms.hidden.title,title:c.lang.forms.hidden.title,elements:[{id:"_cke_saved_name", +type:"text",label:c.lang.forms.hidden.name,"default":"",accessKey:"N",setup:function(a){this.setValue(a.data("cke-saved-name")||a.getAttribute("name")||"")},commit:function(a){this.getValue()?a.setAttribute("name",this.getValue()):a.removeAttribute("name")}},{id:"value",type:"text",label:c.lang.forms.hidden.value,"default":"",accessKey:"V",setup:function(a){this.setValue(a.getAttribute("value")||"")},commit:function(a){this.getValue()?a.setAttribute("value",this.getValue()):a.removeAttribute("value")}}]}]}}); \ No newline at end of file diff --git a/htdocs/includes/ckeditor/ckeditor/plugins/forms/dialogs/radio.js b/htdocs/includes/ckeditor/ckeditor/plugins/forms/dialogs/radio.js index 2c6ab56087d..a9d2543edfe 100644 --- a/htdocs/includes/ckeditor/ckeditor/plugins/forms/dialogs/radio.js +++ b/htdocs/includes/ckeditor/ckeditor/plugins/forms/dialogs/radio.js @@ -1,8 +1,8 @@ /* - Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. + Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -CKEDITOR.dialog.add("radio",function(c){return{title:c.lang.forms.checkboxAndRadio.radioTitle,minWidth:350,minHeight:140,onShow:function(){delete this.radioButton;var a=this.getParentEditor().getSelection().getSelectedElement();a&&"input"==a.getName()&&"radio"==a.getAttribute("type")&&(this.radioButton=a,this.setupContent(a))},onOk:function(){var a,b=this.radioButton;b||(a=this.getParentEditor(),b=a.document.createElement("input"),b.setAttribute("type","radio"),a.insertElement(b));this.commitContent({element:b})}, +CKEDITOR.dialog.add("radio",function(c){return{title:c.lang.forms.checkboxAndRadio.radioTitle,minWidth:350,minHeight:140,getModel:function(a){return(a=a.getSelection().getSelectedElement())&&"input"==a.getName()&&"radio"==a.getAttribute("type")?a:null},onShow:function(){var a=this.getModel(this.getParentEditor());a&&this.setupContent(a)},onOk:function(){var a=this.getParentEditor(),b=this.getModel(a);b||(b=a.document.createElement("input"),b.setAttribute("type","radio"),a.insertElement(b));this.commitContent({element:b})}, contents:[{id:"info",label:c.lang.forms.checkboxAndRadio.radioTitle,title:c.lang.forms.checkboxAndRadio.radioTitle,elements:[{id:"name",type:"text",label:c.lang.common.name,"default":"",accessKey:"N",setup:function(a){this.setValue(a.data("cke-saved-name")||a.getAttribute("name")||"")},commit:function(a){a=a.element;this.getValue()?a.data("cke-saved-name",this.getValue()):(a.data("cke-saved-name",!1),a.removeAttribute("name"))}},{id:"value",type:"text",label:c.lang.forms.checkboxAndRadio.value,"default":"", accessKey:"V",setup:function(a){this.setValue(a.getAttribute("value")||"")},commit:function(a){a=a.element;this.getValue()?a.setAttribute("value",this.getValue()):a.removeAttribute("value")}},{id:"checked",type:"checkbox",label:c.lang.forms.checkboxAndRadio.selected,"default":"",accessKey:"S",value:"checked",setup:function(a){this.setValue(a.getAttribute("checked"))},commit:function(a){var b=a.element;if(CKEDITOR.env.ie){var d=b.getAttribute("checked"),e=!!this.getValue();d!=e&&(d=CKEDITOR.dom.element.createFromHtml('\x3cinput type\x3d"radio"'+ (e?' checked\x3d"checked"':"")+"\x3e\x3c/input\x3e",c.document),b.copyAttributes(d,{type:1,checked:1}),d.replace(b),e&&d.setAttribute("checked","checked"),c.getSelection().selectElement(d),a.element=d)}else a=this.getValue(),CKEDITOR.env.webkit&&(b.$.checked=a),a?b.setAttribute("checked","checked"):b.removeAttribute("checked")}},{id:"required",type:"checkbox",label:c.lang.forms.checkboxAndRadio.required,"default":"",accessKey:"Q",value:"required",setup:CKEDITOR.plugins.forms._setupRequiredAttribute, diff --git a/htdocs/includes/ckeditor/ckeditor/plugins/forms/dialogs/select.js b/htdocs/includes/ckeditor/ckeditor/plugins/forms/dialogs/select.js index 5cf2de518ef..d8242545113 100644 --- a/htdocs/includes/ckeditor/ckeditor/plugins/forms/dialogs/select.js +++ b/htdocs/includes/ckeditor/ckeditor/plugins/forms/dialogs/select.js @@ -1,21 +1,21 @@ /* - Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. + Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.dialog.add("select",function(c){function h(a,b,e,d,c){a=f(a);d=d?d.createElement("OPTION"):document.createElement("OPTION");if(a&&d&&"option"==d.getName())CKEDITOR.env.ie?(isNaN(parseInt(c,10))?a.$.options.add(d.$):a.$.options.add(d.$,c),d.$.innerHTML=0c?0:c).insertBeforeMe(d):a.append(d),d.setText(0b)return!1;a=a.getChild(b);a.setText(e);a.setValue(d);return a}function m(a){for(a=f(a);a.getChild(0)&&a.getChild(0).remove(););}function l(a,b,e){a=f(a);var d=g(a);if(0>d)return!1;b=d+b;b=0>b?0:b;b=b>=a.getChildCount()?a.getChildCount()-1:b;if(d==b)return!1;var d=a.getChild(d),c=d.getText(),r=d.getValue();d.remove();d=h(a,c,r,e?e:null,b);k(a,b);return d}function g(a){return(a=f(a))?a.$.selectedIndex:-1} -function k(a,b){a=f(a);if(0>b)return null;var e=a.getChildren().count();a.$.selectedIndex=b>=e?e-1:b;return a}function n(a){return(a=f(a))?a.getChildren():!1}function f(a){return a&&a.domId&&a.getInputElement().$?a.getInputElement():a&&a.$?a:!1}return{title:c.lang.forms.select.title,minWidth:CKEDITOR.env.ie?460:395,minHeight:CKEDITOR.env.ie?320:300,onShow:function(){delete this.selectBox;this.setupContent("clear");var a=this.getParentEditor().getSelection().getSelectedElement();if(a&&"select"==a.getName()){this.selectBox= -a;this.setupContent(a.getName(),a);for(var a=n(a),b=0;bb)return null;var e=a.getChildren().count();a.$.selectedIndex=b>=e?e-1:b;return a}function n(a){return(a=f(a))?a.getChildren():!1}function f(a){return a&&a.domId&&a.getInputElement().$?a.getInputElement():a&&a.$?a:!1}return{title:c.lang.forms.select.title,minWidth:CKEDITOR.env.ie?460:395,minHeight:CKEDITOR.env.ie?320:300,getModel:function(a){return(a=a.getSelection().getSelectedElement())&&"select"==a.getName()?a:null},onShow:function(){this.setupContent("clear");var a= +this.getModel(this.getParentEditor());if(a){this.setupContent(a.getName(),a);for(var a=n(a),b=0;bh5FGFcgwMv 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 Q{x#@7Qqn|~D_VyC4`zyhmjD0& literal 12453 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 diff --git a/htdocs/includes/ckeditor/ckeditor/plugins/icons_hidpi.png b/htdocs/includes/ckeditor/ckeditor/plugins/icons_hidpi.png index 185b99188265aedc5bdb8757884dc6ec1784e178..bc5403c2569676be79af205c23cffb7a31fd56a9 100644 GIT binary patch literal 38309 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 J+ZKlt{sjf(O?ChP literal 41377 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 V$ajA79UTIXix+g&%T%qx{{w79#~%Oy diff --git a/htdocs/includes/ckeditor/ckeditor/plugins/iframe/dialogs/iframe.js b/htdocs/includes/ckeditor/ckeditor/plugins/iframe/dialogs/iframe.js index 5b2ac7671c4..f29a82e8f94 100644 --- a/htdocs/includes/ckeditor/ckeditor/plugins/iframe/dialogs/iframe.js +++ b/htdocs/includes/ckeditor/ckeditor/plugins/iframe/dialogs/iframe.js @@ -1,10 +1,11 @@ /* - Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. + Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -(function(){function c(b){var c=this instanceof CKEDITOR.ui.dialog.checkbox;b.hasAttribute(this.id)&&(b=b.getAttribute(this.id),c?this.setValue(e[this.id]["true"]==b.toLowerCase()):this.setValue(b))}function d(b){var c=""===this.getValue(),a=this instanceof CKEDITOR.ui.dialog.checkbox,d=this.getValue();c?b.removeAttribute(this.att||this.id):a?b.setAttribute(this.id,e[this.id][d]):b.setAttribute(this.att||this.id,d)}var e={scrolling:{"true":"yes","false":"no"},frameborder:{"true":"1","false":"0"}}; -CKEDITOR.dialog.add("iframe",function(b){var f=b.lang.iframe,a=b.lang.common,e=b.plugins.dialogadvtab;return{title:f.title,minWidth:350,minHeight:260,onShow:function(){this.fakeImage=this.iframeNode=null;var a=this.getSelectedElement();a&&a.data("cke-real-element-type")&&"iframe"==a.data("cke-real-element-type")&&(this.fakeImage=a,this.iframeNode=a=b.restoreRealElement(a),this.setupContent(a))},onOk:function(){var a;a=this.fakeImage?this.iframeNode:new CKEDITOR.dom.element("iframe");var c={},d={}; -this.commitContent(a,c,d);a=b.createFakeElement(a,"cke_iframe","iframe",!0);a.setAttributes(d);a.setStyles(c);this.fakeImage?(a.replace(this.fakeImage),b.getSelection().selectElement(a)):b.insertElement(a)},contents:[{id:"info",label:a.generalTab,accessKey:"I",elements:[{type:"vbox",padding:0,children:[{id:"src",type:"text",label:a.url,required:!0,validate:CKEDITOR.dialog.validate.notEmpty(f.noUrl),setup:c,commit:d}]},{type:"hbox",children:[{id:"width",type:"text",requiredContent:"iframe[width]", -style:"width:100%",labelLayout:"vertical",label:a.width,validate:CKEDITOR.dialog.validate.htmlLength(a.invalidHtmlLength.replace("%1",a.width)),setup:c,commit:d},{id:"height",type:"text",requiredContent:"iframe[height]",style:"width:100%",labelLayout:"vertical",label:a.height,validate:CKEDITOR.dialog.validate.htmlLength(a.invalidHtmlLength.replace("%1",a.height)),setup:c,commit:d},{id:"align",type:"select",requiredContent:"iframe[align]","default":"",items:[[a.notSet,""],[a.left,"left"],[a.right, -"right"],[a.alignTop,"top"],[a.alignMiddle,"middle"],[a.alignBottom,"bottom"]],style:"width:100%",labelLayout:"vertical",label:a.align,setup:function(a,b){c.apply(this,arguments);if(b){var d=b.getAttribute("align");this.setValue(d&&d.toLowerCase()||"")}},commit:function(a,b,c){d.apply(this,arguments);this.getValue()&&(c.align=this.getValue())}}]},{type:"hbox",widths:["50%","50%"],children:[{id:"scrolling",type:"checkbox",requiredContent:"iframe[scrolling]",label:f.scrolling,setup:c,commit:d},{id:"frameborder", -type:"checkbox",requiredContent:"iframe[frameborder]",label:f.border,setup:c,commit:d}]},{type:"hbox",widths:["50%","50%"],children:[{id:"name",type:"text",requiredContent:"iframe[name]",label:a.name,setup:c,commit:d},{id:"title",type:"text",requiredContent:"iframe[title]",label:a.advisoryTitle,setup:c,commit:d}]},{id:"longdesc",type:"text",requiredContent:"iframe[longdesc]",label:a.longDescr,setup:c,commit:d}]},e&&e.createAdvancedTab(b,{id:1,classes:1,styles:1},"iframe")]}})})(); \ No newline at end of file +(function(){function d(c){var e=this instanceof CKEDITOR.ui.dialog.checkbox;c.hasAttribute(this.id)&&(c=c.getAttribute(this.id),e?this.setValue(g[this.id]["true"]==c.toLowerCase()):this.setValue(c))}function f(c){var e=this.getValue(),a=this.att||this.id,d=this instanceof CKEDITOR.ui.dialog.checkbox?g[this.id][e]:e;""===e||"tabindex"===a&&!1===e?c.removeAttribute(a):c.setAttribute(a,d)}var g={scrolling:{"true":"yes","false":"no"},frameborder:{"true":"1","false":"0"},tabindex:{"true":"-1","false":!1}}; +CKEDITOR.dialog.add("iframe",function(c){var e=c.lang.iframe,a=c.lang.common,g=c.plugins.dialogadvtab;return{title:e.title,minWidth:350,minHeight:260,getModel:function(b){return(b=b.getSelection().getSelectedElement())&&"iframe"===b.data("cke-real-element-type")?b:null},onShow:function(){this.fakeImage=this.iframeNode=null;var b=this.getSelectedElement();b&&b.data("cke-real-element-type")&&"iframe"==b.data("cke-real-element-type")&&(this.fakeImage=b,this.iframeNode=b=c.restoreRealElement(b),this.setupContent(b))}, +onOk:function(){var b;b=this.fakeImage?this.iframeNode:new CKEDITOR.dom.element("iframe");var a={},d={};this.commitContent(b,a,d);b=c.createFakeElement(b,"cke_iframe","iframe",!0);b.setAttributes(d);b.setStyles(a);this.fakeImage?(b.replace(this.fakeImage),c.getSelection().selectElement(b)):c.insertElement(b)},contents:[{id:"info",label:a.generalTab,accessKey:"I",elements:[{type:"vbox",padding:0,children:[{id:"src",type:"text",label:a.url,required:!0,validate:CKEDITOR.dialog.validate.notEmpty(e.noUrl), +setup:d,commit:f}]},{type:"hbox",children:[{id:"width",type:"text",requiredContent:"iframe[width]",style:"width:100%",labelLayout:"vertical",label:a.width,validate:CKEDITOR.dialog.validate.htmlLength(a.invalidHtmlLength.replace("%1",a.width)),setup:d,commit:f},{id:"height",type:"text",requiredContent:"iframe[height]",style:"width:100%",labelLayout:"vertical",label:a.height,validate:CKEDITOR.dialog.validate.htmlLength(a.invalidHtmlLength.replace("%1",a.height)),setup:d,commit:f},{id:"align",type:"select", +requiredContent:"iframe[align]","default":"",items:[[a.notSet,""],[a.left,"left"],[a.right,"right"],[a.alignTop,"top"],[a.alignMiddle,"middle"],[a.alignBottom,"bottom"]],style:"width:100%",labelLayout:"vertical",label:a.align,setup:function(a,c){d.apply(this,arguments);if(c){var e=c.getAttribute("align");this.setValue(e&&e.toLowerCase()||"")}},commit:function(a,c,d){f.apply(this,arguments);this.getValue()&&(d.align=this.getValue())}}]},{type:"hbox",widths:["33%","33%","33%"],children:[{id:"scrolling", +type:"checkbox",requiredContent:"iframe[scrolling]",label:e.scrolling,setup:d,commit:f},{id:"frameborder",type:"checkbox",requiredContent:"iframe[frameborder]",label:e.border,setup:d,commit:f},{id:"tabindex",type:"checkbox",requiredContent:"iframe[tabindex]",label:e.tabindex,setup:d,commit:f}]},{type:"hbox",widths:["50%","50%"],children:[{id:"name",type:"text",requiredContent:"iframe[name]",label:a.name,setup:d,commit:f},{id:"title",type:"text",requiredContent:"iframe[title]",label:a.advisoryTitle, +setup:d,commit:f}]},{id:"longdesc",type:"text",requiredContent:"iframe[longdesc]",label:a.longDescr,setup:d,commit:f}]},g&&g.createAdvancedTab(c,{id:1,classes:1,styles:1},"iframe")]}})})(); \ No newline at end of file diff --git a/htdocs/includes/ckeditor/ckeditor/plugins/image/dialogs/image.js b/htdocs/includes/ckeditor/ckeditor/plugins/image/dialogs/image.js index a3e5d2deb9b..f9f6ce23f52 100644 --- a/htdocs/includes/ckeditor/ckeditor/plugins/image/dialogs/image.js +++ b/htdocs/includes/ckeditor/ckeditor/plugins/image/dialogs/image.js @@ -1,5 +1,5 @@ /* - Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. + Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ (function(){var u=function(d,k){function u(){var a=arguments,b=this.getContentElement("advanced","txtdlgGenStyle");b&&b.commit.apply(b,a);this.foreach(function(b){b.commit&&"txtdlgGenStyle"!=b.id&&b.commit.apply(b,a)})}function g(a){if(!v){v=1;var b=this.getDialog(),c=b.imageElement;if(c){this.commit(1,c);a=[].concat(a);for(var d=a.length,h,e=0;eCKEDITOR.env.version&&(a["class"]="cke_anchor"),a=new CKEDITOR.style({element:"a",attributes:a}),a.type=CKEDITOR.STYLE_INLINE,a.applyToRange(b)))},onHide:function(){delete this._.selectedElement},onShow:function(){var b=c.getSelection(),a;a=b.getRanges()[0];var d=b.getSelectedElement();a.shrink(CKEDITOR.SHRINK_ELEMENT);a=(d=a.getEnclosedNode())&&d.type===CKEDITOR.NODE_ELEMENT&&("anchor"===d.data("cke-real-element-type")|| -d.is("a"))?d:void 0;var f=(d=a&&a.data("cke-realelement"))?CKEDITOR.plugins.link.tryRestoreFakeAnchor(c,a):CKEDITOR.plugins.link.getSelectedLink(c);if(f){this._.selectedElement=f;var e=f.data("cke-saved-name");this.setValueOf("info","txtName",e||"");!d&&b.selectElement(f);a&&(this._.selectedElement=a)}this.getContentElement("info","txtName").focus()},contents:[{id:"info",label:c.lang.link.anchor.title,accessKey:"I",elements:[{type:"text",id:"txtName",label:c.lang.link.anchor.name,required:!0,validate:function(){return this.getValue()? -!0:(alert(c.lang.link.anchor.errorName),!1)}}]}]}}); \ No newline at end of file +CKEDITOR.dialog.add("anchor",function(c){function f(b,a){return b.createFakeElement(b.document.createElement("a",{attributes:a}),"cke_anchor","anchor")}return{title:c.lang.link.anchor.title,minWidth:300,minHeight:60,getModel:function(b){var a=b.getSelection();b=a.getRanges()[0];a=a.getSelectedElement();b.shrink(CKEDITOR.SHRINK_ELEMENT);(a=b.getEnclosedNode())&&a.type===CKEDITOR.NODE_TEXT&&(a=a.getParent());a&&!a.is("a")&&(a=a.getAscendant("a")||a);b=a&&a.type===CKEDITOR.NODE_ELEMENT&&("anchor"=== +a.data("cke-real-element-type")||a.is("a"))?a:void 0;return b||null},onOk:function(){var b=CKEDITOR.tools.trim(this.getValueOf("info","txtName")),b={id:b,name:b,"data-cke-saved-name":b},a=this.getModel(c);if(a)a.data("cke-realelement")?(b=f(c,b),b.replace(a),CKEDITOR.env.ie&&c.getSelection().selectElement(b)):a.setAttributes(b);else if(a=(a=c.getSelection())&&a.getRanges()[0],a.collapsed)b=f(c,b),a.insertNode(b);else{CKEDITOR.env.ie&&9>CKEDITOR.env.version&&(b["class"]="cke_anchor");var d=a.clone(); +d.enlarge(CKEDITOR.ENLARGE_ELEMENT);for(var e=new CKEDITOR.dom.walker(d),d=d.collapsed?d.startContainer:e.next(),g=a.createBookmark();d;)d.type===CKEDITOR.NODE_ELEMENT&&d.getAttribute("data-cke-saved-name")&&(d.remove(!0),e.reset()),d=e.next();a.moveToBookmark(g);b=new CKEDITOR.style({element:"a",attributes:b});b.type=CKEDITOR.STYLE_INLINE;b.applyToRange(a)}},onShow:function(){var b=c.getSelection(),a=this.getModel(c),d=a&&a.data("cke-realelement");if(a=d?CKEDITOR.plugins.link.tryRestoreFakeAnchor(c, +a):CKEDITOR.plugins.link.getSelectedLink(c)){var e=a.data("cke-saved-name");this.setValueOf("info","txtName",e||"");!d&&b.selectElement(a)}this.getContentElement("info","txtName").focus()},contents:[{id:"info",label:c.lang.link.anchor.title,accessKey:"I",elements:[{type:"text",id:"txtName",label:c.lang.link.anchor.name,required:!0,validate:function(){return this.getValue()?!0:(alert(c.lang.link.anchor.errorName),!1)}}]}]}}); \ No newline at end of file diff --git a/htdocs/includes/ckeditor/ckeditor/plugins/link/dialogs/link.js b/htdocs/includes/ckeditor/ckeditor/plugins/link/dialogs/link.js index 7305fd2df24..51bd322e210 100644 --- a/htdocs/includes/ckeditor/ckeditor/plugins/link/dialogs/link.js +++ b/htdocs/includes/ckeditor/ckeditor/plugins/link/dialogs/link.js @@ -1,30 +1,30 @@ /* - Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. + Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ (function(){function u(){var c=this.getDialog(),p=c._.editor,n=p.config.linkPhoneRegExp,q=p.config.linkPhoneMsg,p=CKEDITOR.dialog.validate.notEmpty(p.lang.link.noTel).apply(this);if(!c.getContentElement("info","linkType")||"tel"!=c.getValueOf("info","linkType"))return!0;if(!0!==p)return p;if(n)return CKEDITOR.dialog.validate.regex(n,q).call(this)}CKEDITOR.dialog.add("link",function(c){function p(a,b){var c=a.createRange();c.setStartBefore(b);c.setEndAfter(b);return c}var n=CKEDITOR.plugins.link,q, -t=function(){var a=this.getDialog(),b=a.getContentElement("target","popupFeatures"),a=a.getContentElement("target","linkTargetName"),r=this.getValue();if(b&&a)switch(b=b.getElement(),b.hide(),a.setValue(""),r){case "frame":a.setLabel(c.lang.link.targetFrameName);a.getElement().show();break;case "popup":b.show();a.setLabel(c.lang.link.targetPopupName);a.getElement().show();break;default:a.setValue(r),a.getElement().hide()}},l=function(a){a.target&&this.setValue(a.target[this.id]||"")},e=function(a){a.advanced&& -this.setValue(a.advanced[this.id]||"")},k=function(a){a.target||(a.target={});a.target[this.id]=this.getValue()||""},m=function(a){a.advanced||(a.advanced={});a.advanced[this.id]=this.getValue()||""},g=c.lang.common,b=c.lang.link,d;return{title:b.title,minWidth:"moono-lisa"==(CKEDITOR.skinName||c.config.skin)?450:350,minHeight:240,contents:[{id:"info",label:b.info,title:b.info,elements:[{type:"text",id:"linkDisplayText",label:b.displayText,setup:function(){this.enable();this.setValue(c.getSelection().getSelectedText()); -q=this.getValue()},commit:function(a){a.linkText=this.isEnabled()?this.getValue():""}},{id:"linkType",type:"select",label:b.type,"default":"url",items:[[b.toUrl,"url"],[b.toAnchor,"anchor"],[b.toEmail,"email"],[b.toPhone,"tel"]],onChange:function(){var a=this.getDialog(),b=["urlOptions","anchorOptions","emailOptions","telOptions"],r=this.getValue(),f=a.definition.getContents("upload"),f=f&&f.hidden;"url"==r?(c.config.linkShowTargetTab&&a.showPage("target"),f||a.showPage("upload")):(a.hidePage("target"), -f||a.hidePage("upload"));for(f=0;f=f.length&&n.showDisplayTextForElement(h,a)?c.show():c.hide();this._.selectedElements=f;this.setupContent(b)},onOk:function(){var a={};this.commitContent(a);if(this._.selectedElements.length){var b=this._.selectedElements,g=n.getLinkAttributes(c,a),f=[],h,d,l,e,k;for(k=0;k=f.length&&n.showDisplayTextForElement(m,a)?c.show():c.hide();this._.selectedElements=f;this.setupContent(b)},onOk:function(){var a={};this.commitContent(a);if(this._.selectedElements.length){var b=this._.selectedElements,h=n.getLinkAttributes(c,a),f=[],m,l,d,g,e,k;for(k=0;k/g,"]--\x3e");var f=CKEDITOR.htmlParser.fragment.fromHtml(a),g={root:function(a){a.filterChildren(p);CKEDITOR.plugins.pastefromword.lists.cleanup(h.createLists(a))},elementNames:[[/^\?xml:namespace$/,""],[/^v:shapetype/,""],[new RegExp(A.join("|")),""]],elements:{a:function(a){if(a.attributes.name){if("_GoBack"==a.attributes.name){delete a.name;return}if(a.attributes.name.match(/^OLE_LINK\d+$/)){delete a.name;return}}if(a.attributes.href&&a.attributes.href.match(/#.+$/)){var b= -a.attributes.href.match(/#(.+)$/)[1];y[b]=a}a.attributes.name&&y[a.attributes.name]&&(a=y[a.attributes.name],a.attributes.href=a.attributes.href.replace(/.*#(.*)$/,"#$1"))},div:function(a){if(b.plugins.pagebreak&&a.attributes["data-cke-pagebreak"])return a;k.createStyleStack(a,p,b)},img:function(a){if(a.parent&&a.parent.attributes){var b=a.parent.attributes;(b=b.style||b.STYLE)&&b.match(/mso\-list:\s?Ignore/)&&(a.attributes["cke-ignored"]=!0)}k.mapCommonStyles(a);a.attributes.src&&a.attributes.src.match(/^file:\/\//)&& -a.attributes.alt&&a.attributes.alt.match(/^https?:\/\//)&&(a.attributes.src=a.attributes.alt);a=a.attributes["v:shapes"]?a.attributes["v:shapes"].split(" "):[];b=CKEDITOR.tools.array.every(a,function(a){return-1/)?!0:!1},convertToFakeListItem:function(a,b){r.isDegenerateListItem(a,b)&&r.assignListLevels(a,b);this.getListItemInfo(b);if(!b.attributes["cke-dissolved"]){var c;b.forEach(function(a){!c&&"img"==a.name&&a.attributes["cke-ignored"]&&"*"==a.attributes.alt&&(c="·",a.remove())},CKEDITOR.NODE_ELEMENT);b.forEach(function(a){c||a.value.match(/^ /)||(c=a.value)},CKEDITOR.NODE_TEXT);if("undefined"==typeof c)return; -b.attributes["cke-symbol"]=c.replace(/(?: | ).*$/,"");h.removeSymbolText(b)}var d=b.attributes&&m.parseCssText(b.attributes.style);if(d["margin-left"]){var e=d["margin-left"],f=b.attributes["cke-list-level"];(e=Math.max(CKEDITOR.tools.convertToPx(e)-40*f,0))?d["margin-left"]=e+"px":delete d["margin-left"];b.attributes.style=CKEDITOR.tools.writeCssText(d)}b.name="cke:li"},convertToRealListItems:function(a){var b=[];a.forEach(function(a){"cke:li"==a.name&&(a.name="li",b.push(a))},CKEDITOR.NODE_ELEMENT, -!1);return b},removeSymbolText:function(a){var b=a.attributes["cke-symbol"],c=a.findOne(function(a){return a.value&&-1b&&(a.attributes.dir="rtl")},createList:function(a){return(a.attributes["cke-symbol"].match(/([\da-np-zA-NP-Z]).?/)||[])[1]?new CKEDITOR.htmlParser.element("ol"):new CKEDITOR.htmlParser.element("ul")},createLists:function(a){function b(a){return CKEDITOR.tools.array.reduce(a,function(a,b){if(b.attributes&&b.attributes.style)var c=CKEDITOR.tools.parseCssText(b.attributes.style)["margin-left"]; -return c?a+parseInt(c,10):a},0)}var c,d,e,f=h.convertToRealListItems(a);if(0===f.length)return[];var g=h.groupLists(f);for(a=0;al.length;){var m=h.createList(c),u=n.children;0e;e++)c[e]&&delete c[e];c[a[f].attributes["cke-list-level"]]=l;d[d.length-1].push(a[f]);e=k}[].splice.apply(b,[].concat([m.indexOf(b,a),1],d))},isAListContinuation:function(a){var b=a;do if((b=b.previous)&&b.type===CKEDITOR.NODE_ELEMENT){if(void 0=== -b.attributes["cke-list-level"])break;if(b.attributes["cke-list-level"]===a.attributes["cke-list-level"])return b.attributes["cke-list-id"]===a.attributes["cke-list-id"]}while(b);return!1},getElementIndentation:function(a){a=m.parseCssText(a.attributes.style);if(a.margin||a.MARGIN){a.margin=a.margin||a.MARGIN;var b={styles:{margin:a.margin}};CKEDITOR.filter.transformationsTools.splitMarginShorthand(b);a["margin-left"]=b.styles["margin-left"]}return parseInt(m.convertToPx(a["margin-left"]||"0px"),10)}, -toArabic:function(a){return a.match(/[ivxl]/i)?a.match(/^l/i)?50+h.toArabic(a.slice(1)):a.match(/^lx/i)?40+h.toArabic(a.slice(1)):a.match(/^x/i)?10+h.toArabic(a.slice(1)):a.match(/^ix/i)?9+h.toArabic(a.slice(2)):a.match(/^v/i)?5+h.toArabic(a.slice(1)):a.match(/^iv/i)?4+h.toArabic(a.slice(2)):a.match(/^i/i)?1+h.toArabic(a.slice(1)):h.toArabic(a.slice(1)):0},getSymbolInfo:function(a,b){var c=a.toUpperCase()==a?"upper-":"lower-",d={"·":["disc",-1],o:["circle",-2],"§":["square",-3]};if(a in d||b&&b.match(/(disc|circle|square)/))return{index:d[a][1], -type:d[a][0]};if(a.match(/\d/))return{index:a?parseInt(h.getSubsectionSymbol(a),10):0,type:"decimal"};a=a.replace(/\W/g,"").toLowerCase();return!b&&a.match(/[ivxl]+/i)||b&&"alpha"!=b||"roman"==b?{index:h.toArabic(a),type:c+"roman"}:a.match(/[a-z]/i)?{index:a.charCodeAt(0)-97,type:c+"alpha"}:{index:-1,type:"disc"}},getListItemInfo:function(a){if(void 0!==a.attributes["cke-list-id"])return{id:a.attributes["cke-list-id"],level:a.attributes["cke-list-level"]};var b=m.parseCssText(a.attributes.style)["mso-list"], -c={id:"0",level:"1"};b&&(b+=" ",c.level=b.match(/level(.+?)\s+/)[1],c.id=b.match(/l(\d+?)\s+/)[1]);a.attributes["cke-list-level"]=void 0!==a.attributes["cke-list-level"]?a.attributes["cke-list-level"]:c.level;a.attributes["cke-list-id"]=c.id;return c}};h=CKEDITOR.plugins.pastefromword.lists;CKEDITOR.plugins.pastefromword.images={extractFromRtf:function(a){var b=[],c=/\{\\pict[\s\S]+?\\bliptag\-?\d+(\\blipupi\-?\d+)?(\{\\\*\\blipuid\s?[\da-fA-F]+)?[\s\}]*?/,d;a=a.match(new RegExp("(?:("+c.source+"))([\\da-fA-F\\s]+)\\}", -"g"));if(!a)return b;for(var e=0;e]+src="([^"]+)[^>]+/g,c=[],d;d=b.exec(a);)c.push(d[1]);return c}};CKEDITOR.plugins.pastefromword.heuristics={isEdgeListItem:function(a,b){if(!CKEDITOR.env.edge||!a.config.pasteFromWord_heuristicsEdgeList)return!1; -var c="";b.forEach&&b.forEach(function(a){c+=a.value},CKEDITOR.NODE_TEXT);return c.match(/^(?: | )*\(?[a-zA-Z0-9]+?[\.\)](?: | ){2,}/)?!0:r.isDegenerateListItem(a,b)},cleanupEdgeListItem:function(a){var b=!1;a.forEach(function(a){b||(a.value=a.value.replace(/^(?: |[\s])+/,""),a.value.length&&(b=!0))},CKEDITOR.NODE_TEXT)},isDegenerateListItem:function(a,b){return!!b.attributes["cke-list-level"]||b.attributes.style&&!b.attributes.style.match(/mso\-list/)&&!!b.find(function(a){if(a.type== -CKEDITOR.NODE_ELEMENT&&b.name.match(/h\d/i)&&a.getHtml().match(/^[a-zA-Z0-9]+?[\.\)]$/))return!0;var d=m.parseCssText(a.attributes&&a.attributes.style,!0);if(!d)return!1;var e=d["font-family"]||"";return(d.font||d["font-size"]||"").match(/7pt/i)&&!!a.previous||e.match(/symbol/i)},!0).length},assignListLevels:function(a,b){if(!b.attributes||void 0===b.attributes["cke-list-level"]){for(var c=[h.getElementIndentation(b)],d=[b],e=[],f=CKEDITOR.tools.array,g=f.map;b.next&&b.next.attributes&&!b.next.attributes["cke-list-level"]&& -r.isDegenerateListItem(a,b.next);)b=b.next,c.push(h.getElementIndentation(b)),d.push(b);var k=g(c,function(a,b){return 0===b?0:a-c[b-1]}),l=this.guessIndentationStep(f.filter(c,function(a){return 0!==a})),e=g(c,function(a){return Math.round(a/l)});-1!==f.indexOf(e,0)&&(e=g(e,function(a){return a+1}));f.forEach(d,function(a,b){a.attributes["cke-list-level"]=e[b]});return{indents:c,levels:e,diffs:k}}},guessIndentationStep:function(a){return a.length?Math.min.apply(null,a):null},correctLevelShift:function(a){if(this.isShifted(a)){var b= -CKEDITOR.tools.array.filter(a.children,function(a){return"ul"==a.name||"ol"==a.name}),c=CKEDITOR.tools.array.reduce(b,function(a,b){return(b.children&&1==b.children.length&&r.isShifted(b.children[0])?[b]:b.children).concat(a)},[]);CKEDITOR.tools.array.forEach(b,function(a){a.remove()});CKEDITOR.tools.array.forEach(c,function(b){a.add(b)});delete a.name}},isShifted:function(a){return"li"!==a.name?!1:0===CKEDITOR.tools.array.filter(a.children,function(a){return a.name&&("ul"==a.name||"ol"==a.name|| -"p"==a.name&&0===a.children.length)?!1:!0}).length}};r=CKEDITOR.plugins.pastefromword.heuristics;h.setListSymbol.removeRedundancies=function(a,b){(1===b&&"disc"===a["list-style-type"]||"decimal"===a["list-style-type"])&&delete a["list-style-type"]};CKEDITOR.plugins.pastefromword.createAttributeStack=z;CKEDITOR.config.pasteFromWord_heuristicsEdgeList=!0})(); \ No newline at end of file +(function(){function r(){return!1}var n=CKEDITOR.tools,B=CKEDITOR.plugins.pastetools,t=B.filters.common,k=t.styles,C=t.createAttributeStack,z=t.lists.getElementIndentation,D=["o:p","xml","script","meta","link"],E="v:arc v:curve v:line v:oval v:polyline v:rect v:roundrect v:group".split(" "),A={},y=0,q={},g,p;CKEDITOR.plugins.pastetools.filters.word=q;CKEDITOR.plugins.pastefromword=q;q.rules=function(c,b,d){function e(a){(a.attributes["o:gfxdata"]||"v:group"===a.parent.name)&&l.push(a.attributes.id)} +var f=Boolean(c.match(/mso-list:\s*l\d+\s+level\d+\s+lfo\d+/)),l=[],w={root:function(a){a.filterChildren(d);CKEDITOR.plugins.pastefromword.lists.cleanup(g.createLists(a))},elementNames:[[/^\?xml:namespace$/,""],[/^v:shapetype/,""],[new RegExp(D.join("|")),""]],elements:{a:function(a){if(a.attributes.name){if("_GoBack"==a.attributes.name){delete a.name;return}if(a.attributes.name.match(/^OLE_LINK\d+$/)){delete a.name;return}}if(a.attributes.href&&a.attributes.href.match(/#.+$/)){var b=a.attributes.href.match(/#(.+)$/)[1]; +A[b]=a}a.attributes.name&&A[a.attributes.name]&&(a=A[a.attributes.name],a.attributes.href=a.attributes.href.replace(/.*#(.*)$/,"#$1"))},div:function(a){if(b.plugins.pagebreak&&a.attributes["data-cke-pagebreak"])return a;k.createStyleStack(a,d,b)},img:function(a){if(a.parent&&a.parent.attributes){var b=a.parent.attributes;(b=b.style||b.STYLE)&&b.match(/mso\-list:\s?Ignore/)&&(a.attributes["cke-ignored"]=!0)}k.mapCommonStyles(a);a.attributes.src&&a.attributes.src.match(/^file:\/\//)&&a.attributes.alt&& +a.attributes.alt.match(/^https?:\/\//)&&(a.attributes.src=a.attributes.alt);a=a.attributes["v:shapes"]?a.attributes["v:shapes"].split(" "):[];b=CKEDITOR.tools.array.every(a,function(a){return-1/)?!0:!1},convertToFakeListItem:function(c,b){p.isDegenerateListItem(c,b)&&p.assignListLevels(c, +b);this.getListItemInfo(b);if(!b.attributes["cke-dissolved"]){var d;b.forEach(function(b){!d&&"img"==b.name&&b.attributes["cke-ignored"]&&"*"==b.attributes.alt&&(d="·",b.remove())},CKEDITOR.NODE_ELEMENT);b.forEach(function(b){d||b.value.match(/^ /)||(d=b.value)},CKEDITOR.NODE_TEXT);if("undefined"==typeof d)return;b.attributes["cke-symbol"]=d.replace(/(?: | ).*$/,"");g.removeSymbolText(b)}var e=b.attributes&&n.parseCssText(b.attributes.style);if(e["margin-left"]){var f=e["margin-left"],l=b.attributes["cke-list-level"]; +(f=Math.max(CKEDITOR.tools.convertToPx(f)-40*l,0))?e["margin-left"]=f+"px":delete e["margin-left"];b.attributes.style=CKEDITOR.tools.writeCssText(e)}b.name="cke:li"},convertToRealListItems:function(c){var b=[];c.forEach(function(c){"cke:li"==c.name&&(c.name="li",b.push(c))},CKEDITOR.NODE_ELEMENT,!1);return b},removeSymbolText:function(c){var b=c.attributes["cke-symbol"],d=c.findOne(function(c){return c.value&&-1b&&(c.attributes.dir="rtl")},createList:function(c){return(c.attributes["cke-symbol"].match(/([\da-np-zA-NP-Z]).?/)||[])[1]? +new CKEDITOR.htmlParser.element("ol"):new CKEDITOR.htmlParser.element("ul")},createLists:function(c){function b(b){return CKEDITOR.tools.array.reduce(b,function(b,a){if(a.attributes&&a.attributes.style)var c=CKEDITOR.tools.parseCssText(a.attributes.style)["margin-left"];return c?b+parseInt(c,10):b},0)}var d,e,f,l=g.convertToRealListItems(c);if(0===l.length)return[];var k=g.groupLists(l);for(c=0;ch.length;){var v=g.createList(d),x=m.children;0f;f++)d[f]&&delete d[f];d[c[l].attributes["cke-list-level"]]=h;e[e.length-1].push(c[l]);f=a}[].splice.apply(b,[].concat([n.indexOf(b,c),1],e))},isAListContinuation:function(c){var b=c;do if((b=b.previous)&&b.type===CKEDITOR.NODE_ELEMENT){if(void 0===b.attributes["cke-list-level"])break;if(b.attributes["cke-list-level"]===c.attributes["cke-list-level"])return b.attributes["cke-list-id"]===c.attributes["cke-list-id"]}while(b);return!1},toArabic:function(c){return c.match(/[ivxl]/i)?c.match(/^l/i)? +50+g.toArabic(c.slice(1)):c.match(/^lx/i)?40+g.toArabic(c.slice(1)):c.match(/^x/i)?10+g.toArabic(c.slice(1)):c.match(/^ix/i)?9+g.toArabic(c.slice(2)):c.match(/^v/i)?5+g.toArabic(c.slice(1)):c.match(/^iv/i)?4+g.toArabic(c.slice(2)):c.match(/^i/i)?1+g.toArabic(c.slice(1)):g.toArabic(c.slice(1)):0},getSymbolInfo:function(c,b){var d=c.toUpperCase()==c?"upper-":"lower-",e={"·":["disc",-1],o:["circle",-2],"§":["square",-3]};if(c in e||b&&b.match(/(disc|circle|square)/))return{index:e[c][1],type:e[c][0]}; +if(c.match(/\d/))return{index:c?parseInt(g.getSubsectionSymbol(c),10):0,type:"decimal"};c=c.replace(/\W/g,"").toLowerCase();return!b&&c.match(/[ivxl]+/i)||b&&"alpha"!=b||"roman"==b?{index:g.toArabic(c),type:d+"roman"}:c.match(/[a-z]/i)?{index:c.charCodeAt(0)-97,type:d+"alpha"}:{index:-1,type:"disc"}},getListItemInfo:function(c){if(void 0!==c.attributes["cke-list-id"])return{id:c.attributes["cke-list-id"],level:c.attributes["cke-list-level"]};var b=n.parseCssText(c.attributes.style)["mso-list"],d= +{id:"0",level:"1"};b&&(b+=" ",d.level=b.match(/level(.+?)\s+/)[1],d.id=b.match(/l(\d+?)\s+/)[1]);c.attributes["cke-list-level"]=void 0!==c.attributes["cke-list-level"]?c.attributes["cke-list-level"]:d.level;c.attributes["cke-list-id"]=d.id;return d}};g=q.lists;q.heuristics={isEdgeListItem:function(c,b){if(!CKEDITOR.env.edge||!c.config.pasteFromWord_heuristicsEdgeList)return!1;var d="";b.forEach&&b.forEach(function(b){d+=b.value},CKEDITOR.NODE_TEXT);return d.match(/^(?: | )*\(?[a-zA-Z0-9]+?[\.\)](?: | ){2,}/)? +!0:p.isDegenerateListItem(c,b)},cleanupEdgeListItem:function(c){var b=!1;c.forEach(function(c){b||(c.value=c.value.replace(/^(?: |[\s])+/,""),c.value.length&&(b=!0))},CKEDITOR.NODE_TEXT)},isDegenerateListItem:function(c,b){return!!b.attributes["cke-list-level"]||b.attributes.style&&!b.attributes.style.match(/mso\-list/)&&!!b.find(function(c){if(c.type==CKEDITOR.NODE_ELEMENT&&b.name.match(/h\d/i)&&c.getHtml().match(/^[a-zA-Z0-9]+?[\.\)]$/))return!0;var e=n.parseCssText(c.attributes&&c.attributes.style, +!0);if(!e)return!1;var f=e["font-family"]||"";return(e.font||e["font-size"]||"").match(/7pt/i)&&!!c.previous||f.match(/symbol/i)},!0).length},assignListLevels:function(c,b){if(!b.attributes||void 0===b.attributes["cke-list-level"]){for(var d=[z(b)],e=[b],f=[],g=CKEDITOR.tools.array,k=g.map;b.next&&b.next.attributes&&!b.next.attributes["cke-list-level"]&&p.isDegenerateListItem(c,b.next);)b=b.next,d.push(z(b)),e.push(b);var a=k(d,function(a,b){return 0===b?0:a-d[b-1]}),h=this.guessIndentationStep(g.filter(d, +function(a){return 0!==a})),f=k(d,function(a){return Math.round(a/h)});-1!==g.indexOf(f,0)&&(f=k(f,function(a){return a+1}));g.forEach(e,function(a,b){a.attributes["cke-list-level"]=f[b]});return{indents:d,levels:f,diffs:a}}},guessIndentationStep:function(c){return c.length?Math.min.apply(null,c):null},correctLevelShift:function(c){if(this.isShifted(c)){var b=CKEDITOR.tools.array.filter(c.children,function(b){return"ul"==b.name||"ol"==b.name}),d=CKEDITOR.tools.array.reduce(b,function(b,c){return(c.children&& +1==c.children.length&&p.isShifted(c.children[0])?[c]:c.children).concat(b)},[]);CKEDITOR.tools.array.forEach(b,function(b){b.remove()});CKEDITOR.tools.array.forEach(d,function(b){c.add(b)});delete c.name}},isShifted:function(c){return"li"!==c.name?!1:0===CKEDITOR.tools.array.filter(c.children,function(b){return b.name&&("ul"==b.name||"ol"==b.name||"p"==b.name&&0===b.children.length)?!1:!0}).length}};p=q.heuristics;g.setListSymbol.removeRedundancies=function(c,b){(1===b&&"disc"===c["list-style-type"]|| +"decimal"===c["list-style-type"])&&delete c["list-style-type"]};CKEDITOR.cleanWord=CKEDITOR.pasteFilters.word=B.createFilter({rules:[t.rules,q.rules],additionalTransforms:function(c){CKEDITOR.plugins.clipboard.isCustomDataTypesSupported&&(c=t.styles.inliner.inline(c).getBody().getHtml());return c.replace(//g,"]--\x3e")}});CKEDITOR.config.pasteFromWord_heuristicsEdgeList=!0})(); \ No newline at end of file diff --git a/htdocs/includes/ckeditor/ckeditor/plugins/pastetools/filter/common.js b/htdocs/includes/ckeditor/ckeditor/plugins/pastetools/filter/common.js new file mode 100644 index 00000000000..bce639a9dd8 --- /dev/null +++ b/htdocs/includes/ckeditor/ckeditor/plugins/pastetools/filter/common.js @@ -0,0 +1,24 @@ +/* + Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. + For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +(function(){function q(a,b,c){b+=c;for(var d=a[b],e=/[\s]/;d&&e.test(d);)b+=c,d=a[b];return d}function r(a){return/%$/.test(a)?a:a+"px"}function t(a){var b=a.margin?"margin":a.MARGIN?"MARGIN":!1,c,d;if(b){d=CKEDITOR.tools.style.parse.margin(a[b]);for(c in d)a["margin-"+c]=d[c];delete a[b]}}function u(a){var b="background-color:transparent;background:transparent;background-color:none;background:none;background-position:initial initial;background-repeat:initial initial;caret-color;font-family:-webkit-standard;font-variant-caps;letter-spacing:normal;orphans;widows;text-transform:none;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;text-indent:0px;margin-bottom:0in".split(";"), +c=CKEDITOR.tools.parseCssText(a.attributes.style),d,e;for(d in c)e=d+":"+c[d],CKEDITOR.tools.array.some(b,function(a){return e.substring(0,a.length).toLowerCase()===a})&&delete c[d];c=CKEDITOR.tools.writeCssText(c);""!==c?a.attributes.style=c:delete a.attributes.style}function v(a){a=a.config.font_names;var b=[];if(!a||!a.length)return!1;b=CKEDITOR.tools.array.map(a.split(";"),function(a){return-1===a.indexOf("/")?a:a.split("/")[1]});return b.length?b:!1}function w(a,b){var c=a.split(",");return CKEDITOR.tools.array.find(b, +function(a){for(var e=0;e]+src="([^"]+)[^>]+/g,b=[],e;e=c.exec(a);)b.push(e[1]);return b}function t(a){var c=CKEDITOR.tools.array.find(CKEDITOR.pasteFilters.image.recognizableImageTypes, +function(b){return b.marker.test(a)});return c?c.type:"unknown"}function h(a){var c=-1!==CKEDITOR.tools.array.indexOf(CKEDITOR.pasteFilters.image.supportedImageTypes,a.type),b=a.hex;if(!c)return null;"string"===typeof b&&(b=CKEDITOR.tools.convertHexStringToBytes(a.hex));return a.type?"data:"+a.type+";base64,"+CKEDITOR.tools.convertBytesToBase64(b):null}function m(a){return new CKEDITOR.tools.promise(function(c){CKEDITOR.ajax.load(a,function(a){a=new Uint8Array(a);var e=r(a);a=h({type:e,hex:a});c(a)}, +"arraybuffer")})}function r(a){a=a.subarray(0,4);var c=CKEDITOR.tools.array.map(a,function(a){return a.toString(16)}).join("");return(a=CKEDITOR.tools.array.find(CKEDITOR.pasteFilters.image.recognizableImageSignatures,function(a){return 0===c.indexOf(a.signature)}))?a.type:null}CKEDITOR.pasteFilters.image=function(a,c,b){var e;if(c.activeFilter&&!c.activeFilter.check("img[src]"))return a;e=q(a);return 0===e.length?a:b?u(a,b,e):v(c,a,e)};CKEDITOR.pasteFilters.image.extractFromRtf=l;CKEDITOR.pasteFilters.image.extractTagsFromHtml= +q;CKEDITOR.pasteFilters.image.getImageType=t;CKEDITOR.pasteFilters.image.createSrcWithBase64=h;CKEDITOR.pasteFilters.image.convertBlobUrlToBase64=m;CKEDITOR.pasteFilters.image.getImageTypeFromSignature=r;CKEDITOR.pasteFilters.image.supportedImageTypes=["image/png","image/jpeg","image/gif"];CKEDITOR.pasteFilters.image.recognizableImageTypes=[{marker:/\\pngblip/,type:"image/png"},{marker:/\\jpegblip/,type:"image/jpeg"},{marker:/\\emfblip/,type:"image/emf"},{marker:/\\wmetafile\d/,type:"image/wmf"}]; +CKEDITOR.pasteFilters.image.recognizableImageSignatures=[{signature:"ffd8ff",type:"image/jpeg"},{signature:"47494638",type:"image/gif"},{signature:"89504e47",type:"image/png"}]})(); \ No newline at end of file diff --git a/htdocs/includes/ckeditor/ckeditor/plugins/preview/images/pagebreak.gif b/htdocs/includes/ckeditor/ckeditor/plugins/preview/images/pagebreak.gif new file mode 100644 index 0000000000000000000000000000000000000000..a27b1684983977a00de52fc565142df615eb8c0c GIT binary patch literal 99 zcmZ?wbhEHb6lP#&_{abPGiS~O(+r9~Sr{1@m>3lQb9?3{rlp&&(p=f)}return p}function t(a){return function(){var f=this.getValue(),f=!!(CKEDITOR.dialog.validate.integer().call(this,f)&&0r.getSize("width")?"100%":500:0,getValue:v,validate:CKEDITOR.dialog.validate.cssLength(a.lang.common.invalidCssLength.replace("%1", -a.lang.common.width)),onChange:function(){var a=this.getDialog().getContentElement("advanced","advStyles");a&&a.updateStyle("width",this.getValue())},setup:function(a){a=a.getStyle("width");this.setValue(a)},commit:n}]},{type:"hbox",widths:["5em"],children:[{type:"text",id:"txtHeight",requiredContent:"table{height}",controlStyle:"width:5em",label:a.lang.common.height,title:a.lang.common.cssLengthTooltip,"default":"",getValue:v,validate:CKEDITOR.dialog.validate.cssLength(a.lang.common.invalidCssLength.replace("%1", -a.lang.common.height)),onChange:function(){var a=this.getDialog().getContentElement("advanced","advStyles");a&&a.updateStyle("height",this.getValue())},setup:function(a){(a=a.getStyle("height"))&&this.setValue(a)},commit:n}]},{type:"html",html:"\x26nbsp;"},{type:"text",id:"txtCellSpace",requiredContent:"table[cellspacing]",controlStyle:"width:3em",label:a.lang.table.cellSpace,"default":a.filter.check("table[cellspacing]")?1:0,validate:CKEDITOR.dialog.validate.number(a.lang.table.invalidCellSpacing), -setup:function(a){this.setValue(a.getAttribute("cellSpacing")||"")},commit:function(a,d){this.getValue()?d.setAttribute("cellSpacing",this.getValue()):d.removeAttribute("cellSpacing")}},{type:"text",id:"txtCellPad",requiredContent:"table[cellpadding]",controlStyle:"width:3em",label:a.lang.table.cellPad,"default":a.filter.check("table[cellpadding]")?1:0,validate:CKEDITOR.dialog.validate.number(a.lang.table.invalidCellPadding),setup:function(a){this.setValue(a.getAttribute("cellPadding")||"")},commit:function(a, -d){this.getValue()?d.setAttribute("cellPadding",this.getValue()):d.removeAttribute("cellPadding")}}]}]},{type:"html",align:"right",html:""},{type:"vbox",padding:0,children:[{type:"text",id:"txtCaption",requiredContent:"caption",label:a.lang.table.caption,setup:function(a){this.enable();a=a.getElementsByTag("caption");if(0p&&(p=f)}return p}function t(a){return function(){var f=this.getValue(),f=!!(CKEDITOR.dialog.validate.integer().call(this,f)&&0r.getSize("width")?"100%":500:0,getValue:v,validate:CKEDITOR.dialog.validate.cssLength(a.lang.common.invalidCssLength.replace("%1",a.lang.common.width)),onChange:function(){var a=this.getDialog().getContentElement("advanced","advStyles");a&&a.updateStyle("width",this.getValue())},setup:function(a){a=a.getStyle("width");this.setValue(a)},commit:n}]},{type:"hbox",widths:["5em"],children:[{type:"text",id:"txtHeight",requiredContent:"table{height}",controlStyle:"width:5em", +label:a.lang.common.height,title:a.lang.common.cssLengthTooltip,"default":"",getValue:v,validate:CKEDITOR.dialog.validate.cssLength(a.lang.common.invalidCssLength.replace("%1",a.lang.common.height)),onChange:function(){var a=this.getDialog().getContentElement("advanced","advStyles");a&&a.updateStyle("height",this.getValue())},setup:function(a){(a=a.getStyle("height"))&&this.setValue(a)},commit:n}]},{type:"html",html:"\x26nbsp;"},{type:"text",id:"txtCellSpace",requiredContent:"table[cellspacing]", +controlStyle:"width:3em",label:a.lang.table.cellSpace,"default":a.filter.check("table[cellspacing]")?1:0,validate:CKEDITOR.dialog.validate.number(a.lang.table.invalidCellSpacing),setup:function(a){this.setValue(a.getAttribute("cellSpacing")||"")},commit:function(a,e){this.getValue()?e.setAttribute("cellSpacing",this.getValue()):e.removeAttribute("cellSpacing")}},{type:"text",id:"txtCellPad",requiredContent:"table[cellpadding]",controlStyle:"width:3em",label:a.lang.table.cellPad,"default":a.filter.check("table[cellpadding]")? +1:0,validate:CKEDITOR.dialog.validate.number(a.lang.table.invalidCellPadding),setup:function(a){this.setValue(a.getAttribute("cellPadding")||"")},commit:function(a,e){this.getValue()?e.setAttribute("cellPadding",this.getValue()):e.removeAttribute("cellPadding")}}]}]},{type:"html",align:"right",html:""},{type:"vbox",padding:0,children:[{type:"text",id:"txtCaption",requiredContent:"caption",label:a.lang.table.caption,setup:function(a){this.enable();a=a.getElementsByTag("caption");if(0=m/2?h[2].children.push(a):h[0].children.push(a)});CKEDITOR.tools.array.forEach(h,function(a){a.isSpacer||(a=a.children,a[a.length-1].isSpacer&&a.pop())});return{title:c.title,minWidth:1===h.length?205:410,minHeight:50,contents:[{id:"info",label:c.title,accessKey:"I",elements:[{type:"hbox",widths:1===h.length?["100%"]:["40%","5%","40%"],children:h}]}],onShow:function(){this.cells= -CKEDITOR.plugins.tabletools.getSelectedCells(this._.editor.getSelection());this.setupContent(this.cells)},onOk:function(){for(var a=this._.editor.getSelection(),b=a.createBookmarks(),c=this.cells,d=0;d=m/2?g[2].children.push(a):g[0].children.push(a)});CKEDITOR.tools.array.forEach(g,function(a){a.isSpacer||(a=a.children,a[a.length-1].isSpacer&&a.pop())});return{title:d.title,minWidth:1===g.length?205:410,minHeight:50,contents:[{id:"info",label:d.title,accessKey:"I",elements:[{type:"hbox",widths:1===g.length?["100%"]:["40%","5%","40%"],children:g}]}],getModel:function(a){return CKEDITOR.plugins.tabletools.getSelectedCells(a.getSelection())},onShow:function(){var a=this.getModel(this.getParentEditor()); +this.setupContent(a)},onOk:function(){for(var a=this._.editor.getSelection(),b=a.createBookmarks(),c=this.getParentEditor(),d=this.getModel(c),e=0;ea.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid #139ff7;margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid #139ff7}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last,.cke_dialog_flash_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:#bcbcbc 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid #139ff7}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid #139ff7;padding:6px} \ No newline at end of file +.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#fff}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:12px;cursor:move;position:relative;color:#484848;border-bottom:1px solid #d1d1d1;padding:12px 19px 12px 12px;background:#f8f8f8;letter-spacing:.3px}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border:2px solid rgba(102,102,102,0.2);border-left-color:rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:43px;border-top:1px solid #d1d1d1}.cke_dialog_contents_body{overflow:auto;padding:9px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:33px;display:inline-block;margin:9px 0 0;position:absolute;z-index:2;left:11px}.cke_rtl .cke_dialog_tabs{left:auto;right:11px}a.cke_dialog_tab{height:25px;padding:4px 8px;display:inline-block;cursor:pointer;line-height:26px;outline:0;color:#484848;border:1px solid #d1d1d1;border-radius:3px 3px 0 0;background:#f8f8f8;min-width:90px;text-align:center;margin-left:-1px;letter-spacing:.3px}a.cke_dialog_tab:hover{background-color:#fff}a.cke_dialog_tab:focus{border:2px solid #139ff7;border-bottom-color:#d1d1d1;padding:3px 7px;position:relative;z-index:1}a.cke_dialog_tab_selected{background:#fff;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{border-bottom-color:#fff}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_hc a.cke_dialog_tab:focus{text-decoration:underline}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:16px;width:16px;top:11px;z-index:5;opacity:.7;filter:alpha(opacity = 70)}.cke_rtl .cke_dialog_close_button{left:12px}.cke_ltr .cke_dialog_close_button{right:12px}.cke_hc a.cke_dialog_close_button{background-image:none}.cke_hidpi a.cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}a.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}a.cke_dialog_close_button span{display:none}.cke_hc a.cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%;margin-top:12px}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #bcbcbc;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:2px;min-height:28px;margin-left:1px}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:2px solid #139ff7}input.cke_dialog_ui_input_text:focus{padding-left:5px}textarea.cke_dialog_ui_input_textarea:focus{padding:3px 5px}select.cke_dialog_ui_input_select:focus{margin:0;width:100%!important}input.cke_dialog_ui_checkbox_input,input.cke_dialog_ui_radio_input{margin-left:1px;margin-right:2px}input.cke_dialog_ui_checkbox_input:focus,input.cke_dialog_ui_checkbox_input:active,input.cke_dialog_ui_radio_input:focus,input.cke_dialog_ui_radio_input:active{border:0;outline:2px solid #139ff7}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 1px;margin:0;text-align:center;color:#484848;vertical-align:middle;cursor:pointer;border:1px solid #bcbcbc;border-radius:2px;background:#f8f8f8;letter-spacing:.3px;line-height:18px;box-sizing:border-box}.cke_hc a.cke_dialog_ui_button{border-width:3px}span.cke_dialog_ui_button{padding:0 10px;cursor:pointer}a.cke_dialog_ui_button:hover{background:#fff}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border:2px solid #139ff7;outline:0;padding:3px 0}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;background:#09863e;border:1px solid #09863e}.cke_hc a.cke_dialog_ui_button{border:1px solid #bcbcbc}a.cke_dialog_ui_button_ok:hover{background:#53aa78;border-color:#53aa78}a.cke_dialog_ui_button_ok:focus{box-shadow:inset 0 0 0 2px #FFF}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#139ff7}.cke_hc a.cke_dialog_ui_button_ok:hover,.cke_hc a.cke_dialog_ui_button_ok:focus,.cke_hc a.cke_dialog_ui_button_ok:active{border-color:#484848}a.cke_dialog_ui_button_ok.cke_disabled{background:#d1d1d1;border-color:#d1d1d1;cursor:default}a.cke_dialog_ui_button_ok.cke_disabled span{cursor:default}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:28px;line-height:28px;background-color:#fff;border:1px solid #bcbcbc;padding:3px 3px 3px 6px;outline:0;border-radius:2px;margin:0 1px;box-sizing:border-box;width:calc(100% - 2px)!important}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog_ui_labeled_label{margin-left:1px}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog .cke_dark_background{background-color:transparent}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked,.cke_dialog a.cke_btn_reset{margin:2px}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_dialog a.cke_btn_over,.cke_dialog a.cke_btn_locked:hover,.cke_dialog a.cke_btn_locked:focus,.cke_dialog a.cke_btn_locked:active,.cke_dialog a.cke_btn_unlocked:hover,.cke_dialog a.cke_btn_unlocked:focus,.cke_dialog a.cke_btn_unlocked:active,.cke_dialog a.cke_btn_reset:hover,.cke_dialog a.cke_btn_reset:focus,.cke_dialog a.cke_btn_reset:active{cursor:pointer;outline:0;margin:0;border:2px solid #139ff7}.cke_dialog fieldset{border:1px solid #bcbcbc}.cke_dialog fieldset legend{padding:0 6px}.cke_dialog_ui_checkbox,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{display:inline-block}.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{padding-top:5px}.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label{vertical-align:middle}.cke_dialog .ImagePreviewBox{border:1px ridge #bcbcbc;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;cursor:default;letter-spacing:.3px}.cke_dialog_body label+.cke_dialog_ui_labeled_content{margin-top:2px}.cke_dialog_contents_body .cke_dialog_ui_text,.cke_dialog_contents_body .cke_dialog_ui_select,.cke_dialog_contents_body .cke_dialog_ui_hbox_last>a.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid #139ff7;margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid #139ff7}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:#bcbcbc 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid #139ff7}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid #139ff7;padding:6px} \ No newline at end of file diff --git a/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/dialog_ie.css b/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/dialog_ie.css index 4a9d1b9adda..bbc2fea5696 100644 --- a/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/dialog_ie.css +++ b/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/dialog_ie.css @@ -1,5 +1,5 @@ /* -Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#fff}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:12px;cursor:move;position:relative;color:#484848;border-bottom:1px solid #d1d1d1;padding:12px 19px 12px 12px;background:#f8f8f8;letter-spacing:.3px}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border:2px solid rgba(102,102,102,0.2);border-left-color:rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:43px;border-top:1px solid #d1d1d1}.cke_dialog_contents_body{overflow:auto;padding:9px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:33px;display:inline-block;margin:9px 0 0;position:absolute;z-index:2;left:11px}.cke_rtl .cke_dialog_tabs{left:auto;right:11px}a.cke_dialog_tab{height:25px;padding:4px 8px;display:inline-block;cursor:pointer;line-height:26px;outline:0;color:#484848;border:1px solid #d1d1d1;border-radius:3px 3px 0 0;background:#f8f8f8;min-width:90px;text-align:center;margin-left:-1px;letter-spacing:.3px}a.cke_dialog_tab:hover{background-color:#fff}a.cke_dialog_tab:focus{border:2px solid #139ff7;border-bottom-color:#d1d1d1;padding:3px 7px;position:relative;z-index:1}a.cke_dialog_tab_selected{background:#fff;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{border-bottom-color:#fff}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:16px;width:16px;top:11px;z-index:5;opacity:.7;filter:alpha(opacity = 70)}.cke_rtl .cke_dialog_close_button{left:12px}.cke_ltr .cke_dialog_close_button{right:12px}.cke_hc a.cke_dialog_close_button{background-image:none}.cke_hidpi a.cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}a.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}a.cke_dialog_close_button span{display:none}.cke_hc a.cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%;margin-top:12px}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #bcbcbc;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:2px;min-height:28px;margin-left:1px}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:2px solid #139ff7}input.cke_dialog_ui_input_text:focus{padding-left:5px}textarea.cke_dialog_ui_input_textarea:focus{padding:3px 5px}select.cke_dialog_ui_input_select:focus{margin:0;width:100%!important}input.cke_dialog_ui_checkbox_input,input.cke_dialog_ui_radio_input{margin-left:1px;margin-right:2px}input.cke_dialog_ui_checkbox_input:focus,input.cke_dialog_ui_checkbox_input:active,input.cke_dialog_ui_radio_input:focus,input.cke_dialog_ui_radio_input:active{border:0;outline:2px solid #139ff7}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 1px;margin:0;text-align:center;color:#484848;vertical-align:middle;cursor:pointer;border:1px solid #bcbcbc;border-radius:2px;background:#f8f8f8;letter-spacing:.3px;line-height:18px;box-sizing:border-box}.cke_hc a.cke_dialog_ui_button{border-width:3px}span.cke_dialog_ui_button{padding:0 10px;cursor:pointer}a.cke_dialog_ui_button:hover{background:#fff}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border:2px solid #139ff7;outline:0;padding:3px 0}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;background:#09863e;border:1px solid #09863e}.cke_hc a.cke_dialog_ui_button{border:3px solid #bcbcbc}a.cke_dialog_ui_button_ok:hover{background:#53aa78;border-color:#53aa78}a.cke_dialog_ui_button_ok:focus{box-shadow:inset 0 0 0 2px #FFF}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#139ff7}.cke_hc a.cke_dialog_ui_button_ok:hover,.cke_hc a.cke_dialog_ui_button_ok:focus,.cke_hc a.cke_dialog_ui_button_ok:active{border-color:#484848}a.cke_dialog_ui_button_ok.cke_disabled{background:#d1d1d1;border-color:#d1d1d1;cursor:default}a.cke_dialog_ui_button_ok.cke_disabled span{cursor:default}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:28px;line-height:28px;background-color:#fff;border:1px solid #bcbcbc;padding:3px 3px 3px 6px;outline:0;border-radius:2px;margin:0 1px;box-sizing:border-box;width:calc(100% - 2px)!important}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog_ui_labeled_label{margin-left:1px}.cke_dialog .cke_dark_background{background-color:transparent}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked,.cke_dialog a.cke_btn_reset{margin:2px}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_dialog a.cke_btn_over,.cke_dialog a.cke_btn_locked:hover,.cke_dialog a.cke_btn_locked:focus,.cke_dialog a.cke_btn_locked:active,.cke_dialog a.cke_btn_unlocked:hover,.cke_dialog a.cke_btn_unlocked:focus,.cke_dialog a.cke_btn_unlocked:active,.cke_dialog a.cke_btn_reset:hover,.cke_dialog a.cke_btn_reset:focus,.cke_dialog a.cke_btn_reset:active{cursor:pointer;outline:0;margin:0;border:2px solid #139ff7}.cke_dialog fieldset{border:1px solid #bcbcbc}.cke_dialog fieldset legend{padding:0 6px}.cke_dialog_ui_checkbox,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{display:inline-block}.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{padding-top:5px}.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label{vertical-align:middle}.cke_dialog .ImagePreviewBox{border:1px ridge #bcbcbc;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:1px solid #bcbcbc;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;cursor:default;letter-spacing:.3px}.cke_dialog_body label+.cke_dialog_ui_labeled_content{margin-top:2px}.cke_dialog_contents_body .cke_dialog_ui_text,.cke_dialog_contents_body .cke_dialog_ui_select,.cke_dialog_contents_body .cke_dialog_ui_hbox_last>a.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid #139ff7;margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid #139ff7}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last,.cke_dialog_flash_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:#bcbcbc 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid #139ff7}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid #139ff7;padding:6px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0} \ No newline at end of file +.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#fff}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:12px;cursor:move;position:relative;color:#484848;border-bottom:1px solid #d1d1d1;padding:12px 19px 12px 12px;background:#f8f8f8;letter-spacing:.3px}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border:2px solid rgba(102,102,102,0.2);border-left-color:rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:43px;border-top:1px solid #d1d1d1}.cke_dialog_contents_body{overflow:auto;padding:9px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:33px;display:inline-block;margin:9px 0 0;position:absolute;z-index:2;left:11px}.cke_rtl .cke_dialog_tabs{left:auto;right:11px}a.cke_dialog_tab{height:25px;padding:4px 8px;display:inline-block;cursor:pointer;line-height:26px;outline:0;color:#484848;border:1px solid #d1d1d1;border-radius:3px 3px 0 0;background:#f8f8f8;min-width:90px;text-align:center;margin-left:-1px;letter-spacing:.3px}a.cke_dialog_tab:hover{background-color:#fff}a.cke_dialog_tab:focus{border:2px solid #139ff7;border-bottom-color:#d1d1d1;padding:3px 7px;position:relative;z-index:1}a.cke_dialog_tab_selected{background:#fff;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{border-bottom-color:#fff}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_hc a.cke_dialog_tab:focus{text-decoration:underline}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:16px;width:16px;top:11px;z-index:5;opacity:.7;filter:alpha(opacity = 70)}.cke_rtl .cke_dialog_close_button{left:12px}.cke_ltr .cke_dialog_close_button{right:12px}.cke_hc a.cke_dialog_close_button{background-image:none}.cke_hidpi a.cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}a.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}a.cke_dialog_close_button span{display:none}.cke_hc a.cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%;margin-top:12px}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #bcbcbc;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:2px;min-height:28px;margin-left:1px}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:2px solid #139ff7}input.cke_dialog_ui_input_text:focus{padding-left:5px}textarea.cke_dialog_ui_input_textarea:focus{padding:3px 5px}select.cke_dialog_ui_input_select:focus{margin:0;width:100%!important}input.cke_dialog_ui_checkbox_input,input.cke_dialog_ui_radio_input{margin-left:1px;margin-right:2px}input.cke_dialog_ui_checkbox_input:focus,input.cke_dialog_ui_checkbox_input:active,input.cke_dialog_ui_radio_input:focus,input.cke_dialog_ui_radio_input:active{border:0;outline:2px solid #139ff7}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 1px;margin:0;text-align:center;color:#484848;vertical-align:middle;cursor:pointer;border:1px solid #bcbcbc;border-radius:2px;background:#f8f8f8;letter-spacing:.3px;line-height:18px;box-sizing:border-box}.cke_hc a.cke_dialog_ui_button{border-width:3px}span.cke_dialog_ui_button{padding:0 10px;cursor:pointer}a.cke_dialog_ui_button:hover{background:#fff}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border:2px solid #139ff7;outline:0;padding:3px 0}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;background:#09863e;border:1px solid #09863e}.cke_hc a.cke_dialog_ui_button{border:1px solid #bcbcbc}a.cke_dialog_ui_button_ok:hover{background:#53aa78;border-color:#53aa78}a.cke_dialog_ui_button_ok:focus{box-shadow:inset 0 0 0 2px #FFF}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#139ff7}.cke_hc a.cke_dialog_ui_button_ok:hover,.cke_hc a.cke_dialog_ui_button_ok:focus,.cke_hc a.cke_dialog_ui_button_ok:active{border-color:#484848}a.cke_dialog_ui_button_ok.cke_disabled{background:#d1d1d1;border-color:#d1d1d1;cursor:default}a.cke_dialog_ui_button_ok.cke_disabled span{cursor:default}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:28px;line-height:28px;background-color:#fff;border:1px solid #bcbcbc;padding:3px 3px 3px 6px;outline:0;border-radius:2px;margin:0 1px;box-sizing:border-box;width:calc(100% - 2px)!important}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog_ui_labeled_label{margin-left:1px}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog .cke_dark_background{background-color:transparent}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked,.cke_dialog a.cke_btn_reset{margin:2px}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_dialog a.cke_btn_over,.cke_dialog a.cke_btn_locked:hover,.cke_dialog a.cke_btn_locked:focus,.cke_dialog a.cke_btn_locked:active,.cke_dialog a.cke_btn_unlocked:hover,.cke_dialog a.cke_btn_unlocked:focus,.cke_dialog a.cke_btn_unlocked:active,.cke_dialog a.cke_btn_reset:hover,.cke_dialog a.cke_btn_reset:focus,.cke_dialog a.cke_btn_reset:active{cursor:pointer;outline:0;margin:0;border:2px solid #139ff7}.cke_dialog fieldset{border:1px solid #bcbcbc}.cke_dialog fieldset legend{padding:0 6px}.cke_dialog_ui_checkbox,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{display:inline-block}.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{padding-top:5px}.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label{vertical-align:middle}.cke_dialog .ImagePreviewBox{border:1px ridge #bcbcbc;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;cursor:default;letter-spacing:.3px}.cke_dialog_body label+.cke_dialog_ui_labeled_content{margin-top:2px}.cke_dialog_contents_body .cke_dialog_ui_text,.cke_dialog_contents_body .cke_dialog_ui_select,.cke_dialog_contents_body .cke_dialog_ui_hbox_last>a.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid #139ff7;margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid #139ff7}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:#bcbcbc 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid #139ff7}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid #139ff7;padding:6px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0} \ No newline at end of file diff --git a/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/dialog_ie8.css b/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/dialog_ie8.css index 625d1349b8a..8627bc8b458 100644 --- a/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/dialog_ie8.css +++ b/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/dialog_ie8.css @@ -1,5 +1,5 @@ /* -Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#fff}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:12px;cursor:move;position:relative;color:#484848;border-bottom:1px solid #d1d1d1;padding:12px 19px 12px 12px;background:#f8f8f8;letter-spacing:.3px}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border:2px solid rgba(102,102,102,0.2);border-left-color:rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:43px;border-top:1px solid #d1d1d1}.cke_dialog_contents_body{overflow:auto;padding:9px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:33px;display:inline-block;margin:9px 0 0;position:absolute;z-index:2;left:11px}.cke_rtl .cke_dialog_tabs{left:auto;right:11px}a.cke_dialog_tab{height:25px;padding:4px 8px;display:inline-block;cursor:pointer;line-height:26px;outline:0;color:#484848;border:1px solid #d1d1d1;border-radius:3px 3px 0 0;background:#f8f8f8;min-width:90px;text-align:center;margin-left:-1px;letter-spacing:.3px}a.cke_dialog_tab:hover{background-color:#fff}a.cke_dialog_tab:focus{border:2px solid #139ff7;border-bottom-color:#d1d1d1;padding:3px 7px;position:relative;z-index:1}a.cke_dialog_tab_selected{background:#fff;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{border-bottom-color:#fff}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:16px;width:16px;top:11px;z-index:5;opacity:.7;filter:alpha(opacity = 70)}.cke_rtl .cke_dialog_close_button{left:12px}.cke_ltr .cke_dialog_close_button{right:12px}.cke_hc a.cke_dialog_close_button{background-image:none}.cke_hidpi a.cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}a.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}a.cke_dialog_close_button span{display:none}.cke_hc a.cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%;margin-top:12px}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #bcbcbc;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:2px;min-height:28px;margin-left:1px}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:2px solid #139ff7}input.cke_dialog_ui_input_text:focus{padding-left:5px}textarea.cke_dialog_ui_input_textarea:focus{padding:3px 5px}select.cke_dialog_ui_input_select:focus{margin:0;width:100%!important}input.cke_dialog_ui_checkbox_input,input.cke_dialog_ui_radio_input{margin-left:1px;margin-right:2px}input.cke_dialog_ui_checkbox_input:focus,input.cke_dialog_ui_checkbox_input:active,input.cke_dialog_ui_radio_input:focus,input.cke_dialog_ui_radio_input:active{border:0;outline:2px solid #139ff7}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 1px;margin:0;text-align:center;color:#484848;vertical-align:middle;cursor:pointer;border:1px solid #bcbcbc;border-radius:2px;background:#f8f8f8;letter-spacing:.3px;line-height:18px;box-sizing:border-box}.cke_hc a.cke_dialog_ui_button{border-width:3px}span.cke_dialog_ui_button{padding:0 10px;cursor:pointer}a.cke_dialog_ui_button:hover{background:#fff}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border:2px solid #139ff7;outline:0;padding:3px 0}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;background:#09863e;border:1px solid #09863e}.cke_hc a.cke_dialog_ui_button{border:3px solid #bcbcbc}a.cke_dialog_ui_button_ok:hover{background:#53aa78;border-color:#53aa78}a.cke_dialog_ui_button_ok:focus{box-shadow:inset 0 0 0 2px #FFF}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#139ff7}.cke_hc a.cke_dialog_ui_button_ok:hover,.cke_hc a.cke_dialog_ui_button_ok:focus,.cke_hc a.cke_dialog_ui_button_ok:active{border-color:#484848}a.cke_dialog_ui_button_ok.cke_disabled{background:#d1d1d1;border-color:#d1d1d1;cursor:default}a.cke_dialog_ui_button_ok.cke_disabled span{cursor:default}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:28px;line-height:28px;background-color:#fff;border:1px solid #bcbcbc;padding:3px 3px 3px 6px;outline:0;border-radius:2px;margin:0 1px;box-sizing:border-box;width:calc(100% - 2px)!important}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog_ui_labeled_label{margin-left:1px}.cke_dialog .cke_dark_background{background-color:transparent}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked,.cke_dialog a.cke_btn_reset{margin:2px}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_dialog a.cke_btn_over,.cke_dialog a.cke_btn_locked:hover,.cke_dialog a.cke_btn_locked:focus,.cke_dialog a.cke_btn_locked:active,.cke_dialog a.cke_btn_unlocked:hover,.cke_dialog a.cke_btn_unlocked:focus,.cke_dialog a.cke_btn_unlocked:active,.cke_dialog a.cke_btn_reset:hover,.cke_dialog a.cke_btn_reset:focus,.cke_dialog a.cke_btn_reset:active{cursor:pointer;outline:0;margin:0;border:2px solid #139ff7}.cke_dialog fieldset{border:1px solid #bcbcbc}.cke_dialog fieldset legend{padding:0 6px}.cke_dialog_ui_checkbox,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{display:inline-block}.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{padding-top:5px}.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label{vertical-align:middle}.cke_dialog .ImagePreviewBox{border:1px ridge #bcbcbc;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:1px solid #bcbcbc;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;cursor:default;letter-spacing:.3px}.cke_dialog_body label+.cke_dialog_ui_labeled_content{margin-top:2px}.cke_dialog_contents_body .cke_dialog_ui_text,.cke_dialog_contents_body .cke_dialog_ui_select,.cke_dialog_contents_body .cke_dialog_ui_hbox_last>a.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid #139ff7;margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid #139ff7}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last,.cke_dialog_flash_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:#bcbcbc 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid #139ff7}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid #139ff7;padding:6px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}a.cke_dialog_ui_button{min-height:18px}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{min-height:18px}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus{padding-top:4px;padding-bottom:2px}select.cke_dialog_ui_input_select{width:100%!important}select.cke_dialog_ui_input_select:focus{margin-left:1px;width:100%!important;padding-top:2px;padding-bottom:2px} \ No newline at end of file +.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#fff}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:12px;cursor:move;position:relative;color:#484848;border-bottom:1px solid #d1d1d1;padding:12px 19px 12px 12px;background:#f8f8f8;letter-spacing:.3px}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border:2px solid rgba(102,102,102,0.2);border-left-color:rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:43px;border-top:1px solid #d1d1d1}.cke_dialog_contents_body{overflow:auto;padding:9px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:33px;display:inline-block;margin:9px 0 0;position:absolute;z-index:2;left:11px}.cke_rtl .cke_dialog_tabs{left:auto;right:11px}a.cke_dialog_tab{height:25px;padding:4px 8px;display:inline-block;cursor:pointer;line-height:26px;outline:0;color:#484848;border:1px solid #d1d1d1;border-radius:3px 3px 0 0;background:#f8f8f8;min-width:90px;text-align:center;margin-left:-1px;letter-spacing:.3px}a.cke_dialog_tab:hover{background-color:#fff}a.cke_dialog_tab:focus{border:2px solid #139ff7;border-bottom-color:#d1d1d1;padding:3px 7px;position:relative;z-index:1}a.cke_dialog_tab_selected{background:#fff;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{border-bottom-color:#fff}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_hc a.cke_dialog_tab:focus{text-decoration:underline}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:16px;width:16px;top:11px;z-index:5;opacity:.7;filter:alpha(opacity = 70)}.cke_rtl .cke_dialog_close_button{left:12px}.cke_ltr .cke_dialog_close_button{right:12px}.cke_hc a.cke_dialog_close_button{background-image:none}.cke_hidpi a.cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}a.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}a.cke_dialog_close_button span{display:none}.cke_hc a.cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%;margin-top:12px}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #bcbcbc;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:2px;min-height:28px;margin-left:1px}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:2px solid #139ff7}input.cke_dialog_ui_input_text:focus{padding-left:5px}textarea.cke_dialog_ui_input_textarea:focus{padding:3px 5px}select.cke_dialog_ui_input_select:focus{margin:0;width:100%!important}input.cke_dialog_ui_checkbox_input,input.cke_dialog_ui_radio_input{margin-left:1px;margin-right:2px}input.cke_dialog_ui_checkbox_input:focus,input.cke_dialog_ui_checkbox_input:active,input.cke_dialog_ui_radio_input:focus,input.cke_dialog_ui_radio_input:active{border:0;outline:2px solid #139ff7}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 1px;margin:0;text-align:center;color:#484848;vertical-align:middle;cursor:pointer;border:1px solid #bcbcbc;border-radius:2px;background:#f8f8f8;letter-spacing:.3px;line-height:18px;box-sizing:border-box}.cke_hc a.cke_dialog_ui_button{border-width:3px}span.cke_dialog_ui_button{padding:0 10px;cursor:pointer}a.cke_dialog_ui_button:hover{background:#fff}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border:2px solid #139ff7;outline:0;padding:3px 0}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;background:#09863e;border:1px solid #09863e}.cke_hc a.cke_dialog_ui_button{border:1px solid #bcbcbc}a.cke_dialog_ui_button_ok:hover{background:#53aa78;border-color:#53aa78}a.cke_dialog_ui_button_ok:focus{box-shadow:inset 0 0 0 2px #FFF}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#139ff7}.cke_hc a.cke_dialog_ui_button_ok:hover,.cke_hc a.cke_dialog_ui_button_ok:focus,.cke_hc a.cke_dialog_ui_button_ok:active{border-color:#484848}a.cke_dialog_ui_button_ok.cke_disabled{background:#d1d1d1;border-color:#d1d1d1;cursor:default}a.cke_dialog_ui_button_ok.cke_disabled span{cursor:default}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:28px;line-height:28px;background-color:#fff;border:1px solid #bcbcbc;padding:3px 3px 3px 6px;outline:0;border-radius:2px;margin:0 1px;box-sizing:border-box;width:calc(100% - 2px)!important}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog_ui_labeled_label{margin-left:1px}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog .cke_dark_background{background-color:transparent}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked,.cke_dialog a.cke_btn_reset{margin:2px}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_dialog a.cke_btn_over,.cke_dialog a.cke_btn_locked:hover,.cke_dialog a.cke_btn_locked:focus,.cke_dialog a.cke_btn_locked:active,.cke_dialog a.cke_btn_unlocked:hover,.cke_dialog a.cke_btn_unlocked:focus,.cke_dialog a.cke_btn_unlocked:active,.cke_dialog a.cke_btn_reset:hover,.cke_dialog a.cke_btn_reset:focus,.cke_dialog a.cke_btn_reset:active{cursor:pointer;outline:0;margin:0;border:2px solid #139ff7}.cke_dialog fieldset{border:1px solid #bcbcbc}.cke_dialog fieldset legend{padding:0 6px}.cke_dialog_ui_checkbox,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{display:inline-block}.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{padding-top:5px}.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label{vertical-align:middle}.cke_dialog .ImagePreviewBox{border:1px ridge #bcbcbc;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;cursor:default;letter-spacing:.3px}.cke_dialog_body label+.cke_dialog_ui_labeled_content{margin-top:2px}.cke_dialog_contents_body .cke_dialog_ui_text,.cke_dialog_contents_body .cke_dialog_ui_select,.cke_dialog_contents_body .cke_dialog_ui_hbox_last>a.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid #139ff7;margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid #139ff7}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:#bcbcbc 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid #139ff7}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid #139ff7;padding:6px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}a.cke_dialog_ui_button{min-height:18px}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{min-height:18px}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus{padding-top:4px;padding-bottom:2px}select.cke_dialog_ui_input_select{width:100%!important}select.cke_dialog_ui_input_select:focus{margin-left:1px;width:100%!important;padding-top:2px;padding-bottom:2px} \ No newline at end of file diff --git a/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/dialog_iequirks.css b/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/dialog_iequirks.css index c634bfae056..a9a450db99a 100644 --- a/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/dialog_iequirks.css +++ b/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/dialog_iequirks.css @@ -1,5 +1,5 @@ /* -Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#fff}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:12px;cursor:move;position:relative;color:#484848;border-bottom:1px solid #d1d1d1;padding:12px 19px 12px 12px;background:#f8f8f8;letter-spacing:.3px}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border:2px solid rgba(102,102,102,0.2);border-left-color:rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:43px;border-top:1px solid #d1d1d1}.cke_dialog_contents_body{overflow:auto;padding:9px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:33px;display:inline-block;margin:9px 0 0;position:absolute;z-index:2;left:11px}.cke_rtl .cke_dialog_tabs{left:auto;right:11px}a.cke_dialog_tab{height:25px;padding:4px 8px;display:inline-block;cursor:pointer;line-height:26px;outline:0;color:#484848;border:1px solid #d1d1d1;border-radius:3px 3px 0 0;background:#f8f8f8;min-width:90px;text-align:center;margin-left:-1px;letter-spacing:.3px}a.cke_dialog_tab:hover{background-color:#fff}a.cke_dialog_tab:focus{border:2px solid #139ff7;border-bottom-color:#d1d1d1;padding:3px 7px;position:relative;z-index:1}a.cke_dialog_tab_selected{background:#fff;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{border-bottom-color:#fff}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:16px;width:16px;top:11px;z-index:5;opacity:.7;filter:alpha(opacity = 70)}.cke_rtl .cke_dialog_close_button{left:12px}.cke_ltr .cke_dialog_close_button{right:12px}.cke_hc a.cke_dialog_close_button{background-image:none}.cke_hidpi a.cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}a.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}a.cke_dialog_close_button span{display:none}.cke_hc a.cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%;margin-top:12px}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #bcbcbc;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:2px;min-height:28px;margin-left:1px}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:2px solid #139ff7}input.cke_dialog_ui_input_text:focus{padding-left:5px}textarea.cke_dialog_ui_input_textarea:focus{padding:3px 5px}select.cke_dialog_ui_input_select:focus{margin:0;width:100%!important}input.cke_dialog_ui_checkbox_input,input.cke_dialog_ui_radio_input{margin-left:1px;margin-right:2px}input.cke_dialog_ui_checkbox_input:focus,input.cke_dialog_ui_checkbox_input:active,input.cke_dialog_ui_radio_input:focus,input.cke_dialog_ui_radio_input:active{border:0;outline:2px solid #139ff7}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 1px;margin:0;text-align:center;color:#484848;vertical-align:middle;cursor:pointer;border:1px solid #bcbcbc;border-radius:2px;background:#f8f8f8;letter-spacing:.3px;line-height:18px;box-sizing:border-box}.cke_hc a.cke_dialog_ui_button{border-width:3px}span.cke_dialog_ui_button{padding:0 10px;cursor:pointer}a.cke_dialog_ui_button:hover{background:#fff}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border:2px solid #139ff7;outline:0;padding:3px 0}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;background:#09863e;border:1px solid #09863e}.cke_hc a.cke_dialog_ui_button{border:3px solid #bcbcbc}a.cke_dialog_ui_button_ok:hover{background:#53aa78;border-color:#53aa78}a.cke_dialog_ui_button_ok:focus{box-shadow:inset 0 0 0 2px #FFF}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#139ff7}.cke_hc a.cke_dialog_ui_button_ok:hover,.cke_hc a.cke_dialog_ui_button_ok:focus,.cke_hc a.cke_dialog_ui_button_ok:active{border-color:#484848}a.cke_dialog_ui_button_ok.cke_disabled{background:#d1d1d1;border-color:#d1d1d1;cursor:default}a.cke_dialog_ui_button_ok.cke_disabled span{cursor:default}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:28px;line-height:28px;background-color:#fff;border:1px solid #bcbcbc;padding:3px 3px 3px 6px;outline:0;border-radius:2px;margin:0 1px;box-sizing:border-box;width:calc(100% - 2px)!important}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog_ui_labeled_label{margin-left:1px}.cke_dialog .cke_dark_background{background-color:transparent}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked,.cke_dialog a.cke_btn_reset{margin:2px}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_dialog a.cke_btn_over,.cke_dialog a.cke_btn_locked:hover,.cke_dialog a.cke_btn_locked:focus,.cke_dialog a.cke_btn_locked:active,.cke_dialog a.cke_btn_unlocked:hover,.cke_dialog a.cke_btn_unlocked:focus,.cke_dialog a.cke_btn_unlocked:active,.cke_dialog a.cke_btn_reset:hover,.cke_dialog a.cke_btn_reset:focus,.cke_dialog a.cke_btn_reset:active{cursor:pointer;outline:0;margin:0;border:2px solid #139ff7}.cke_dialog fieldset{border:1px solid #bcbcbc}.cke_dialog fieldset legend{padding:0 6px}.cke_dialog_ui_checkbox,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{display:inline-block}.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{padding-top:5px}.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label{vertical-align:middle}.cke_dialog .ImagePreviewBox{border:1px ridge #bcbcbc;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:1px solid #bcbcbc;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;cursor:default;letter-spacing:.3px}.cke_dialog_body label+.cke_dialog_ui_labeled_content{margin-top:2px}.cke_dialog_contents_body .cke_dialog_ui_text,.cke_dialog_contents_body .cke_dialog_ui_select,.cke_dialog_contents_body .cke_dialog_ui_hbox_last>a.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid #139ff7;margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid #139ff7}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last,.cke_dialog_flash_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:#bcbcbc 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid #139ff7}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid #139ff7;padding:6px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_footer{filter:""} \ No newline at end of file +.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#fff}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:12px;cursor:move;position:relative;color:#484848;border-bottom:1px solid #d1d1d1;padding:12px 19px 12px 12px;background:#f8f8f8;letter-spacing:.3px}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border:2px solid rgba(102,102,102,0.2);border-left-color:rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:43px;border-top:1px solid #d1d1d1}.cke_dialog_contents_body{overflow:auto;padding:9px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:33px;display:inline-block;margin:9px 0 0;position:absolute;z-index:2;left:11px}.cke_rtl .cke_dialog_tabs{left:auto;right:11px}a.cke_dialog_tab{height:25px;padding:4px 8px;display:inline-block;cursor:pointer;line-height:26px;outline:0;color:#484848;border:1px solid #d1d1d1;border-radius:3px 3px 0 0;background:#f8f8f8;min-width:90px;text-align:center;margin-left:-1px;letter-spacing:.3px}a.cke_dialog_tab:hover{background-color:#fff}a.cke_dialog_tab:focus{border:2px solid #139ff7;border-bottom-color:#d1d1d1;padding:3px 7px;position:relative;z-index:1}a.cke_dialog_tab_selected{background:#fff;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{border-bottom-color:#fff}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_hc a.cke_dialog_tab:focus{text-decoration:underline}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:16px;width:16px;top:11px;z-index:5;opacity:.7;filter:alpha(opacity = 70)}.cke_rtl .cke_dialog_close_button{left:12px}.cke_ltr .cke_dialog_close_button{right:12px}.cke_hc a.cke_dialog_close_button{background-image:none}.cke_hidpi a.cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}a.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}a.cke_dialog_close_button span{display:none}.cke_hc a.cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%;margin-top:12px}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #bcbcbc;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:2px;min-height:28px;margin-left:1px}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:2px solid #139ff7}input.cke_dialog_ui_input_text:focus{padding-left:5px}textarea.cke_dialog_ui_input_textarea:focus{padding:3px 5px}select.cke_dialog_ui_input_select:focus{margin:0;width:100%!important}input.cke_dialog_ui_checkbox_input,input.cke_dialog_ui_radio_input{margin-left:1px;margin-right:2px}input.cke_dialog_ui_checkbox_input:focus,input.cke_dialog_ui_checkbox_input:active,input.cke_dialog_ui_radio_input:focus,input.cke_dialog_ui_radio_input:active{border:0;outline:2px solid #139ff7}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 1px;margin:0;text-align:center;color:#484848;vertical-align:middle;cursor:pointer;border:1px solid #bcbcbc;border-radius:2px;background:#f8f8f8;letter-spacing:.3px;line-height:18px;box-sizing:border-box}.cke_hc a.cke_dialog_ui_button{border-width:3px}span.cke_dialog_ui_button{padding:0 10px;cursor:pointer}a.cke_dialog_ui_button:hover{background:#fff}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border:2px solid #139ff7;outline:0;padding:3px 0}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;background:#09863e;border:1px solid #09863e}.cke_hc a.cke_dialog_ui_button{border:1px solid #bcbcbc}a.cke_dialog_ui_button_ok:hover{background:#53aa78;border-color:#53aa78}a.cke_dialog_ui_button_ok:focus{box-shadow:inset 0 0 0 2px #FFF}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#139ff7}.cke_hc a.cke_dialog_ui_button_ok:hover,.cke_hc a.cke_dialog_ui_button_ok:focus,.cke_hc a.cke_dialog_ui_button_ok:active{border-color:#484848}a.cke_dialog_ui_button_ok.cke_disabled{background:#d1d1d1;border-color:#d1d1d1;cursor:default}a.cke_dialog_ui_button_ok.cke_disabled span{cursor:default}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:28px;line-height:28px;background-color:#fff;border:1px solid #bcbcbc;padding:3px 3px 3px 6px;outline:0;border-radius:2px;margin:0 1px;box-sizing:border-box;width:calc(100% - 2px)!important}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog_ui_labeled_label{margin-left:1px}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog .cke_dark_background{background-color:transparent}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked,.cke_dialog a.cke_btn_reset{margin:2px}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_dialog a.cke_btn_over,.cke_dialog a.cke_btn_locked:hover,.cke_dialog a.cke_btn_locked:focus,.cke_dialog a.cke_btn_locked:active,.cke_dialog a.cke_btn_unlocked:hover,.cke_dialog a.cke_btn_unlocked:focus,.cke_dialog a.cke_btn_unlocked:active,.cke_dialog a.cke_btn_reset:hover,.cke_dialog a.cke_btn_reset:focus,.cke_dialog a.cke_btn_reset:active{cursor:pointer;outline:0;margin:0;border:2px solid #139ff7}.cke_dialog fieldset{border:1px solid #bcbcbc}.cke_dialog fieldset legend{padding:0 6px}.cke_dialog_ui_checkbox,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{display:inline-block}.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{padding-top:5px}.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label{vertical-align:middle}.cke_dialog .ImagePreviewBox{border:1px ridge #bcbcbc;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;cursor:default;letter-spacing:.3px}.cke_dialog_body label+.cke_dialog_ui_labeled_content{margin-top:2px}.cke_dialog_contents_body .cke_dialog_ui_text,.cke_dialog_contents_body .cke_dialog_ui_select,.cke_dialog_contents_body .cke_dialog_ui_hbox_last>a.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid #139ff7;margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid #139ff7}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:#bcbcbc 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid #139ff7}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid #139ff7;padding:6px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_footer{filter:""} \ No newline at end of file diff --git a/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/editor.css b/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/editor.css index d6f888e9831..f706e84427d 100644 --- a/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/editor.css +++ b/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/editor.css @@ -1,5 +1,5 @@ /* -Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus,.cke_combo_off a.cke_combo_button:active{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -144px !important;}.cke_button__bidiltr_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -168px !important;}.cke_button__bidirtl_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -192px !important;}.cke_button__blockquote_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -216px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -240px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -264px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -288px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -312px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -336px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -360px !important;}.cke_button__bgcolor_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -384px !important;}.cke_button__textcolor_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -408px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -432px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -456px !important;}.cke_button__copyformatting_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -480px !important;}.cke_button__creatediv_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -504px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -528px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -552px !important;}.cke_button__replace_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -576px !important;}.cke_button__flash_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -600px !important;}.cke_button__button_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -624px !important;}.cke_button__checkbox_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -648px !important;}.cke_button__form_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -672px !important;}.cke_button__hiddenfield_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -696px !important;}.cke_button__imagebutton_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -720px !important;}.cke_button__radio_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -744px !important;}.cke_rtl .cke_button__select_icon, .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -768px !important;}.cke_ltr .cke_button__select_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -792px !important;}.cke_rtl .cke_button__textarea_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -816px !important;}.cke_ltr .cke_button__textarea_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -840px !important;}.cke_rtl .cke_button__textfield_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -864px !important;}.cke_ltr .cke_button__textfield_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -888px !important;}.cke_button__horizontalrule_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -912px !important;}.cke_button__iframe_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -936px !important;}.cke_button__image_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -960px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -984px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1008px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1032px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1056px !important;}.cke_button__smiley_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1080px !important;}.cke_button__justifyblock_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1104px !important;}.cke_button__justifycenter_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1128px !important;}.cke_button__justifyleft_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1152px !important;}.cke_button__justifyright_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1176px !important;}.cke_button__language_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1200px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1224px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1248px !important;}.cke_button__link_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1272px !important;}.cke_button__unlink_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1296px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1320px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1344px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1368px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1392px !important;}.cke_button__maximize_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1416px !important;}.cke_rtl .cke_button__newpage_icon, .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1440px !important;}.cke_ltr .cke_button__newpage_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1464px !important;}.cke_rtl .cke_button__pagebreak_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1488px !important;}.cke_ltr .cke_button__pagebreak_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1512px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1536px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1560px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1584px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1608px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1632px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1656px !important;}.cke_button__print_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1680px !important;}.cke_button__removeformat_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1704px !important;}.cke_button__save_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1728px !important;}.cke_button__selectall_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1752px !important;}.cke_rtl .cke_button__showblocks_icon, .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1776px !important;}.cke_ltr .cke_button__showblocks_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1800px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1824px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1848px !important;}.cke_button__specialchar_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1872px !important;}.cke_button__scayt_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1896px !important;}.cke_button__table_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1920px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1944px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1968px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1992px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -2016px !important;}.cke_button__spellchecker_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -2040px !important;}.cke_rtl .cke_button__sourcedialog_icon, .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -2064px !important;}.cke_ltr .cke_button__sourcedialog_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -2088px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidiltr_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidirtl_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__copyformatting_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_button__creatediv_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__flash_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__button_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__checkbox_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__form_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_hidpi .cke_button__hiddenfield_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_button__imagebutton_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_hidpi .cke_button__radio_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__select_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textarea_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textfield_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_button__smiley_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_hidpi .cke_button__language_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1224px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1248px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1272px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1296px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1320px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1344px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1368px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1392px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1416px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__newpage_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1440px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1464px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1488px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1512px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1536px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1560px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1584px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1608px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1632px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1656px !important;background-size: 16px !important;}.cke_hidpi .cke_button__print_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1680px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1704px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1728px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1752px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__showblocks_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1776px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1800px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1824px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1848px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1872px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1896px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1920px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1944px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1968px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1992px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -2016px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -2040px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -2064px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -2088px !important;background-size: 16px !important;} \ No newline at end of file +.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus,.cke_combo_off a.cke_combo_button:active{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:#fff;border:1px solid #bcbcbc}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -144px !important;}.cke_button__bidiltr_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -168px !important;}.cke_button__bidirtl_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -192px !important;}.cke_button__blockquote_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -216px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -240px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -264px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -288px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -312px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -336px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -360px !important;}.cke_button__bgcolor_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -384px !important;}.cke_button__textcolor_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -408px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -432px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -456px !important;}.cke_button__copyformatting_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -480px !important;}.cke_button__creatediv_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -504px !important;}.cke_button__exportpdf_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -528px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -552px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -576px !important;}.cke_button__replace_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -600px !important;}.cke_button__button_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -624px !important;}.cke_button__checkbox_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -648px !important;}.cke_button__form_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -672px !important;}.cke_button__hiddenfield_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -696px !important;}.cke_button__imagebutton_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -720px !important;}.cke_button__radio_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -744px !important;}.cke_rtl .cke_button__select_icon, .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -768px !important;}.cke_ltr .cke_button__select_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -792px !important;}.cke_rtl .cke_button__textarea_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -816px !important;}.cke_ltr .cke_button__textarea_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -840px !important;}.cke_rtl .cke_button__textfield_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -864px !important;}.cke_ltr .cke_button__textfield_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -888px !important;}.cke_button__horizontalrule_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -912px !important;}.cke_button__iframe_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -936px !important;}.cke_button__image_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -960px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -984px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1008px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1032px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1056px !important;}.cke_button__smiley_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1080px !important;}.cke_button__justifyblock_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1104px !important;}.cke_button__justifycenter_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1128px !important;}.cke_button__justifyleft_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1152px !important;}.cke_button__justifyright_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1176px !important;}.cke_button__language_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1200px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1224px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1248px !important;}.cke_button__link_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1272px !important;}.cke_button__unlink_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1296px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1320px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1344px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1368px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1392px !important;}.cke_button__maximize_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1416px !important;}.cke_rtl .cke_button__newpage_icon, .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1440px !important;}.cke_ltr .cke_button__newpage_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1464px !important;}.cke_rtl .cke_button__pagebreak_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1488px !important;}.cke_ltr .cke_button__pagebreak_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1512px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1536px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1560px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1584px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1608px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1632px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1656px !important;}.cke_button__print_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1680px !important;}.cke_button__removeformat_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1704px !important;}.cke_button__save_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1728px !important;}.cke_button__selectall_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1752px !important;}.cke_rtl .cke_button__showblocks_icon, .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1776px !important;}.cke_ltr .cke_button__showblocks_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1800px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1824px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1848px !important;}.cke_button__specialchar_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1872px !important;}.cke_button__scayt_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1896px !important;}.cke_button__table_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1920px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1944px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1968px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1992px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -2016px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidiltr_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidirtl_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__copyformatting_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_button__creatediv_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_button__exportpdf_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__button_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__checkbox_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__form_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_hidpi .cke_button__hiddenfield_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_button__imagebutton_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_hidpi .cke_button__radio_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__select_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textarea_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textfield_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_button__smiley_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_hidpi .cke_button__language_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1224px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1248px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1272px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1296px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1320px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1344px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1368px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1392px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1416px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__newpage_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1440px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1464px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1488px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1512px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1536px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1560px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1584px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1608px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1632px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1656px !important;background-size: 16px !important;}.cke_hidpi .cke_button__print_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1680px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1704px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1728px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1752px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__showblocks_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1776px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1800px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1824px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1848px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1872px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1896px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1920px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1944px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1968px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1992px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -2016px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/editor_gecko.css b/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/editor_gecko.css index ac2bc8c3290..b9080ae9529 100644 --- a/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/editor_gecko.css +++ b/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/editor_gecko.css @@ -1,5 +1,5 @@ /* -Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus,.cke_combo_off a.cke_combo_button:active{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_bottom{padding-bottom:3px}.cke_combo_text{margin-bottom:-1px;margin-top:1px}.cke_button__about_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -144px !important;}.cke_button__bidiltr_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -168px !important;}.cke_button__bidirtl_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -192px !important;}.cke_button__blockquote_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -216px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -240px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -264px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -288px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -312px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -336px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -360px !important;}.cke_button__bgcolor_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -384px !important;}.cke_button__textcolor_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -408px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -432px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -456px !important;}.cke_button__copyformatting_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -480px !important;}.cke_button__creatediv_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -504px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -528px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -552px !important;}.cke_button__replace_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -576px !important;}.cke_button__flash_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -600px !important;}.cke_button__button_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -624px !important;}.cke_button__checkbox_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -648px !important;}.cke_button__form_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -672px !important;}.cke_button__hiddenfield_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -696px !important;}.cke_button__imagebutton_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -720px !important;}.cke_button__radio_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -744px !important;}.cke_rtl .cke_button__select_icon, .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -768px !important;}.cke_ltr .cke_button__select_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -792px !important;}.cke_rtl .cke_button__textarea_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -816px !important;}.cke_ltr .cke_button__textarea_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -840px !important;}.cke_rtl .cke_button__textfield_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -864px !important;}.cke_ltr .cke_button__textfield_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -888px !important;}.cke_button__horizontalrule_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -912px !important;}.cke_button__iframe_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -936px !important;}.cke_button__image_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -960px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -984px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1008px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1032px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1056px !important;}.cke_button__smiley_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1080px !important;}.cke_button__justifyblock_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1104px !important;}.cke_button__justifycenter_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1128px !important;}.cke_button__justifyleft_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1152px !important;}.cke_button__justifyright_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1176px !important;}.cke_button__language_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1200px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1224px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1248px !important;}.cke_button__link_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1272px !important;}.cke_button__unlink_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1296px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1320px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1344px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1368px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1392px !important;}.cke_button__maximize_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1416px !important;}.cke_rtl .cke_button__newpage_icon, .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1440px !important;}.cke_ltr .cke_button__newpage_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1464px !important;}.cke_rtl .cke_button__pagebreak_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1488px !important;}.cke_ltr .cke_button__pagebreak_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1512px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1536px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1560px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1584px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1608px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1632px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1656px !important;}.cke_button__print_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1680px !important;}.cke_button__removeformat_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1704px !important;}.cke_button__save_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1728px !important;}.cke_button__selectall_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1752px !important;}.cke_rtl .cke_button__showblocks_icon, .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1776px !important;}.cke_ltr .cke_button__showblocks_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1800px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1824px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1848px !important;}.cke_button__specialchar_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1872px !important;}.cke_button__scayt_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1896px !important;}.cke_button__table_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1920px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1944px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1968px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1992px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -2016px !important;}.cke_button__spellchecker_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -2040px !important;}.cke_rtl .cke_button__sourcedialog_icon, .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -2064px !important;}.cke_ltr .cke_button__sourcedialog_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -2088px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidiltr_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidirtl_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__copyformatting_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_button__creatediv_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__flash_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__button_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__checkbox_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__form_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_hidpi .cke_button__hiddenfield_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_button__imagebutton_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_hidpi .cke_button__radio_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__select_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textarea_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textfield_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_button__smiley_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_hidpi .cke_button__language_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1224px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1248px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1272px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1296px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1320px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1344px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1368px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1392px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1416px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__newpage_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1440px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1464px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1488px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1512px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1536px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1560px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1584px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1608px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1632px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1656px !important;background-size: 16px !important;}.cke_hidpi .cke_button__print_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1680px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1704px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1728px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1752px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__showblocks_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1776px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1800px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1824px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1848px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1872px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1896px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1920px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1944px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1968px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1992px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -2016px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -2040px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -2064px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -2088px !important;background-size: 16px !important;} \ No newline at end of file +.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus,.cke_combo_off a.cke_combo_button:active{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:#fff;border:1px solid #bcbcbc}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_bottom{padding-bottom:3px}.cke_combo_text{margin-bottom:-1px;margin-top:1px}.cke_button__about_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -144px !important;}.cke_button__bidiltr_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -168px !important;}.cke_button__bidirtl_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -192px !important;}.cke_button__blockquote_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -216px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -240px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -264px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -288px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -312px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -336px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -360px !important;}.cke_button__bgcolor_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -384px !important;}.cke_button__textcolor_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -408px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -432px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -456px !important;}.cke_button__copyformatting_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -480px !important;}.cke_button__creatediv_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -504px !important;}.cke_button__exportpdf_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -528px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -552px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -576px !important;}.cke_button__replace_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -600px !important;}.cke_button__button_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -624px !important;}.cke_button__checkbox_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -648px !important;}.cke_button__form_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -672px !important;}.cke_button__hiddenfield_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -696px !important;}.cke_button__imagebutton_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -720px !important;}.cke_button__radio_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -744px !important;}.cke_rtl .cke_button__select_icon, .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -768px !important;}.cke_ltr .cke_button__select_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -792px !important;}.cke_rtl .cke_button__textarea_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -816px !important;}.cke_ltr .cke_button__textarea_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -840px !important;}.cke_rtl .cke_button__textfield_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -864px !important;}.cke_ltr .cke_button__textfield_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -888px !important;}.cke_button__horizontalrule_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -912px !important;}.cke_button__iframe_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -936px !important;}.cke_button__image_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -960px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -984px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1008px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1032px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1056px !important;}.cke_button__smiley_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1080px !important;}.cke_button__justifyblock_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1104px !important;}.cke_button__justifycenter_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1128px !important;}.cke_button__justifyleft_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1152px !important;}.cke_button__justifyright_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1176px !important;}.cke_button__language_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1200px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1224px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1248px !important;}.cke_button__link_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1272px !important;}.cke_button__unlink_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1296px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1320px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1344px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1368px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1392px !important;}.cke_button__maximize_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1416px !important;}.cke_rtl .cke_button__newpage_icon, .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1440px !important;}.cke_ltr .cke_button__newpage_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1464px !important;}.cke_rtl .cke_button__pagebreak_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1488px !important;}.cke_ltr .cke_button__pagebreak_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1512px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1536px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1560px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1584px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1608px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1632px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1656px !important;}.cke_button__print_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1680px !important;}.cke_button__removeformat_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1704px !important;}.cke_button__save_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1728px !important;}.cke_button__selectall_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1752px !important;}.cke_rtl .cke_button__showblocks_icon, .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1776px !important;}.cke_ltr .cke_button__showblocks_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1800px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1824px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1848px !important;}.cke_button__specialchar_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1872px !important;}.cke_button__scayt_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1896px !important;}.cke_button__table_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1920px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1944px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1968px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1992px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -2016px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidiltr_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidirtl_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__copyformatting_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_button__creatediv_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_button__exportpdf_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__button_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__checkbox_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__form_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_hidpi .cke_button__hiddenfield_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_button__imagebutton_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_hidpi .cke_button__radio_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__select_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textarea_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textfield_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_button__smiley_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_hidpi .cke_button__language_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1224px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1248px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1272px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1296px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1320px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1344px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1368px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1392px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1416px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__newpage_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1440px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1464px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1488px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1512px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1536px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1560px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1584px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1608px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1632px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1656px !important;background-size: 16px !important;}.cke_hidpi .cke_button__print_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1680px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1704px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1728px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1752px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__showblocks_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1776px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1800px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1824px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1848px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1872px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1896px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1920px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1944px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1968px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1992px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -2016px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/editor_ie.css b/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/editor_ie.css index d4d1e68c6af..b5797adf434 100644 --- a/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/editor_ie.css +++ b/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/editor_ie.css @@ -1,5 +1,5 @@ /* -Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus,.cke_combo_off a.cke_combo_button:active{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_button__about_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -144px !important;}.cke_button__bidiltr_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -168px !important;}.cke_button__bidirtl_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -192px !important;}.cke_button__blockquote_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -216px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -240px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -264px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -288px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -312px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -336px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -360px !important;}.cke_button__bgcolor_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -384px !important;}.cke_button__textcolor_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -408px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -432px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -456px !important;}.cke_button__copyformatting_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -480px !important;}.cke_button__creatediv_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -504px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -528px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -552px !important;}.cke_button__replace_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -576px !important;}.cke_button__flash_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -600px !important;}.cke_button__button_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -624px !important;}.cke_button__checkbox_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -648px !important;}.cke_button__form_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -672px !important;}.cke_button__hiddenfield_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -696px !important;}.cke_button__imagebutton_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -720px !important;}.cke_button__radio_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -744px !important;}.cke_rtl .cke_button__select_icon, .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -768px !important;}.cke_ltr .cke_button__select_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -792px !important;}.cke_rtl .cke_button__textarea_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -816px !important;}.cke_ltr .cke_button__textarea_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -840px !important;}.cke_rtl .cke_button__textfield_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -864px !important;}.cke_ltr .cke_button__textfield_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -888px !important;}.cke_button__horizontalrule_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -912px !important;}.cke_button__iframe_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -936px !important;}.cke_button__image_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -960px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -984px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1008px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1032px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1056px !important;}.cke_button__smiley_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1080px !important;}.cke_button__justifyblock_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1104px !important;}.cke_button__justifycenter_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1128px !important;}.cke_button__justifyleft_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1152px !important;}.cke_button__justifyright_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1176px !important;}.cke_button__language_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1200px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1224px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1248px !important;}.cke_button__link_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1272px !important;}.cke_button__unlink_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1296px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1320px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1344px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1368px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1392px !important;}.cke_button__maximize_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1416px !important;}.cke_rtl .cke_button__newpage_icon, .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1440px !important;}.cke_ltr .cke_button__newpage_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1464px !important;}.cke_rtl .cke_button__pagebreak_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1488px !important;}.cke_ltr .cke_button__pagebreak_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1512px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1536px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1560px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1584px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1608px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1632px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1656px !important;}.cke_button__print_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1680px !important;}.cke_button__removeformat_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1704px !important;}.cke_button__save_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1728px !important;}.cke_button__selectall_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1752px !important;}.cke_rtl .cke_button__showblocks_icon, .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1776px !important;}.cke_ltr .cke_button__showblocks_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1800px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1824px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1848px !important;}.cke_button__specialchar_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1872px !important;}.cke_button__scayt_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1896px !important;}.cke_button__table_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1920px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1944px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1968px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1992px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -2016px !important;}.cke_button__spellchecker_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -2040px !important;}.cke_rtl .cke_button__sourcedialog_icon, .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -2064px !important;}.cke_ltr .cke_button__sourcedialog_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -2088px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidiltr_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidirtl_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__copyformatting_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_button__creatediv_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__flash_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__button_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__checkbox_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__form_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_hidpi .cke_button__hiddenfield_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_button__imagebutton_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_hidpi .cke_button__radio_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__select_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textarea_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textfield_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_button__smiley_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_hidpi .cke_button__language_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1224px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1248px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1272px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1296px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1320px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1344px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1368px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1392px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1416px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__newpage_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1440px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1464px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1488px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1512px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1536px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1560px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1584px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1608px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1632px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1656px !important;background-size: 16px !important;}.cke_hidpi .cke_button__print_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1680px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1704px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1728px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1752px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__showblocks_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1776px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1800px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1824px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1848px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1872px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1896px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1920px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1944px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1968px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1992px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -2016px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -2040px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -2064px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -2088px !important;background-size: 16px !important;} \ No newline at end of file +.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus,.cke_combo_off a.cke_combo_button:active{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:#fff;border:1px solid #bcbcbc}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_button__about_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -144px !important;}.cke_button__bidiltr_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -168px !important;}.cke_button__bidirtl_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -192px !important;}.cke_button__blockquote_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -216px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -240px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -264px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -288px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -312px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -336px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -360px !important;}.cke_button__bgcolor_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -384px !important;}.cke_button__textcolor_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -408px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -432px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -456px !important;}.cke_button__copyformatting_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -480px !important;}.cke_button__creatediv_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -504px !important;}.cke_button__exportpdf_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -528px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -552px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -576px !important;}.cke_button__replace_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -600px !important;}.cke_button__button_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -624px !important;}.cke_button__checkbox_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -648px !important;}.cke_button__form_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -672px !important;}.cke_button__hiddenfield_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -696px !important;}.cke_button__imagebutton_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -720px !important;}.cke_button__radio_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -744px !important;}.cke_rtl .cke_button__select_icon, .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -768px !important;}.cke_ltr .cke_button__select_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -792px !important;}.cke_rtl .cke_button__textarea_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -816px !important;}.cke_ltr .cke_button__textarea_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -840px !important;}.cke_rtl .cke_button__textfield_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -864px !important;}.cke_ltr .cke_button__textfield_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -888px !important;}.cke_button__horizontalrule_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -912px !important;}.cke_button__iframe_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -936px !important;}.cke_button__image_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -960px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -984px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1008px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1032px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1056px !important;}.cke_button__smiley_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1080px !important;}.cke_button__justifyblock_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1104px !important;}.cke_button__justifycenter_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1128px !important;}.cke_button__justifyleft_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1152px !important;}.cke_button__justifyright_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1176px !important;}.cke_button__language_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1200px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1224px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1248px !important;}.cke_button__link_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1272px !important;}.cke_button__unlink_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1296px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1320px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1344px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1368px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1392px !important;}.cke_button__maximize_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1416px !important;}.cke_rtl .cke_button__newpage_icon, .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1440px !important;}.cke_ltr .cke_button__newpage_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1464px !important;}.cke_rtl .cke_button__pagebreak_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1488px !important;}.cke_ltr .cke_button__pagebreak_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1512px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1536px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1560px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1584px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1608px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1632px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1656px !important;}.cke_button__print_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1680px !important;}.cke_button__removeformat_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1704px !important;}.cke_button__save_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1728px !important;}.cke_button__selectall_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1752px !important;}.cke_rtl .cke_button__showblocks_icon, .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1776px !important;}.cke_ltr .cke_button__showblocks_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1800px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1824px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1848px !important;}.cke_button__specialchar_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1872px !important;}.cke_button__scayt_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1896px !important;}.cke_button__table_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1920px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1944px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1968px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1992px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -2016px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidiltr_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidirtl_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__copyformatting_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_button__creatediv_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_button__exportpdf_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__button_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__checkbox_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__form_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_hidpi .cke_button__hiddenfield_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_button__imagebutton_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_hidpi .cke_button__radio_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__select_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textarea_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textfield_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_button__smiley_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_hidpi .cke_button__language_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1224px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1248px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1272px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1296px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1320px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1344px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1368px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1392px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1416px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__newpage_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1440px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1464px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1488px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1512px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1536px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1560px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1584px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1608px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1632px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1656px !important;background-size: 16px !important;}.cke_hidpi .cke_button__print_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1680px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1704px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1728px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1752px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__showblocks_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1776px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1800px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1824px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1848px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1872px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1896px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1920px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1944px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1968px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1992px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -2016px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/editor_ie8.css b/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/editor_ie8.css index 7f1f2167a7b..acf8132314e 100644 --- a/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/editor_ie8.css +++ b/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/editor_ie8.css @@ -1,5 +1,5 @@ /* -Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus,.cke_combo_off a.cke_combo_button:active{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_toolbar{position:relative}.cke_rtl .cke_toolbar_end{right:auto;left:0}.cke_toolbar_end:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:1px;right:2px}.cke_rtl .cke_toolbar_end:after{right:auto;left:2px}.cke_hc .cke_toolbar_end:after{top:2px;right:5px;border-color:#000}.cke_hc.cke_rtl .cke_toolbar_end:after{right:auto;left:5px}.cke_combo+.cke_toolbar_end:after,.cke_toolbar.cke_toolbar_last .cke_toolbar_end:after{content:none;border:0}.cke_combo+.cke_toolgroup+.cke_toolbar_end:after{right:0}.cke_rtl .cke_combo+.cke_toolgroup+.cke_toolbar_end:after{right:auto;left:0}.cke_button__about_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -144px !important;}.cke_button__bidiltr_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -168px !important;}.cke_button__bidirtl_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -192px !important;}.cke_button__blockquote_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -216px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -240px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -264px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -288px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -312px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -336px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -360px !important;}.cke_button__bgcolor_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -384px !important;}.cke_button__textcolor_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -408px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -432px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -456px !important;}.cke_button__copyformatting_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -480px !important;}.cke_button__creatediv_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -504px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -528px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -552px !important;}.cke_button__replace_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -576px !important;}.cke_button__flash_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -600px !important;}.cke_button__button_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -624px !important;}.cke_button__checkbox_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -648px !important;}.cke_button__form_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -672px !important;}.cke_button__hiddenfield_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -696px !important;}.cke_button__imagebutton_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -720px !important;}.cke_button__radio_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -744px !important;}.cke_rtl .cke_button__select_icon, .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -768px !important;}.cke_ltr .cke_button__select_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -792px !important;}.cke_rtl .cke_button__textarea_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -816px !important;}.cke_ltr .cke_button__textarea_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -840px !important;}.cke_rtl .cke_button__textfield_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -864px !important;}.cke_ltr .cke_button__textfield_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -888px !important;}.cke_button__horizontalrule_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -912px !important;}.cke_button__iframe_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -936px !important;}.cke_button__image_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -960px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -984px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1008px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1032px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1056px !important;}.cke_button__smiley_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1080px !important;}.cke_button__justifyblock_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1104px !important;}.cke_button__justifycenter_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1128px !important;}.cke_button__justifyleft_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1152px !important;}.cke_button__justifyright_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1176px !important;}.cke_button__language_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1200px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1224px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1248px !important;}.cke_button__link_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1272px !important;}.cke_button__unlink_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1296px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1320px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1344px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1368px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1392px !important;}.cke_button__maximize_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1416px !important;}.cke_rtl .cke_button__newpage_icon, .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1440px !important;}.cke_ltr .cke_button__newpage_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1464px !important;}.cke_rtl .cke_button__pagebreak_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1488px !important;}.cke_ltr .cke_button__pagebreak_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1512px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1536px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1560px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1584px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1608px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1632px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1656px !important;}.cke_button__print_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1680px !important;}.cke_button__removeformat_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1704px !important;}.cke_button__save_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1728px !important;}.cke_button__selectall_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1752px !important;}.cke_rtl .cke_button__showblocks_icon, .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1776px !important;}.cke_ltr .cke_button__showblocks_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1800px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1824px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1848px !important;}.cke_button__specialchar_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1872px !important;}.cke_button__scayt_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1896px !important;}.cke_button__table_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1920px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1944px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1968px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1992px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -2016px !important;}.cke_button__spellchecker_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -2040px !important;}.cke_rtl .cke_button__sourcedialog_icon, .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -2064px !important;}.cke_ltr .cke_button__sourcedialog_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -2088px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidiltr_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidirtl_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__copyformatting_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_button__creatediv_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__flash_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__button_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__checkbox_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__form_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_hidpi .cke_button__hiddenfield_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_button__imagebutton_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_hidpi .cke_button__radio_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__select_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textarea_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textfield_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_button__smiley_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_hidpi .cke_button__language_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1224px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1248px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1272px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1296px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1320px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1344px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1368px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1392px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1416px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__newpage_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1440px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1464px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1488px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1512px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1536px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1560px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1584px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1608px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1632px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1656px !important;background-size: 16px !important;}.cke_hidpi .cke_button__print_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1680px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1704px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1728px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1752px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__showblocks_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1776px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1800px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1824px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1848px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1872px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1896px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1920px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1944px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1968px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1992px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -2016px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -2040px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -2064px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -2088px !important;background-size: 16px !important;} \ No newline at end of file +.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus,.cke_combo_off a.cke_combo_button:active{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:#fff;border:1px solid #bcbcbc}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_toolbar{position:relative}.cke_rtl .cke_toolbar_end{right:auto;left:0}.cke_toolbar_end:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:1px;right:2px}.cke_rtl .cke_toolbar_end:after{right:auto;left:2px}.cke_hc .cke_toolbar_end:after{top:2px;right:5px;border-color:#000}.cke_hc.cke_rtl .cke_toolbar_end:after{right:auto;left:5px}.cke_combo+.cke_toolbar_end:after,.cke_toolbar.cke_toolbar_last .cke_toolbar_end:after{content:none;border:0}.cke_combo+.cke_toolgroup+.cke_toolbar_end:after{right:0}.cke_rtl .cke_combo+.cke_toolgroup+.cke_toolbar_end:after{right:auto;left:0}.cke_button__about_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -144px !important;}.cke_button__bidiltr_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -168px !important;}.cke_button__bidirtl_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -192px !important;}.cke_button__blockquote_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -216px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -240px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -264px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -288px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -312px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -336px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -360px !important;}.cke_button__bgcolor_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -384px !important;}.cke_button__textcolor_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -408px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -432px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -456px !important;}.cke_button__copyformatting_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -480px !important;}.cke_button__creatediv_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -504px !important;}.cke_button__exportpdf_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -528px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -552px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -576px !important;}.cke_button__replace_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -600px !important;}.cke_button__button_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -624px !important;}.cke_button__checkbox_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -648px !important;}.cke_button__form_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -672px !important;}.cke_button__hiddenfield_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -696px !important;}.cke_button__imagebutton_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -720px !important;}.cke_button__radio_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -744px !important;}.cke_rtl .cke_button__select_icon, .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -768px !important;}.cke_ltr .cke_button__select_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -792px !important;}.cke_rtl .cke_button__textarea_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -816px !important;}.cke_ltr .cke_button__textarea_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -840px !important;}.cke_rtl .cke_button__textfield_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -864px !important;}.cke_ltr .cke_button__textfield_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -888px !important;}.cke_button__horizontalrule_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -912px !important;}.cke_button__iframe_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -936px !important;}.cke_button__image_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -960px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -984px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1008px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1032px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1056px !important;}.cke_button__smiley_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1080px !important;}.cke_button__justifyblock_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1104px !important;}.cke_button__justifycenter_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1128px !important;}.cke_button__justifyleft_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1152px !important;}.cke_button__justifyright_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1176px !important;}.cke_button__language_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1200px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1224px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1248px !important;}.cke_button__link_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1272px !important;}.cke_button__unlink_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1296px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1320px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1344px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1368px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1392px !important;}.cke_button__maximize_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1416px !important;}.cke_rtl .cke_button__newpage_icon, .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1440px !important;}.cke_ltr .cke_button__newpage_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1464px !important;}.cke_rtl .cke_button__pagebreak_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1488px !important;}.cke_ltr .cke_button__pagebreak_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1512px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1536px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1560px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1584px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1608px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1632px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1656px !important;}.cke_button__print_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1680px !important;}.cke_button__removeformat_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1704px !important;}.cke_button__save_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1728px !important;}.cke_button__selectall_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1752px !important;}.cke_rtl .cke_button__showblocks_icon, .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1776px !important;}.cke_ltr .cke_button__showblocks_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1800px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1824px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1848px !important;}.cke_button__specialchar_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1872px !important;}.cke_button__scayt_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1896px !important;}.cke_button__table_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1920px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1944px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1968px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1992px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -2016px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidiltr_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidirtl_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__copyformatting_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_button__creatediv_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_button__exportpdf_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__button_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__checkbox_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__form_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_hidpi .cke_button__hiddenfield_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_button__imagebutton_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_hidpi .cke_button__radio_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__select_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textarea_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textfield_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_button__smiley_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_hidpi .cke_button__language_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1224px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1248px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1272px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1296px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1320px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1344px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1368px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1392px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1416px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__newpage_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1440px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1464px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1488px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1512px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1536px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1560px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1584px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1608px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1632px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1656px !important;background-size: 16px !important;}.cke_hidpi .cke_button__print_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1680px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1704px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1728px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1752px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__showblocks_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1776px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1800px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1824px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1848px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1872px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1896px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1920px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1944px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1968px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1992px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -2016px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/editor_iequirks.css b/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/editor_iequirks.css index 6a94fa6a3c6..e383bb7cb82 100644 --- a/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/editor_iequirks.css +++ b/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/editor_iequirks.css @@ -1,5 +1,5 @@ /* -Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus,.cke_combo_off a.cke_combo_button:active{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_top,.cke_contents,.cke_bottom{width:100%}.cke_button_arrow{font-size:0}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon{display:inline-block;vertical-align:top}.cke_rtl .cke_button_icon{float:none}.cke_resizer{width:10px}.cke_source{white-space:normal}.cke_bottom{position:static}.cke_colorbox{font-size:0}.cke_button__about_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -144px !important;}.cke_button__bidiltr_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -168px !important;}.cke_button__bidirtl_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -192px !important;}.cke_button__blockquote_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -216px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -240px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -264px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -288px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -312px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -336px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -360px !important;}.cke_button__bgcolor_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -384px !important;}.cke_button__textcolor_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -408px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -432px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -456px !important;}.cke_button__copyformatting_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -480px !important;}.cke_button__creatediv_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -504px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -528px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -552px !important;}.cke_button__replace_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -576px !important;}.cke_button__flash_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -600px !important;}.cke_button__button_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -624px !important;}.cke_button__checkbox_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -648px !important;}.cke_button__form_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -672px !important;}.cke_button__hiddenfield_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -696px !important;}.cke_button__imagebutton_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -720px !important;}.cke_button__radio_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -744px !important;}.cke_rtl .cke_button__select_icon, .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -768px !important;}.cke_ltr .cke_button__select_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -792px !important;}.cke_rtl .cke_button__textarea_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -816px !important;}.cke_ltr .cke_button__textarea_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -840px !important;}.cke_rtl .cke_button__textfield_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -864px !important;}.cke_ltr .cke_button__textfield_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -888px !important;}.cke_button__horizontalrule_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -912px !important;}.cke_button__iframe_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -936px !important;}.cke_button__image_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -960px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -984px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1008px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1032px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1056px !important;}.cke_button__smiley_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1080px !important;}.cke_button__justifyblock_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1104px !important;}.cke_button__justifycenter_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1128px !important;}.cke_button__justifyleft_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1152px !important;}.cke_button__justifyright_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1176px !important;}.cke_button__language_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1200px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1224px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1248px !important;}.cke_button__link_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1272px !important;}.cke_button__unlink_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1296px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1320px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1344px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1368px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1392px !important;}.cke_button__maximize_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1416px !important;}.cke_rtl .cke_button__newpage_icon, .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1440px !important;}.cke_ltr .cke_button__newpage_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1464px !important;}.cke_rtl .cke_button__pagebreak_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1488px !important;}.cke_ltr .cke_button__pagebreak_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1512px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1536px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1560px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1584px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1608px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1632px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1656px !important;}.cke_button__print_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1680px !important;}.cke_button__removeformat_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1704px !important;}.cke_button__save_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1728px !important;}.cke_button__selectall_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1752px !important;}.cke_rtl .cke_button__showblocks_icon, .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1776px !important;}.cke_ltr .cke_button__showblocks_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1800px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1824px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1848px !important;}.cke_button__specialchar_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1872px !important;}.cke_button__scayt_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1896px !important;}.cke_button__table_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1920px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1944px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1968px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -1992px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -2016px !important;}.cke_button__spellchecker_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -2040px !important;}.cke_rtl .cke_button__sourcedialog_icon, .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -2064px !important;}.cke_ltr .cke_button__sourcedialog_icon {background: url(icons.png?t=64749bb245) no-repeat 0 -2088px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidiltr_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidirtl_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__copyformatting_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_button__creatediv_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__flash_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__button_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__checkbox_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__form_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_hidpi .cke_button__hiddenfield_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_button__imagebutton_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_hidpi .cke_button__radio_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__select_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textarea_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textfield_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_button__smiley_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_hidpi .cke_button__language_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1224px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1248px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1272px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1296px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1320px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1344px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1368px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1392px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1416px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__newpage_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1440px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1464px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1488px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1512px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1536px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1560px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1584px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1608px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1632px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1656px !important;background-size: 16px !important;}.cke_hidpi .cke_button__print_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1680px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1704px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1728px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1752px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__showblocks_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1776px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1800px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1824px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1848px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1872px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1896px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1920px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1944px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1968px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -1992px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -2016px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -2040px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -2064px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon {background: url(icons_hidpi.png?t=64749bb245) no-repeat 0 -2088px !important;background-size: 16px !important;} \ No newline at end of file +.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus,.cke_combo_off a.cke_combo_button:active{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:#fff;border:1px solid #bcbcbc}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_top,.cke_contents,.cke_bottom{width:100%}.cke_button_arrow{font-size:0}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon{display:inline-block;vertical-align:top}.cke_rtl .cke_button_icon{float:none}.cke_resizer{width:10px}.cke_source{white-space:normal}.cke_bottom{position:static}.cke_colorbox{font-size:0}.cke_button__about_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -144px !important;}.cke_button__bidiltr_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -168px !important;}.cke_button__bidirtl_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -192px !important;}.cke_button__blockquote_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -216px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -240px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -264px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -288px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -312px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -336px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -360px !important;}.cke_button__bgcolor_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -384px !important;}.cke_button__textcolor_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -408px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -432px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -456px !important;}.cke_button__copyformatting_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -480px !important;}.cke_button__creatediv_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -504px !important;}.cke_button__exportpdf_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -528px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -552px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -576px !important;}.cke_button__replace_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -600px !important;}.cke_button__button_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -624px !important;}.cke_button__checkbox_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -648px !important;}.cke_button__form_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -672px !important;}.cke_button__hiddenfield_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -696px !important;}.cke_button__imagebutton_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -720px !important;}.cke_button__radio_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -744px !important;}.cke_rtl .cke_button__select_icon, .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -768px !important;}.cke_ltr .cke_button__select_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -792px !important;}.cke_rtl .cke_button__textarea_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -816px !important;}.cke_ltr .cke_button__textarea_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -840px !important;}.cke_rtl .cke_button__textfield_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -864px !important;}.cke_ltr .cke_button__textfield_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -888px !important;}.cke_button__horizontalrule_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -912px !important;}.cke_button__iframe_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -936px !important;}.cke_button__image_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -960px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -984px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1008px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1032px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1056px !important;}.cke_button__smiley_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1080px !important;}.cke_button__justifyblock_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1104px !important;}.cke_button__justifycenter_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1128px !important;}.cke_button__justifyleft_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1152px !important;}.cke_button__justifyright_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1176px !important;}.cke_button__language_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1200px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1224px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1248px !important;}.cke_button__link_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1272px !important;}.cke_button__unlink_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1296px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1320px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1344px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1368px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1392px !important;}.cke_button__maximize_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1416px !important;}.cke_rtl .cke_button__newpage_icon, .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1440px !important;}.cke_ltr .cke_button__newpage_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1464px !important;}.cke_rtl .cke_button__pagebreak_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1488px !important;}.cke_ltr .cke_button__pagebreak_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1512px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1536px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1560px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1584px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1608px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1632px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1656px !important;}.cke_button__print_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1680px !important;}.cke_button__removeformat_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1704px !important;}.cke_button__save_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1728px !important;}.cke_button__selectall_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1752px !important;}.cke_rtl .cke_button__showblocks_icon, .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1776px !important;}.cke_ltr .cke_button__showblocks_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1800px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1824px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1848px !important;}.cke_button__specialchar_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1872px !important;}.cke_button__scayt_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1896px !important;}.cke_button__table_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1920px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1944px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1968px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -1992px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png?t=5fe059002f) no-repeat 0 -2016px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidiltr_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidirtl_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__copyformatting_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_button__creatediv_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_button__exportpdf_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__button_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__checkbox_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__form_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_hidpi .cke_button__hiddenfield_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_button__imagebutton_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_hidpi .cke_button__radio_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__select_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textarea_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textfield_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_button__smiley_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_hidpi .cke_button__language_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1224px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1248px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1272px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1296px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1320px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1344px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1368px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1392px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1416px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__newpage_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1440px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1464px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1488px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1512px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1536px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1560px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1584px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1608px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1632px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1656px !important;background-size: 16px !important;}.cke_hidpi .cke_button__print_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1680px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1704px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1728px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1752px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__showblocks_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1776px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1800px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1824px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1848px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1872px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1896px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1920px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1944px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1968px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -1992px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png?t=5fe059002f) no-repeat 0 -2016px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/icons.png b/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/icons.png index 8cd0b9b72cf7874ddf7d31d8d060659c0491d2b7..b2f6d6d634cfaba0a5a0c341bb9597e3b69b32b5 100644 GIT binary patch literal 12237 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 Q{x#@7Qqn|~D_VyC4`zyhmjD0& literal 12453 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 diff --git a/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/icons_hidpi.png b/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/icons_hidpi.png index 185b99188265aedc5bdb8757884dc6ec1784e178..bc5403c2569676be79af205c23cffb7a31fd56a9 100644 GIT binary patch literal 38309 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 J+ZKlt{sjf(O?ChP literal 41377 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 V$ajA79UTIXix+g&%T%qx{{w79#~%Oy diff --git a/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/readme.md b/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/readme.md index 76d1e72727b..dc2b1440f8b 100644 --- a/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/readme.md +++ b/htdocs/includes/ckeditor/ckeditor/skins/moono-lisa/readme.md @@ -41,6 +41,6 @@ Other parts: License ------- -Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. For licensing, see LICENSE.md or [https://ckeditor.com/legal/ckeditor-oss-license](https://ckeditor.com/legal/ckeditor-oss-license) diff --git a/htdocs/includes/ckeditor/ckeditor/styles.js b/htdocs/includes/ckeditor/ckeditor/styles.js index 69b040ab23b..8682bcb4646 100644 --- a/htdocs/includes/ckeditor/ckeditor/styles.js +++ b/htdocs/includes/ckeditor/ckeditor/styles.js @@ -1,5 +1,5 @@ /** - * Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. + * Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ diff --git a/htdocs/theme/eldy/ckeditor/config.js b/htdocs/theme/eldy/ckeditor/config.js index 0ecf42b09e1..4ec222217a1 100644 --- a/htdocs/theme/eldy/ckeditor/config.js +++ b/htdocs/theme/eldy/ckeditor/config.js @@ -47,7 +47,7 @@ CKEDITOR.editorConfig = function( config ) ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], ['BidiLtr', 'BidiRtl'], ['Link','Unlink','Anchor'], - ['Image','Table','HorizontalRule','Smiley','SpecialChar','PageBreak','Iframe'], + ['Image','Table','HorizontalRule','Smiley','SpecialChar'], ['Styles','Format','Font','FontSize'], ['TextColor','BGColor'], ['Source'] diff --git a/htdocs/theme/md/ckeditor/config.js b/htdocs/theme/md/ckeditor/config.js index 8cd703c957d..06fa5746e7f 100644 --- a/htdocs/theme/md/ckeditor/config.js +++ b/htdocs/theme/md/ckeditor/config.js @@ -47,7 +47,7 @@ CKEDITOR.editorConfig = function( config ) ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], ['BidiLtr', 'BidiRtl'], ['Link','Unlink','Anchor'], - ['Image','Table','HorizontalRule','Smiley','SpecialChar','PageBreak','Iframe'], + ['Image','Table','HorizontalRule','Smiley','SpecialChar'], ['Styles','Format','Font','FontSize'], ['TextColor','BGColor'], ['Source'] diff --git a/htdocs/website/index.php b/htdocs/website/index.php index 02926e2add8..715ea21d182 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -3067,7 +3067,7 @@ if (!GETPOST('hide_websitemenu')) { // Allow some non-standard markup that we used in the introduction. extraAllowedContent: \'span(*);cite(*);q(*);dl(*);dt(*);dd(*);ul(*);li(*);header(*);button(*);h1(*);h2(*);\', //extraPlugins: \'sourcedialog\', - removePlugins: \'flash,stylescombo\', + removePlugins: \'flash,stylescombo,exportpdf,scayt,wsc\', // Show toolbar on startup (optional). // startupFocus: true }); From dd02c0607a98d456a244c7d3058137035deb80b9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 May 2022 20:44:58 +0200 Subject: [PATCH 143/248] Removed unexpected plugins --- htdocs/website/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/website/index.php b/htdocs/website/index.php index 715ea21d182..968094cad18 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -3067,7 +3067,7 @@ if (!GETPOST('hide_websitemenu')) { // Allow some non-standard markup that we used in the introduction. extraAllowedContent: \'span(*);cite(*);q(*);dl(*);dt(*);dd(*);ul(*);li(*);header(*);button(*);h1(*);h2(*);\', //extraPlugins: \'sourcedialog\', - removePlugins: \'flash,stylescombo,exportpdf,scayt,wsc\', + removePlugins: \'flash,stylescombo,exportpdf,scayt,wsc,pagebreak,iframe,smiley\', // Show toolbar on startup (optional). // startupFocus: true }); From 7890d6f7f6b0571040e9ec4398a1a36a94bd0dda Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 May 2022 21:01:48 +0200 Subject: [PATCH 144/248] Update card.php --- htdocs/compta/facture/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index d3132a0cb4a..f2e57c8b536 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -305,7 +305,7 @@ if (empty($reshook)) { $object->fetch($id); if (!empty($conf->global-> INVOICE_CHECK_POSTERIOR_DATE)) { - $last_of_type = $object->willBeLastOfSameType($allow_validated_drafts = true); + $last_of_type = $object->willBeLastOfSameType(true); if (empty($object->date_validation) && !$last_of_type[0]) { setEventMessages($langs->transnoentities("ErrorInvoiceIsNotLastOfSameType", $object->ref, dol_print_date($object->date, 'day'), dol_print_date($last_of_type[1], 'day')), null, 'errors'); $action = ''; From d13cb10c8bb253045d6cd59e70fffd75eab318e4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 May 2022 21:02:09 +0200 Subject: [PATCH 145/248] Update facture.class.php --- htdocs/compta/facture/class/facture.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 435b358ae32..a5cb99c2260 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -3009,7 +3009,7 @@ class Facture extends CommonInvoice return -1; } if (!empty($conf->global-> INVOICE_CHECK_POSTERIOR_DATE)) { - $last_of_type = $this->willBeLastOfSameType($allow_validated_drafts = true); + $last_of_type = $this->willBeLastOfSameType(true); if (!$last_of_type[0]) { $this->error = $langs->transnoentities("ErrorInvoiceIsNotLastOfSameType", $this->ref, dol_print_date($this->date, 'day'), dol_print_date($last_of_type[1], 'day')); return -1; From 1900bfe68b5b074c50f2bca0e5952a0823df5054 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 May 2022 21:06:03 +0200 Subject: [PATCH 146/248] Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop --- htdocs/langs/en_US/ticket.lang | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/langs/en_US/ticket.lang b/htdocs/langs/en_US/ticket.lang index 76d6923e43c..8ff20570316 100644 --- a/htdocs/langs/en_US/ticket.lang +++ b/htdocs/langs/en_US/ticket.lang @@ -99,8 +99,8 @@ TicketNewEmailBodyHelp=The text specified here will be inserted into the email c TicketParamPublicInterface=Public interface setup TicketsEmailMustExist=Require an existing email address to create a ticket TicketsEmailMustExistHelp=In the public interface, the email address should already be filled in the database to create a new ticket. -TicketCreateThirdPartyWithContactIfNotExist=Create a third party with contact if it does not exist with the given email -TicketCreateThirdPartyWithContactIfNotExistHelp=Create a third party with contact if it does not exist with the given email +TicketCreateThirdPartyWithContactIfNotExist=Ask name and company name for unknown emails. +TicketCreateThirdPartyWithContactIfNotExistHelp=Check if a thirdparty or a contact exists for the email entered. If not, ask a name and a company name to create a third party with contact. PublicInterface=Public interface TicketUrlPublicInterfaceLabelAdmin=Alternative URL for public interface TicketUrlPublicInterfaceHelpAdmin=It is possible to define an alias to the web server and thus make available the public interface with another URL (the server must act as a proxy on this new URL) From 37f7fed0032d6e326fcf41fc77df92a34d56f90a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 17 May 2022 00:50:59 +0200 Subject: [PATCH 147/248] Maxi debug of export profiles for v16 --- htdocs/core/class/html.form.class.php | 4 +- htdocs/core/lib/ajax.lib.php | 51 +++++++++++--------- htdocs/core/modules/modCategorie.class.php | 2 +- htdocs/core/modules/modCommande.class.php | 2 +- htdocs/core/modules/modContrat.class.php | 2 +- htdocs/core/modules/modDeplacement.class.php | 2 +- htdocs/core/modules/modExpedition.class.php | 2 +- htdocs/core/modules/modFournisseur.class.php | 4 +- htdocs/core/modules/modProjet.class.php | 6 +-- htdocs/core/modules/modPropale.class.php | 2 +- htdocs/core/modules/modReception.class.php | 2 +- htdocs/core/modules/modSociete.class.php | 4 +- htdocs/core/modules/modStock.class.php | 6 +-- htdocs/core/modules/modUser.class.php | 25 +++++++--- htdocs/exports/class/export.class.php | 21 +++++++- htdocs/exports/export.php | 18 +++++-- htdocs/langs/en_US/members.lang | 2 + htdocs/langs/en_US/users.lang | 2 +- htdocs/societe/ajax/company.php | 1 - 19 files changed, 102 insertions(+), 56 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 05ac16fbfa6..94ae9fb0fbc 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -1277,7 +1277,7 @@ class Form } // mode 1 - $urloption = 'htmlname='.urlencode($htmlname).'&outjson=1&filter='.urlencode($filter).(empty($excludeids) ? '' : '&excludeids='.join(',', $excludeids)).($showtype ? '&showtype='.urlencode($showtype) : ''); + $urloption = 'htmlname='.urlencode(str_replace('.', '_', $htmlname)).'&outjson=1&filter='.urlencode($filter).(empty($excludeids) ? '' : '&excludeids='.join(',', $excludeids)).($showtype ? '&showtype='.urlencode($showtype) : ''); $out .= ajax_autocompleter($selected, $htmlname, DOL_URL_ROOT.'/societe/ajax/company.php', $urloption, $conf->global->COMPANY_USE_SEARCH_TO_SELECT, 0, $ajaxoptions); $out .= ''; @@ -1638,7 +1638,7 @@ class Form * @param int $socid Id ot third party or 0 for all or -1 for empty list * @param array|int $selected Array of ID of pre-selected contact id * @param string $htmlname Name of HTML field ('none' for a not editable field) - * @param int $showempty 0=no empty value, 1=add an empty value, 2=add line 'Internal' (used by user edit), 3=add an empty value only if more than one record into list + * @param int|string $showempty 0=no empty value, 1=add an empty value, 2=add line 'Internal' (used by user edit), 3=add an empty value only if more than one record into list * @param string $exclude List of contacts id to exclude * @param string $limitto Disable answers that are not id in this array list * @param integer $showfunction Add function into label diff --git a/htdocs/core/lib/ajax.lib.php b/htdocs/core/lib/ajax.lib.php index e7bea722e0c..3e1af30ddd2 100644 --- a/htdocs/core/lib/ajax.lib.php +++ b/htdocs/core/lib/ajax.lib.php @@ -62,6 +62,8 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption = '', $minLen $dataforitem = constant('JS_QUERY_AUTOCOMPLETE_ITEM'); } + $htmlnamejquery = str_replace('.', '\\\\.', $htmlname); + // Input search_htmlname is original field // Input htmlname is a second input field used when using ajax autocomplete. $script = ''; @@ -73,21 +75,21 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption = '', $minLen var options = '.json_encode($ajaxoptions).'; /* Option of actions to do after keyup, or after select */ /* Remove selected id as soon as we type or delete a char (it means old selection is wrong). Use keyup/down instead of change to avoid loosing the product id. This is needed only for select of predefined product */ - $("input#search_'.$htmlname.'").keydown(function(e) { + $("input#search_'.$htmlnamejquery.'").keydown(function(e) { if (e.keyCode != 9) /* If not "Tab" key */ { if (e.keyCode == 13) { return false; } /* disable "ENTER" key useful for barcode readers */ console.log("Clear id previously selected for field '.$htmlname.'"); - $("#'.$htmlname.'").val(""); + $("#'.$htmlnamejquery.'").val(""); } }); // Check options for secondary actions when keyup - $("input#search_'.$htmlname.'").keyup(function() { + $("input#search_'.$htmlnamejquery.'").keyup(function() { if ($(this).val().length == 0) { - $("#search_'.$htmlname.'").val(""); - $("#'.$htmlname.'").val("").trigger("change"); + $("#search_'.$htmlnamejquery.'").val(""); + $("#'.$htmlnamejquery.'").val("").trigger("change"); if (options.option_disabled) { $("#" + options.option_disabled).removeAttr("disabled"); } @@ -118,15 +120,15 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption = '', $minLen } }); - $("input#search_'.$htmlname.'").autocomplete({ + $("input#search_'.$htmlnamejquery.'").autocomplete({ source: function( request, response ) { - $.get("'.$url.($urloption ? '?'.$urloption : '').'", { '.$htmlname.': request.term }, function(data){ + $.get("'.$url.($urloption ? '?'.$urloption : '').'", { "'.str_replace('.', '_', $htmlname).'": request.term }, function(data){ if (data != null) { response($.map( data, function(item) { if (autoselect == 1 && data.length == 1) { - $("#search_'.$htmlname.'").val(item.value); - $("#'.$htmlname.'").val(item.key).trigger("change"); + $("#search_'.$htmlnamejquery.'").val(item.value); + $("#'.$htmlnamejquery.'").val(item.key).trigger("change"); } var label = item.label.toString(); var update = {}; @@ -151,12 +153,13 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption = '', $minLen description : item.description, ref_customer: item.ref_customer } })); + } else { + console.error("Error: Ajax url '.$url.($urloption ? '?'.$urloption : '').' has returned an empty page. Should be an empty json array."); } - else console.error("Error: Ajax url '.$url.($urloption ? '?'.$urloption : '').' has returned an empty page. Should be an empty json array."); }, "json"); }, dataType: "json", - minLength: '.$minLength.', + minLength: '.((int) $minLength).', select: function( event, ui ) { // Function ran once new value has been selected into javascript combo console.log("We will trigger change on input '.$htmlname.' because of the select definition of autocomplete code for input#search_'.$htmlname.'"); console.log("Selected id = "+ui.item.id+" - If this value is null, it means you select a record with key that is null so selection is not effective"); @@ -164,25 +167,25 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption = '', $minLen console.log("Propagate before some properties retrieved by ajax into data-xxx properties"); // For supplier price and customer when price by quantity is off - $("#'.$htmlname.'").attr("data-up", ui.item.price_ht); - $("#'.$htmlname.'").attr("data-base", ui.item.pricebasetype); - $("#'.$htmlname.'").attr("data-qty", ui.item.qty); - $("#'.$htmlname.'").attr("data-discount", ui.item.discount); - $("#'.$htmlname.'").attr("data-description", ui.item.description); - $("#'.$htmlname.'").attr("data-ref-customer", ui.item.ref_customer); + $("#'.$htmlnamejquery.'").attr("data-up", ui.item.price_ht); + $("#'.$htmlnamejquery.'").attr("data-base", ui.item.pricebasetype); + $("#'.$htmlnamejquery.'").attr("data-qty", ui.item.qty); + $("#'.$htmlnamejquery.'").attr("data-discount", ui.item.discount); + $("#'.$htmlnamejquery.'").attr("data-description", ui.item.description); + $("#'.$htmlnamejquery.'").attr("data-ref-customer", ui.item.ref_customer); '; if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES_BY_QTY)) { $script .= ' // For customer price when PRODUIT_CUSTOMER_PRICES_BY_QTY is on - $("#'.$htmlname.'").attr("data-pbq", ui.item.pbq); - $("#'.$htmlname.'").attr("data-pbqup", ui.item.price_ht); - $("#'.$htmlname.'").attr("data-pbqbase", ui.item.pricebasetype); - $("#'.$htmlname.'").attr("data-pbqqty", ui.item.qty); - $("#'.$htmlname.'").attr("data-pbqpercent", ui.item.discount); + $("#'.$htmlnamejquery.'").attr("data-pbq", ui.item.pbq); + $("#'.$htmlnamejquery.'").attr("data-pbqup", ui.item.price_ht); + $("#'.$htmlnamejquery.'").attr("data-pbqbase", ui.item.pricebasetype); + $("#'.$htmlnamejquery.'").attr("data-pbqqty", ui.item.qty); + $("#'.$htmlnamejquery.'").attr("data-pbqpercent", ui.item.discount); '; } $script .= ' - $("#'.$htmlname.'").val(ui.item.id).trigger("change"); // Select new value + $("#'.$htmlnamejquery.'").val(ui.item.id).trigger("change"); // Select new value // Disable an element if (options.option_disabled) { @@ -236,7 +239,7 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption = '', $minLen } console.log("ajax_autocompleter new value selected, we trigger change also on original component so on field #search_'.$htmlname.'"); - $("#search_'.$htmlname.'").trigger("change"); // We have changed value of the combo select, we must be sure to trigger all js hook binded on this event. This is required to trigger other javascript change method binded on original field by other code. + $("#search_'.$htmlnamejquery.'").trigger("change"); // We have changed value of the combo select, we must be sure to trigger all js hook binded on this event. This is required to trigger other javascript change method binded on original field by other code. } ,delay: 500 }).data("'.$dataforrenderITem.'")._renderItem = function( ul, item ) { diff --git a/htdocs/core/modules/modCategorie.class.php b/htdocs/core/modules/modCategorie.class.php index c3b7f256b4b..6ee294eff58 100644 --- a/htdocs/core/modules/modCategorie.class.php +++ b/htdocs/core/modules/modCategorie.class.php @@ -382,7 +382,7 @@ class modCategorie extends DolibarrModules $this->export_enabled[$r] = '!empty($conf->projet->enabled)'; $this->export_permission[$r] = array(array("categorie", "lire"), array("projet", "export")); $this->export_fields_array[$r] = array('cat.rowid'=>"CategId", 'cat.label'=>"Label", 'cat.description'=>"Description", 'cat.fk_parent'=>"ParentCategory", 'p.rowid'=>'ProjectId', 'p.ref'=>'Ref', 's.rowid'=>"IdThirdParty", 's.nom'=>"Name"); - $this->export_TypeFields_array[$r] = array('cat.label'=>"Text", 'cat.description'=>"Text", 'cat.fk_parent'=>'List:categorie:label:rowid', 'p.ref'=>'Text', 's.rowid'=>"List:societe:nom:rowid", 's.nom'=>"Text"); + $this->export_TypeFields_array[$r] = array('cat.label'=>"Text", 'cat.description'=>"Text", 'cat.fk_parent'=>'List:categorie:label:rowid', 'p.ref'=>'Text', 's.rowid'=>"Numeric", 's.nom'=>"Text"); $this->export_entities_array[$r] = array('p.rowid'=>'project', 'p.ref'=>'project', 's.rowid'=>"company", 's.nom'=>"company"); // We define here only fields that use another picto $keyforselect = 'projet'; diff --git a/htdocs/core/modules/modCommande.class.php b/htdocs/core/modules/modCommande.class.php index 9aac30fe8a5..80e5468b140 100644 --- a/htdocs/core/modules/modCommande.class.php +++ b/htdocs/core/modules/modCommande.class.php @@ -218,7 +218,7 @@ class modCommande extends DolibarrModules } } //$this->export_TypeFields_array[$r]=array( - // 's.rowid'=>"List:societe:nom",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.label'=>'List:c_country:label:label', + // 's.rowid'=>"Numeric",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.label'=>'List:c_country:label:label', // 'co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_client'=>"Text", // 'c.date_creation'=>"Date",'c.date_commande'=>"Date",'c.amount_ht'=>"Numeric",'c.total_ht'=>"Numeric", // 'c.total_ttc'=>"Numeric",'c.facture'=>"Boolean",'c.fk_statut'=>'Status','c.note_public'=>"Text",'c.date_livraison'=>'Date','cd.description'=>"Text", diff --git a/htdocs/core/modules/modContrat.class.php b/htdocs/core/modules/modContrat.class.php index 2fc0c7f1e0d..89081551ddc 100644 --- a/htdocs/core/modules/modContrat.class.php +++ b/htdocs/core/modules/modContrat.class.php @@ -181,7 +181,7 @@ class modContrat extends DolibarrModules 'cod.date_ouverture'=>"contract_line", 'cod.date_ouverture_prevue'=>"contract_line", 'cod.date_fin_validite'=>"contract_line", 'cod.date_cloture'=>"contract_line", 'p.rowid'=>'product', 'p.ref'=>'product', 'p.label'=>'product'); - $this->export_TypeFields_array[$r] = array('s.rowid'=>"List:societe:nom", 's.nom'=>'Text', 's.address'=>'Text', 's.zip'=>'Text', 's.town'=>'Text', 'c.code'=>'Text', + $this->export_TypeFields_array[$r] = array('s.rowid'=>"Numeric", 's.nom'=>'Text', 's.address'=>'Text', 's.zip'=>'Text', 's.town'=>'Text', 'c.code'=>'Text', 's.phone'=>'Text', 's.siren'=>'Text', 's.siret'=>'Text', 's.ape'=>'Text', 's.idprof4'=>'Text', 's.code_compta'=>'Text', 's.code_compta_fournisseur'=>'Text', 's.tva_intra'=>'Text', 'co.ref'=>"Text", 'co.datec'=>"Date", 'co.date_contrat'=>"Date", diff --git a/htdocs/core/modules/modDeplacement.class.php b/htdocs/core/modules/modDeplacement.class.php index 450aa76258e..88b239917f6 100644 --- a/htdocs/core/modules/modDeplacement.class.php +++ b/htdocs/core/modules/modDeplacement.class.php @@ -121,7 +121,7 @@ class modDeplacement extends DolibarrModules $this->export_label[$r] = 'ListTripsAndExpenses'; $this->export_permission[$r] = array(array("deplacement", "export")); $this->export_fields_array[$r] = array('u.login'=>'Login', 'u.lastname'=>'Lastname', 'u.firstname'=>'Firstname', 'd.rowid'=>"TripId", 'd.type'=>"Type", 'd.km'=>"FeesKilometersOrAmout", 'd.dated'=>"Date", 'd.note_private'=>'NotePrivate', 'd.note_public'=>'NotePublic', 's.nom'=>'ThirdParty'); - $this->export_TypeFields_array[$r] = array('u.rowid'=>'List:user:name', 'u.login'=>'Text', 'u.lastname'=>'Text', 'u.firstname'=>'Text', 'd.type'=>"Text", 'd.km'=>"Numeric", 'd.dated'=>"Date", 'd.note_private'=>'Text', 'd.note_public'=>'Text', 's.rowid'=>"List:societe:CompanyName", 's.nom'=>'Text'); + $this->export_TypeFields_array[$r] = array('u.rowid'=>'List:user:name', 'u.login'=>'Text', 'u.lastname'=>'Text', 'u.firstname'=>'Text', 'd.type'=>"Text", 'd.km'=>"Numeric", 'd.dated'=>"Date", 'd.note_private'=>'Text', 'd.note_public'=>'Text', 's.rowid'=>"Numeric", 's.nom'=>'Text'); $this->export_entities_array[$r] = array('u.login'=>'user', 'u.lastname'=>'user', 'u.firstname'=>'user', 'd.rowid'=>"trip", 'd.type'=>"trip", 'd.km'=>"trip", 'd.dated'=>"trip", 'd.note_private'=>'trip', 'd.note_public'=>'trip', 's.nom'=>'company'); $this->export_dependencies_array[$r] = array('trip'=>'d.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them diff --git a/htdocs/core/modules/modExpedition.class.php b/htdocs/core/modules/modExpedition.class.php index c10e13a46d8..80625817b22 100644 --- a/htdocs/core/modules/modExpedition.class.php +++ b/htdocs/core/modules/modExpedition.class.php @@ -255,7 +255,7 @@ class modExpedition extends DolibarrModules $this->export_fields_array[$r] += array('sp.rowid'=>'IdContact', 'sp.lastname'=>'Lastname', 'sp.firstname'=>'Firstname', 'sp.note_public'=>'NotePublic'); } //$this->export_TypeFields_array[$r]=array( - // 's.rowid'=>"List:societe:nom",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.label'=>'List:c_country:label:label', + // 's.rowid'=>"Numeric",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.label'=>'List:c_country:label:label', // 'co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_client'=>"Text", // 'c.date_creation'=>"Date",'c.date_commande'=>"Date",'c.amount_ht'=>"Numeric",'c.remise_percent'=>"Numeric",'c.total_ht'=>"Numeric", // 'c.total_ttc'=>"Numeric",'c.facture'=>"Boolean",'c.fk_statut'=>'Status','c.note_public'=>"Text",'c.date_livraison'=>'Date','ed.qty'=>"Text" diff --git a/htdocs/core/modules/modFournisseur.class.php b/htdocs/core/modules/modFournisseur.class.php index aef28514c61..afc6fec4fc6 100644 --- a/htdocs/core/modules/modFournisseur.class.php +++ b/htdocs/core/modules/modFournisseur.class.php @@ -325,7 +325,7 @@ class modFournisseur extends DolibarrModules $this->export_fields_array[$r]['f.multicurrency_total_ttc'] = 'MulticurrencyAmountTTC'; } //$this->export_TypeFields_array[$r]=array( - // 's.rowid'=>"List:societe:CompanyName",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text', + // 's.rowid'=>"Numeric",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text', // 's.ape'=>'Text','s.idprof4'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.total_ht'=>"Numeric",'f.total_ttc'=>"Numeric",'f.total_tva'=>"Numeric", // 'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_public'=>"Text",'fd.description'=>"Text",'fd.tva_tx'=>"Text",'fd.qty'=>"Numeric",'fd.total_ht'=>"Numeric",'fd.total_ttc'=>"Numeric", // 'fd.tva'=>"Numeric",'fd.product_type'=>'Numeric','fd.fk_product'=>'List:product:label','p.ref'=>'Text','p.label'=>'Text' @@ -399,7 +399,7 @@ class modFournisseur extends DolibarrModules $this->export_fields_array[$r]['f.multicurrency_total_ttc'] = 'MulticurrencyAmountTTC'; } //$this->export_TypeFields_array[$r]=array( - // 's.rowid'=>"List:societe:CompanyName",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text', + // 's.rowid'=>"Numeric",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text', // 's.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date", // 'f.total_ht'=>"Numeric",'f.total_ttc'=>"Numeric",'f.total_tva'=>"Numeric",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_public'=>"Text", // 'pf.amount'=>'Numeric','p.datep'=>'Date','p.num_paiement'=>'Numeric' diff --git a/htdocs/core/modules/modProjet.class.php b/htdocs/core/modules/modProjet.class.php index f8b82e8faa3..ebfba5d95b9 100644 --- a/htdocs/core/modules/modProjet.class.php +++ b/htdocs/core/modules/modProjet.class.php @@ -224,13 +224,13 @@ class modProjet extends DolibarrModules $this->export_dependencies_array[$r] = array('projecttask'=>'pt.rowid', 'task_time'=>'ptt.rowid'); $this->export_TypeFields_array[$r] = array( - 's.rowid'=>"List:societe:nom::thirdparty", 's.nom'=>'Text', 's.address'=>'Text', 's.zip'=>'Text', 's.town'=>'Text', 's.fk_pays'=>'List:c_country:label', + 's.rowid'=>"Numeric", 's.nom'=>'Text', 's.address'=>'Text', 's.zip'=>'Text', 's.town'=>'Text', 's.fk_pays'=>'List:c_country:label', 's.phone'=>'Text', 's.email'=>'Text', 's.siren'=>'Text', 's.siret'=>'Text', 's.ape'=>'Text', 's.idprof4'=>'Text', 's.code_compta'=>'Text', 's.code_compta_fournisseur'=>'Text', - 'p.rowid'=>"List:projet:ref::project", 'p.ref'=>"Text", 'p.title'=>"Text", + 'p.rowid'=>"Numeric", 'p.ref'=>"Text", 'p.title'=>"Text", 'p.usage_opportunity'=>'Boolean', 'p.usage_task'=>'Boolean', 'p.usage_bill_time'=>'Boolean', 'p.datec'=>"Date", 'p.dateo'=>"Date", 'p.datee'=>"Date", 'p.fk_statut'=>'Status', 'cls.code'=>"Text", 'p.opp_percent'=>'Numeric', 'p.opp_amount'=>'Numeric', 'p.description'=>"Text", 'p.entity'=>'Numeric', 'p.budget_amount'=>'Numeric', 'pt.rowid'=>'Numeric', 'pt.ref'=>'Text', 'pt.label'=>'Text', 'pt.dateo'=>"Date", 'pt.datee'=>"Date", 'pt.duration_effective'=>"Duree", 'pt.planned_workload'=>"Numeric", 'pt.progress'=>"Numeric", 'pt.description'=>"Text", - 'ptt.rowid'=>'Numeric', 'ptt.task_date'=>'Date', 'ptt.task_duration'=>"Duree", 'ptt.fk_user'=>"List:user:CONCAT(lastname,' ',firstname)", 'ptt.note'=>"Text" + 'ptt.rowid'=>'Numeric', 'ptt.task_date'=>'Date', 'ptt.task_duration'=>"Duree", 'ptt.fk_user'=>"FormSelect:select_dolusers", 'ptt.note'=>"Text" ); $this->export_entities_array[$r] = array( 's.rowid'=>"company", 's.nom'=>'company', 's.address'=>'company', 's.zip'=>'company', 's.town'=>'company', 's.fk_pays'=>'company', diff --git a/htdocs/core/modules/modPropale.class.php b/htdocs/core/modules/modPropale.class.php index 3419d4c866e..f6443e6c992 100644 --- a/htdocs/core/modules/modPropale.class.php +++ b/htdocs/core/modules/modPropale.class.php @@ -212,7 +212,7 @@ class modPropale extends DolibarrModules } } //$this->export_TypeFields_array[$r]=array( - // 's.rowid'=>"List:societe:nom",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.code'=>'Text','s.phone'=>'Text', + // 's.rowid'=>"Numeric",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.code'=>'Text','s.phone'=>'Text', // 's.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_client'=>"Text",'c.datec'=>"Date",'c.datep'=>"Date", // 'c.fin_validite'=>"Date",'c.total_ht'=>"Numeric",'c.total_ttc'=>"Numeric",'c.fk_statut'=>'Status','c.note_public'=>"Text", // 'c.date_livraison'=>'Date','cd.description'=>"Text",'cd.product_type'=>'Boolean','cd.tva_tx'=>"Numeric",'cd.qty'=>"Numeric",'cd.total_ht'=>"Numeric", diff --git a/htdocs/core/modules/modReception.class.php b/htdocs/core/modules/modReception.class.php index 29c10ccb3e5..6e7cba2b053 100644 --- a/htdocs/core/modules/modReception.class.php +++ b/htdocs/core/modules/modReception.class.php @@ -189,7 +189,7 @@ class modReception extends DolibarrModules if ($idcontacts && !empty($conf->global->RECEPTION_ADD_CONTACTS_IN_EXPORT)) { $this->export_fields_array[$r] += array('sp.rowid'=>'IdContact', 'sp.lastname'=>'Lastname', 'sp.firstname'=>'Firstname', 'sp.note_public'=>'NotePublic'); } - //$this->export_TypeFields_array[$r]=array('s.rowid'=>"List:societe:nom",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.label'=>'List:c_country:label:label','co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_client'=>"Text",'c.date_creation'=>"Date",'c.date_commande'=>"Date",'c.amount_ht'=>"Numeric",'c.remise_percent'=>"Numeric",'c.total_ht'=>"Numeric",'c.total_ttc'=>"Numeric",'c.facture'=>"Boolean",'c.fk_statut'=>'Status','c.note_public'=>"Text",'c.date_livraison'=>'Date','ed.qty'=>"Text"); + //$this->export_TypeFields_array[$r]=array('s.rowid'=>"Numeric",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.label'=>'List:c_country:label:label','co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_client'=>"Text",'c.date_creation'=>"Date",'c.date_commande'=>"Date",'c.amount_ht'=>"Numeric",'c.remise_percent'=>"Numeric",'c.total_ht'=>"Numeric",'c.total_ttc'=>"Numeric",'c.facture'=>"Boolean",'c.fk_statut'=>'Status','c.note_public'=>"Text",'c.date_livraison'=>'Date','ed.qty'=>"Text"); $this->export_TypeFields_array[$r] = array( 's.nom'=>'Text', 's.address'=>'Text', 's.zip'=>'Text', 's.town'=>'Text', 'co.label'=>'List:c_country:label:label', 'co.code'=>'Text', 's.phone'=>'Text', 's.siren'=>'Text', 's.siret'=>'Text', 's.ape'=>'Text', 's.idprof4'=>'Text', diff --git a/htdocs/core/modules/modSociete.class.php b/htdocs/core/modules/modSociete.class.php index e4cf484df58..997c2ac43b1 100644 --- a/htdocs/core/modules/modSociete.class.php +++ b/htdocs/core/modules/modSociete.class.php @@ -306,7 +306,7 @@ class modSociete extends DolibarrModules $this->export_fields_array[$r] += array('u.login'=>'SaleRepresentativeLogin', 'u.firstname'=>'SaleRepresentativeFirstname', 'u.lastname'=>'SaleRepresentativeLastname'); //$this->export_TypeFields_array[$r]=array( - // 's.rowid'=>"List:societe:nom",'s.nom'=>"Text",'s.status'=>"Text",'s.client'=>"Boolean",'s.fournisseur'=>"Boolean",'s.datec'=>"Date",'s.tms'=>"Date", + // 's.rowid'=>"Numeric",'s.nom'=>"Text",'s.status'=>"Text",'s.client'=>"Boolean",'s.fournisseur'=>"Boolean",'s.datec'=>"Date",'s.tms'=>"Date", // 's.code_client'=>"Text",'s.code_fournisseur'=>"Text",'s.address'=>"Text",'s.zip'=>"Text",'s.town'=>"Text",'c.label'=>"List:c_country:label:label", // 'c.code'=>"Text",'s.phone'=>"Text",'s.fax'=>"Text",'s.url'=>"Text",'s.email'=>"Text",'s.default_lang'=>"Text",'s.canvas' => "Canvas",'s.siret'=>"Text",'s.siren'=>"Text", // 's.ape'=>"Text",'s.idprof4'=>"Text",'s.idprof5'=>"Text",'s.idprof6'=>"Text",'s.tva_intra'=>"Text",'s.capital'=>"Numeric",'s.note'=>"Text", @@ -397,7 +397,7 @@ class modSociete extends DolibarrModules 'c.address'=>"Text", 'c.zip'=>"Text", 'c.town'=>"Text", 'd.nom'=>'Text', 'r.nom'=>'Text', 'co.label'=>"List:c_country:label:rowid", 'co.code'=>"Text", 'c.phone'=>"Text", 'c.fax'=>"Text", 'c.email'=>"Text", 'c.statut'=>"Status", - 's.rowid'=>"List:societe:nom::thirdparty", 's.nom'=>"Text", 's.status'=>"Status", 's.code_client'=>"Text", 's.code_fournisseur'=>"Text", + 's.rowid'=>"Numeric", 's.nom'=>"Text", 's.status'=>"Status", 's.code_client'=>"Text", 's.code_fournisseur'=>"Text", 's.code_compta'=>"Text", 's.code_compta_fournisseur'=>"Text", 's.client'=>"Text", 's.fournisseur'=>"Text", 's.address'=>"Text", 's.zip'=>"Text", 's.town'=>"Text", 's.phone'=>"Text", 's.email'=>"Text", diff --git a/htdocs/core/modules/modStock.class.php b/htdocs/core/modules/modStock.class.php index 52a3843fd12..7aa9abb3bff 100644 --- a/htdocs/core/modules/modStock.class.php +++ b/htdocs/core/modules/modStock.class.php @@ -239,7 +239,7 @@ class modStock extends DolibarrModules ); $this->export_TypeFields_array[$r] = array( 'e.rowid'=>'List:entrepot:ref::stock', 'e.ref'=>'Text', 'e.lieu'=>'Text', 'e.address'=>'Text', 'e.zip'=>'Text', 'e.town'=>'Text', - 'p.rowid'=>"List:product:label::product", 'p.ref'=>"Text", 'p.fk_product_type'=>"Text", 'p.label'=>"Text", 'p.description'=>"Text", 'p.note'=>"Text", + 'p.rowid'=>"Numeric", 'p.ref'=>"Text", 'p.fk_product_type'=>"Text", 'p.label'=>"Text", 'p.description'=>"Text", 'p.note'=>"Text", 'p.price'=>"Numeric", 'p.tva_tx'=>'Numeric', 'p.tosell'=>"Boolean", 'p.tobuy'=>"Boolean", 'p.duration'=>"Duree", 'p.datec'=>'Date', 'p.tms'=>'Date', 'p.pmp'=>'Numeric', 'p.cost_price'=>'Numeric', 'ps.reel'=>'Numeric', @@ -286,7 +286,7 @@ class modStock extends DolibarrModules ); $this->export_TypeFields_array[$r] = array( 'e.rowid'=>'List:entrepot:ref::stock', 'e.ref'=>'Text', 'e.lieu'=>'Text', 'e.description'=>'Text', 'e.address'=>'Text', 'e.zip'=>'Text', 'e.town'=>'Text', - 'p.rowid'=>"List:product:label::product", 'p.ref'=>"Text", 'p.fk_product_type'=>"Text", 'p.label'=>"Text", 'p.description'=>"Text", 'p.note'=>"Text", + 'p.rowid'=>"Numeric", 'p.ref'=>"Text", 'p.fk_product_type'=>"Text", 'p.label'=>"Text", 'p.description'=>"Text", 'p.note'=>"Text", 'p.price'=>"Numeric", 'p.tva_tx'=>'Numeric', 'p.tosell'=>"Boolean", 'p.tobuy'=>"Boolean", 'p.duration'=>"Duree", 'p.datec'=>'DateCreation', 'p.tms'=>'DateModification', 'p.pmp'=>'PMPValue', 'p.cost_price'=>'CostPrice', 'pb.batch'=>'Text', 'pb.qty'=>'Numeric', @@ -332,7 +332,7 @@ class modStock extends DolibarrModules $this->export_TypeFields_array[$r] = array( 'sm.rowid'=>'Numeric', 'sm.value'=>'Numeric', 'sm.datem'=>'Date', 'sm.batch'=>'Text', 'sm.label'=>'Text', 'sm.inventorycode'=>'Text', 'e.rowid'=>'List:entrepot:ref::stock', 'e.ref'=>'Text', 'e.description'=>'Text', 'e.lieu'=>'Text', 'e.address'=>'Text', 'e.zip'=>'Text', 'e.town'=>'Text', - 'p.rowid'=>"List:product:label::product", 'p.ref'=>"Text", 'p.fk_product_type'=>"Text", 'p.label'=>"Text", 'p.description'=>"Text", 'p.note'=>"Text", + 'p.rowid'=>"Numeric", 'p.ref'=>"Text", 'p.fk_product_type'=>"Text", 'p.label'=>"Text", 'p.description'=>"Text", 'p.note'=>"Text", 'p.price'=>"Numeric", 'p.tva_tx'=>'Numeric', 'p.tosell'=>"Boolean", 'p.tobuy'=>"Boolean", 'p.duration'=>"Duree", 'p.datec'=>'Date', 'p.tms'=>'Date' ); $this->export_entities_array[$r] = array( diff --git a/htdocs/core/modules/modUser.class.php b/htdocs/core/modules/modUser.class.php index f77f1dacedf..719c90c6dab 100644 --- a/htdocs/core/modules/modUser.class.php +++ b/htdocs/core/modules/modUser.class.php @@ -227,11 +227,14 @@ class modUser extends DolibarrModules 'u.office_phone'=>'Phone', 'u.user_mobile'=>"Mobile", 'u.office_fax'=>'Fax', 'u.email'=>"Email", 'u.note'=>"Note", 'u.signature'=>'Signature', 'u.fk_user'=>'HierarchicalResponsible', 'u.thm'=>'THM', 'u.tjm'=>'TJM', 'u.weeklyhours'=>'WeeklyHours', - 'u.dateemployment'=>'DateEmployment', 'u.salary'=>'Salary', 'u.color'=>'Color', 'u.api_key'=>'ApiKey', + 'u.dateemployment'=>'DateEmploymentStart', 'u.dateemploymentend'=>'DateEmploymentEnd', 'u.salary'=>'Salary', 'u.color'=>'Color', 'u.api_key'=>'ApiKey', 'u.birth'=>'DateOfBirth', 'u.datec'=>"DateCreation", 'u.tms'=>"DateLastModification", 'u.admin'=>"Administrator", 'u.statut'=>'Status', 'u.datelastlogin'=>'LastConnexion', 'u.datepreviouslogin'=>'PreviousConnexion', - 'u.fk_socpeople'=>"IdContact", 'u.fk_soc'=>"IdCompany", 'u.fk_member'=>"MemberId", + 'u.fk_socpeople'=>"IdContact", 'u.fk_soc'=>"IdCompany", + 'u.fk_member'=>"MemberId", + "a.firstname"=>"MemberFirstname", + "a.lastname"=>"MemberLastname", 'g.nom'=>"Group" ); $this->export_TypeFields_array[$r] = array( @@ -240,9 +243,17 @@ class modUser extends DolibarrModules 'u.address'=>"Text", 'u.zip'=>"Text", 'u.town'=>"Text", 'u.office_phone'=>'Text', 'u.user_mobile'=>'Text', 'u.office_fax'=>'Text', 'u.email'=>'Text', 'u.datec'=>"Date", 'u.tms'=>"Date", 'u.admin'=>"Boolean", 'u.statut'=>'Status', 'u.note'=>"Text", 'u.signature'=>"Text", 'u.datelastlogin'=>'Date', - 'u.fk_user'=>"List:user:login", + 'u.fk_user'=>"FormSelect:select_dolusers", 'u.birth'=>'Date', - 'u.datepreviouslogin'=>'Date', 'u.fk_soc'=>"List:societe:nom:rowid", 'u.fk_member'=>"List:adherent:firstname", + 'u.datepreviouslogin'=>'Date', + 'u.fk_socpeople'=>'FormSelect:selectcontacts', + 'u.fk_soc'=>"FormSelect:select_company", + 'u.tjm'=>"Numeric", 'u.thm'=>"Numeric", 'u.fk_member'=>"Numeric", + 'u.weeklyhours'=>"Numeric", + 'u.dateemployment'=>"Date", 'u.dateemploymentend'=>"Date", 'u.salary'=>"Numeric", + 'u.color'=>'Text', 'u.api_key'=>'Text', + 'a.firstname'=>'Text', + 'a.lastname'=>'Text', 'g.nom'=>"Text" ); $this->export_entities_array[$r] = array( @@ -252,11 +263,12 @@ class modUser extends DolibarrModules 'u.office_phone'=>'user', 'u.user_mobile'=>'user', 'u.office_fax'=>'user', 'u.email'=>'user', 'u.note'=>"user", 'u.signature'=>'user', 'u.fk_user'=>'user', 'u.thm'=>'user', 'u.tjm'=>'user', 'u.weeklyhours'=>'user', - 'u.dateemployment'=>'user', 'u.salary'=>'user', 'u.color'=>'user', 'u.api_key'=>'user', + 'u.dateemployment'=>'user', 'u.dateemploymentend'=>'user', 'u.salary'=>'user', 'u.color'=>'user', 'u.api_key'=>'user', 'u.birth'=>'user', 'u.datec'=>"user", 'u.tms'=>"user", 'u.admin'=>"user", 'u.statut'=>'user', 'u.datelastlogin'=>'user', 'u.datepreviouslogin'=>'user', 'u.fk_socpeople'=>"contact", 'u.fk_soc'=>"company", 'u.fk_member'=>"member", + 'a.firstname'=>"member", 'a.lastname'=>"member", 'g.nom'=>"Group" ); $keyforselect = 'user'; @@ -272,6 +284,7 @@ class modUser extends DolibarrModules $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'user_extrafields as extra ON u.rowid = extra.fk_object'; $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'usergroup_user as ug ON u.rowid = ug.fk_user'; $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'usergroup as g ON ug.fk_usergroup = g.rowid'; + $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'adherent as a ON u.fk_member = a.rowid'; $this->export_sql_end[$r] .= ' WHERE u.entity IN ('.getEntity('user').')'; // Imports @@ -292,7 +305,7 @@ class modUser extends DolibarrModules 'u.office_phone'=>"Phone", 'u.user_mobile'=>"Mobile", 'u.office_fax'=>"Fax", 'u.email'=>"Email", 'u.note'=>"Note", 'u.signature'=>'Signature', 'u.fk_user'=>'HierarchicalResponsible', 'u.thm'=>'THM', 'u.tjm'=>'TJM', 'u.weeklyhours'=>'WeeklyHours', - 'u.dateemployment'=>'DateEmployment', 'u.salary'=>'Salary', 'u.color'=>'Color', 'u.api_key'=>'ApiKey', + 'u.dateemployment'=>'DateEmploymentStart', 'u.dateemploymentend'=>'DateEmploymentEnd', 'u.salary'=>'Salary', 'u.color'=>'Color', 'u.api_key'=>'ApiKey', 'u.birth'=>'DateOfBirth', 'u.datec'=>"DateCreation", 'u.statut'=>'Status' diff --git a/htdocs/exports/class/export.class.php b/htdocs/exports/class/export.class.php index 89d0caaa24f..f25192578be 100644 --- a/htdocs/exports/class/export.class.php +++ b/htdocs/exports/class/export.class.php @@ -268,7 +268,7 @@ class Export continue; } if ($value != '') { - $sqlWhere .= " and ".$this->build_filterQuery($this->array_export_TypeFields[$indice][$key], $key, $array_filterValue[$key]); + $sqlWhere .= " AND ".$this->build_filterQuery($this->array_export_TypeFields[$indice][$key], $key, $array_filterValue[$key]); } } $sql .= $sqlWhere; @@ -350,6 +350,13 @@ class Export case 'Boolean': $szFilterQuery = " ".$NameField."=".(is_numeric($ValueField) ? $ValueField : ($ValueField == 'yes' ? 1 : 0)); break; + case 'FormSelect': + if (is_numeric($ValueField) && $ValueField > 0) { + $szFilterQuery = " ".$NameField." = ".((float) $ValueField); + } else { + $szFilterQuery = " 1=1"; // Test always true + } + break; case 'Status': case 'List': if (is_numeric($ValueField)) { @@ -402,7 +409,7 @@ class Export public function build_filterField($TypeField, $NameField, $ValueField) { // phpcs:enable - global $conf, $langs; + global $conf, $langs, $form; $szFilterField = ''; $InfoFieldList = explode(":", $TypeField); @@ -443,6 +450,16 @@ class Export $szFilterField .= ' value="0">'.yn(0).''; $szFilterField .= ""; break; + case 'FormSelect': + //var_dump($NameField); + if ($InfoFieldList[1] == 'select_company') { + $szFilterField .= $form->select_company('', $NameField, '', 1); + } elseif ($InfoFieldList[1] == 'selectcontacts') { + $szFilterField .= $form->selectcontacts(0, '', $NameField, ' '); + } elseif ($InfoFieldList[1] == 'select_dolusers') { + $szFilterField .= $form->select_dolusers('', $NameField, 1); + } + break; case 'List': // 0 : Type du champ // 1 : Nom de la table diff --git a/htdocs/exports/export.php b/htdocs/exports/export.php index b07d68f8591..4f001238134 100644 --- a/htdocs/exports/export.php +++ b/htdocs/exports/export.php @@ -519,7 +519,7 @@ if ($step == 2 && $datatoexport) { print ''.$langs->trans("SelectExportFields").' '; $htmlother->select_export_model($exportmodelid, 'exportmodelid', $datatoexport, 1, $user->id); print ' '; - print ''; + print ''; print ''; print ''; @@ -868,12 +868,18 @@ if ($step == 4 && $datatoexport) { print ''.$list.''; print ''; - // List of filtered fiels + // List of filtered fields if (isset($objexport->array_export_TypeFields[0]) && is_array($objexport->array_export_TypeFields[0])) { print ''.$langs->trans("FilteredFields").''; $list = ''; if (!empty($array_filtervalue)) { foreach ($array_filtervalue as $code => $value) { + if (preg_match('/^FormSelect:/', $objexport->array_export_TypeFields[0][$code])) { + // We discard this filter if it is a FromSelect field with a value of -1. + if ($value == -1) { + continue; + } + } if (isset($objexport->array_export_fields[0][$code])) { $list .= ($list ? ', ' : ''); if (isset($array_filtervalue[$code]) && preg_match('/^\s*[<>]/', $array_filtervalue[$code])) { @@ -1015,7 +1021,7 @@ if ($step == 4 && $datatoexport) { print $form->selectarray('visibility', $arrayvisibility, 'private'); print ''; print ''; - print ''; + print ''; print ''; $tmpuser = new User($db); @@ -1148,6 +1154,12 @@ if ($step == 5 && $datatoexport) { $list = ''; if (!empty($array_filtervalue)) { foreach ($array_filtervalue as $code => $value) { + if (preg_match('/^FormSelect:/', $objexport->array_export_TypeFields[0][$code])) { + // We discard this filter if it is a FromSelect field with a value of -1. + if ($value == -1) { + continue; + } + } if (isset($objexport->array_export_fields[0][$code])) { $list .= ($list ? ', ' : ''); if (isset($array_filtervalue[$code]) && preg_match('/^\s*[<>]/', $array_filtervalue[$code])) { diff --git a/htdocs/langs/en_US/members.lang b/htdocs/langs/en_US/members.lang index faa2e0d0fcd..22060706a36 100644 --- a/htdocs/langs/en_US/members.lang +++ b/htdocs/langs/en_US/members.lang @@ -218,3 +218,5 @@ XExternalUserCreated=%s external user(s) created ForceMemberNature=Force member nature (Individual or Corporation) CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves. CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. +MemberFirstname=Member firstname +MemberLastname=Member lastname \ No newline at end of file diff --git a/htdocs/langs/en_US/users.lang b/htdocs/langs/en_US/users.lang index 5bfbec87294..c98c1f4902f 100644 --- a/htdocs/langs/en_US/users.lang +++ b/htdocs/langs/en_US/users.lang @@ -114,7 +114,7 @@ UserLogoff=User logout UserLogged=User logged DateOfEmployment=Employment date DateEmployment=Employment -DateEmploymentstart=Employment Start Date +DateEmploymentStart=Employment Start Date DateEmploymentEnd=Employment End Date RangeOfLoginValidity=Access validity date range CantDisableYourself=You can't disable your own user record diff --git a/htdocs/societe/ajax/company.php b/htdocs/societe/ajax/company.php index 9dfe3909393..5c02afe85dc 100644 --- a/htdocs/societe/ajax/company.php +++ b/htdocs/societe/ajax/company.php @@ -109,7 +109,6 @@ if (!empty($action) && $action == 'fetch' && !empty($id)) { // When used from jQuery, the search term is added as GET param "term". $searchkey = (($id && GETPOST($id, 'alpha')) ? GETPOST($id, 'alpha') : (($htmlname && GETPOST($htmlname, 'alpha')) ?GETPOST($htmlname, 'alpha') : '')); - if (!$searchkey) { return; } From b0c96455ced21667d2bb20cb801272ff4a152a4b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 17 May 2022 00:59:00 +0200 Subject: [PATCH 148/248] Prepare 15.0.2 --- ChangeLog | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/ChangeLog b/ChangeLog index e55cfad84d1..b67cbabafb4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,103 @@ English Dolibarr ChangeLog -------------------------------------------------------------- +***** ChangeLog for 15.0.2 compared to 15.0.1 ***** + +FIX: #19777 #20281 +FIX: #20140 #20301 +FIX: #20279 Accountancy - PostGreSQL - Error on mass update lines already binded +FIX: #20476 migration postgresql 14.0.x to 15.0.x packaging type +FIX: #20733 Inventory: Do not use batch qty even if present if batch module is disabled. +FIX: action comm list: holiday last day not included + handle duration with halfdays +FIX: Add missing entity on salary's payment +FIX: Add 'recruitment' into check array +FIX: add tools to fix bad bank amount in accounting with multicurrency +FIX: assign member cateogry to a member +FIX: backport +FIX: bad bank amount in accounting with multicurrency +FIX: Bad condition on remx +FIX: Bad filter on date on salary list +FIX: bad link to add a customer price (token duplicated) +FIX: bad status of member on widget by type and status +FIX: better error management at product selling price update +FIX: Can't edit bank record +FIX: check mandatory thirdparty fields for mass action +FIX: check thirdparty object loaded and properties exist +FIX: comment +FIX: compatibility for ticket number sharing +FIX: compatibility with multicompany sharings +FIX: contact card: single extrafield update failed +FIX: country not visible into list of states +FIX: Delete an extrafield where type is double +FIX: deprecated module are not more viewed as external modules +FIX: Disable customer type by default if type prospect/customer is disabled +FIX: each time we create a supplier order, we need to give it a ref_supplier +FIX: Error management +FIX: fatal error for $db usage in tpl +FIX: filter into the list of product lots +FIX: Filter on Object Referent page give CRSF page +FIX: Fix default options ($hidedetails, $hidedesc, $hideref) with globales when generate PDF in mass actions +FIX: Fix search by filters +FIX: Fix the adding of lines in the create invoice functions +FIX: forgotten form confirm before various payment delete +FIX: holiday/leave requests: write status change emails in HTML +FIX: include discount price for PMP after a reception (Issue #20029) +FIX: incrementation +FIX: in salary stats and payment list, we must check right perms as well as salary list +FIX: intervention entity missing +FIX: label tax cat trad +FIX: Mass action ship orders +FIX: missing advanced perms +FIX: missing call to executeHooks() +FIX: Missing entity on adding new VAT +FIX: missing hook for row ordering +FIX: missing hook parameter ($possiblelinks) +FIX: missing parenthesis +FIX: missing picto in combo of mass actions of thirdparties. +FIX: missing signature library when ODT model is used +FIX: Missing unset fields after updateline expensereport +FIX: ModuileBuilder - Fix getLinesArray() error reporting +FIX: Move delete task time trigger position +FIX: Navigation between invoices +FIX: No empty line inserted into accounting_bookkeeping +FIX: Numbering of sepa files +FIX: object cloning: set unique extrafield values to null to prevent duplicates +FIX: on update with action reminder in future there is user key error +FIX: originproductline array td identification data-id +FIX: out of memory when more than 100 000 invoices. +FIX: permit access to medias when logged in a different entity +FIX: phpcs +FIX: project creation prevented if PROJECTLEADER contact role renamed, de-activated or deleted +FIX: project timesheet by week: cleanup unused code +FIX: project timesheet: public holidays offset by 1 day +FIX: project timesheets: assume Saturday and Sunday as default weekend days when working days conf is empty or badly formed +FIX: propal list: bad error management when setting "not signed" mass action +FIX: propal list mass action translations and error management (v14 edition) +FIX: propal list: missing not signed massaction translation keys for transifex +FIX: PR returns +FIX: ref_client doesn't exists on supplier invoice, then ref_fourn needs to have a default value when we want to bill several supplier orders +FIX: replenish and manage product stock by warhouse +FIX: sending email on payment of registration of event +FIX: SEPA ICS is not mandatory for bank transfer +FIX: Set datec when add time spent on a project task +FIX: status filter on supplierOrder stats doesn't work +FIX: stickler-ci +FIX: still prevent project creation if PROJECTLEADER role unavailable, but with a specific error message +FIX: Supplier order stats +FIX: Tabulation must be allowed for HTML content +FIX: tool to fix bank account not in main currency for vendor invoice +FIX: translations +FIX: Travis + Update dev +FIX: truncate Customer Reference too long on PDF header (PR #20718) +FIX: uniformize code +FIX: Update of sale price (log not correctly updated) +FIX: user actions rights when mulit-company transverse mode is enabled +FIX: user employee tab: offset in open days messes up holiday length calculation +FIX: We need to have a different default_ref_supplier for each new fourn invoice +FIX: "WHERE" clause missing on resource export +FIX: #yogosha9754 + + ***** ChangeLog for 15.0.1 compared to 15.0.0 ***** FIX: #19777 #20281 FIX: bad position of extrafields for interventions From ddd0848acc6b8624409dd7108675b298c2f24649 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 17 May 2022 01:21:33 +0200 Subject: [PATCH 149/248] Look and feel v16 --- htdocs/core/class/html.form.class.php | 5 +++-- htdocs/theme/eldy/global.inc.php | 2 +- htdocs/theme/md/style.css.php | 2 +- htdocs/user/class/user.class.php | 1 + htdocs/user/list.php | 22 ++++++++++++++++++---- 5 files changed, 24 insertions(+), 8 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 94ae9fb0fbc..c96db183a3f 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -8922,10 +8922,11 @@ class Form $addgendertxt .= ''; break; case 'other': - $addgendertxt .= ''; + $addgendertxt .= ''; break; } } + /* $addadmin = ''; if (property_exists($object, 'admin')) { @@ -9067,7 +9068,7 @@ class Form $ret .= dol_htmlentities($fullname).$addgendertxt.((!empty($object->societe) && $object->societe != $fullname) ? ' ('.dol_htmlentities($object->societe).')' : ''); } } elseif (in_array($object->element, array('contact', 'user', 'usergroup'))) { - $ret .= dol_htmlentities($object->getFullName($langs)); + $ret .= dol_htmlentities($object->getFullName($langs)).$addgendertxt; } elseif (in_array($object->element, array('action', 'agenda'))) { $ret .= $object->ref.'
    '.$object->label; } elseif (in_array($object->element, array('adherent_type'))) { diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 76e7a74450d..d01e3b8d55d 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -901,7 +901,7 @@ div.urllink, div.urllink a { color: #339 !important; } -i.fa-mars::before, i.fa-venus::before, i.fa-genderless::before { +i.fa-mars::before, i.fa-venus::before, i.fa-genderless::before, i.fa-transgender::before { color: #888 !important; opacity: 0.4; padding-: 3px; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 879bd52e864..fe54b2365b5 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -1050,7 +1050,7 @@ div.urllink, div.urllink a { .fa-info-circle { padding-: 3px; } -i.fa-mars::before, i.fa-venus::before, i.fa-genderless::before { +i.fa-mars::before, i.fa-venus::before, i.fa-genderless::before, i.fa-transgender::before { color: #888 !important; opacity: 0.4; padding-: 3px; diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index b0630f0394e..9f25d49bd50 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -80,6 +80,7 @@ class User extends CommonObject * @var string gender */ public $gender; + public $birth; /** diff --git a/htdocs/user/list.php b/htdocs/user/list.php index 422d36d791f..2ec8ac37b87 100644 --- a/htdocs/user/list.php +++ b/htdocs/user/list.php @@ -661,7 +661,7 @@ if (!empty($arrayfields['u.firstname']['checked'])) { print ''; } if (!empty($arrayfields['u.gender']['checked'])) { - print ''; + print ''; $arraygender = array('man'=>$langs->trans("Genderman"), 'woman'=>$langs->trans("Genderwoman"), 'other'=>$langs->trans("Genderother")); print $form->selectarray('search_gender', $arraygender, $search_gender, 1); print ''; @@ -748,7 +748,7 @@ if (!empty($arrayfields['u.firstname']['checked'])) { print_liste_field_titre("FirstName", $_SERVER['PHP_SELF'], "u.firstname", $param, "", "", $sortfield, $sortorder); } if (!empty($arrayfields['u.gender']['checked'])) { - print_liste_field_titre("Gender", $_SERVER['PHP_SELF'], "u.gender", $param, "", "", $sortfield, $sortorder); + print_liste_field_titre("Gender", $_SERVER['PHP_SELF'], "u.gender", $param, "", "", $sortfield, $sortorder, 'center '); } if (!empty($arrayfields['u.employee']['checked'])) { print_liste_field_titre("Employee", $_SERVER['PHP_SELF'], "u.employee", $param, "", "", $sortfield, $sortorder, 'center '); @@ -891,9 +891,23 @@ while ($i < ($limit ? min($num, $limit) : $num)) { } } if (!empty($arrayfields['u.gender']['checked'])) { - print ''; + print ''; if ($obj->gender) { - print $langs->trans("Gender".$obj->gender); + // Preparing gender's display if there is one + $addgendertxt = ''; + switch ($obj->gender) { + case 'man': + $addgendertxt .= 'gender)).'">'; + break; + case 'woman': + $addgendertxt .= 'gender)).'">'; + break; + case 'other': + $addgendertxt .= 'gender)).'">'; + break; + } + print $addgendertxt; + //print $langs->trans("Gender".$obj->gender); } print ''; if (!$i) { From a2e814b07972a5f06b673a69731e50440d02291c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 17 May 2022 07:30:02 +0200 Subject: [PATCH 150/248] Fix permissions --- htdocs/core/lib/security.lib.php | 1 + htdocs/ticket/index.php | 308 ++++++++++++++++--------------- 2 files changed, 159 insertions(+), 150 deletions(-) diff --git a/htdocs/core/lib/security.lib.php b/htdocs/core/lib/security.lib.php index 28e3a4a22f8..f5910e3b921 100644 --- a/htdocs/core/lib/security.lib.php +++ b/htdocs/core/lib/security.lib.php @@ -378,6 +378,7 @@ function restrictedArea($user, $features, $objectid = 0, $tableandshare = '', $f $nbko++; } } elseif (!empty($feature) && ($feature != 'user' && $feature != 'usergroup')) { // This is permissions on 1 level + var_dump($user->rights); if (empty($user->rights->$feature->lire) && empty($user->rights->$feature->read) && empty($user->rights->$feature->run)) { diff --git a/htdocs/ticket/index.php b/htdocs/ticket/index.php index 8e6e09f3fcf..8071d222748 100644 --- a/htdocs/ticket/index.php +++ b/htdocs/ticket/index.php @@ -52,9 +52,6 @@ if ($user->socid) { } $userid = $user->id; -// Security check -$result = restrictedArea($user, 'ticket', 0, '', '', '', ''); - $nowarray = dol_getdate(dol_now(), true); $nowyear = $nowarray['year']; $year = GETPOST('year', 'int') > 0 ? GETPOST('year', 'int') : $nowyear; @@ -63,6 +60,12 @@ $endyear = $year; $object = new Ticket($db); +// Security check +//$result = restrictedArea($user, 'ticket|knowledgemanagement', 0, '', '', '', ''); +if (empty($user->rights->ticket->read) && empty($user->rights->knowledgemanagement->knowledgerecord->read)) { + accessforbidden('Not enought permissions'); +} + /* * Actions @@ -240,63 +243,67 @@ $stringtoshow .= ''; -print ''; -print ''; +if (!empty($user->rights->ticket->read)) { + print '
    '; + print '
    '.$langs->trans("Statistics").' '.$endyear.' '.img_picto('', 'filter.png', 'id="idsubimgDOLUSERCOOKIE_ticket_by_status" class="linkobject"').'
    '; + print ''; -print ''; + + print '
    '.$langs->trans("Statistics").' '.$endyear.' '.img_picto('', 'filter.png', 'id="idsubimgDOLUSERCOOKIE_ticket_by_status" class="linkobject"').'
    '; -print $stringtoshow; + print '
    '; + print $stringtoshow; -// don't display graph if no series -if (!empty($dataseries) && count($dataseries) > 1) { - $totalnb = 0; - foreach ($dataseries as $key => $value) { - $totalnb += $value['data']; - } - - $data = array(); - foreach ($dataseries as $key => $value) { - $data[] = array($value['label'], $value['data']); - } - $px1 = new DolGraph(); - $mesg = $px1->isGraphKo(); - if (!$mesg) { - $px1->SetData($data); - $px1->SetDataColor(array_values($colorseries)); - - unset($data1); - $i = $startyear; - $legend = array(); - while ($i <= $endyear) { - $legend[] = $i; - $i++; + // don't display graph if no series + if (!empty($dataseries) && count($dataseries) > 1) { + $totalnb = 0; + foreach ($dataseries as $key => $value) { + $totalnb += $value['data']; } - $px1->setShowLegend(2); - $px1->SetType(array('pie')); - $px1->SetLegend($legend); - $px1->SetMaxValue($px1->GetCeilMaxValue()); - //$px1->SetWidth($WIDTH); - $px1->SetHeight($HEIGHT); - $px1->SetYLabel($langs->trans("TicketStatByStatus")); - $px1->SetShading(3); - $px1->SetHorizTickIncrement(1); - $px1->SetCssPrefix("cssboxes"); - $px1->mode = 'depth'; - //$px1->SetTitle($langs->trans("TicketStatByStatus")); - $px1->draw($filenamenb, $fileurlnb); - print $px1->show($totalnb ? 0 : 1); + $data = array(); + foreach ($dataseries as $key => $value) { + $data[] = array($value['label'], $value['data']); + } + $px1 = new DolGraph(); + $mesg = $px1->isGraphKo(); + if (!$mesg) { + $px1->SetData($data); + $px1->SetDataColor(array_values($colorseries)); + + unset($data1); + $i = $startyear; + $legend = array(); + while ($i <= $endyear) { + $legend[] = $i; + $i++; + } + $px1->setShowLegend(2); + $px1->SetType(array('pie')); + $px1->SetLegend($legend); + $px1->SetMaxValue($px1->GetCeilMaxValue()); + //$px1->SetWidth($WIDTH); + $px1->SetHeight($HEIGHT); + $px1->SetYLabel($langs->trans("TicketStatByStatus")); + $px1->SetShading(3); + $px1->SetHorizTickIncrement(1); + $px1->SetCssPrefix("cssboxes"); + $px1->mode = 'depth'; + //$px1->SetTitle($langs->trans("TicketStatByStatus")); + + $px1->draw($filenamenb, $fileurlnb); + print $px1->show($totalnb ? 0 : 1); + } } + print '
    '; + print ''; } -print ''; -print ''; -print ''; +if (!empty($user->rights->ticket->read)) { + // Build graphic number of object + $data = $stats->getNbByMonthWithPrevYear($endyear, $startyear); -// Build graphic number of object -$data = $stats->getNbByMonthWithPrevYear($endyear, $startyear); - -print '
    '."\n"; + print '
    '."\n"; +} print $resultboxes['boxlista']; @@ -304,127 +311,128 @@ print ''."\n"; print '
    '; -/* - * Latest unread tickets - */ +if (!empty($user->rights->ticket->read)) { + /* + * Latest unread tickets + */ -$max = 10; + $max = 10; -$sql = "SELECT t.rowid, t.ref, t.track_id, t.datec, t.subject, t.type_code, t.category_code, t.severity_code, t.fk_statut, t.progress,"; -$sql .= " type.code as type_code, type.label as type_label,"; -$sql .= " category.code as category_code, category.label as category_label,"; -$sql .= " severity.code as severity_code, severity.label as severity_label"; -$sql .= " FROM ".MAIN_DB_PREFIX."ticket as t"; -$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_ticket_type as type ON type.code=t.type_code"; -$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_ticket_category as category ON category.code=t.category_code"; -$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_ticket_severity as severity ON severity.code=t.severity_code"; -if (empty($user->rights->societe->client->voir) && !$socid) { - $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; -} - -$sql .= ' WHERE t.entity IN ('.getEntity('ticket').')'; -$sql .= " AND t.fk_statut=0"; -if (empty($user->rights->societe->client->voir) && !$socid) { - $sql .= " AND t.fk_soc = sc.fk_soc AND sc.fk_user = ".((int) $user->id); -} - -if ($user->socid > 0) { - $sql .= " AND t.fk_soc= ".((int) $user->socid); -} else { - // Restricted to assigned user only - if (!empty($conf->global->TICKET_LIMIT_VIEW_ASSIGNED_ONLY) && !$user->rights->ticket->manage) { - $sql .= " AND t.fk_user_assign = ".((int) $user->id); + $sql = "SELECT t.rowid, t.ref, t.track_id, t.datec, t.subject, t.type_code, t.category_code, t.severity_code, t.fk_statut, t.progress,"; + $sql .= " type.code as type_code, type.label as type_label,"; + $sql .= " category.code as category_code, category.label as category_label,"; + $sql .= " severity.code as severity_code, severity.label as severity_label"; + $sql .= " FROM ".MAIN_DB_PREFIX."ticket as t"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_ticket_type as type ON type.code=t.type_code"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_ticket_category as category ON category.code=t.category_code"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_ticket_severity as severity ON severity.code=t.severity_code"; + if (empty($user->rights->societe->client->voir) && !$socid) { + $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; } -} -$sql .= $db->order("t.datec", "DESC"); -$sql .= $db->plimit($max, 0); -//print $sql; -$result = $db->query($sql); -if ($result) { - $num = $db->num_rows($result); + $sql .= ' WHERE t.entity IN ('.getEntity('ticket').')'; + $sql .= " AND t.fk_statut=0"; + if (empty($user->rights->societe->client->voir) && !$socid) { + $sql .= " AND t.fk_soc = sc.fk_soc AND sc.fk_user = ".((int) $user->id); + } - $i = 0; + if ($user->socid > 0) { + $sql .= " AND t.fk_soc= ".((int) $user->socid); + } else { + // Restricted to assigned user only + if (!empty($conf->global->TICKET_LIMIT_VIEW_ASSIGNED_ONLY) && !$user->rights->ticket->manage) { + $sql .= " AND t.fk_user_assign = ".((int) $user->id); + } + } + $sql .= $db->order("t.datec", "DESC"); + $sql .= $db->plimit($max, 0); - $transRecordedType = $langs->trans("LatestNewTickets", $max); + //print $sql; + $result = $db->query($sql); + if ($result) { + $num = $db->num_rows($result); - print '
    '; - print ''; - print ''; - print ''; - print ''; - if ($num > 0) { - while ($i < $num) { - $objp = $db->fetch_object($result); + $i = 0; - $object->id = $objp->rowid; - $object->ref = $objp->ref; - $object->track_id = $objp->track_id; - $object->fk_statut = $objp->fk_statut; - $object->progress = $objp->progress; - $object->subject = $objp->subject; + $transRecordedType = $langs->trans("LatestNewTickets", $max); - print ''; + print '
    '; + print '
    '.$transRecordedType.''.$langs->trans("FullList").'
    '; + print ''; + print ''; + print ''; + if ($num > 0) { + while ($i < $num) { + $objp = $db->fetch_object($result); - // Ref - print '\n"; + $object->id = $objp->rowid; + $object->ref = $objp->ref; + $object->track_id = $objp->track_id; + $object->fk_statut = $objp->fk_statut; + $object->progress = $objp->progress; + $object->subject = $objp->subject; - // Creation date - print '"; + print ''; - // Subject - print '\n"; + // Ref + print '\n"; - // Type - print ''; + // Creation date + print '"; - // Category - print '\n"; + + // Type + print ''; + + // Category + print '"; + + // Severity + print '"; + + print '"; + + print "\n"; + $i++; } - //print $objp->category_label; - print ""; - // Severity - print '"; - - print '"; - - print "\n"; - $i++; + $db->free($result); + } else { + print ''; } - $db->free($result); + print "
    '.$transRecordedType.''.$langs->trans("FullList").'
    '; - print $object->getNomUrl(1); - print "'; - print dol_print_date($db->jdate($objp->datec), 'dayhour'); - print "
    '; - print ''.dol_trunc($objp->subject, 30).''; - print "'; + print $object->getNomUrl(1); + print "'; - $s = $langs->getLabelFromKey($db, 'TicketTypeShort'.$objp->type_code, 'c_ticket_type', 'code', 'label', $objp->type_code); - print ''.$s.''; - print ''; + print dol_print_date($db->jdate($objp->datec), 'dayhour'); + print "'; - if (!empty($obp->category_code)) { - $s = $langs->getLabelFromKey($db, 'TicketCategoryShort'.$objp->category_code, 'c_ticket_category', 'code', 'label', $objp->category_code); + // Subject + print ''; + print ''.dol_trunc($objp->subject, 30).''; + print "'; + $s = $langs->getLabelFromKey($db, 'TicketTypeShort'.$objp->type_code, 'c_ticket_type', 'code', 'label', $objp->type_code); print ''.$s.''; + print ''; + if (!empty($obp->category_code)) { + $s = $langs->getLabelFromKey($db, 'TicketCategoryShort'.$objp->category_code, 'c_ticket_category', 'code', 'label', $objp->category_code); + print ''.$s.''; + } + //print $objp->category_label; + print "'; + $s = $langs->getLabelFromKey($db, 'TicketSeverityShort'.$objp->severity_code, 'c_ticket_severity', 'code', 'label', $objp->severity_code); + print ''.$s.''; + //print $objp->severity_label; + print "'; + print $object->getLibStatut(5); + print "
    '; - $s = $langs->getLabelFromKey($db, 'TicketSeverityShort'.$objp->severity_code, 'c_ticket_severity', 'code', 'label', $objp->severity_code); - print ''.$s.''; - //print $objp->severity_label; - print "'; - print $object->getLibStatut(5); - print "
    '.$langs->trans('NoUnreadTicketsFound').'
    "; + print '
    '; + + print '
    '; } else { - print ''.$langs->trans('NoUnreadTicketsFound').''; + dol_print_error($db); } - - print ""; - print '
    '; - - print '
    '; -} else { - dol_print_error($db); } - print $resultboxes['boxlistb']; print ''; From 07f2b787580dca89ddbe9aa4188a00234d82de12 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 17 May 2022 07:51:45 +0200 Subject: [PATCH 151/248] Clean code of doliwamp. Remove phpmyadmin --- build/exe/doliwamp/doliwamp.iss | 63 +++------------------------------ 1 file changed, 4 insertions(+), 59 deletions(-) diff --git a/build/exe/doliwamp/doliwamp.iss b/build/exe/doliwamp/doliwamp.iss index dbf74a96f67..c316e0f91d6 100644 --- a/build/exe/doliwamp/doliwamp.iss +++ b/build/exe/doliwamp/doliwamp.iss @@ -27,12 +27,12 @@ OutputBaseFilename=__FILENAMEEXEDOLIWAMP__ ;SourceDir=Z:\home\ldestailleur\git\dolibarrxxx SourceDir=..\..\.. AppId=doliwamp -AppPublisher=NLTechno -AppPublisherURL=https://www.nltechno.com +AppPublisher=DoliCloud +AppPublisherURL=https://www.dolicloud.com AppSupportURL=https://www.dolibarr.org AppUpdatesURL=https://www.dolibarr.org AppComments=DoliWamp includes Dolibarr, Apache, PHP and Mysql software. -AppCopyright=Copyright (C) 2008-2020 Laurent Destailleur (NLTechno), Fabian Rodriguez (Le Goût du Libre) +AppCopyright=Copyright (C) 2008-2022 Laurent Destailleur (NLTechno), Fabian Rodriguez (Le Goût du Libre) DefaultDirName=c:\dolibarr DefaultGroupName=Dolibarr ;LicenseFile=COPYING @@ -99,13 +99,12 @@ Source: "build\exe\doliwamp\startdoliwamp_manual_donotuse.bat.install"; DestDir: Source: "build\exe\doliwamp\builddemosslfiles.bat.install"; DestDir: "{app}\"; Flags: ignoreversion; Source: "build\exe\doliwamp\UsedPort.exe"; DestDir: "{app}\"; Flags: ignoreversion; -; PhpMyAdmin, Apache, Php, Mysql +; Apache, Php, Mysql ; Put here path of Wampserver applications ; Value OK: apache 2.2.6, php 5.2.5 (5.2.11, 5.3.0 and 5.3.1 fails if php_exif, php_pgsql, php_zip is on), mysql 5.0.45 ; Value OK: apache 2.2.11, php 5.3.0 (if no php_exif, php_pgsql, php_zip), mysql 5.0.45 ; Value OK: apache 2.4.9, php 5.5.12, mysql 5.0.45 instead of 5.6.17 (wampserver2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-32b.exe) ; Value OK: apache 2.4.41, php 7.3.12, mariadb10.4.10 (wampserver3.2.0_x64.exe) -Source: "C:\wamp64\apps\phpmyadmin4.9.2\*.*"; DestDir: "{app}\apps\phpmyadmin4.9.2"; Flags: ignoreversion recursesubdirs; Excludes: "config.inc.php,wampserver.conf,*.log,*_log,darkblue_orange" ;Source: "C:\Program Files\Wamp\bin\apache\apache2.4.9\*.*"; DestDir: "{app}\bin\apache\apache2.4.9"; Flags: ignoreversion recursesubdirs; Excludes: "php.ini,httpd.conf,wampserver.conf,*.log,*_log" Source: "C:\wamp64\bin\apache\apache2.4.41\*.*"; DestDir: "{app}\bin\apache\apache2.4.41"; Flags: ignoreversion recursesubdirs; Excludes: "php.ini,httpd.conf,wampserver.conf,*.log,*_log" ;Source: "C:\Program Files\Wamp\bin\php\php5.5.12\*.*"; DestDir: "{app}\bin\php\php5.5.12"; Flags: ignoreversion recursesubdirs; Excludes: "php.ini,phpForApache.ini,wampserver.conf,*.log,*_log" @@ -125,9 +124,7 @@ Source: "scripts\*.*"; DestDir: "{app}\www\dolibarr\scripts"; Flags: ignoreversi Source: "*.*"; DestDir: "{app}\www\dolibarr"; Flags: ignoreversion; Excludes: ".gitignore,.project,CVS\*,Thumbs.db,default.properties,install.lock" ; Config files -Source: "build\exe\doliwamp\phpmyadmin.conf.install"; DestDir: "{app}\alias"; Flags: ignoreversion; Source: "build\exe\doliwamp\dolibarr.conf.install"; DestDir: "{app}\alias"; Flags: ignoreversion; -Source: "build\exe\doliwamp\config.inc.php.install"; DestDir: "{app}\apps\phpmyadmin4.1.14"; Flags: ignoreversion; ;Source: "build\exe\doliwamp\httpd.conf.install"; DestDir: "{app}\bin\apache\apache2.4.9\conf"; Flags: ignoreversion; Source: "build\exe\doliwamp\httpd.conf.install"; DestDir: "{app}\bin\apache\apache2.4.41\conf"; Flags: ignoreversion; Source: "build\exe\doliwamp\my.ini.install"; DestDir: "{app}\bin\mysql\mysql5.0.45"; Flags: ignoreversion; @@ -196,7 +193,6 @@ var destFileA: String; var srcContents: String; var browser: String; var mysqlVersion: String; -var phpmyadminVersion: String; var phpDllCopy: String; var batFile: String; @@ -246,7 +242,6 @@ begin phpVersion := '7.3.12' ; //mysqlVersion := '5.0.45'; mysqlVersion := '10.4.10'; - phpmyadminVersion := '4.1.14'; smtpServer := 'localhost'; apachePort := '80'; @@ -635,27 +630,6 @@ begin begin - //---------------------------------------------- - // Create file alias phpmyadmin (always) - //---------------------------------------------- - - destFile := pathWithSlashes+'/alias/phpmyadmin.conf'; - srcFile := pathWithSlashes+'/alias/phpmyadmin.conf.install'; - - if FileExists(srcFile) then - begin - LoadStringFromFile (srcFile, srcContents); - - //installDir et version de phpmyadmin - StringChangeEx (srcContents, 'WAMPROOT', pathWithSlashes, True); - StringChangeEx (srcContents, 'WAMPPHPMYADMINVERSION', phpmyadminVersion, True); - - SaveStringToFile(destFile,srcContents, False); - end; - DeleteFile(srcFile); - - - //---------------------------------------------- // Create file alias dolibarr (if not exists) //---------------------------------------------- @@ -691,35 +665,6 @@ begin - //---------------------------------------------- - // Create file configuration for phpmyadmin (if not exists) - //---------------------------------------------- - - destFile := pathWithSlashes+'/apps/phpmyadmin'+phpmyadminVersion+'/config.inc.php'; - srcFile := pathWithSlashes+'/apps/phpmyadmin'+phpmyadminVersion+'/config.inc.php.install'; - - if FileExists(srcFile) then - begin - if not FileExists (destFile) then - begin - LoadStringFromFile (srcFile, srcContents); - StringChangeEx (srcContents, 'WAMPMYSQLNEWPASSWORD', mypass, True); - StringChangeEx (srcContents, 'WAMPMYSQLPORT', myport, True); - SaveStringToFile(destFile,srcContents, False); - end - else - begin - // We must replace to use format 2.4 of apache - DeleteFile(destFile); - LoadStringFromFile (srcFile, srcContents); - StringChangeEx (srcContents, 'WAMPMYSQLNEWPASSWORD', mypass, True); - StringChangeEx (srcContents, 'WAMPMYSQLPORT', myport, True); - SaveStringToFile(destFile,srcContents, False); - end; - end; - - - //---------------------------------------------- // Create file httpd.conf (if not exists) //---------------------------------------------- From 179716ac004ed0840d29f8b6d13c89b7906da8b6 Mon Sep 17 00:00:00 2001 From: Christophe Battarel Date: Tue, 17 May 2022 09:17:36 +0200 Subject: [PATCH 152/248] add constant to hide stock on cart --- htdocs/takepos/invoice.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/takepos/invoice.php b/htdocs/takepos/invoice.php index eec8ab7d363..6aca4e01a5d 100644 --- a/htdocs/takepos/invoice.php +++ b/htdocs/takepos/invoice.php @@ -1560,7 +1560,7 @@ if ($placeid > 0) { $htmlforlines .= ''; if (!empty($conf->stock->enabled) && !empty($user->rights->stock->mouvement->lire)) { $constantforkey = 'CASHDESK_ID_WAREHOUSE'.$_SESSION["takeposterminal"]; - if (!empty($conf->global->$constantforkey) && $line->fk_product > 0) { + if (!empty($conf->global->$constantforkey) && $line->fk_product > 0 && empty($conf->global->TAKEPOS_HIDE_STOCK_ON_LINE)) { $sql = "SELECT e.rowid, e.ref, e.lieu, e.fk_parent, e.statut, ps.reel, ps.rowid as product_stock_id, p.pmp"; $sql .= " FROM ".MAIN_DB_PREFIX."entrepot as e,"; $sql .= " ".MAIN_DB_PREFIX."product_stock as ps"; From 61f7c4395b7bf598223c5dc1c6385d0cb6e5f1cc Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Tue, 17 May 2022 11:55:57 +0200 Subject: [PATCH 153/248] fix: module builder template bad error message affactation --- htdocs/modulebuilder/template/admin/setup.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/modulebuilder/template/admin/setup.php b/htdocs/modulebuilder/template/admin/setup.php index fe92596d228..e94a2678b4a 100644 --- a/htdocs/modulebuilder/template/admin/setup.php +++ b/htdocs/modulebuilder/template/admin/setup.php @@ -436,7 +436,7 @@ if ($action == 'edit') { if ($resprod > 0) { print $product->ref; } elseif ($resprod < 0) { - setEventMessages(null, $object->errors, "errors"); + setEventMessages(null, $product->errors, "errors"); } } else { print $conf->global->{$constname}; From 480b48e5e1d34a65bd5187798cc8f2e7377ba789 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 17 May 2022 14:36:56 +0200 Subject: [PATCH 154/248] Fix var_dump --- htdocs/core/lib/security.lib.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/core/lib/security.lib.php b/htdocs/core/lib/security.lib.php index f5910e3b921..28e3a4a22f8 100644 --- a/htdocs/core/lib/security.lib.php +++ b/htdocs/core/lib/security.lib.php @@ -378,7 +378,6 @@ function restrictedArea($user, $features, $objectid = 0, $tableandshare = '', $f $nbko++; } } elseif (!empty($feature) && ($feature != 'user' && $feature != 'usergroup')) { // This is permissions on 1 level - var_dump($user->rights); if (empty($user->rights->$feature->lire) && empty($user->rights->$feature->read) && empty($user->rights->$feature->run)) { From 4de50da0dd11ab9ddb225f932ddc5414a65422e5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 17 May 2022 14:55:38 +0200 Subject: [PATCH 155/248] Repare code to forbidden var_dump() into code --- dev/tools/test/namespacemig/main.inc.php | 2 +- htdocs/accountancy/journal/bankjournal.php | 22 +++++----- htdocs/admin/holiday.php | 22 +++++----- htdocs/admin/system/filecheck.php | 8 ++-- htdocs/admin/system/xcache.php | 17 -------- htdocs/admin/translation.php | 6 +-- htdocs/api/class/api_documents.class.php | 7 ++-- htdocs/blockedlog/ajax/block-info.php | 10 ++--- htdocs/comm/action/index.php | 3 +- htdocs/comm/action/pertype.php | 4 +- htdocs/comm/action/peruser.php | 4 +- .../class/bonprelevement.class.php | 4 +- htdocs/core/class/commoninvoice.class.php | 10 ++--- htdocs/core/class/html.form.class.php | 6 +-- htdocs/core/customreports.php | 4 +- htdocs/core/lib/files.lib.php | 6 +-- htdocs/core/lib/phpsessionindb.lib.php | 9 ++--- htdocs/core/lib/sendings.lib.php | 2 +- htdocs/core/lib/usergroups.lib.php | 10 ++--- htdocs/core/menus/standard/auguria_menu.php | 4 +- htdocs/core/menus/standard/eldy_menu.php | 8 +++- htdocs/core/menus/standard/empty.php | 8 +++- .../core/modules/bank/doc/pdf_ban.modules.php | 2 +- .../bank/doc/pdf_sepamandate.modules.php | 10 ++--- .../modules/import/import_csv.modules.php | 2 +- .../modules/import/import_xlsx.modules.php | 2 +- .../project/doc/pdf_baleine.modules.php | 2 +- .../project/doc/pdf_timespent.modules.php | 2 +- .../class/emailcollector.class.php | 40 ++++++++++--------- .../class/emailcollectoraction.class.php | 3 +- .../class/emailcollectorfilter.class.php | 3 +- .../class/conferenceorboothattendee.class.php | 3 +- htdocs/expedition/card.php | 6 ++- .../tpl/expensereport_linktofile.tpl.php | 4 +- .../class/fournisseur.commande.class.php | 12 +++--- htdocs/fourn/facture/card.php | 8 ++-- htdocs/holiday/class/holiday.class.php | 8 ++-- .../class/knowledgerecord.class.php | 3 +- htdocs/modulebuilder/index.php | 33 ++++++++++----- .../template/class/myobject.class.php | 3 +- htdocs/mrp/class/mo.class.php | 3 +- .../partnership/class/partnership.class.php | 3 +- .../class/productfournisseurprice.class.php | 3 +- htdocs/product/stock/massstockmove.php | 6 ++- htdocs/projet/activity/perday.php | 6 +-- htdocs/projet/activity/permonth.php | 3 +- htdocs/projet/activity/perweek.php | 3 +- .../class/recruitmentcandidature.class.php | 3 +- .../class/recruitmentjobposition.class.php | 3 +- ...tandard_recruitmentjobposition.modules.php | 3 +- htdocs/salaries/card.php | 4 +- htdocs/societe/paymentmodes.php | 4 +- htdocs/stripe/class/stripe.class.php | 25 ++++++------ htdocs/supplier_proposal/card.php | 4 +- htdocs/ticket/class/cticketcategory.class.php | 3 +- htdocs/ticket/class/ticket.class.php | 3 +- htdocs/ticket/list.php | 4 +- htdocs/website/index.php | 3 +- .../workstation/class/workstation.class.php | 3 +- 59 files changed, 225 insertions(+), 186 deletions(-) diff --git a/dev/tools/test/namespacemig/main.inc.php b/dev/tools/test/namespacemig/main.inc.php index 555a4b36ff5..d46d8e38c1c 100644 --- a/dev/tools/test/namespacemig/main.inc.php +++ b/dev/tools/test/namespacemig/main.inc.php @@ -1,7 +1,7 @@ begin(); // Introduce a protection. Total of tabtp must be total of tabbq - /*var_dump($tabpay); - var_dump($tabtp); - var_dump($tabbq);exit;*/ + //var_dump($tabpay); + //var_dump($tabtp); + //var_dump($tabbq);exit; // Bank if (!$errorforline && is_array($tabbq[$key])) { @@ -1267,9 +1267,9 @@ if (empty($action) || $action == 'view') { $accounttoshowsubledger = length_accounta($k); if ($accounttoshow != $accounttoshowsubledger) { if (empty($accounttoshowsubledger) || $accounttoshowsubledger == 'NotDefined') { - /*var_dump($tabpay[$key]); - var_dump($tabtype[$key]); - var_dump($tabbq[$key]);*/ + //var_dump($tabpay[$key]); + //var_dump($tabtype[$key]); + //var_dump($tabbq[$key]); //print ''.$langs->trans("ThirdpartyAccountNotDefined").''; if (!empty($tabcompany[$key]['code_compta'])) { if (in_array($tabtype[$key], array('payment_various', 'payment_salary'))) { diff --git a/htdocs/admin/holiday.php b/htdocs/admin/holiday.php index c1755b17edf..7b0aa577a87 100644 --- a/htdocs/admin/holiday.php +++ b/htdocs/admin/holiday.php @@ -442,23 +442,23 @@ print ''.$langs->trans("Parameter").''; print ''.$langs->trans("Value").''; print "\n"; -/*var_dump($conf->global->MAIN_NON_WORKING_DAYS_INCLUDE_MONDAY); -var_dump($conf->global->MAIN_NON_WORKING_DAYS_INCLUDE_FRIDAY); -var_dump($conf->global->MAIN_NON_WORKING_DAYS_INCLUDE_SATURDAY); -var_dump($conf->global->MAIN_NON_WORKING_DAYS_INCLUDE_SUNDAY); -*/ +//var_dump($conf->global->MAIN_NON_WORKING_DAYS_INCLUDE_MONDAY); +//var_dump($conf->global->MAIN_NON_WORKING_DAYS_INCLUDE_FRIDAY); +//var_dump($conf->global->MAIN_NON_WORKING_DAYS_INCLUDE_SATURDAY); +//var_dump($conf->global->MAIN_NON_WORKING_DAYS_INCLUDE_SUNDAY); + if (!isset($conf->global->MAIN_NON_WORKING_DAYS_INCLUDE_SATURDAY)) { $conf->global->MAIN_NON_WORKING_DAYS_INCLUDE_SATURDAY = 1; } if (!isset($conf->global->MAIN_NON_WORKING_DAYS_INCLUDE_SUNDAY)) { $conf->global->MAIN_NON_WORKING_DAYS_INCLUDE_SUNDAY = 1; } -/* -var_dump($conf->global->MAIN_NON_WORKING_DAYS_INCLUDE_MONDAY); -var_dump($conf->global->MAIN_NON_WORKING_DAYS_INCLUDE_FRIDAY); -var_dump($conf->global->MAIN_NON_WORKING_DAYS_INCLUDE_SATURDAY); -var_dump($conf->global->MAIN_NON_WORKING_DAYS_INCLUDE_SUNDAY); -*/ + +//var_dump($conf->global->MAIN_NON_WORKING_DAYS_INCLUDE_MONDAY); +//var_dump($conf->global->MAIN_NON_WORKING_DAYS_INCLUDE_FRIDAY); +//var_dump($conf->global->MAIN_NON_WORKING_DAYS_INCLUDE_SATURDAY); +//var_dump($conf->global->MAIN_NON_WORKING_DAYS_INCLUDE_SUNDAY); + // Set working days print ''; diff --git a/htdocs/admin/system/filecheck.php b/htdocs/admin/system/filecheck.php index 10edae1a24b..58c27cbb1e4 100644 --- a/htdocs/admin/system/filecheck.php +++ b/htdocs/admin/system/filecheck.php @@ -407,10 +407,10 @@ if (empty($error) && !empty($xml)) { $checksumget = md5(join(',', $checksumconcat)); $checksumtoget = trim((string) $xml->dolibarr_htdocs_dir_checksum); - /*var_dump(count($file_list['added'])); - var_dump($checksumget); - var_dump($checksumtoget); - var_dump($checksumget == $checksumtoget);*/ + //var_dump(count($file_list['added'])); + //var_dump($checksumget); + //var_dump($checksumtoget); + //var_dump($checksumget == $checksumtoget); $resultcomment = ''; diff --git a/htdocs/admin/system/xcache.php b/htdocs/admin/system/xcache.php index 8bdca5be40e..4e2f881a14c 100644 --- a/htdocs/admin/system/xcache.php +++ b/htdocs/admin/system/xcache.php @@ -58,23 +58,6 @@ print $langs->trans("xcache.optimizer").': '.yn(ini_get('xcache.optimizer')).' ( print $langs->trans("xcache.stat").': '.yn(ini_get('xcache.stat')).'
    '."\n"; print $langs->trans("xcache.coverager").': '.yn(ini_get('xcache.coverager')).'
    '."\n"; -//print xcache_get(); -/* -$cacheinfos = array(); -for ($i = 0; $i < 10; $i ++) -{ - $data = xcache_info(XC_TYPE_PHP, $i); - $data['cacheid'] = $i; - $cacheinfos[] = $data; -} - -var_dump($cacheinfos); - -if ($action == 'clear') -{ - xcache_clear_cache(); -} -*/ // End of page llxFooter(); diff --git a/htdocs/admin/translation.php b/htdocs/admin/translation.php index 18ce707c839..4968e75989a 100644 --- a/htdocs/admin/translation.php +++ b/htdocs/admin/translation.php @@ -444,9 +444,9 @@ if ($mode == 'overwrite') { if ($mode == 'searchkey') { $nbempty = 0; - /*var_dump($langcode); - var_dump($transkey); - var_dump($transvalue);*/ + //var_dump($langcode); + //var_dump($transkey); + //var_dump($transvalue); if (empty($langcode) || $langcode == '-1') { $nbempty++; } diff --git a/htdocs/api/class/api_documents.class.php b/htdocs/api/class/api_documents.class.php index 81ba8e3b09d..d4d652f3e74 100644 --- a/htdocs/api/class/api_documents.class.php +++ b/htdocs/api/class/api_documents.class.php @@ -568,10 +568,9 @@ class Documents extends DolibarrApi { global $db, $conf; - /*var_dump($modulepart); - var_dump($filename); - var_dump($filecontent); - exit;*/ + //var_dump($modulepart); + //var_dump($filename); + //var_dump($filecontent);exit; if (empty($modulepart)) { throw new RestException(400, 'Modulepart not provided.'); diff --git a/htdocs/blockedlog/ajax/block-info.php b/htdocs/blockedlog/ajax/block-info.php index eb851af169a..e6f9ea0de15 100644 --- a/htdocs/blockedlog/ajax/block-info.php +++ b/htdocs/blockedlog/ajax/block-info.php @@ -92,11 +92,11 @@ function formatObject($objtoshow, $prefix) $s .= ''.($prefix ? $prefix.' > ' : '').$key.''; $s .= ''; if (in_array($key, array('date', 'datef', 'dateh', 'datec', 'datem', 'datep'))) { - /*var_dump(is_object($val)); - var_dump(is_array($val)); - var_dump(is_array($val)); - var_dump(@get_class($val)); - var_dump($val);*/ + //var_dump(is_object($val)); + //var_dump(is_array($val)); + //var_dump(is_array($val)); + //var_dump(@get_class($val)); + //var_dump($val); $s .= dol_print_date($val, 'dayhour'); } else { $s .= $val; diff --git a/htdocs/comm/action/index.php b/htdocs/comm/action/index.php index 4f8b8509f4e..920fe69025d 100644 --- a/htdocs/comm/action/index.php +++ b/htdocs/comm/action/index.php @@ -1191,7 +1191,8 @@ if (count($listofextcals)) { foreach ($icalevents as $icalevent) { //var_dump($icalevent); - //print $icalevent['SUMMARY'].'->'.var_dump($icalevent).'
    ';exit; + //print $icalevent['SUMMARY'].'->'; + //var_dump($icalevent);exit; if (!empty($icalevent['RRULE'])) { continue; // We found a repeatable event. It was already split into unitary events, so we discard general rule. } diff --git a/htdocs/comm/action/pertype.php b/htdocs/comm/action/pertype.php index 9869bd2d305..64b635d169d 100644 --- a/htdocs/comm/action/pertype.php +++ b/htdocs/comm/action/pertype.php @@ -961,7 +961,9 @@ function show_day_events_pertype($username, $day, $month, $year, $monthshown, $s $ymd = sprintf("%04d", $year).sprintf("%02d", $month).sprintf("%02d", $day); $nextindextouse = count($colorindexused); // At first run, this is 0, so fist user has 0, next 1, ... - //if ($username->id && $day==1) var_dump($eventarray); + //if ($username->id && $day==1) { + //var_dump($eventarray); + //} // We are in a particular day for $username, now we scan all events foreach ($eventarray as $daykey => $notused) { diff --git a/htdocs/comm/action/peruser.php b/htdocs/comm/action/peruser.php index 68c9088815d..07bcd90e972 100644 --- a/htdocs/comm/action/peruser.php +++ b/htdocs/comm/action/peruser.php @@ -1130,7 +1130,9 @@ function show_day_events2($username, $day, $month, $year, $monthshown, $style, & $colorindexused[$user->id] = 0; // Color index for current user (user->id) is always 0 $nextindextouse = count($colorindexused); // At first run this is 0, so first user has 0, next 1, ... - //if ($username->id && $day==1) var_dump($eventarray); + //if ($username->id && $day==1) { + //var_dump($eventarray); + //} // We are in a particular day for $username, now we scan all events foreach ($eventarray as $daykey => $notused) { diff --git a/htdocs/compta/prelevement/class/bonprelevement.class.php b/htdocs/compta/prelevement/class/bonprelevement.class.php index 4f9eb4e456e..df142fb6531 100644 --- a/htdocs/compta/prelevement/class/bonprelevement.class.php +++ b/htdocs/compta/prelevement/class/bonprelevement.class.php @@ -1066,8 +1066,8 @@ class BonPrelevement extends CommonObject // This also set the property $this->total with amount that is included into file $result = $this->generate($format, $executiondate, $type); if ($result < 0) { - /*var_dump($this->error); - var_dump($this->invoice_in_error); */ + //var_dump($this->error); + //var_dump($this->invoice_in_error); $error++; } } diff --git a/htdocs/core/class/commoninvoice.class.php b/htdocs/core/class/commoninvoice.class.php index e49f8a6a728..dc35cfbc7aa 100644 --- a/htdocs/core/class/commoninvoice.class.php +++ b/htdocs/core/class/commoninvoice.class.php @@ -862,11 +862,11 @@ abstract class CommonInvoice extends CommonObject $pricewithtax = implode(unpack("H*", price2num($pricewithtaxstring, 2))); $pricetax = implode(unpack("H*", $pricetaxstring)); - var_dump(strlen($this->thirdparty->name)); - var_dump(str_pad(dechex('9'), 2, '0', STR_PAD_LEFT)); - var_dump($this->thirdparty->name); - var_dump(implode(unpack("H*", $this->thirdparty->name))); - var_dump(price($this->total_tva, 0, $tmplang, 0, -1, 2)); + //var_dump(strlen($this->thirdparty->name)); + //var_dump(str_pad(dechex('9'), 2, '0', STR_PAD_LEFT)); + //var_dump($this->thirdparty->name); + //var_dump(implode(unpack("H*", $this->thirdparty->name))); + //var_dump(price($this->total_tva, 0, $tmplang, 0, -1, 2)); $s = '01'.str_pad(dechex(strlen($this->thirdparty->name)), 2, '0', STR_PAD_LEFT).$name; $s .= '02'.str_pad(dechex(strlen($this->thirdparty->tva_intra)), 2, '0', STR_PAD_LEFT).$vatnumber; diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index c96db183a3f..08ebac1c5e7 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -8321,9 +8321,9 @@ class Form $listcheckedstring = ''; foreach ($array as $key => $val) { - /* var_dump($val); - var_dump(array_key_exists('enabled', $val)); - var_dump(!$val['enabled']);*/ + // var_dump($val); + // var_dump(array_key_exists('enabled', $val)); + // var_dump(!$val['enabled']); if (array_key_exists('enabled', $val) && isset($val['enabled']) && !$val['enabled']) { unset($array[$key]); // We don't want this field continue; diff --git a/htdocs/core/customreports.php b/htdocs/core/customreports.php index 2d00677b20a..ace78c5199a 100644 --- a/htdocs/core/customreports.php +++ b/htdocs/core/customreports.php @@ -880,8 +880,8 @@ if ($mode == 'graph') { $px1 = new DolGraph(); $mesg = $px1->isGraphKo(); if (!$mesg) { - /*var_dump($legend); - var_dump($data);*/ + //var_dump($legend); + //var_dump($data); $px1->SetData($data); unset($data); diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php index 2cf0beb013f..6b0852e4784 100644 --- a/htdocs/core/lib/files.lib.php +++ b/htdocs/core/lib/files.lib.php @@ -330,9 +330,9 @@ function completeFileArrayWithDatabaseInfo(&$filearray, $relativedir) } } - /*var_dump($relativedir); - var_dump($filearray); - var_dump($filearrayindatabase);*/ + //var_dump($relativedir); + //var_dump($filearray); + //var_dump($filearrayindatabase); // Complete filearray with properties found into $filearrayindatabase foreach ($filearray as $key => $val) { diff --git a/htdocs/core/lib/phpsessionindb.lib.php b/htdocs/core/lib/phpsessionindb.lib.php index 8001b3ece60..0af40522bfc 100644 --- a/htdocs/core/lib/phpsessionindb.lib.php +++ b/htdocs/core/lib/phpsessionindb.lib.php @@ -104,10 +104,9 @@ function dolSessionWrite($sess_id, $val) global $sessionlastvalueread; global $sessionidfound; - /*var_dump('write '.$sess_id); - var_dump($val); - var_dump('sessionlastvalueread='.$sessionlastvalueread.' sessionidfound='.$sessionidfound); - */ + //var_dump('write '.$sess_id); + //var_dump($val); + //var_dump('sessionlastvalueread='.$sessionlastvalueread.' sessionidfound='.$sessionidfound); //$sessionlastvalueread=''; if ($sessionlastvalueread != $val) { @@ -141,7 +140,7 @@ function dolSessionWrite($sess_id, $val) $insert_query = "INSERT INTO ".MAIN_DB_PREFIX."session"; $insert_query .= "(session_id, session_variable, last_accessed, fk_user, remote_ip, user_agent)"; $insert_query .= " VALUES ('".$dbsession->escape($sess_id)."', '".$dbsession->escape($val)."', '".$dbsession->idate($time_stamp)."', 0, '".$dbsession->escape(getUserRemoteIP())."', '".$dbsession->escape(substr($_SERVER['HTTP_USER_AGENT'], 0, 255)."')"; - var_dump($insert_query); + //var_dump($insert_query); $result = $dbsession->query($insert_query); if (!$result) { dol_print_error($dbsession); diff --git a/htdocs/core/lib/sendings.lib.php b/htdocs/core/lib/sendings.lib.php index e2ab74b8cfc..4988be3cefd 100644 --- a/htdocs/core/lib/sendings.lib.php +++ b/htdocs/core/lib/sendings.lib.php @@ -398,7 +398,7 @@ function show_list_sending_receive($origin, $origin_id, $filter = '') /*TODO Add link to expeditiondet_batch if (! empty($conf->productbatch->enabled)) { - var_dump($objp->edrowid); + //var_dump($objp->edrowid); $lines[$i]->detail_batch if (isset($lines[$i]->detail_batch)) { diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index e14302da340..0589ca6c1c5 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -1048,17 +1048,15 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) print ''; print ''; } else { - /*var_dump($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER); + //var_dump($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER); + /* $default=$langs->trans('No'); print ''; print ''.$langs->trans("MAIN_OPTIMIZEFORTEXTBROWSER").''; print ''; - if ($edit) - { + if ($edit) { print $form->selectyesno('MAIN_OPTIMIZEFORTEXTBROWSER', $conf->global->MAIN_OPTIMIZEFORTEXTBROWSER, 1); - } - else - { + } else { print yn($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER); } print '   wspan class="opacitymedium">'.$langs->trans("Default").': '.$default.' '; diff --git a/htdocs/core/menus/standard/auguria_menu.php b/htdocs/core/menus/standard/auguria_menu.php index ebb5edc1c3b..45fd15dc325 100644 --- a/htdocs/core/menus/standard/auguria_menu.php +++ b/htdocs/core/menus/standard/auguria_menu.php @@ -115,7 +115,9 @@ class MenuManager $this->tabMenu = $tabMenu; //var_dump($tabMenu); - //if ($forcemainmenu == 'all') { var_dump($this->tabMenu); exit; } + //if ($forcemainmenu == 'all') { + //var_dump($this->tabMenu); + //} } diff --git a/htdocs/core/menus/standard/eldy_menu.php b/htdocs/core/menus/standard/eldy_menu.php index 5b426199a6e..0493a503fa5 100644 --- a/htdocs/core/menus/standard/eldy_menu.php +++ b/htdocs/core/menus/standard/eldy_menu.php @@ -198,8 +198,12 @@ class MenuManager $submenu = new Menu(); print_left_eldy_menu($this->db, $this->menu_array, $this->menu_array_after, $this->tabMenu, $submenu, 1, $tmpmainmenu, $tmpleftmenu, null, $this->type_user); // Fill $submenu (example with tmpmainmenu='home' tmpleftmenu='all', return left menu tree of Home) // Note: $submenu contains menu entry with substitution not yet done - //if ($tmpmainmenu.'-'.$tmpleftmenu == 'home-all') { var_dump($submenu); exit; } - //if ($tmpmainmenu=='accountancy') { var_dump($submenu->liste); exit; } + //if ($tmpmainmenu.'-'.$tmpleftmenu == 'home-all') { + //var_dump($submenu); exit; + //} + //if ($tmpmainmenu=='accountancy') { + //var_dump($submenu->liste); exit; + //} $nexturl = dol_buildpath($submenu->liste[0]['url'], 1); $canonrelurl = preg_replace('/\?.*$/', '', $relurl); diff --git a/htdocs/core/menus/standard/empty.php b/htdocs/core/menus/standard/empty.php index cc9db4cb769..62ea755c548 100644 --- a/htdocs/core/menus/standard/empty.php +++ b/htdocs/core/menus/standard/empty.php @@ -208,8 +208,12 @@ class MenuManager $submenu->add("/admin/dict.php?mainmenu=home", $langs->trans("DictionarySetup"), 1); $submenu->add("/admin/const.php?mainmenu=home", $langs->trans("OtherSetup"), 1); - //if ($tmpmainmenu.'-'.$tmpleftmenu == 'home-all') { var_dump($submenu); exit; } - //if ($tmpmainmenu=='accountancy') { var_dump($submenu->liste); exit; } + //if ($tmpmainmenu.'-'.$tmpleftmenu == 'home-all') { + //var_dump($submenu); exit; + //} + //if ($tmpmainmenu=='accountancy') { + //var_dump($submenu->liste); exit; + //} $nexturl = dol_buildpath($submenu->liste[0]['url'], 1); $canonrelurl = preg_replace('/\?.*$/', '', $relurl); diff --git a/htdocs/core/modules/bank/doc/pdf_ban.modules.php b/htdocs/core/modules/bank/doc/pdf_ban.modules.php index 2a76b04fa41..bfa313bad0b 100644 --- a/htdocs/core/modules/bank/doc/pdf_ban.modules.php +++ b/htdocs/core/modules/bank/doc/pdf_ban.modules.php @@ -356,7 +356,7 @@ class pdf_ban extends ModeleBankAccountDoc foreach($object->linkedObjects as $objecttype => $objects) { - var_dump($objects);exit; + //var_dump($objects);exit; if ($objecttype == 'commande') { $outputlangs->load('orders'); diff --git a/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php b/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php index b73a173e015..2194358afab 100644 --- a/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php +++ b/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php @@ -397,11 +397,11 @@ class pdf_sepamandate extends ModeleBankAccountDoc $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } - /*var_dump($tab_top); - var_dump($heightforinfotot); - var_dump($heightforfreetext); - var_dump($heightforfooter); - var_dump($bottomlasttab);*/ + //var_dump($tab_top); + //var_dump($heightforinfotot); + //var_dump($heightforfreetext); + //var_dump($heightforfooter); + //var_dump($bottomlasttab); // Affiche zone infos $posy = $this->_tableau_info($pdf, $object, $bottomlasttab, $outputlangs); diff --git a/htdocs/core/modules/import/import_csv.modules.php b/htdocs/core/modules/import/import_csv.modules.php index e45630df298..b57fa1bf655 100644 --- a/htdocs/core/modules/import/import_csv.modules.php +++ b/htdocs/core/modules/import/import_csv.modules.php @@ -439,7 +439,7 @@ class ImportCsv extends ModeleImports /*include_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountancysystem.class.php'; $tmpchartofaccount = new AccountancySystem($this->db); $tmpchartofaccount->fetch($conf->global->CHARTOFACCOUNTS); - var_dump($tmpchartofaccount->ref.' - '.$arrayrecord[0]['val']); + //var_dump($tmpchartofaccount->ref.' - '.$arrayrecord[0]['val']); if ((! ($conf->global->CHARTOFACCOUNTS > 0)) || $tmpchartofaccount->ref != $arrayrecord[0]['val']) { $this->errors[$error]['lib']=$langs->trans('ErrorImportOfChartLimitedToCurrentChart', $tmpchartofaccount->ref); diff --git a/htdocs/core/modules/import/import_xlsx.modules.php b/htdocs/core/modules/import/import_xlsx.modules.php index 9fa5cbf2c44..d9fe3048e2f 100644 --- a/htdocs/core/modules/import/import_xlsx.modules.php +++ b/htdocs/core/modules/import/import_xlsx.modules.php @@ -481,7 +481,7 @@ class ImportXlsx extends ModeleImports /*include_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountancysystem.class.php'; $tmpchartofaccount = new AccountancySystem($this->db); $tmpchartofaccount->fetch($conf->global->CHARTOFACCOUNTS); - var_dump($tmpchartofaccount->ref.' - '.$arrayrecord[0]['val']); + //var_dump($tmpchartofaccount->ref.' - '.$arrayrecord[0]['val']); if ((! ($conf->global->CHARTOFACCOUNTS > 0)) || $tmpchartofaccount->ref != $arrayrecord[0]['val']) { $this->errors[$error]['lib']=$langs->trans('ErrorImportOfChartLimitedToCurrentChart', $tmpchartofaccount->ref); diff --git a/htdocs/core/modules/project/doc/pdf_baleine.modules.php b/htdocs/core/modules/project/doc/pdf_baleine.modules.php index 776f2f9d1e6..2df5e28ab9e 100644 --- a/htdocs/core/modules/project/doc/pdf_baleine.modules.php +++ b/htdocs/core/modules/project/doc/pdf_baleine.modules.php @@ -662,7 +662,7 @@ class pdf_baleine extends ModelePDFProjects foreach($object->linkedObjects as $objecttype => $objects) { - var_dump($objects);exit; + //var_dump($objects);exit; if ($objecttype == 'commande') { $outputlangs->load('orders'); diff --git a/htdocs/core/modules/project/doc/pdf_timespent.modules.php b/htdocs/core/modules/project/doc/pdf_timespent.modules.php index 991ff794d72..2c954e19b7e 100644 --- a/htdocs/core/modules/project/doc/pdf_timespent.modules.php +++ b/htdocs/core/modules/project/doc/pdf_timespent.modules.php @@ -658,7 +658,7 @@ class pdf_timespent extends ModelePDFProjects foreach($object->linkedObjects as $objecttype => $objects) { - var_dump($objects);exit; + //var_dump($objects);exit; if ($objecttype == 'commande') { $outputlangs->load('orders'); diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php index 39686c6e82f..ef1557f4f00 100644 --- a/htdocs/emailcollector/class/emailcollector.class.php +++ b/htdocs/emailcollector/class/emailcollector.class.php @@ -1228,7 +1228,8 @@ class EmailCollector extends CommonObject $header = imap_fetchheader($connection, $imapemail, 0); $overview = imap_fetch_overview($connection, $imapemail, 0); - /* print $header; var_dump($overview); */ + // print $header; + // var_dump($overview); // Process $header of email $header = preg_replace('/\r\n\s+/m', ' ', $header); // When a header line is on several lines, merge lines @@ -1336,19 +1337,20 @@ class EmailCollector extends CommonObject $this->getmsg($connection, $imapemail); - //print $plainmsg; var_dump($plainmsg); exit; + //print $plainmsg; + //var_dump($plainmsg); exit; //$htmlmsg,$plainmsg,$charset,$attachments $messagetext = $plainmsg ? $plainmsg : dol_string_nohtmltag($htmlmsg, 0); // Removed emojis $messagetext = preg_replace('/[\x{10000}-\x{10FFFF}]/u', "\xEF\xBF\xBD", $messagetext); - /*var_dump($plainmsg); - var_dump($htmlmsg); - var_dump($messagetext);*/ - /*var_dump($charset); - var_dump($attachments); - exit;*/ + //var_dump($plainmsg); + //var_dump($htmlmsg); + //var_dump($messagetext); + //var_dump($charset); + //var_dump($attachments); + //exit; // Parse IMAP email structure /* @@ -1381,11 +1383,13 @@ class EmailCollector extends CommonObject } } } - //var_dump($result); var_dump($partplain); var_dump($parthtml); + //var_dump($result); + //var_dump($partplain); + //var_dump($parthtml); - var_dump($structure); - var_dump($parthtml); - var_dump($partplain); + //var_dump($structure); + //var_dump($parthtml); + //var_dump($partplain); $messagetext = imap_fetchbody($connection, $imapemail, ($parthtml != '-1' ? $parthtml : ($partplain != '-1' ? $partplain : 1)), FT_PEEK); */ @@ -1891,12 +1895,12 @@ class EmailCollector extends CommonObject // Overwrite values with values extracted from source email $errorforthisaction = $this->overwritePropertiesOfObject($actioncomm, $operation['actionparam'], $messagetext, $subject, $header); - /*var_dump($fk_element_id); - var_dump($fk_element_type); - var_dump($alreadycreated); - var_dump($operation['type']); - var_dump($actioncomm); - exit;*/ + //var_dump($fk_element_id); + //var_dump($fk_element_type); + //var_dump($alreadycreated); + //var_dump($operation['type']); + //var_dump($actioncomm); + //exit; if ($errorforthisaction) { $errorforactions++; diff --git a/htdocs/emailcollector/class/emailcollectoraction.class.php b/htdocs/emailcollector/class/emailcollectoraction.class.php index eaa4b0737b9..5ce35541a16 100644 --- a/htdocs/emailcollector/class/emailcollectoraction.class.php +++ b/htdocs/emailcollector/class/emailcollectoraction.class.php @@ -233,7 +233,8 @@ class EmailCollectorAction extends CommonObject foreach ($object->array_options as $key => $option) { $shortkey = preg_replace('/options_/', '', $key); if (!empty($extrafields->attributes[$this->element]['unique'][$shortkey])) { - //var_dump($key); var_dump($clonedObj->array_options[$key]); exit; + //var_dump($key); + //var_dump($clonedObj->array_options[$key]); exit; unset($object->array_options[$key]); } } diff --git a/htdocs/emailcollector/class/emailcollectorfilter.class.php b/htdocs/emailcollector/class/emailcollectorfilter.class.php index a99c5198d72..ec42ce53a34 100644 --- a/htdocs/emailcollector/class/emailcollectorfilter.class.php +++ b/htdocs/emailcollector/class/emailcollectorfilter.class.php @@ -207,7 +207,8 @@ class EmailCollectorFilter extends CommonObject foreach ($object->array_options as $key => $option) { $shortkey = preg_replace('/options_/', '', $key); if (!empty($extrafields->attributes[$this->element]['unique'][$shortkey])) { - //var_dump($key); var_dump($clonedObj->array_options[$key]); exit; + //var_dump($key); + //var_dump($clonedObj->array_options[$key]); exit; unset($object->array_options[$key]); } } diff --git a/htdocs/eventorganization/class/conferenceorboothattendee.class.php b/htdocs/eventorganization/class/conferenceorboothattendee.class.php index 2f0c54ef2d4..3dfbb2e1a6c 100644 --- a/htdocs/eventorganization/class/conferenceorboothattendee.class.php +++ b/htdocs/eventorganization/class/conferenceorboothattendee.class.php @@ -318,7 +318,8 @@ class ConferenceOrBoothAttendee extends CommonObject foreach ($object->array_options as $key => $option) { $shortkey = preg_replace('/options_/', '', $key); if (!empty($extrafields->attributes[$this->table_element]['unique'][$shortkey])) { - //var_dump($key); var_dump($clonedObj->array_options[$key]); exit; + //var_dump($key); + //var_dump($clonedObj->array_options[$key]); exit; unset($object->array_options[$key]); } } diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php index 8045edde410..d341f293827 100644 --- a/htdocs/expedition/card.php +++ b/htdocs/expedition/card.php @@ -268,7 +268,10 @@ if (empty($reshook)) { $sub_qty[$j]['id_batch'] = GETPOST($batch, 'int'); // the id into llx_product_batch of stock record to move $subtotalqty += $sub_qty[$j]['q']; - //var_dump($qty);var_dump($batch);var_dump($sub_qty[$j]['q']);var_dump($sub_qty[$j]['id_batch']); + //var_dump($qty); + //var_dump($batch); + //var_dump($sub_qty[$j]['q']); + //var_dump($sub_qty[$j]['id_batch']); $j++; $batch = "batchl".$i."_".$j; @@ -325,7 +328,6 @@ if (empty($reshook)) { //var_dump($batch_line[2]); if ($totalqty > 0) { // There is at least one thing to ship - //var_dump($_POST);exit; for ($i = 0; $i < $num; $i++) { $qty = "qtyl".$i; if (!isset($batch_line[$i])) { diff --git a/htdocs/expensereport/tpl/expensereport_linktofile.tpl.php b/htdocs/expensereport/tpl/expensereport_linktofile.tpl.php index 76a11c7121b..3835740dd40 100644 --- a/htdocs/expensereport/tpl/expensereport_linktofile.tpl.php +++ b/htdocs/expensereport/tpl/expensereport_linktofile.tpl.php @@ -102,7 +102,9 @@ if (empty($conf->global->EXPENSEREPORT_DISABLE_ATTACHMENT_ON_LINES)) { } print '
    '; $checked = ''; - //var_dump(GETPOST($file['relativename'])); var_dump($file['relativename']); var_dump($_FILES['userfile']['name']); + //var_dump(GETPOST($file['relativename'])); + //var_dump($file['relativename']); + //var_dump($_FILES['userfile']['name']); // If a file was just uploaded, we check to preselect it if (is_array($_FILES['userfile']['name'])) { foreach ($_FILES['userfile']['name'] as $tmpfile) { diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index b08e31381a1..bafe606b4e8 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -3399,12 +3399,12 @@ class CommandeFournisseur extends CommonOrder $diff_array = array_diff_assoc($qtydelivered, $qtywished); // Warning: $diff_array is done only on common keys. $keysinwishednotindelivered = array_diff(array_keys($qtywished), array_keys($qtydelivered)); // To check we also have same number of keys $keysindeliverednotinwished = array_diff(array_keys($qtydelivered), array_keys($qtywished)); // To check we also have same number of keys - /*var_dump(array_keys($qtydelivered)); - var_dump(array_keys($qtywished)); - var_dump($diff_array); - var_dump($keysinwishednotindelivered); - var_dump($keysindeliverednotinwished); - exit;*/ + //var_dump(array_keys($qtydelivered)); + //var_dump(array_keys($qtywished)); + //var_dump($diff_array); + //var_dump($keysinwishednotindelivered); + //var_dump($keysindeliverednotinwished); + //exit; if (count($diff_array) == 0 && count($keysinwishednotindelivered) == 0 && count($keysindeliverednotinwished) == 0) { //No diff => mean everythings is received if ($closeopenorder) { diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index 0aa8eb93d9d..287327f2a6a 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -714,10 +714,10 @@ if (empty($reshook)) { $dateinvoice = dol_mktime(0, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int'), 'tzserver'); // If we enter the 02 january, we need to save the 02 january for server $datedue = dol_mktime(0, 0, 0, GETPOST('echmonth', 'int'), GETPOST('echday', 'int'), GETPOST('echyear', 'int'), 'tzserver'); - /*var_dump($dateinvoice.' '.dol_print_date($dateinvoice, 'dayhour')); - var_dump(dol_now('tzuserrel').' '.dol_get_last_hour(dol_now('tzuserrel')).' '.dol_print_date(dol_now('tzuserrel'),'dayhour').' '.dol_print_date(dol_get_last_hour(dol_now('tzuserrel')), 'dayhour')); - var_dump($db->idate($dateinvoice)); - exit;*/ + //var_dump($dateinvoice.' '.dol_print_date($dateinvoice, 'dayhour')); + //var_dump(dol_now('tzuserrel').' '.dol_get_last_hour(dol_now('tzuserrel')).' '.dol_print_date(dol_now('tzuserrel'),'dayhour').' '.dol_print_date(dol_get_last_hour(dol_now('tzuserrel')), 'dayhour')); + //var_dump($db->idate($dateinvoice)); + //exit; // Replacement invoice if (GETPOST('type') == FactureFournisseur::TYPE_REPLACEMENT) { diff --git a/htdocs/holiday/class/holiday.class.php b/htdocs/holiday/class/holiday.class.php index 1e11e81f543..1582317f27f 100644 --- a/htdocs/holiday/class/holiday.class.php +++ b/htdocs/holiday/class/holiday.class.php @@ -1117,11 +1117,9 @@ class Holiday extends CommonObject if ($infos_CP['statut'] == 5) { continue; // ignore not validated holidays } - /* - var_dump("--"); - var_dump("old: ".dol_print_date($infos_CP['date_debut'],'dayhour').' '.dol_print_date($infos_CP['date_fin'],'dayhour').' '.$infos_CP['halfday']); - var_dump("new: ".dol_print_date($dateStart,'dayhour').' '.dol_print_date($dateEnd,'dayhour').' '.$halfday); - */ + //var_dump("--"); + //var_dump("old: ".dol_print_date($infos_CP['date_debut'],'dayhour').' '.dol_print_date($infos_CP['date_fin'],'dayhour').' '.$infos_CP['halfday']); + //var_dump("new: ".dol_print_date($dateStart,'dayhour').' '.dol_print_date($dateEnd,'dayhour').' '.$halfday); if ($halfday == 0) { if ($dateStart >= $infos_CP['date_debut'] && $dateStart <= $infos_CP['date_fin']) { diff --git a/htdocs/knowledgemanagement/class/knowledgerecord.class.php b/htdocs/knowledgemanagement/class/knowledgerecord.class.php index a2f03a64e41..3d9b8979079 100644 --- a/htdocs/knowledgemanagement/class/knowledgerecord.class.php +++ b/htdocs/knowledgemanagement/class/knowledgerecord.class.php @@ -284,7 +284,8 @@ class KnowledgeRecord extends CommonObject foreach ($object->array_options as $key => $option) { $shortkey = preg_replace('/options_/', '', $key); if (!empty($extrafields->attributes[$this->table_element]['unique'][$shortkey])) { - //var_dump($key); var_dump($clonedObj->array_options[$key]); exit; + //var_dump($key); + //var_dump($clonedObj->array_options[$key]); exit; unset($object->array_options[$key]); } } diff --git a/htdocs/modulebuilder/index.php b/htdocs/modulebuilder/index.php index 43cb73fb36c..3feeed0afad 100644 --- a/htdocs/modulebuilder/index.php +++ b/htdocs/modulebuilder/index.php @@ -393,7 +393,8 @@ if ($dirins && in_array($action, array('initapi', 'initphpunit', 'initpagecontac $varnametoupdate = 'showtabofpageagenda'; } - //var_dump($srcfile);var_dump($destfile); + //var_dump($srcfile); + //var_dump($destfile); $result = dol_copy($srcfile, $destfile, 0, 0); if ($result > 0) { @@ -437,11 +438,13 @@ if ($dirins && $action == 'initsqlextrafields' && !empty($module)) { $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; $srcfile1 = $srcdir.'/sql/llx_mymodule_myobject_extrafields.sql'; $destfile1 = $dirins.'/'.strtolower($module).'/sql/llx_'.strtolower($module).'_'.strtolower($objectname).'_extrafields.sql'; - //var_dump($srcfile);var_dump($destfile); + //var_dump($srcfile); + //var_dump($destfile); $result1 = dol_copy($srcfile1, $destfile1, 0, 0); $srcfile2 = $srcdir.'/sql/llx_mymodule_myobject_extrafields.key.sql'; $destfile2 = $dirins.'/'.strtolower($module).'/sql/llx_'.strtolower($module).'_'.strtolower($objectname).'_extrafields.key.sql'; - //var_dump($srcfile);var_dump($destfile); + //var_dump($srcfile); + //var_dump($destfile); $result2 = dol_copy($srcfile2, $destfile2, 0, 0); if ($result1 > 0 && $result2 > 0) { @@ -489,7 +492,8 @@ if ($dirins && $action == 'inithook' && !empty($module)) { $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; $srcfile = $srcdir.'/class/actions_mymodule.class.php'; $destfile = $dirins.'/'.strtolower($module).'/class/actions_'.strtolower($module).'.class.php'; - //var_dump($srcfile);var_dump($destfile); + //var_dump($srcfile); + //var_dump($destfile); $result = dol_copy($srcfile, $destfile, 0, 0); if ($result > 0) { @@ -522,7 +526,8 @@ if ($dirins && $action == 'inittrigger' && !empty($module)) { $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; $srcfile = $srcdir.'/core/triggers/interface_99_modMyModule_MyModuleTriggers.class.php'; $destfile = $dirins.'/'.strtolower($module).'/core/triggers/interface_99_mod'.$module.'_'.$module.'Triggers.class.php'; - //var_dump($srcfile);var_dump($destfile); + //var_dump($srcfile); + //var_dump($destfile); $result = dol_copy($srcfile, $destfile, 0, 0); if ($result > 0) { @@ -555,7 +560,8 @@ if ($dirins && $action == 'initwidget' && !empty($module)) { $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; $srcfile = $srcdir.'/core/boxes/mymodulewidget1.php'; $destfile = $dirins.'/'.strtolower($module).'/core/boxes/'.strtolower($module).'widget1.php'; - //var_dump($srcfile);var_dump($destfile); + //var_dump($srcfile); + //var_dump($destfile); $result = dol_copy($srcfile, $destfile, 0, 0); if ($result > 0) { @@ -588,7 +594,8 @@ if ($dirins && $action == 'initcss' && !empty($module)) { $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; $srcfile = $srcdir.'/css/mymodule.css.php'; $destfile = $dirins.'/'.strtolower($module).'/css/'.strtolower($module).'.css.php'; - //var_dump($srcfile);var_dump($destfile); + //var_dump($srcfile); + //var_dump($destfile); $result = dol_copy($srcfile, $destfile, 0, 0); if ($result > 0) { @@ -626,7 +633,8 @@ if ($dirins && $action == 'initjs' && !empty($module)) { $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; $srcfile = $srcdir.'/js/mymodule.js.php'; $destfile = $dirins.'/'.strtolower($module).'/js/'.strtolower($module).'.js.php'; - //var_dump($srcfile);var_dump($destfile); + //var_dump($srcfile); + //var_dump($destfile); $result = dol_copy($srcfile, $destfile, 0, 0); if ($result > 0) { @@ -664,7 +672,8 @@ if ($dirins && $action == 'initcli' && !empty($module)) { $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; $srcfile = $srcdir.'/scripts/mymodule.php'; $destfile = $dirins.'/'.strtolower($module).'/scripts/'.strtolower($module).'.php'; - //var_dump($srcfile);var_dump($destfile); + //var_dump($srcfile); + //var_dump($destfile); $result = dol_copy($srcfile, $destfile, 0, 0); if ($result > 0) { @@ -702,7 +711,8 @@ if ($dirins && $action == 'initdoc' && !empty($module)) { $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; $srcfile = $srcdir.'/doc/Documentation.asciidoc'; $destfile = $dirins.'/'.strtolower($module).'/doc/Documentation.asciidoc'; - //var_dump($srcfile);var_dump($destfile); + //var_dump($srcfile); + //var_dump($destfile); $result = dol_copy($srcfile, $destfile, 0, 0); if ($result > 0) { @@ -2632,7 +2642,8 @@ if ($module == 'initmodule') { $pathtoobjlib = strtolower($module).'/lib/'.strtolower($module).'_'.strtolower($tabobj).'.lib.php'; $pathtopicto = strtolower($module).'/img/object_'.strtolower($tabobj).'.png'; - //var_dump($pathtoclass); var_dump($dirread); + //var_dump($pathtoclass); + //var_dump($dirread); $realpathtoclass = $dirread.'/'.$pathtoclass; $realpathtoapi = $dirread.'/'.$pathtoapi; $realpathtoagenda = $dirread.'/'.$pathtoagenda; diff --git a/htdocs/modulebuilder/template/class/myobject.class.php b/htdocs/modulebuilder/template/class/myobject.class.php index f5e1a18abff..245d9726048 100644 --- a/htdocs/modulebuilder/template/class/myobject.class.php +++ b/htdocs/modulebuilder/template/class/myobject.class.php @@ -338,7 +338,8 @@ class MyObject extends CommonObject foreach ($object->array_options as $key => $option) { $shortkey = preg_replace('/options_/', '', $key); if (!empty($extrafields->attributes[$this->table_element]['unique'][$shortkey])) { - //var_dump($key); var_dump($clonedObj->array_options[$key]); exit; + //var_dump($key); + //var_dump($clonedObj->array_options[$key]); exit; unset($object->array_options[$key]); } } diff --git a/htdocs/mrp/class/mo.class.php b/htdocs/mrp/class/mo.class.php index 2c0773dd9be..ecc3684e4fe 100644 --- a/htdocs/mrp/class/mo.class.php +++ b/htdocs/mrp/class/mo.class.php @@ -342,7 +342,8 @@ class Mo extends CommonObject foreach ($object->array_options as $key => $option) { $shortkey = preg_replace('/options_/', '', $key); if (!empty($extrafields->attributes[$this->element]['unique'][$shortkey])) { - //var_dump($key); var_dump($clonedObj->array_options[$key]); exit; + //var_dump($key); + //var_dump($clonedObj->array_options[$key]); exit; unset($object->array_options[$key]); } } diff --git a/htdocs/partnership/class/partnership.class.php b/htdocs/partnership/class/partnership.class.php index 83a6acc933a..126ea58076b 100644 --- a/htdocs/partnership/class/partnership.class.php +++ b/htdocs/partnership/class/partnership.class.php @@ -311,7 +311,8 @@ class Partnership extends CommonObject foreach ($object->array_options as $key => $option) { $shortkey = preg_replace('/options_/', '', $key); if (!empty($extrafields->attributes[$this->table_element]['unique'][$shortkey])) { - //var_dump($key); var_dump($clonedObj->array_options[$key]); exit; + //var_dump($key); + //var_dump($clonedObj->array_options[$key]); exit; unset($object->array_options[$key]); } } diff --git a/htdocs/product/class/productfournisseurprice.class.php b/htdocs/product/class/productfournisseurprice.class.php index ef9b2a49117..8f166f702b1 100644 --- a/htdocs/product/class/productfournisseurprice.class.php +++ b/htdocs/product/class/productfournisseurprice.class.php @@ -244,7 +244,8 @@ class ProductFournisseurPrice extends CommonObject foreach ($object->array_options as $key => $option) { $shortkey = preg_replace('/options_/', '', $key); if (!empty($extrafields->attributes[$this->table_element]['unique'][$shortkey])) { - //var_dump($key); var_dump($clonedObj->array_options[$key]); exit; + //var_dump($key); + //var_dump($clonedObj->array_options[$key]); exit; unset($object->array_options[$key]); } } diff --git a/htdocs/product/stock/massstockmove.php b/htdocs/product/stock/massstockmove.php index 781f2037dba..b6abd4b153a 100644 --- a/htdocs/product/stock/massstockmove.php +++ b/htdocs/product/stock/massstockmove.php @@ -232,7 +232,11 @@ if ($action == 'createmovements' && !empty($user->rights->stock->mouvement->cree $firstrecord = array_shift($arraybatchinfo); $dlc = $firstrecord['eatby']; $dluo = $firstrecord['sellby']; - //var_dump($batch); var_dump($arraybatchinfo); var_dump($firstrecord); var_dump($dlc); var_dump($dluo); exit; + //var_dump($batch); + //var_dump($arraybatchinfo); + //var_dump($firstrecord); + //var_dump($dlc); + //var_dump($dluo); exit; } else { $dlc = ''; $dluo = ''; diff --git a/htdocs/projet/activity/perday.php b/htdocs/projet/activity/perday.php index 4066e164cc9..4f30054155a 100644 --- a/htdocs/projet/activity/perday.php +++ b/htdocs/projet/activity/perday.php @@ -84,9 +84,9 @@ $monthofday = GETPOST('addtimemonth'); $dayofday = GETPOST('addtimeday'); $yearofday = GETPOST('addtimeyear'); -/*var_dump(GETPOST('remonth')); -var_dump(GETPOST('button_search_x')); -var_dump(GETPOST('button_addtime'));*/ +//var_dump(GETPOST('remonth')); +//var_dump(GETPOST('button_search_x')); +//var_dump(GETPOST('button_addtime')); $daytoparse = $now; if ($year && $month && $day) { diff --git a/htdocs/projet/activity/permonth.php b/htdocs/projet/activity/permonth.php index c8af7348716..156080eefb3 100644 --- a/htdocs/projet/activity/permonth.php +++ b/htdocs/projet/activity/permonth.php @@ -239,7 +239,8 @@ if ($action == 'addtime' && $user->rights->projet->lire) { if (!$updateoftaskdone) { // Check to update progress if no update were done on task. $object->fetch($taskid); - //var_dump($object->progress);var_dump(GETPOST($taskid . 'progress', 'int')); exit; + //var_dump($object->progress); + //var_dump(GETPOST($taskid . 'progress', 'int')); exit; if ($object->progress != GETPOST($taskid.'progress', 'int')) { $object->progress = GETPOST($taskid.'progress', 'int'); $result = $object->update($user); diff --git a/htdocs/projet/activity/perweek.php b/htdocs/projet/activity/perweek.php index 768a23a7b9a..0152f968c0c 100644 --- a/htdocs/projet/activity/perweek.php +++ b/htdocs/projet/activity/perweek.php @@ -308,7 +308,8 @@ if ($action == 'addtime' && $user->rights->projet->lire && GETPOST('formfilterac if (!$updateoftaskdone) { // Check to update progress if no update were done on task. $object->fetch($taskid); - //var_dump($object->progress);var_dump(GETPOST($taskid . 'progress', 'int')); exit; + //var_dump($object->progress); + //var_dump(GETPOST($taskid . 'progress', 'int')); exit; if ($object->progress != GETPOST($taskid.'progress', 'int')) { $object->progress = GETPOST($taskid.'progress', 'int'); $result = $object->update($user); diff --git a/htdocs/recruitment/class/recruitmentcandidature.class.php b/htdocs/recruitment/class/recruitmentcandidature.class.php index fb08409eb27..835cfe0b7cd 100644 --- a/htdocs/recruitment/class/recruitmentcandidature.class.php +++ b/htdocs/recruitment/class/recruitmentcandidature.class.php @@ -270,7 +270,8 @@ class RecruitmentCandidature extends CommonObject foreach ($object->array_options as $key => $option) { $shortkey = preg_replace('/options_/', '', $key); if (!empty($extrafields->attributes[$this->table_element]['unique'][$shortkey])) { - //var_dump($key); var_dump($clonedObj->array_options[$key]); exit; + //var_dump($key); + //var_dump($clonedObj->array_options[$key]); exit; unset($object->array_options[$key]); } } diff --git a/htdocs/recruitment/class/recruitmentjobposition.class.php b/htdocs/recruitment/class/recruitmentjobposition.class.php index bc46b40f186..43e20858f69 100644 --- a/htdocs/recruitment/class/recruitmentjobposition.class.php +++ b/htdocs/recruitment/class/recruitmentjobposition.class.php @@ -279,7 +279,8 @@ class RecruitmentJobPosition extends CommonObject foreach ($object->array_options as $key => $option) { $shortkey = preg_replace('/options_/', '', $key); if (!empty($extrafields->attributes[$this->element]['unique'][$shortkey])) { - //var_dump($key); var_dump($clonedObj->array_options[$key]); exit; + //var_dump($key); + //var_dump($clonedObj->array_options[$key]); exit; unset($object->array_options[$key]); } } diff --git a/htdocs/recruitment/core/modules/recruitment/doc/pdf_standard_recruitmentjobposition.modules.php b/htdocs/recruitment/core/modules/recruitment/doc/pdf_standard_recruitmentjobposition.modules.php index ba1d0a8d9f5..45483ea51f9 100644 --- a/htdocs/recruitment/core/modules/recruitment/doc/pdf_standard_recruitmentjobposition.modules.php +++ b/htdocs/recruitment/core/modules/recruitment/doc/pdf_standard_recruitmentjobposition.modules.php @@ -611,7 +611,8 @@ class pdf_standard_recruitmentjobposition extends ModelePDFRecruitmentJobPositio $pageposafter = $pdf->getPage(); $posyafter = $pdf->GetY(); - //var_dump($posyafter); var_dump(($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))); exit; + //var_dump($posyafter); + //var_dump(($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))); exit; if ($posyafter > ($this->page_hauteur - ($heightforfooter + $heightforfreetext + $heightforinfotot))) { // There is no space left for total+free text if ($i == ($nblines - 1)) { // No more lines, and no space left to show total, so we create a new page $pdf->AddPage('', '', true); diff --git a/htdocs/salaries/card.php b/htdocs/salaries/card.php index 3f077255a1c..3a673b0bbd5 100644 --- a/htdocs/salaries/card.php +++ b/htdocs/salaries/card.php @@ -135,8 +135,8 @@ if (empty($reshook)) { } if ($cancel) { - /*var_dump($cancel); - var_dump($backtopage);exit;*/ + //var_dump($cancel); + //var_dump($backtopage);exit; if (!empty($backtopageforcancel)) { header("Location: ".$backtopageforcancel); exit; diff --git a/htdocs/societe/paymentmodes.php b/htdocs/societe/paymentmodes.php index 8629044f83b..bdbf7453c35 100644 --- a/htdocs/societe/paymentmodes.php +++ b/htdocs/societe/paymentmodes.php @@ -545,7 +545,9 @@ if (empty($reshook)) { $resql = $db->query($sql); } } - //var_dump($sql); var_dump($newcu); var_dump($num); exit; + //var_dump($sql); + //var_dump($newcu); + //var_dump($num); exit; if (!$error) { $stripecu = $newcu; diff --git a/htdocs/stripe/class/stripe.class.php b/htdocs/stripe/class/stripe.class.php index 18ebce96f8b..36e67d2827c 100644 --- a/htdocs/stripe/class/stripe.class.php +++ b/htdocs/stripe/class/stripe.class.php @@ -531,12 +531,12 @@ class Stripe extends CommonObject $this->code = $e->getStripeCode(); $this->declinecode = $e->getDeclineCode(); } catch (Exception $e) { - /*var_dump($dataforintent); - var_dump($description); - var_dump($key); - var_dump($paymentintent); - var_dump($e->getMessage()); - var_dump($e);*/ + //var_dump($dataforintent); + //var_dump($description); + //var_dump($key); + //var_dump($paymentintent); + //var_dump($e->getMessage()); + //var_dump($e); $error++; $this->error = $e->getMessage(); $this->code = ''; @@ -695,11 +695,11 @@ class Stripe extends CommonObject $_SESSION["stripe_setup_intent"] = $setupintent; }*/ } catch (Exception $e) { - /*var_dump($dataforintent); - var_dump($description); - var_dump($key); - var_dump($setupintent); - var_dump($e->getMessage());*/ + //var_dump($dataforintent); + //var_dump($description); + //var_dump($key); + //var_dump($setupintent); + //var_dump($e->getMessage()); $error++; $this->error = $e->getMessage(); } @@ -780,7 +780,8 @@ class Stripe extends CommonObject ); //$a = \Stripe\Stripe::getApiKey(); - //var_dump($a);var_dump($stripeacc);exit; + //var_dump($a); + //var_dump($stripeacc);exit; try { if (empty($stripeacc)) { // If the Stripe connect account not set, we use common API usage if (empty($conf->global->STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION)) { diff --git a/htdocs/supplier_proposal/card.php b/htdocs/supplier_proposal/card.php index 369dcf3742f..df54da4132c 100644 --- a/htdocs/supplier_proposal/card.php +++ b/htdocs/supplier_proposal/card.php @@ -741,7 +741,9 @@ if (empty($reshook)) { $date_end ); - //var_dump($tva_tx);var_dump($productsupplier->fourn_pu);var_dump($price_base_type);exit; + //var_dump($tva_tx); + //var_dump($productsupplier->fourn_pu); + //var_dump($price_base_type);exit; if ($result < 0) { $error++; setEventMessages($object->error, $object->errors, 'errors'); diff --git a/htdocs/ticket/class/cticketcategory.class.php b/htdocs/ticket/class/cticketcategory.class.php index aa0dd68ec19..5de60a48d85 100644 --- a/htdocs/ticket/class/cticketcategory.class.php +++ b/htdocs/ticket/class/cticketcategory.class.php @@ -290,7 +290,8 @@ class CTicketCategory extends CommonObject foreach ($object->array_options as $key => $option) { $shortkey = preg_replace('/options_/', '', $key); if (!empty($extrafields->attributes[$this->table_element]['unique'][$shortkey])) { - //var_dump($key); var_dump($clonedObj->array_options[$key]); exit; + //var_dump($key); + //var_dump($clonedObj->array_options[$key]); exit; unset($object->array_options[$key]); } } diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php index b14285121a7..98a9ac23355 100644 --- a/htdocs/ticket/class/ticket.class.php +++ b/htdocs/ticket/class/ticket.class.php @@ -2494,7 +2494,8 @@ class Ticket extends CommonObject if (!$error && $id > 0) { setEventMessages($langs->trans('TicketMessageSuccessfullyAdded'), null, 'mesgs'); - //var_dump($_SESSION); var_dump($listofpaths);exit; + //var_dump($_SESSION); + //var_dump($listofpaths);exit; /* * Public area diff --git a/htdocs/ticket/list.php b/htdocs/ticket/list.php index 5204b0ffea7..d3f97620f91 100644 --- a/htdocs/ticket/list.php +++ b/htdocs/ticket/list.php @@ -836,7 +836,9 @@ foreach ($object->fields as $key => $val) { $arrayofstatus[$key2] = $val2; } print ''; - //var_dump($arrayofstatus);var_dump($search['fk_statut']);var_dump(array_values($search[$key])); + //var_dump($arrayofstatus); + //var_dump($search['fk_statut']); + //var_dump(array_values($search[$key])); $selectedarray = null; if (!empty($search[$key])) { $selectedarray = array_values($search[$key]); diff --git a/htdocs/website/index.php b/htdocs/website/index.php index 968094cad18..a170a2b777e 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -410,7 +410,8 @@ if ($sortorder) { include DOL_DOCUMENT_ROOT.'/core/actions_linkedfiles.inc.php'; // This manage 'sendit' action when submitting new file. $backtopage = $savbacktopage; -//var_dump($backtopage); var_dump($action); +//var_dump($backtopage); +//var_dump($action); if ($action == 'renamefile') { // Must be after include DOL_DOCUMENT_ROOT.'/core/actions_linkedfiles.inc.php'; If action were renamefile, we set it to 'file_manager' $action = 'file_manager'; diff --git a/htdocs/workstation/class/workstation.class.php b/htdocs/workstation/class/workstation.class.php index 4131f074e85..2f084916a75 100644 --- a/htdocs/workstation/class/workstation.class.php +++ b/htdocs/workstation/class/workstation.class.php @@ -318,7 +318,8 @@ class Workstation extends CommonObject foreach ($object->array_options as $key => $option) { $shortkey = preg_replace('/options_/', '', $key); if (!empty($extrafields->attributes[$this->table_element]['unique'][$shortkey])) { - //var_dump($key); var_dump($clonedObj->array_options[$key]); exit; + //var_dump($key); + //var_dump($clonedObj->array_options[$key]); exit; unset($object->array_options[$key]); } } From 5f0a34166de05cbaaae8f0ceb8954335bfcf13a1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 17 May 2022 15:10:20 +0200 Subject: [PATCH 156/248] NEW Add a protection into PHPunit to avoid to forget a var_dump --- htdocs/core/lib/admin.lib.php | 4 ++-- htdocs/install/step2.php | 8 +++---- .../demo_wsclient_category.php-NORUN | 2 +- test/phpunit/CodingPhpTest.php | 21 +++++++++++++++++++ 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/htdocs/core/lib/admin.lib.php b/htdocs/core/lib/admin.lib.php index 6054b05aab3..8682939f267 100644 --- a/htdocs/core/lib/admin.lib.php +++ b/htdocs/core/lib/admin.lib.php @@ -210,8 +210,8 @@ function run_sql($sqlfile, $silent = 1, $entity = '', $usesavepoint = 1, $handle if (!empty($reg[2])) { if (is_numeric($reg[2])) { // This is a version $versionrequest = explode('.', $reg[2]); - //print var_dump($versionrequest); - //print var_dump($versionarray); + //var_dump($versionrequest); + //var_dump($versionarray); if (!count($versionrequest) || !count($versionarray) || versioncompare($versionrequest, $versionarray) > 0) { $qualified = 0; } diff --git a/htdocs/install/step2.php b/htdocs/install/step2.php index 33e69377904..fac191feec5 100644 --- a/htdocs/install/step2.php +++ b/htdocs/install/step2.php @@ -295,8 +295,8 @@ if ($action == "set") { // MySQL if ($choix == 1 && preg_match('/^--\sV([0-9\.]+)/i', $buf, $reg)) { $versioncommande = explode('.', $reg[1]); - //print var_dump($versioncommande); - //print var_dump($versionarray); + //var_dump($versioncommande); + //var_dump($versionarray); if (count($versioncommande) && count($versionarray) && versioncompare($versioncommande, $versionarray) <= 0) { // Version qualified, delete SQL comments @@ -307,8 +307,8 @@ if ($action == "set") { // PGSQL if ($choix == 2 && preg_match('/^--\sPOSTGRESQL\sV([0-9\.]+)/i', $buf, $reg)) { $versioncommande = explode('.', $reg[1]); - //print var_dump($versioncommande); - //print var_dump($versionarray); + //var_dump($versioncommande); + //var_dump($versionarray); if (count($versioncommande) && count($versionarray) && versioncompare($versioncommande, $versionarray) <= 0) { // Version qualified, delete SQL comments diff --git a/htdocs/webservices/demo_wsclient_category.php-NORUN b/htdocs/webservices/demo_wsclient_category.php-NORUN index 955253034d9..37029067093 100755 --- a/htdocs/webservices/demo_wsclient_category.php-NORUN +++ b/htdocs/webservices/demo_wsclient_category.php-NORUN @@ -56,7 +56,7 @@ dol_syslog("Call method ".$WS_METHOD); $result = $soapclient->call($WS_METHOD,$parameters); if (! $result) { - var_dump($soapclient); + //var_dump($soapclient); print '

    Erreur SOAP 1

    '.$soapclient->error_str; exit; } diff --git a/test/phpunit/CodingPhpTest.php b/test/phpunit/CodingPhpTest.php index 5637f0194ac..bff78d47b94 100644 --- a/test/phpunit/CodingPhpTest.php +++ b/test/phpunit/CodingPhpTest.php @@ -199,6 +199,7 @@ class CodingPhpTest extends PHPUnit\Framework\TestCase || preg_match('/modules\/.*\/doc\/(doc|pdf)_/', $file['relativename']) || preg_match('/modules\/(import|mailings|printing)\//', $file['relativename']) || in_array($file['name'], array('modules_boxes.php', 'rapport.pdf.php', 'TraceableDB.php'))) { + // Check into Class files if (! in_array($file['name'], array( 'api.class.php', 'commonobject.class.php', @@ -224,6 +225,7 @@ class CodingPhpTest extends PHPUnit\Framework\TestCase //exit; } } else { + // Check into Include files if (! in_array($file['name'], array( 'objectline_view.tpl.php', 'extrafieldsinexport.inc.php', @@ -245,6 +247,25 @@ class CodingPhpTest extends PHPUnit\Framework\TestCase } } + // Check if a var_dump has been forgotten + if (!preg_match('/test\/phpunit/', $file['fullname'])) { + $ok=true; + $matches=array(); + preg_match_all('/(.)\s*var_dump/', $filecontent, $matches, PREG_SET_ORDER); + //var_dump($matches); + foreach ($matches as $key => $val) { + if ($val[1] != '/' && $val[1] != '*') { + $ok=false; + break; + } + break; + } + //print __METHOD__." Result for checking we don't have non escaped string in sql requests for file ".$file."\n"; + $this->assertTrue($ok, 'Found string var_dump that is not just after /* or // in '.$file['relativename']); + //exit; + } + + // Check get_class followed by __METHOD__ $ok=true; $matches=array(); preg_match_all('/'.preg_quote('get_class($this)."::".__METHOD__', '/').'/', $filecontent, $matches, PREG_SET_ORDER); From 50b4eaf82f10de384d9fc9ce555fbc1d872e15ea Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 17 May 2022 15:29:05 +0200 Subject: [PATCH 157/248] Clean code --- htdocs/imports/import.php | 6 ++++-- htdocs/theme/eldy/global.inc.php | 6 ++++++ htdocs/theme/md/style.css.php | 6 ++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php index c12b5746e82..da917c31044 100644 --- a/htdocs/imports/import.php +++ b/htdocs/imports/import.php @@ -1016,7 +1016,7 @@ if ($step == 4 && $datatoimport) { //var_dump($array_match_file_to_database); - print ''; + print ''; $fieldsplaced = array(); $valforsourcefieldnb = array(); @@ -1047,6 +1047,7 @@ if ($step == 4 && $datatoimport) { //var_dump($valforsourcefieldnb); // Complete source fields from count($fieldssource)+1 to count($fieldstarget) + /* $more = 1; $num = count($fieldssource); while ($lefti <= $num) { @@ -1058,12 +1059,13 @@ if ($step == 4 && $datatoimport) { $lefti++; $more++; } + */ print "\n"; print "\n"; - print ''; + print ''; // List of target fields $optionsnotused = ""; diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index d01e3b8d55d..ab0e9ff4b87 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -818,6 +818,12 @@ textarea.centpercent { .nopaddingright { padding-right: 0; } +.nopaddingleftimp { + padding-left: 0 !important; +} +.nopaddingrightimp { + padding-right: 0 !important; +} .paddingleft { padding-: 4px; } diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index fe54b2365b5..0d6801a120b 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -969,6 +969,12 @@ textarea.centpercent { .nopaddingright { padding-right: 0; } +.nopaddingleftimp { + padding-left: 0 !important; +} +.nopaddingrightimp { + padding-right: 0 !important; +} .paddingleft { padding-: 4px; } From 978db41f37cd61ef59b0d4a8f383b6c024d899b1 Mon Sep 17 00:00:00 2001 From: lvessiller Date: Tue, 17 May 2022 15:50:45 +0200 Subject: [PATCH 158/248] FIX qty received label in Squille PDF model --- .../reception/doc/pdf_squille.modules.php | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/htdocs/core/modules/reception/doc/pdf_squille.modules.php b/htdocs/core/modules/reception/doc/pdf_squille.modules.php index 38344a5f486..d81a01bea92 100644 --- a/htdocs/core/modules/reception/doc/pdf_squille.modules.php +++ b/htdocs/core/modules/reception/doc/pdf_squille.modules.php @@ -523,9 +523,9 @@ class pdf_squille extends ModelePdfReception while ($pagenb < $pageposafter) { $pdf->setPage($pagenb); if ($pagenb == 1) { - $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); + $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1, $object); } else { - $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); + $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object); } $this->_pagefoot($pdf, $object, $outputlangs, 1); $pagenb++; @@ -534,9 +534,9 @@ class pdf_squille extends ModelePdfReception } if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) { if ($pagenb == 1) { - $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); + $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1, $object); } else { - $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); + $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object); } $this->_pagefoot($pdf, $object, $outputlangs, 1); // New page @@ -550,10 +550,10 @@ class pdf_squille extends ModelePdfReception // Show square if ($pagenb == 1) { - $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0); + $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0, $object); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } else { - $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0); + $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0, $object); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } @@ -719,9 +719,10 @@ class pdf_squille extends ModelePdfReception * @param Translate $outputlangs Langs object * @param int $hidetop Hide top bar of array * @param int $hidebottom Hide bottom bar of array + * @param Object|NULL $object Object reception to generate * @return void */ - protected function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs, $hidetop = 0, $hidebottom = 0) + protected function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs, $hidetop = 0, $hidebottom = 0, $object = null) { global $conf; @@ -767,7 +768,18 @@ class pdf_squille extends ModelePdfReception $pdf->line($this->posxqtytoship - 1, $tab_top, $this->posxqtytoship - 1, $tab_top + $tab_height); if (empty($hidetop)) { $pdf->SetXY($this->posxqtytoship, $tab_top + 1); - $pdf->MultiCell(($this->posxpuht - $this->posxqtytoship), 2, $outputlangs->transnoentities("QtyToReceive"), '', 'C'); + $statusreceived = Reception::STATUS_CLOSED; + if (getDolGlobalInt("STOCK_CALCULATE_ON_RECEPTION")) { + $statusreceived = Reception::STATUS_VALIDATED; + } + if (getDolGlobalInt("STOCK_CALCULATE_ON_RECEPTION_CLOSE")) { + $statusreceived = Reception::STATUS_CLOSED; + } + if ($object && $object->statut < $statusreceived) { + $pdf->MultiCell(($this->posxpuht - $this->posxqtytoship), 2, $outputlangs->transnoentities('QtyToReceive'), '', 'C'); + } else { + $pdf->MultiCell(($this->posxpuht - $this->posxqtytoship), 2, $outputlangs->transnoentities('QtyReceived'), '', 'C'); + } } if (!empty($conf->global->MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT)) { From f18dc89bdf23dba705aee39ecf4984adf690c6ad Mon Sep 17 00:00:00 2001 From: atm-lena Date: Tue, 17 May 2022 16:26:43 +0200 Subject: [PATCH 159/248] Add ddate signature in fetch propal --- htdocs/comm/propal/class/propal.class.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index ef193898df7..c18e0e7a6df 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -1455,6 +1455,7 @@ class Propal extends CommonObject $sql = "SELECT p.rowid, p.ref, p.entity, p.remise, p.remise_percent, p.remise_absolue, p.fk_soc"; $sql .= ", p.total_ttc, p.total_tva, p.localtax1, p.localtax2, p.total_ht"; $sql .= ", p.datec"; + $sql .= ", p.date_signature as dates"; $sql .= ", p.date_valid as datev"; $sql .= ", p.datep as dp"; $sql .= ", p.fin_validite as dfv"; @@ -1538,6 +1539,7 @@ class Propal extends CommonObject $this->date_creation = $this->db->jdate($obj->datec); //Creation date $this->date_validation = $this->db->jdate($obj->datev); //Validation date $this->date_modification = $this->db->jdate($obj->date_modification); // tms + $this->date_signature = $this->db->jdate($obj->dates); // Signature date $this->date = $this->db->jdate($obj->dp); // Proposal date $this->datep = $this->db->jdate($obj->dp); // deprecated $this->fin_validite = $this->db->jdate($obj->dfv); From 5ccf4145e315f575df14d59ce83985a81e8ef742 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 17 May 2022 17:25:09 +0200 Subject: [PATCH 160/248] Clean import process --- htdocs/imports/import.php | 194 ++++++++++++++++++++++---------------- 1 file changed, 115 insertions(+), 79 deletions(-) diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php index da917c31044..069f39d66e3 100644 --- a/htdocs/imports/import.php +++ b/htdocs/imports/import.php @@ -1002,7 +1002,7 @@ if ($step == 4 && $datatoimport) { print $s; print ' '; $htmlother->select_import_model($importmodelid, 'importmodelid', $datatoimport, 1, $user->id); - print ''; + print ''; print ''; print ''; @@ -1016,7 +1016,7 @@ if ($step == 4 && $datatoimport) { //var_dump($array_match_file_to_database); - print ''; + print ''; $fieldsplaced = array(); $valforsourcefieldnb = array(); @@ -1034,7 +1034,6 @@ if ($step == 4 && $datatoimport) { foreach ($fieldssource as $key => $val) { $var = !$var; show_elem($fieldssource, $key, $val, $var); // key is field number in source file - //print '> '.$lefti.'-'.$key.'-'.$val; $listofkeys[$key] = 1; $fieldsplaced[$key] = 1; $valforsourcefieldnb[$lefti] = $key; @@ -1046,39 +1045,26 @@ if ($step == 4 && $datatoimport) { } //var_dump($valforsourcefieldnb); - // Complete source fields from count($fieldssource)+1 to count($fieldstarget) - /* - $more = 1; - $num = count($fieldssource); - while ($lefti <= $num) { - $var = !$var; - $newkey = getnewkey($fieldssource, $listofkeys); - show_elem($fieldssource, $newkey, '', $var); // key start after field number in source file - //print '> '.$lefti.'-'.$newkey; - $listofkeys[$key] = 1; - $lefti++; - $more++; - } - */ - print "\n"; print "\n"; - print ''; + print ''; // List of target fields $optionsnotused = ""; + $optionsall = array(); foreach ($fieldstarget as $code => $line) { + $text = ''; if (!$line["imported"]) { - $text = ''; $optionsnotused .= $text; } + $optionsall[$code] = array('label'=>$langs->trans($line["label"]), 'required'=>(empty($line["required"]) ? 0 : 1)); } $height = '32px'; //needs px for css height attribute below @@ -1099,39 +1085,46 @@ if ($step == 4 && $datatoimport) { $entityicon = !empty($entitytoicon[$entity]) ? $entitytoicon[$entity] : $entity; // $entityicon must string name of picto of the field like 'project', 'company', 'contact', 'modulename', ... $entitylang = $entitytolang[$entity] ? $entitytolang[$entity] : $objimport->array_import_label[0]; // $entitylang must be a translation key to describe object the field is related to, like 'Company', 'Contact', 'MyModyle', ... - print '=> '.img_object('', $entityicon).' '.$langs->trans($entitylang).''; + //print '=> '.img_object('', $entityicon).' '.$langs->trans($entitylang).''; + print '=> '; print ''; print ''; //print ajax_combobox('selectorderimport_'.($i+1)); print ""; print ''; - $filecolumn = !empty($array_match_database_to_file[$code])?$array_match_database_to_file[$code]:0; + $filecolumn = ($i + 1); // Source field info $htmltext = ''.$langs->trans("FieldSource").'
    '; if ($filecolumn > count($fieldssource)) { $htmltext .= $langs->trans("DataComeFromNoWhere").'
    '; } else { if (empty($objimport->array_import_convertvalue[0][$code])) { // If source file does not need convertion - $filecolumntoshow = $filecolumn; + $filecolumntoshow = $i + 1; $htmltext .= $langs->trans("DataComeFromFileFieldNb", $filecolumntoshow).'
    '; } else { if ($objimport->array_import_convertvalue[0][$code]['rule'] == 'fetchidfromref') { @@ -1143,7 +1136,6 @@ if ($step == 4 && $datatoimport) { } } // Source required - $htmltext .= $langs->trans("SourceRequired").': '.yn($line["label"]).'
    '; $example = !empty($objimport->array_import_examplevalues[0][$code])?$objimport->array_import_examplevalues[0][$code]:""; // Example if (empty($objimport->array_import_convertvalue[0][$code])) { // If source file does not need convertion @@ -1166,6 +1158,7 @@ if ($step == 4 && $datatoimport) { $htmltext .= '
    '; // Target field info $htmltext .= ''.$langs->trans("FieldTarget").'
    '; + //$htmltext .= $langs->trans("SourceRequired").': '.yn($line["label"]).'
    '; if (empty($objimport->array_import_convertvalue[0][$code])) { // If source file does not need convertion $htmltext .= $langs->trans("DataIsInsertedInto").'
    '; } else { @@ -1236,49 +1229,87 @@ if ($step == 4 && $datatoimport) { print ''."\n"; } @@ -1315,6 +1346,7 @@ if ($step == 4 && $datatoimport) { print ''; print ''; print ''; + print ''; print ''; print ''; @@ -1333,7 +1365,7 @@ if ($step == 4 && $datatoimport) { print $form->selectarray('visibility', $arrayvisibility, 'private'); print ''; print ''; - print ''; + print ''; print ''; // List of existing import profils @@ -2201,14 +2233,15 @@ function show_elem($fieldssource, $pos, $key, $var, $nostyle = '') } if (($pos && $pos > count($fieldssource)) && (!isset($fieldssource[$pos]["imported"]))) { // No fields + /* print ''; print ''; - //print img_picto(($pos > 0 ? $langs->trans("MoveField", $pos) : ''), 'grip_title', 'class="boxhandle" style="cursor:move;"'); print ''; print ''; print $langs->trans("NoFields"); print ''; print ''; + */ } elseif ($key == 'none') { // Empty line print ''; print ''; @@ -2224,6 +2257,7 @@ function show_elem($fieldssource, $pos, $key, $var, $nostyle = '') print ''; // The image must have the class 'boxhandle' beause it's value used in DOM draggable objects to define the area used to catch the full object //print img_picto($langs->trans("MoveField", $pos), 'grip_title', 'class="boxhandle" style="cursor:move;"'); + print img_picto($langs->trans("Field").' '.$pos, 'file', 'class="pictofixedwith"'); print ''; if (isset($fieldssource[$pos]['imported']) && $fieldssource[$pos]['imported'] == false) { print ''; @@ -2240,7 +2274,9 @@ function show_elem($fieldssource, $pos, $key, $var, $nostyle = '') if (!utf8_check($example)) { $example = utf8_encode($example); } - print ' ('.$example.')'; + print ' - '; + //print ''.$langs->trans("ExampleOnFirstLine").': '; + print ''.$example.''; } print ''; print ''; From 9c00e087fe7b2e62b008e37ff62a56828e3f8597 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 17 May 2022 17:47:35 +0200 Subject: [PATCH 161/248] css --- htdocs/theme/eldy/global.inc.php | 4 ++-- htdocs/theme/md/style.css.php | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index ab0e9ff4b87..f9e780d2ce5 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -1573,7 +1573,7 @@ table[summary="list_of_modules"] .fa-cog { .minheight30 { min-height: 30px; } .minheight40 { min-height: 40px; } .titlefieldcreate { width: 20%; } -.titlefield { /* width: 25%; */ width: 250px; } +.titlefield { /* width: 25%; */ min-width: 250px; } .titlefieldmiddle { width: 45%; } .titlefieldmax45 { max-width: 45%; } .imgmaxwidth180 { max-width: 180px; } @@ -1779,7 +1779,7 @@ select.widthcentpercentminusxx, span.widthcentpercentminusxx:not(.select2-select .minwidth300imp { min-width: 120px !important; } .minwidth400imp { min-width: 150px !important; } .minwidth500imp { min-width: 250px !important; } - .titlefield { width: auto; } + .titlefield { width: auto; min-width: unset; } .titlefieldcreate { width: auto; } #tooltip { diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 0d6801a120b..6f135aa7f14 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -1662,7 +1662,7 @@ tr.nobottom td { .minheight30 { min-height: 30px; } .minheight40 { min-height: 40px; } .titlefieldcreate { width: 20%; } -.titlefield { /* width: 25%; */ width: 250px; } +.titlefield { /* width: 25%; */ min-width: 250px; } .titlefieldmiddle { width: 50%; } .imgmaxwidth180 { max-width: 180px; } .imgmaxheight50 { max-height: 50px; } @@ -1864,7 +1864,7 @@ select.widthcentpercentminusxx, span.widthcentpercentminusxx:not(.select2-select .minwidth300imp { min-width: 120px !important; } .minwidth400imp { min-width: 150px !important; } .minwidth500imp { min-width: 250px !important; } - .titlefield { width: auto; } + .titlefield { width: auto; min-width: unset; } .titlefieldcreate { width: auto; } #tooltip { @@ -7227,6 +7227,7 @@ div.clipboardCPValue.hidewithsize { .titlefield { width: auto !important; /* We want to ignore the 30%, try to use more if you can */ + min-width: unset; } .tableforfield>tr>td:first-child, .tableforfield>tbody>tr>td:first-child, div.tableforfield div.tagtr>div.tagtd:first-of-type { /* max-width: 100px; */ /* but no more than 100px */ From 2a34d6354fc11dfaa42852dc4c059e6fdc6a6868 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 17 May 2022 20:08:59 +0200 Subject: [PATCH 162/248] Fix scrutinizer --- htdocs/core/class/html.form.class.php | 6 +++--- htdocs/core/lib/functions.lib.php | 2 +- htdocs/core/menus/standard/eldy.lib.php | 2 +- htdocs/fourn/class/fournisseur.commande.class.php | 12 ++++++------ htdocs/recruitment/recruitmentcandidature_list.php | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 08ebac1c5e7..f1a93868809 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -4033,12 +4033,12 @@ class Form * @param string $deposit_percent < 0 : deposit_percent input makes no sense (for example, in list filters) * 0 : use default deposit percentage from entry * > 0 : force deposit percentage (for example, from company object) - * @return string + * @return string String for the HTML select component */ public function getSelectConditionsPaiements($selected = 0, $htmlname = 'condid', $filtertype = -1, $addempty = 0, $noinfoadmin = 0, $morecss = '', $deposit_percent = -1) { - global $langs, $user, $conf; + $out = ''; dol_syslog(__METHOD__." selected=".$selected.", htmlname=".$htmlname, LOG_DEBUG); @@ -4125,7 +4125,7 @@ class Form * @param int $active Active or not, -1 = all * @param string $morecss Add more CSS on select tag * @param int $nooutput 1=Return string, do not send to output - * @return void + * @return string|void String for the HTML select component */ public function select_types_paiements($selected = '', $htmlname = 'paiementtype', $filtertype = '', $format = 0, $empty = 1, $noadmininfo = 0, $maxlength = 0, $active = 1, $morecss = '', $nooutput = 0) { diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 559d2516e0a..4999aba895d 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -1593,7 +1593,7 @@ function dolButtonToOpenUrlInDialogPopup($name, $label, $buttonstring, $url, $di $url .= '?dol_hide_topmenu=1&dol_hide_leftmenu=1&dol_openinpopup='.urlencode($name); } - $out .= ''; + $out = ''; $backtopagejsfieldsid = ''; $backtopagejsfieldslabel = ''; if ($backtopagejsfields) { diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index f81fc3ae482..d48402ab0fb 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -770,7 +770,7 @@ function print_left_eldy_menu($db, $menu_array_before, $menu_array_after, &$tabM * Menu COMPTA-FINANCIAL */ if ($mainmenu == 'accountancy') { - get_left_menu_accountancy($mainmenu, $newmenu, $usemenuhider, $leftmenu, $type_user, $db); + get_left_menu_accountancy($mainmenu, $newmenu, $usemenuhider, $leftmenu, $type_user); } /* diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index bafe606b4e8..b780cbde926 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -3491,6 +3491,8 @@ class CommandeFournisseur extends CommonOrder { $this->receptions = array(); + dol_syslog(get_class($this)."::loadReceptions", LOG_DEBUG); + $sql = 'SELECT cd.rowid, cd.fk_product,'; $sql .= ' sum(cfd.qty) as qty'; $sql .= ' FROM '.MAIN_DB_PREFIX.'commande_fournisseur_dispatch as cfd,'; @@ -3512,14 +3514,12 @@ class CommandeFournisseur extends CommonOrder } $sql .= ' GROUP BY cd.rowid, cd.fk_product'; - - dol_syslog(get_class($this)."::loadReceptions", LOG_DEBUG); - $result = $this->db->query($sql); - if ($result) { - $num = $this->db->num_rows($result); + $resql = $this->db->query($sql); + if ($resql) { + $num = $this->db->num_rows($resql); $i = 0; while ($i < $num) { - $obj = $this->db->fetch_object($result); + $obj = $this->db->fetch_object($resql); empty($this->receptions[$obj->rowid]) ? $this->receptions[$obj->rowid] = $obj->qty : $this->receptions[$obj->rowid] += $obj->qty; $i++; } diff --git a/htdocs/recruitment/recruitmentcandidature_list.php b/htdocs/recruitment/recruitmentcandidature_list.php index 2f3c73c16c4..4ce262c8c92 100644 --- a/htdocs/recruitment/recruitmentcandidature_list.php +++ b/htdocs/recruitment/recruitmentcandidature_list.php @@ -450,7 +450,7 @@ if ($jobposition->id > 0 && (empty($action) || ($action != 'edit' && $action != $morehtmlref .= '
    '; $morehtmlref .= ''; $morehtmlref .= ''; - $morehtmlref .= $formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); + $morehtmlref .= $formproject->select_projects(0, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); $morehtmlref .= ''; $morehtmlref .= '
    '; } else { From 180d94b43c93a5d165f6d7a9d326e84ad9aa8fa3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 17 May 2022 20:31:50 +0200 Subject: [PATCH 163/248] More log --- htdocs/website/index.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/website/index.php b/htdocs/website/index.php index 0e192ff0212..b7062b4f599 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -2741,6 +2741,7 @@ if (!GETPOST('hide_websitemenu')) { $htmltext .= '

    '; } if (!empty($conf->global->WEBSITE_REPLACE_INFO_ABOUT_USAGE_WITH_WEBSERVER)) { + $htmltext .= ''; $htmltext .= '
    '.$langs->trans($conf->global->WEBSITE_REPLACE_INFO_ABOUT_USAGE_WITH_WEBSERVER); } else { $htmltext .= $langs->trans("SetHereVirtualHost", $dataroot); From c47578943327436113ba4ef8137888b578500f69 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 17 May 2022 23:23:50 +0200 Subject: [PATCH 164/248] Debug v16 --- htdocs/comm/propal/list.php | 4 ++-- htdocs/commande/list.php | 4 ++-- htdocs/compta/bank/list.php | 12 ++++++------ htdocs/compta/bank/various_payment/list.php | 6 +++--- htdocs/contrat/index.php | 10 +++++----- htdocs/fourn/commande/list.php | 2 +- htdocs/fourn/paiement/list.php | 8 ++++---- .../class/knowledgerecord.class.php | 4 ++-- htdocs/knowledgemanagement/knowledgerecord_list.php | 2 +- htdocs/modulebuilder/template/myobject_list.php | 2 +- htdocs/societe/list.php | 8 ++++---- htdocs/supplier_proposal/list.php | 4 ++-- htdocs/ticket/list.php | 2 +- 13 files changed, 34 insertions(+), 34 deletions(-) diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index 0056716972b..43f369faef2 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -765,12 +765,12 @@ if ($resql) { if ($socid > 0) { $soc = new Societe($db); $soc->fetch($socid); - $title = $langs->trans('ListOfProposals').' - '.$soc->name; + $title = $langs->trans('Proposals').' - '.$soc->name; if (empty($search_societe)) { $search_societe = $soc->name; } } else { - $title = $langs->trans('ListOfProposals'); + $title = $langs->trans('Proposals'); } $num = $db->num_rows($resql); diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 5a85038bddc..b047c413b6c 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -1015,12 +1015,12 @@ if ($resql) { if ($socid > 0) { $soc = new Societe($db); $soc->fetch($socid); - $title = $langs->trans('ListOfOrders').' - '.$soc->name; + $title = $langs->trans('CustomersOrders').' - '.$soc->name; if (empty($search_company)) { $search_company = $soc->name; } } else { - $title = $langs->trans('ListOfOrders'); + $title = $langs->trans('CustomersOrders'); } if (strval($search_status) == '0') { $title .= ' - '.$langs->trans('StatusOrderDraftShort'); diff --git a/htdocs/compta/bank/list.php b/htdocs/compta/bank/list.php index 19b47430fad..90bc79483bf 100644 --- a/htdocs/compta/bank/list.php +++ b/htdocs/compta/bank/list.php @@ -534,7 +534,7 @@ foreach ($accounts as $key => $type) { // Ref if (!empty($arrayfields['b.ref']['checked'])) { - print ''.$objecttmp->getNomUrl(1).''; + print ''.$objecttmp->getNomUrl(1).''; if (!$i) { $totalarray['nbfield']++; } @@ -586,7 +586,7 @@ foreach ($accounts as $key => $type) { // Accountancy journal if (!empty($arrayfields['b.fk_accountancy_journal']['checked'])) { - print ''; + print ''; if (!empty($conf->accounting->enabled)) { if (empty($objecttmp->fk_accountancy_journal)) { print img_warning($langs->trans("Mandatory")); @@ -606,7 +606,7 @@ foreach ($accounts as $key => $type) { // Currency if (!empty($arrayfields['b.currency_code']['checked'])) { - print ''; + print ''; print $objecttmp->currency_code; print ''; if (!$i) { @@ -616,7 +616,7 @@ foreach ($accounts as $key => $type) { // Transactions to reconcile if (!empty($arrayfields['toreconcile']['checked'])) { - print ''; + print ''; $conciliate = $objecttmp->canBeConciliated(); if ($conciliate == -2) { @@ -663,7 +663,7 @@ foreach ($accounts as $key => $type) { print $hookmanager->resPrint; // Date creation if (!empty($arrayfields['b.datec']['checked'])) { - print ''; + print ''; print dol_print_date($objecttmp->date_creation, 'dayhour'); print ''; if (!$i) { @@ -672,7 +672,7 @@ foreach ($accounts as $key => $type) { } // Date modification if (!empty($arrayfields['b.tms']['checked'])) { - print ''; + print ''; print dol_print_date($objecttmp->date_update, 'dayhour'); print ''; if (!$i) { diff --git a/htdocs/compta/bank/various_payment/list.php b/htdocs/compta/bank/various_payment/list.php index bbec4f23fc6..4d0c9eb19c5 100644 --- a/htdocs/compta/bank/various_payment/list.php +++ b/htdocs/compta/bank/various_payment/list.php @@ -535,7 +535,7 @@ if ($result) { $reshook = $hookmanager->executeHooks('printFieldListOption', $parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; - print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], '', '', '', '', $sortfield, $sortorder, 'maxwidthsearch '); + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], '', '', '', '', $sortfield, $sortorder, 'maxwidthsearch center '); print ''; @@ -652,7 +652,7 @@ if ($result) { if ($arrayfields['account']['checked']) { $accountingaccount->fetch('', $obj->accountancy_code, 1); - print ''.$accountingaccount->getNomUrl(0, 1, 1, '', 1).''; + print ''.$accountingaccount->getNomUrl(0, 1, 1, '', 1).''; if (!$i) { $totalarray['nbfield']++; } @@ -660,7 +660,7 @@ if ($result) { // Accounting subledger account if ($arrayfields['subledger']['checked']) { - print ''.length_accounta($obj->subledger_account).''; + print ''.length_accounta($obj->subledger_account).''; if (!$i) { $totalarray['nbfield']++; } diff --git a/htdocs/contrat/index.php b/htdocs/contrat/index.php index 99739260b36..b3ed6191535 100644 --- a/htdocs/contrat/index.php +++ b/htdocs/contrat/index.php @@ -356,12 +356,12 @@ if ($result) { print img_warning($langs->trans("Late")); } print ''; - print ''; + print ''; $staticcompany->id = $obj->socid; $staticcompany->name = $obj->name; print $staticcompany->getNomUrl(1, '', 20); print ''; - print ''.dol_print_date($db->jdate($obj->tms), 'dayhour').''; + print ''.dol_print_date($db->jdate($obj->tms), 'dayhour').''; //print ''.$staticcontrat->LibStatut($obj->statut,2).''; print ''.($obj->nb_initial > 0 ? ''.$obj->nb_initial.''.$staticcontratligne->LibStatut(0, 3, -1, 'class="paddingleft"') : '').''; print ''.($obj->nb_running > 0 ? ''.$obj->nb_running.''.$staticcontratligne->LibStatut(4, 3, 0, 'class="marginleft"') : '').''; @@ -439,7 +439,7 @@ if ($resql) { } } print ''; - print ''; + print ''; $staticcompany->id = $obj->fk_soc; $staticcompany->name = $obj->name; print $staticcompany->getNomUrl(1, '', 20); @@ -521,7 +521,7 @@ if ($resql) { } } print ''; - print ''; + print ''; $staticcompany->id = $obj->fk_soc; $staticcompany->name = $obj->name; print $staticcompany->getNomUrl(1, '', 20); @@ -603,7 +603,7 @@ if ($resql) { } } print ''; - print ''; + print ''; $staticcompany->id = $obj->fk_soc; $staticcompany->name = $obj->name; print $staticcompany->getNomUrl(1, '', 20); diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php index 98df5e11170..3551ab27856 100644 --- a/htdocs/fourn/commande/list.php +++ b/htdocs/fourn/commande/list.php @@ -711,7 +711,7 @@ $formorder = new FormOrder($db); $formother = new FormOther($db); $formcompany = new FormCompany($db); -$title = $langs->trans("ListOfSupplierOrders"); +$title = $langs->trans("SuppliersOrders"); if ($socid > 0) { $fourn = new Fournisseur($db); $fourn->fetch($socid); diff --git a/htdocs/fourn/paiement/list.php b/htdocs/fourn/paiement/list.php index 0f8f9050755..13812e3595f 100644 --- a/htdocs/fourn/paiement/list.php +++ b/htdocs/fourn/paiement/list.php @@ -485,7 +485,7 @@ while ($i < min($num, $limit)) { // No if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER_IN_LIST)) { - print ''.(($offset * $limit) + $i).''; + print ''.(($offset * $limit) + $i).''; if (!$i) { $totalarray['nbfield']++; } @@ -493,7 +493,7 @@ while ($i < min($num, $limit)) { // Ref if (!empty($arrayfields['p.ref']['checked'])) { - print ''.$paymentfournstatic->getNomUrl(1).''; + print ''.$paymentfournstatic->getNomUrl(1).''; if (!$i) { $totalarray['nbfield']++; } @@ -510,7 +510,7 @@ while ($i < min($num, $limit)) { // Thirdparty if (!empty($arrayfields['s.nom']['checked'])) { - print ''; + print ''; if ($objp->socid > 0) { print $companystatic->getNomUrl(1, '', 24); } @@ -539,7 +539,7 @@ while ($i < min($num, $limit)) { // Bank account if (!empty($arrayfields['ba.label']['checked'])) { - print ''; + print ''; if ($objp->bid) { $accountstatic->id = $objp->bid; $accountstatic->ref = $objp->bref; diff --git a/htdocs/knowledgemanagement/class/knowledgerecord.class.php b/htdocs/knowledgemanagement/class/knowledgerecord.class.php index a2f03a64e41..590b31263e2 100644 --- a/htdocs/knowledgemanagement/class/knowledgerecord.class.php +++ b/htdocs/knowledgemanagement/class/knowledgerecord.class.php @@ -101,10 +101,10 @@ class KnowledgeRecord extends CommonObject */ public $fields=array( 'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>0, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'comment'=>"Id"), - 'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>'1', 'position'=>10, 'notnull'=>1, 'default'=>'(PROV)', 'visible'=>5, 'index'=>1, 'searchall'=>1, 'comment'=>"Reference of object", "showoncombobox"=>1), + 'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>'1', 'position'=>10, 'notnull'=>1, 'default'=>'(PROV)', 'visible'=>5, 'index'=>1, 'searchall'=>1, 'comment'=>"Reference of object", "csslist"=>"nowraponall", "showoncombobox"=>1), 'entity' =>array('type'=>'integer', 'label'=>'Entity', 'default'=>1, 'enabled'=>1, 'visible'=>0, 'notnull'=>1, 'position'=>20, 'index'=>1), 'question' => array('type'=>'text', 'label'=>'Question', 'enabled'=>'1', 'position'=>30, 'notnull'=>1, 'visible'=>1, 'csslist'=>'tdoverflowmax300', 'copytoclipboard'=>1, 'tdcss'=>'titlefieldcreate nowraponall'), - 'lang' => array('type'=>'varchar(6)', 'label'=>'Language', 'enabled'=>'1', 'position'=>40, 'notnull'=>0, 'visible'=>1, 'tdcss'=>'titlefieldcreate nowraponall'), + 'lang' => array('type'=>'varchar(6)', 'label'=>'Language', 'enabled'=>'1', 'position'=>40, 'notnull'=>0, 'visible'=>1, 'tdcss'=>'titlefieldcreate nowraponall', "csslist"=>"tdoverflowmax100"), 'answer' => array('type'=>'html', 'label'=>'Solution', 'enabled'=>'1', 'position'=>50, 'notnull'=>0, 'visible'=>3, 'csslist'=>'tdoverflowmax300', 'copytoclipboard'=>1, 'tdcss'=>'titlefieldcreate nowraponall'), 'date_creation' => array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>'1', 'position'=>500, 'notnull'=>1, 'visible'=>-2,), 'tms' => array('type'=>'timestamp', 'label'=>'DateModification', 'enabled'=>'1', 'position'=>501, 'notnull'=>0, 'visible'=>2,), diff --git a/htdocs/knowledgemanagement/knowledgerecord_list.php b/htdocs/knowledgemanagement/knowledgerecord_list.php index feadd8d9800..1e93abd31e9 100644 --- a/htdocs/knowledgemanagement/knowledgerecord_list.php +++ b/htdocs/knowledgemanagement/knowledgerecord_list.php @@ -222,7 +222,7 @@ $now = dol_now(); //$help_url="EN:Module_KnowledgeRecord|FR:Module_KnowledgeRecord_FR|ES:Módulo_KnowledgeRecord"; $help_url = ''; -$title = $langs->trans('ListKnowledgeRecord'); +$title = $langs->trans('KnowledgeRecords'); $morejs = array(); $morecss = array(); diff --git a/htdocs/modulebuilder/template/myobject_list.php b/htdocs/modulebuilder/template/myobject_list.php index 050c99bfed0..5803b8c94aa 100644 --- a/htdocs/modulebuilder/template/myobject_list.php +++ b/htdocs/modulebuilder/template/myobject_list.php @@ -259,7 +259,7 @@ $now = dol_now(); //$help_url = "EN:Module_MyObject|FR:Module_MyObject_FR|ES:Módulo_MyObject"; $help_url = ''; -$title = $langs->trans('ListOf', $langs->transnoentitiesnoconv("MyObjects")); +$title = $langs->trans("MyObjects"); $morejs = array(); $morecss = array(); diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index 5884679950f..563add49938 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -420,15 +420,15 @@ $prospectstatic->client = 2; $prospectstatic->loadCacheOfProspStatus(); -$title = $langs->trans("ListOfThirdParties"); +$title = $langs->trans("ThirdParties"); if ($type == 'c' && (empty($search_type) || ($search_type == '1,3'))) { - $title = $langs->trans("ListOfCustomers"); + $title = $langs->trans("Customers"); } if ($type == 'p' && (empty($search_type) || ($search_type == '2,3'))) { - $title = $langs->trans("ListOfProspects"); + $title = $langs->trans("Prospects"); } if ($type == 'f' && (empty($search_type) || ($search_type == '4'))) { - $title = $langs->trans("ListOfSuppliers"); + $title = $langs->trans("Suppliers"); } // Select every potentiels, and note each potentiels which fit in search parameters diff --git a/htdocs/supplier_proposal/list.php b/htdocs/supplier_proposal/list.php index 55fdaf6f413..a0e404dbd89 100644 --- a/htdocs/supplier_proposal/list.php +++ b/htdocs/supplier_proposal/list.php @@ -448,9 +448,9 @@ if ($resql) { if ($socid > 0) { $soc = new Societe($db); $soc->fetch($socid); - $title = $langs->trans('ListOfSupplierProposals').' - '.$soc->name; + $title = $langs->trans('SupplierProposals').' - '.$soc->name; } else { - $title = $langs->trans('ListOfSupplierProposals'); + $title = $langs->trans('SupplierProposals'); } $num = $db->num_rows($resql); diff --git a/htdocs/ticket/list.php b/htdocs/ticket/list.php index a8314c4bf89..4eaadb3fc74 100644 --- a/htdocs/ticket/list.php +++ b/htdocs/ticket/list.php @@ -333,7 +333,7 @@ $user_temp = new User($db); $socstatic = new Societe($db); $help_url = ''; -$title = $langs->trans('TicketList'); +$title = $langs->trans('Tickets'); $morejs = array(); $morecss = array(); From 68b25b35b445254f11e08da1aae40a90cfc4a1c2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 17 May 2022 23:53:36 +0200 Subject: [PATCH 165/248] Look and feel v16 --- htdocs/comm/index.php | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/htdocs/comm/index.php b/htdocs/comm/index.php index dafc1e7ee16..5903b7e4bdb 100644 --- a/htdocs/comm/index.php +++ b/htdocs/comm/index.php @@ -634,7 +634,11 @@ if (!empty($conf->societe->enabled) && $user->rights->societe->lire) { print $s; print ''; - print ''.dol_print_date($db->jdate($objp->tms), 'day').''; + + $datem = $db->jdate($objp->tms); + print ''; + print dol_print_date($datem, 'day', 'tzuserrel'); + print ''; print ''; $i++; @@ -725,7 +729,11 @@ if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_S print $s; print ''; - print ''.dol_print_date($db->jdate($objp->dm), 'day').''; + + $datem = $db->jdate($objp->dm); + print ''; + print dol_print_date($datem, 'day', 'tzuserrel'); + print ''; print ''; $i++; @@ -922,7 +930,10 @@ if (!empty($conf->propal->enabled) && $user->rights->propal->lire) { print ''; print ''.$companystatic->getNomUrl(1, 'customer', 44).''; - print ''.dol_print_date($db->jdate($obj->dp), 'day').''; + $datem = $db->jdate($obj->dp); + print ''; + print dol_print_date($datem, 'day', 'tzserver'); + print ''; print ''.price(!empty($conf->global->MAIN_DASHBOARD_USE_TOTAL_HT) ? $obj->total_ht : $obj->total_ttc).''; print ''.$propalstatic->LibStatut($obj->fk_statut, 3).''; @@ -1039,7 +1050,11 @@ if (!empty($conf->commande->enabled) && $user->rights->commande->lire) { print ''; print ''.$companystatic->getNomUrl(1, 'customer', 44).''; - print ''.dol_print_date($db->jdate($obj->dv), 'day').''; + $datem = $db->jdate($obj->dv); + print ''; + print dol_print_date($datem, 'day', 'tzserver'); + print ''; + print ''.price(!empty($conf->global->MAIN_DASHBOARD_USE_TOTAL_HT) ? $obj->total_ht : $obj->total_ttc).''; print ''.$orderstatic->LibStatut($obj->fk_statut, $obj->billed, 3).''; From 2e15a14c140b887b9bf459837ad9dae8047d4786 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 18 May 2022 00:10:44 +0200 Subject: [PATCH 166/248] css --- htdocs/commande/card.php | 8 ++++---- htdocs/core/class/html.form.class.php | 16 +++++++++------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index b1d0cdb9223..f1423ffa12b 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -1733,10 +1733,10 @@ if ($action == 'create' && $usercancreate) { $form->selectAvailabilityDelay($availability_id, 'availability_id', '', 1, 'maxwidth200 widthcentpercentminusx'); print ''; - // Terms of the settlement + // Terms of payment print ''.$langs->trans('PaymentConditionsShort').''; - print img_picto('', 'paiment', 'class="pictofixedwidth"'); - $form->select_conditions_paiements($cond_reglement_id, 'cond_reglement_id', 1, 1, 0, '', $deposit_percent); + print img_picto('', 'payment', 'class="pictofixedwidth"'); + $form->select_conditions_paiements($cond_reglement_id, 'cond_reglement_id', 1, 1, 0, 'maxwidth200 widthcentpercentminusx', $deposit_percent); print ''; // Payment mode @@ -1836,7 +1836,7 @@ if ($action == 'create' && $usercancreate) { print ''; print ''.$form->editfieldkey("Currency", 'multicurrency_code', '', $object, 0).''; print ''; - print img_picto('', 'currency', 'class="pictofixedwidth"').$form->selectMultiCurrency($currency_code, 'multicurrency_code'); + print img_picto('', 'currency', 'class="pictofixedwidth"').$form->selectMultiCurrency($currency_code, 'multicurrency_code', 0, '', false, 'maxwidth200 widthcentpercentminusx'); print ''; } diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index f1a93868809..81fbb83b264 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -5883,14 +5883,16 @@ class Form /** * Return array of currencies in user language * - * @param string $selected preselected currency code - * @param string $htmlname name of HTML select list - * @param integer $useempty 1=Add empty line - * @param string $filter Optional filters criteras (example: 'code <> x', ' in (1,3)') - * @param bool $excludeConfCurrency false = If company current currency not in table, we add it into list. Should always be available. true = we are in currency_rate update , we don't want to see conf->currency in select + * @param string $selected Preselected currency code + * @param string $htmlname Name of HTML select list + * @param integer $useempty 1=Add empty line + * @param string $filter Optional filters criteras (example: 'code <> x', ' in (1,3)') + * @param bool $excludeConfCurrency false = If company current currency not in table, we add it into list. Should always be available. + * true = we are in currency_rate update , we don't want to see conf->currency in select + * @param string $morecss More css * @return string */ - public function selectMultiCurrency($selected = '', $htmlname = 'multicurrency_code', $useempty = 0, $filter = '', $excludeConfCurrency = false) + public function selectMultiCurrency($selected = '', $htmlname = 'multicurrency_code', $useempty = 0, $filter = '', $excludeConfCurrency = false, $morecss = '') { global $conf, $langs; @@ -5911,7 +5913,7 @@ class Form } $out = ''; - $out .= ''; if ($useempty) { $out .= ''; } From 7de1fe864626311b454cfd3763a19701fffbd776 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 18 May 2022 00:17:46 +0200 Subject: [PATCH 167/248] Look and feel v16 --- htdocs/projet/index.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/htdocs/projet/index.php b/htdocs/projet/index.php index 51e78f23d57..b519f298ecc 100644 --- a/htdocs/projet/index.php +++ b/htdocs/projet/index.php @@ -288,7 +288,10 @@ if ($resql) { print ''; // Date - print ''.dol_print_date($db->jdate($obj->datem), 'day').''; + $datem = $db->jdate($obj->datem); + print ''; + print dol_print_date($datem, 'day', 'tzuserrel'); + print ''; // Status print ''.$projectstatic->LibStatut($obj->status, 3).''; From 1a0e416c1a24c5a08e34f82067abd8e6b9223d64 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 18 May 2022 00:51:20 +0200 Subject: [PATCH 168/248] WIP --- htdocs/core/lib/functions.lib.php | 2 +- htdocs/projet/card.php | 2 +- htdocs/societe/card.php | 10 ++++++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 4999aba895d..e6852cdde03 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -1628,7 +1628,7 @@ function dolButtonToOpenUrlInDialogPopup($name, $label, $buttonstring, $url, $di close: function (event, ui) { returnedid = jQuery("#varforreturndialogid'.$name.'").text(); returnedlabel = jQuery("#varforreturndialoglabel'.$name.'").text(); - console.log("popup has been closed. returnedid="+returnedid+" returnedlabel="+returnedlabel); + console.log("popup has been closed. returnedid (js var defined into parent page)="+returnedid+" returnedlabel="+returnedlabel); if (returnedid != "" && returnedid != "div for returned id") { jQuery("#'.(empty($backtopagejsfieldsid)?"none":$backtopagejsfieldsid).'").val(returnedid); } diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index df50f0703e0..98e0bd099fc 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -619,7 +619,7 @@ if ($action == 'create' && $user->rights->projet->creer) { if (!GETPOSTISSET('backtopage')) { $url = '/societe/card.php?action=create&client=3&fournisseur=0&backtopage='.urlencode($_SERVER["PHP_SELF"].'?action=create'); $newbutton = ''; - // TODO @LDR Impletment this + // TODO @LDR Implement this //$tmpbacktopagejsfields = 'socid:search_socid'; //print dolButtonToOpenUrlInDialogPopup('addthirdparty', $langs->transnoentitiesnoconv('AddThirdParty'), $newbutton, $url, '', '', $tmpbacktopagejsfields); print ' '.$newbutton.''; diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index cbb8de3cf28..d29870b413e 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -704,8 +704,14 @@ if (empty($reshook)) { $url = DOL_URL_ROOT."/fourn/card.php?socid=".$object->id; } - header("Location: ".$url); - exit; + // TODO @LDR + if ($dol_openinpopup && $backtopagejsfields) { + print 'TODO Set js var of parent with id, then close popup.'; + exit; + } else { + header("Location: ".$url); + exit; + } } } else { $db->rollback(); From ed2e1bda46099dc306631f213e1078482683a6ff Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 18 May 2022 11:00:43 +0200 Subject: [PATCH 169/248] Clean code v16 --- htdocs/admin/expensereport_ik.php | 13 +- htdocs/admin/expensereport_rules.php | 48 +- .../bank/class/paymentvarious.class.php | 2 +- .../deplacement/class/deplacement.class.php | 2 +- .../facture/class/facture-rec.class.php | 2 +- htdocs/compta/facture/class/facture.class.php | 2 +- .../facture/class/facturestats.class.php | 2 +- .../facture/class/paymentterm.class.php | 2 +- .../sociales/class/chargesociales.class.php | 2 +- .../class/paymentsocialcontribution.class.php | 2 +- htdocs/core/class/coreobject.class.php | 413 ------------------ htdocs/core/customreports.php | 2 +- htdocs/core/db/sqlite3.class.php | 2 +- .../expedition/doc/pdf_espadon.modules.php | 2 +- .../class/expensereport_ik.class.php | 71 ++- .../class/expensereport_rule.class.php | 75 +++- 16 files changed, 183 insertions(+), 459 deletions(-) delete mode 100644 htdocs/core/class/coreobject.class.php diff --git a/htdocs/admin/expensereport_ik.php b/htdocs/admin/expensereport_ik.php index 900754ef4b4..10b14f8ee99 100644 --- a/htdocs/admin/expensereport_ik.php +++ b/htdocs/admin/expensereport_ik.php @@ -36,10 +36,10 @@ $langs->loadLangs(array("admin", "trips", "errors", "other", "dict")); $error = 0; $action = GETPOST('action', 'aZ09'); + $id = GETPOST('id', 'int'); $ikoffset = GETPOST('ikoffset', 'int'); $coef = GETPOST('coef', 'int'); - $fk_c_exp_tax_cat = GETPOST('fk_c_exp_tax_cat'); $fk_range = GETPOST('fk_range', 'int'); @@ -62,9 +62,16 @@ if ($action == 'updateik') { } } - $expIk->setValues($_POST); - $result = $expIk->create($user); + $expIk->coef = $coef; + $expIk->ikoffset = $ikoffset; + $expIk->fk_c_exp_tax_cat = $fk_c_exp_tax_cat; + $expIk->fk_range = $fk_range; + if ($expIk->id > 0) { + $result = $expIk->update($user); + } else { + $result = $expIk->create($user); + } if ($result > 0) { setEventMessages('SetupSaved', null, 'mesgs'); diff --git a/htdocs/admin/expensereport_rules.php b/htdocs/admin/expensereport_rules.php index 62fb097841b..7c27ee6e408 100644 --- a/htdocs/admin/expensereport_rules.php +++ b/htdocs/admin/expensereport_rules.php @@ -34,13 +34,19 @@ require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport_rule.class.ph // Load translation files required by the page $langs->loadLangs(array("admin", "other", "trips", "errors", "dict")); +// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context +$hookmanager->initHooks(array('admin', 'dictionaryadmin','expensereport_rules')); + +$object = new ExpenseReportRule($db); + if (!$user->admin) { accessforbidden(); } -// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context -$hookmanager->initHooks(array('admin', 'dictionaryadmin','expensereport_rules')); +/* + * Action + */ $parameters = array(); $reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks @@ -51,7 +57,6 @@ if ($reshook < 0) { if (empty($reshook)) { //Init error $error = false; - $message = false; $action = GETPOST('action', 'aZ09'); $id = GETPOST('id', 'int'); @@ -59,21 +64,20 @@ if (empty($reshook)) { $apply_to = GETPOST('apply_to'); $fk_user = GETPOST('fk_user', 'int'); $fk_usergroup = GETPOST('fk_usergroup', 'int'); - - $fk_c_type_fees = GETPOST('fk_c_type_fees'); + $restrictive = GETPOST('restrictive', 'int'); + $fk_c_type_fees = GETPOST('fk_c_type_fees', 'int'); $code_expense_rules_type = GETPOST('code_expense_rules_type'); $dates = dol_mktime(12, 0, 0, GETPOST('startmonth'), GETPOST('startday'), GETPOST('startyear')); $datee = dol_mktime(12, 0, 0, GETPOST('endmonth'), GETPOST('endday'), GETPOST('endyear')); - $amount = GETPOST('amount'); + $amount = price2num(GETPOST('amount'), 'MT', 2); - $object = new ExpenseReportRule($db); if (!empty($id)) { $result = $object->fetch($id); if ($result < 0) { dol_print_error('', $object->error, $object->errors); } } - // TODO do action + if ($action == 'save') { $error = 0; @@ -104,8 +108,6 @@ if (empty($reshook)) { } if (empty($error)) { - $object->setValues($_POST); - if ($apply_to == 'U') { $object->fk_user = (int) $fk_user; $object->fk_usergroup = 0; @@ -122,18 +124,30 @@ if (empty($reshook)) { $object->dates = $dates; $object->datee = $datee; - + $object->restrictive = $restrictive; + $object->fk_c_type_fees = $fk_c_type_fees; + $object->code_expense_rules_type = $code_expense_rules_type; + $object->amount = $amount; $object->entity = $conf->entity; - $res = $object->create($user); + if ($object->id > 0) { + $res = $object->update($user); + } else { + $res = $object->create($user); + } if ($res > 0) { setEventMessages($langs->trans('ExpenseReportRuleSave'), null); } else { dol_print_error($object->db); + $error++; } - header('Location: ' . $_SERVER['PHP_SELF']); - exit; + if (!$error) { + header('Location: ' . $_SERVER['PHP_SELF']); + exit; + } else { + $action = ''; + } } } elseif ($action == 'delete') { // TODO add confirm @@ -207,7 +221,7 @@ if ($action != 'edit') { echo '' . $form->selectarray('code_expense_rules_type', $tab_rules_type, '', 0) . ''; echo '' . $form->selectDate(strtotime(date('Y-m-01', dol_now())), 'start', '', '', 0, '', 1, 0) . ''; echo ' ' . $conf->currency . ''; + echo ''; echo '' . $form->selectyesno('restrictive', 0, 1) . ''; echo ''; echo ''; @@ -304,10 +318,10 @@ foreach ($rules as $rule) { } echo ''; - + // Amount echo ''; if ($action == 'edit' && $object->id == $rule->id) { - echo '' . $conf->currency; + echo ''; } else { echo price($rule->amount, 0, $langs, 1, -1, -1, $conf->currency); } diff --git a/htdocs/compta/bank/class/paymentvarious.class.php b/htdocs/compta/bank/class/paymentvarious.class.php index cdcd26490a3..77aded9c594 100644 --- a/htdocs/compta/bank/class/paymentvarious.class.php +++ b/htdocs/compta/bank/class/paymentvarious.class.php @@ -165,7 +165,7 @@ class PaymentVarious extends CommonObject * * @param DoliDB $db Database handler */ - public function __construct($db) + public function __construct(DoliDB $db) { $this->db = $db; $this->element = 'payment_various'; diff --git a/htdocs/compta/deplacement/class/deplacement.class.php b/htdocs/compta/deplacement/class/deplacement.class.php index e05750918da..c09943540bc 100644 --- a/htdocs/compta/deplacement/class/deplacement.class.php +++ b/htdocs/compta/deplacement/class/deplacement.class.php @@ -121,7 +121,7 @@ class Deplacement extends CommonObject * * @param DoliDB $db Database handler */ - public function __construct($db) + public function __construct(DoliDB $db) { $this->db = $db; diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php index a406a48c7f6..af6d4dc606b 100644 --- a/htdocs/compta/facture/class/facture-rec.class.php +++ b/htdocs/compta/facture/class/facture-rec.class.php @@ -222,7 +222,7 @@ class FactureRec extends CommonInvoice * * @param DoliDB $db Database handler */ - public function __construct($db) + public function __construct(DoliDB $db) { $this->db = $db; } diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index a5cb99c2260..e971262208c 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -428,7 +428,7 @@ class Facture extends CommonInvoice * * @param DoliDB $db Database handler */ - public function __construct($db) + public function __construct(DoliDB $db) { $this->db = $db; } diff --git a/htdocs/compta/facture/class/facturestats.class.php b/htdocs/compta/facture/class/facturestats.class.php index a54cd1a6668..522fe9aa2e2 100644 --- a/htdocs/compta/facture/class/facturestats.class.php +++ b/htdocs/compta/facture/class/facturestats.class.php @@ -57,7 +57,7 @@ class FactureStats extends Stats * @param int $typentid Id typent of thirdpary for filter * @param int $categid Id category of thirdpary for filter */ - public function __construct($db, $socid, $mode, $userid = 0, $typentid = 0, $categid = 0) + public function __construct(DoliDB $db, $socid, $mode, $userid = 0, $typentid = 0, $categid = 0) { global $user, $conf; diff --git a/htdocs/compta/facture/class/paymentterm.class.php b/htdocs/compta/facture/class/paymentterm.class.php index f94ad573a81..a4441804570 100644 --- a/htdocs/compta/facture/class/paymentterm.class.php +++ b/htdocs/compta/facture/class/paymentterm.class.php @@ -68,7 +68,7 @@ class PaymentTerm // extends CommonObject * * @param DoliDB $db Database handler */ - public function __construct($db) + public function __construct(DoliDB $db) { $this->db = $db; } diff --git a/htdocs/compta/sociales/class/chargesociales.class.php b/htdocs/compta/sociales/class/chargesociales.class.php index 6996c689922..70d8da4c27b 100644 --- a/htdocs/compta/sociales/class/chargesociales.class.php +++ b/htdocs/compta/sociales/class/chargesociales.class.php @@ -123,7 +123,7 @@ class ChargeSociales extends CommonObject * * @param DoliDB $db Database handler */ - public function __construct($db) + public function __construct(DoliDB $db) { $this->db = $db; } diff --git a/htdocs/compta/sociales/class/paymentsocialcontribution.class.php b/htdocs/compta/sociales/class/paymentsocialcontribution.class.php index 9a4b50e3474..b6a611a47ee 100644 --- a/htdocs/compta/sociales/class/paymentsocialcontribution.class.php +++ b/htdocs/compta/sociales/class/paymentsocialcontribution.class.php @@ -105,7 +105,7 @@ class PaymentSocialContribution extends CommonObject * * @param DoliDB $db Database handler */ - public function __construct($db) + public function __construct(DoliDB $db) { $this->db = $db; } diff --git a/htdocs/core/class/coreobject.class.php b/htdocs/core/class/coreobject.class.php deleted file mode 100644 index 1bb4e92a0c9..00000000000 --- a/htdocs/core/class/coreobject.class.php +++ /dev/null @@ -1,413 +0,0 @@ - - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/core/class/coreobject.class.php - * \ingroup core - * \brief File of class to manage all object. Might be replace or merge into commonobject - */ - -require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php'; - -// TODO Remove this class (used in Expensereportik and ExpenseReportRule -/** - * CoreObject - */ -class CoreObject extends CommonObject -{ - public $withChild = true; - - /** - * @var Array $_fields Fields to synchronize with Database - */ - protected $fields = array(); - - /** - * Constructor - * - * @param DoliDB $db Database handler - */ - public function __construct(DoliDB &$db) - { - $this->db = $db; - } - - /** - * Function to init fields - * - * @return bool - */ - protected function init() - { - $this->id = 0; - $this->datec = 0; - $this->tms = 0; - - if (!empty($this->fields)) { - foreach ($this->fields as $field => $info) { - if ($this->isDate($info)) { - $this->{$field} = time(); - } elseif ($this->isArray($info)) { - $this->{$field} = array(); - } elseif ($this->isInt($info)) { - $this->{$field} = (int) 0; - } elseif ($this->isFloat($info)) { - $this->{$field} = (double) 0; - } else { - $this->{$field} = ''; - } - } - - $this->to_delete = false; - $this->is_clone = false; - - return true; - } else { - return false; - } - } - - /** - * Test type of field - * - * @param string $field name of field - * @param string $type type of field to test - * @return boolean value of field or false - */ - private function checkFieldType($field, $type) - { - if (isset($this->fields[$field]) && method_exists($this, 'is_'.$type)) { - return $this->{'is_'.$type}($this->fields[$field]); - } else { - return false; - } - } - - /** - * Get object and children from database - * - * @param int $id Id of object to load - * @param bool $loadChild used to load children from database - * @return int >0 if OK, <0 if KO, 0 if not found - */ - public function fetch($id, $loadChild = true) - { - $res = $this->fetchCommon($id); - if ($res > 0) { - if ($loadChild) { - $this->fetchChild(); - } - } - - return $res; - } - - - /** - * Function to instantiate a new child - * - * @param string $tabName Table name of child - * @param int $id If id is given, we try to return his key if exist or load if we try_to_load - * @param string $key Attribute name of the object id - * @param bool $try_to_load Force the fetch if an id is given - * @return int - */ - public function addChild($tabName, $id = 0, $key = 'id', $try_to_load = false) - { - if (!empty($id)) { - foreach ($this->{$tabName} as $k => &$object) { - if ($object->{$key} === $id) { - return $k; - } - } - } - - $k = count($this->{$tabName}); - - $className = ucfirst($tabName); - $this->{$tabName}[$k] = new $className($this->db); - if ($id > 0 && $key === 'id' && $try_to_load) { - $this->{$tabName}[$k]->fetch($id); - } - - return $k; - } - - - /** - * Function to set a child as to delete - * - * @param string $tabName Table name of child - * @param int $id Id of child to set as to delete - * @param string $key Attribute name of the object id - * @return bool - */ - public function removeChild($tabName, $id, $key = 'id') - { - foreach ($this->{$tabName} as &$object) { - if ($object->{$key} == $id) { - $object->to_delete = true; - return true; - } - } - return false; - } - - - /** - * Function to fetch children objects - * - * @return void - */ - public function fetchChild() - { - if ($this->withChild && !empty($this->childtables) && !empty($this->fk_element)) { - foreach ($this->childtables as &$childTable) { - $className = ucfirst($childTable); - - $this->{$className} = array(); - - $sql = "SELECT rowid FROM ".$this->db->prefix().$childTable." WHERE ".$this->fk_element." = ".((int) $this->id); - $res = $this->db->query($sql); - - if ($res) { - while ($obj = $this->db->fetch_object($res)) { - $o = new $className($this->db); - $o->fetch($obj->rowid); - - $this->{$className}[] = $o; - } - } else { - $this->errors[] = $this->db->lasterror(); - } - } - } - } - - /** - * Function to update children data - * - * @param User $user user object - * @return void - */ - public function saveChild(User &$user) - { - if ($this->withChild && !empty($this->childtables) && !empty($this->fk_element)) { - foreach ($this->childtables as &$childTable) { - $className = ucfirst($childTable); - if (!empty($this->{$className})) { - foreach ($this->{$className} as $i => &$object) { - $object->{$this->fk_element} = $this->id; - - $object->update($user); - if ($this->unsetChildDeleted && isset($object->to_delete) && $object->to_delete == true) { - unset($this->{$className}[$i]); - } - } - } - } - } - } - - - /** - * Function to update object or create or delete if needed - * - * @param User $user User object - * @return int < 0 if KO, > 0 if OK - */ - public function update(User &$user) - { - if (empty($this->id)) { - return $this->create($user); // To test, with that, no need to test on high level object, the core decide it, update just needed - } elseif (isset($this->to_delete) && $this->to_delete == true) { - return $this->delete($user); - } - - $error = 0; - $this->db->begin(); - - $res = $this->updateCommon($user); - if ($res) { - $result = $this->call_trigger(strtoupper($this->element).'_MODIFY', $user); - if ($result < 0) { - $error++; - } else { - $this->saveChild($user); - } - } else { - $error++; - $this->error = $this->db->lasterror(); - $this->errors[] = $this->error; - } - - if (empty($error)) { - $this->db->commit(); - return $this->id; - } else { - $this->db->rollback(); - return -1; - } - } - - /** - * Function to create object in database - * - * @param User $user User object - * @return int < 0 if KO, > 0 if OK - */ - public function create(User $user) - { - if ($this->id > 0) { - return $this->update($user); - } - - $error = 0; - $this->db->begin(); - - $res = $this->createCommon($user); - if ($res) { - $this->id = $this->db->last_insert_id($this->table_element); - - $result = $this->call_trigger(strtoupper($this->element).'_CREATE', $user); - if ($result < 0) { - $error++; - } else { - $this->saveChild($user); - } - } else { - $error++; - $this->error = $this->db->lasterror(); - $this->errors[] = $this->error; - } - - if (empty($error)) { - $this->db->commit(); - return $this->id; - } else { - $this->db->rollback(); - return -1; - } - } - - /** - * Function to delete object in database - * - * @param User $user user object - * @return int < 0 if KO, > 0 if OK - */ - public function delete(User &$user) - { - if ($this->id <= 0) { - return 0; - } - - $error = 0; - $this->db->begin(); - - $result = $this->call_trigger(strtoupper($this->element).'_DELETE', $user); - if ($result < 0) { - $error++; - } - - if (!$error) { - $this->deleteCommon($user); - if ($this->withChild && !empty($this->childtables)) { - foreach ($this->childtables as &$childTable) { - $className = ucfirst($childTable); - if (!empty($this->{$className})) { - foreach ($this->{$className} as &$object) { - $object->delete($user); - } - } - } - } - } - - if (empty($error)) { - $this->db->commit(); - return 1; - } else { - $this->error = $this->db->lasterror(); - $this->errors[] = $this->error; - $this->db->rollback(); - return -1; - } - } - - - /** - * Function to get a formatted date - * - * @param string $field Attribute to return - * @param string $format Output date format - * @return string - */ - public function getDate($field, $format = '') - { - if (empty($this->{$field})) { - return ''; - } else { - return dol_print_date($this->{$field}, $format); - } - } - - /** - * Function to set date in field - * - * @param string $field field to set - * @param string $date formatted date to convert - * @return mixed - */ - public function setDate($field, $date) - { - if (empty($date)) { - $this->{$field} = 0; - } else { - require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; - $this->{$field} = dol_stringtotime($date); - } - - return $this->{$field}; - } - - - /** - * Function to update current object - * - * @param array $Tab Array of values - * @return int - */ - public function setValues(&$Tab) - { - foreach ($Tab as $key => $value) { - if ($this->checkFieldType($key, 'date')) { - $this->setDate($key, $value); - } elseif ($this->checkFieldType($key, 'float')) { - $this->{$key} = (double) price2num($value); - } elseif ($this->checkFieldType($key, 'int')) { - $this->{$key} = (int) price2num($value); - } else { - $this->{$key} = dol_string_nohtmltag($value); - } - } - - return 1; - } -} diff --git a/htdocs/core/customreports.php b/htdocs/core/customreports.php index ace78c5199a..476b1d5a4da 100644 --- a/htdocs/core/customreports.php +++ b/htdocs/core/customreports.php @@ -465,7 +465,7 @@ print ''; $count = 0; print '
    '; print '
    '; -print $formother->selectGroupByField($object, $search_groupby, $arrayofgroupby, 'minwidth200 maxwidth250', $langs->trans("GroupBy")); // Fill the array $arrayofgroupby with possible fields +print $formother->selectGroupByField($object, $search_groupby, $arrayofgroupby, 'minwidth250 maxwidth300', $langs->trans("GroupBy")); // Fill the array $arrayofgroupby with possible fields print '
    '; diff --git a/htdocs/core/db/sqlite3.class.php b/htdocs/core/db/sqlite3.class.php index 10f9c021c0d..7aabf0eace7 100644 --- a/htdocs/core/db/sqlite3.class.php +++ b/htdocs/core/db/sqlite3.class.php @@ -1026,7 +1026,7 @@ class DoliDBSqlite3 extends DoliDB * * @param string $table Name of table * @param string $field Optionnel : Name of field if we want description of field - * @return SQLite3Result Resource + * @return bool|SQLite3Result Resource */ public function DDLDescTable($table, $field = "") { diff --git a/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php b/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php index efc061b9e67..cc2d3f57052 100644 --- a/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php @@ -120,7 +120,7 @@ class pdf_espadon extends ModelePdfExpedition * * @param DoliDB $db Database handler */ - public function __construct($db = 0) + public function __construct($db) { global $conf, $langs, $mysoc; diff --git a/htdocs/expensereport/class/expensereport_ik.class.php b/htdocs/expensereport/class/expensereport_ik.class.php index 53cf3695b12..49ac0af9857 100644 --- a/htdocs/expensereport/class/expensereport_ik.class.php +++ b/htdocs/expensereport/class/expensereport_ik.class.php @@ -22,12 +22,12 @@ * \brief File of class to manage expense ik */ -require_once DOL_DOCUMENT_ROOT.'/core/class/coreobject.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php'; /** * Class to manage inventories */ -class ExpenseReportIk extends CoreObject +class ExpenseReportIk extends CommonObject { /** * @var string ID to identify managed object @@ -68,6 +68,7 @@ class ExpenseReportIk extends CoreObject */ public $ikoffset; + /** * Attribute object linked with database * @var array @@ -80,17 +81,75 @@ class ExpenseReportIk extends CoreObject ,'ikoffset'=>array('type'=>'double') ); + /** * Constructor * * @param DoliDB $db Database handler */ - public function __construct(DoliDB &$db) + public function __construct(DoliDB $db) { - parent::__construct($db); - parent::init(); + $this->db = $db; + } - $this->errors = array(); + + /** + * Create object into database + * + * @param User $user User that creates + * @param bool $notrigger false=launch triggers after, true=disable triggers + * @return int <0 if KO, Id of created object if OK + */ + public function create(User $user, $notrigger = false) + { + $resultcreate = $this->createCommon($user, $notrigger); + + //$resultvalidate = $this->validate($user, $notrigger); + + return $resultcreate; + } + + + /** + * Load object in memory from the database + * + * @param int $id Id object + * @param string $ref Ref + * @return int <0 if KO, 0 if not found, >0 if OK + */ + public function fetch($id, $ref = null) + { + $result = $this->fetchCommon($id, $ref); + if ($result > 0 && !empty($this->table_element_line)) { + $this->fetchLines(); + } + return $result; + } + + + /** + * Update object into database + * + * @param User $user User that modifies + * @param bool $notrigger false=launch triggers after, true=disable triggers + * @return int <0 if KO, >0 if OK + */ + public function update(User $user, $notrigger = false) + { + return $this->updateCommon($user, $notrigger); + } + + /** + * Delete object in database + * + * @param User $user User that deletes + * @param bool $notrigger false=launch triggers after, true=disable triggers + * @return int <0 if KO, >0 if OK + */ + public function delete(User $user, $notrigger = false) + { + return $this->deleteCommon($user, $notrigger); + //return $this->deleteCommon($user, $notrigger, 1); } diff --git a/htdocs/expensereport/class/expensereport_rule.class.php b/htdocs/expensereport/class/expensereport_rule.class.php index ae89b4b0f51..02bf8b8ce5c 100644 --- a/htdocs/expensereport/class/expensereport_rule.class.php +++ b/htdocs/expensereport/class/expensereport_rule.class.php @@ -22,12 +22,12 @@ * \brief File of class to manage expense ik */ -require_once DOL_DOCUMENT_ROOT.'/core/class/coreobject.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php'; /** * Class to manage inventories */ -class ExpenseReportRule extends CoreObject +class ExpenseReportRule extends CommonObject { /** * @var string ID to identify managed object @@ -125,21 +125,78 @@ class ExpenseReportRule extends CoreObject ,'entity'=>array('type'=>'integer') ); + /** * Constructor * * @param DoliDB $db Database handler */ - public function __construct(DoliDB &$db) + public function __construct(DoliDB $db) { - global $conf; - - parent::__construct($db); - parent::init(); - - $this->errors = array(); + $this->db = $db; } + + /** + * Create object into database + * + * @param User $user User that creates + * @param bool $notrigger false=launch triggers after, true=disable triggers + * @return int <0 if KO, Id of created object if OK + */ + public function create(User $user, $notrigger = false) + { + $resultcreate = $this->createCommon($user, $notrigger); + + //$resultvalidate = $this->validate($user, $notrigger); + + return $resultcreate; + } + + + /** + * Load object in memory from the database + * + * @param int $id Id object + * @param string $ref Ref + * @return int <0 if KO, 0 if not found, >0 if OK + */ + public function fetch($id, $ref = null) + { + $result = $this->fetchCommon($id, $ref); + if ($result > 0 && !empty($this->table_element_line)) { + $this->fetchLines(); + } + return $result; + } + + + /** + * Update object into database + * + * @param User $user User that modifies + * @param bool $notrigger false=launch triggers after, true=disable triggers + * @return int <0 if KO, >0 if OK + */ + public function update(User $user, $notrigger = false) + { + return $this->updateCommon($user, $notrigger); + } + + /** + * Delete object in database + * + * @param User $user User that deletes + * @param bool $notrigger false=launch triggers after, true=disable triggers + * @return int <0 if KO, >0 if OK + */ + public function delete(User $user, $notrigger = false) + { + return $this->deleteCommon($user, $notrigger); + //return $this->deleteCommon($user, $notrigger, 1); + } + + /** * Return all rules or filtered by something * From 8c62363ad1b58217e298d1695f17be1ee14bf823 Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Wed, 18 May 2022 11:14:20 +0200 Subject: [PATCH 170/248] fix deprecated for fk_statut --- htdocs/ticket/card.php | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/htdocs/ticket/card.php b/htdocs/ticket/card.php index 99913e6c997..586eff0bca6 100755 --- a/htdocs/ticket/card.php +++ b/htdocs/ticket/card.php @@ -205,7 +205,7 @@ if (empty($reshook)) { $fk_user_assign = GETPOST("fk_user_assign", 'int'); if ($fk_user_assign > 0) { $object->fk_user_assign = $fk_user_assign; - $object->fk_statut = $object::STATUS_ASSIGNED; + $object->fk_status = $object::STATUS_ASSIGNED; } $object->fk_project = $projectid; @@ -285,7 +285,7 @@ if (empty($reshook)) { } } - if ($action == 'update' && $user->rights->ticket->write && $object->fk_statut < Ticket::STATUS_CLOSED) { + if ($action == 'update' && $user->rights->ticket->write && $object->fk_status < Ticket::STATUS_CLOSED) { $error = 0; $ret = $object->fetch(GETPOST('id', 'int'), GETPOST('ref', 'alpha'), GETPOST('track_id', 'alpha')); @@ -543,7 +543,7 @@ if (empty($reshook)) { if ($action == 'confirm_reopen' && $user->rights->ticket->manage && !GETPOST('cancel')) { if ($object->fetch(GETPOST('id', 'int'), '', GETPOST('track_id', 'alpha')) >= 0) { // prevent browser refresh from reopening ticket several times - if ($object->fk_statut == Ticket::STATUS_CLOSED || $object->fk_statut == Ticket::STATUS_CANCELED) { + if ($object->fk_status == Ticket::STATUS_CLOSED || $object->fk_status == Ticket::STATUS_CANCELED) { $res = $object->setStatut(Ticket::STATUS_ASSIGNED); if ($res) { // Log action in ticket logs table @@ -602,7 +602,7 @@ if (empty($reshook)) { // Reopen ticket if ($object->fetch(GETPOST('id', 'int'), GETPOST('track_id', 'alpha')) >= 0) { $new_status = GETPOST('new_status', 'int'); - $old_status = $object->fk_statut; + $old_status = $object->fk_status; $res = $object->setStatut($new_status); if ($res) { // Log action in ticket logs table @@ -721,7 +721,7 @@ if ($action == 'create' || $action == 'presend') { $formticket->withcancel = 1; $formticket->showForm(1, 'create', 0); - /*} elseif ($action == 'edit' && $user->rights->ticket->write && $object->fk_statut < Ticket::STATUS_CLOSED) { + /*} elseif ($action == 'edit' && $user->rights->ticket->write && $object->fk_status < Ticket::STATUS_CLOSED) { $formticket = new FormTicket($db); $head = ticket_prepare_head($object); @@ -934,7 +934,7 @@ if ($action == 'create' || $action == 'presend') { // Thirdparty if (!empty($conf->societe->enabled)) { $morehtmlref .= '
    '.$langs->trans('ThirdParty').' '; - if ($action != 'editcustomer' && $object->fk_statut < 8 && !$user->socid && $user->rights->ticket->write) { + if ($action != 'editcustomer' && $object->fk_status < 8 && !$user->socid && $user->rights->ticket->write) { $morehtmlref .= ''.img_edit($langs->transnoentitiesnoconv('Edit'), 0).' : '; } if ($action == 'editcustomer') { @@ -1034,7 +1034,7 @@ if ($action == 'create' || $action == 'presend') { print ''; print '
    '; print $langs->trans("AssignedTo"); - if ($object->fk_statut < $object::STATUS_CLOSED && GETPOST('set', 'alpha') != "assign_ticket" && $user->rights->ticket->manage) { + if ($object->fk_status < $object::STATUS_CLOSED && GETPOST('set', 'alpha') != "assign_ticket" && $user->rights->ticket->manage) { print ''.img_edit($langs->trans('Modify'), '').''; } print '
    '; @@ -1045,7 +1045,7 @@ if ($action == 'create' || $action == 'presend') { } // Show user list to assignate one if status is "read" - if (GETPOST('set', 'alpha') == "assign_ticket" && $object->fk_statut < 8 && !$user->socid && $user->rights->ticket->write) { + if (GETPOST('set', 'alpha') == "assign_ticket" && $object->fk_status < 8 && !$user->socid && $user->rights->ticket->write) { print '
    '; print ''; print ''; @@ -1062,7 +1062,7 @@ if ($action == 'create' || $action == 'presend') { print ''; - if ($action != 'progression' && $object->fk_statut < $object::STATUS_CLOSED && !$user->socid) { + if ($action != 'progression' && $object->fk_status < $object::STATUS_CLOSED && !$user->socid) { print ''; } print '
    '; print $langs->trans('Progression').''; print ''.img_edit($langs->trans('Modify')).'
    '; @@ -1185,7 +1185,7 @@ if ($action == 'create' || $action == 'presend') { print ''; } else { // Button to edit Properties - if ($object->fk_statut < $object::STATUS_NEED_MORE_INFO && $user->rights->ticket->write) { + if ($object->fk_status < $object::STATUS_NEED_MORE_INFO && $user->rights->ticket->write) { print ' '.img_edit($langs->trans('Modify')).''; } } @@ -1244,7 +1244,7 @@ if ($action == 'create' || $action == 'presend') { // Display navbar with links to change ticket status print ''; - if (!$user->socid && $user->rights->ticket->write && $object->fk_statut < $object::STATUS_CLOSED && GETPOST('set') !== 'properties') { + if (!$user->socid && $user->rights->ticket->write && $object->fk_status < $object::STATUS_CLOSED && GETPOST('set') !== 'properties') { $actionobject->viewStatusActions($object); } @@ -1379,7 +1379,7 @@ if ($action == 'create' || $action == 'presend') { if (empty($reshook)) { // Show link to add a message (if read and not closed) - if ($object->fk_statut < Ticket::STATUS_CLOSED && $action != "presend" && $action != "presend_addmessage") { + if ($object->fk_status < Ticket::STATUS_CLOSED && $action != "presend" && $action != "presend_addmessage") { print dolGetButtonAction('', $langs->trans('TicketAddMessage'), 'default', $_SERVER["PHP_SELF"].'?action=presend_addmessage&mode=init&token='.newToken().'&track_id='.$object->track_id, ''); } @@ -1388,28 +1388,28 @@ if ($action == 'create' || $action == 'presend') { if (!$object->fk_soc && $user->rights->ficheinter->creer) { print dolGetButtonAction($langs->trans('UnableToCreateInterIfNoSocid'), $langs->trans('TicketAddIntervention'), 'default', $_SERVER['PHP_SELF']. '#', '', false); } - if ($object->fk_soc > 0 && $object->fk_statut < Ticket::STATUS_CLOSED && $user->rights->ficheinter->creer) { + if ($object->fk_soc > 0 && $object->fk_status < Ticket::STATUS_CLOSED && $user->rights->ficheinter->creer) { print dolGetButtonAction('', $langs->trans('TicketAddIntervention'), 'default', DOL_URL_ROOT.'/fichinter/card.php?action=create&token='.newToken().'&socid='. $object->fk_soc.'&origin=ticket_ticket&originid='. $object->id, ''); } /* This is useless. We can already modify each field individually - if ($user->rights->ticket->write && $object->fk_statut < Ticket::STATUS_CLOSED) { + if ($user->rights->ticket->write && $object->fk_status < Ticket::STATUS_CLOSED) { print ''; } */ // Close ticket if statut is read - if ($object->fk_statut > 0 && $object->fk_statut < Ticket::STATUS_CLOSED && $user->rights->ticket->write) { + if ($object->fk_status > 0 && $object->fk_status < Ticket::STATUS_CLOSED && $user->rights->ticket->write) { print dolGetButtonAction('', $langs->trans('CloseTicket'), 'default', $_SERVER["PHP_SELF"].'?action=close&token='.newToken().'&track_id='.$object->track_id, ''); } // Abadon ticket if statut is read - if ($object->fk_statut > 0 && $object->fk_statut < Ticket::STATUS_CLOSED && $user->rights->ticket->write) { + if ($object->fk_status > 0 && $object->fk_status < Ticket::STATUS_CLOSED && $user->rights->ticket->write) { print dolGetButtonAction('', $langs->trans('AbandonTicket'), 'default', $_SERVER["PHP_SELF"].'?action=abandon&token='.newToken().'&track_id='.$object->track_id, ''); } // Re-open ticket - if (!$user->socid && ($object->fk_statut == Ticket::STATUS_CLOSED || $object->fk_statut == Ticket::STATUS_CANCELED) && !$user->socid) { + if (!$user->socid && ($object->fk_status == Ticket::STATUS_CLOSED || $object->fk_status == Ticket::STATUS_CANCELED) && !$user->socid) { print dolGetButtonAction('', $langs->trans('ReOpen'), 'default', $_SERVER["PHP_SELF"].'?action=reopen&token='.newToken().'&track_id='.$object->track_id, ''); } @@ -1513,12 +1513,12 @@ if ($action == 'create' || $action == 'presend') { $morehtmlright .= dolGetButtonTitle($langs->trans('MessageListViewType'), '', 'fa fa-list-alt imgforviewmode', $messagingUrl, '', 1); // Show link to add a message (if read and not closed) - $btnstatus = $object->fk_statut < Ticket::STATUS_CLOSED && $action != "presend" && $action != "presend_addmessage" && $action != "add_message"; + $btnstatus = $object->fk_status < Ticket::STATUS_CLOSED && $action != "presend" && $action != "presend_addmessage" && $action != "add_message"; $url = 'card.php?track_id='.$object->track_id.'&action=presend_addmessage&mode=init'; $morehtmlright .= dolGetButtonTitle($langs->trans('TicketAddMessage'), '', 'fa fa-comment-dots', $url, 'add-new-ticket-title-button', $btnstatus); // Show link to add event (if read and not closed) - $btnstatus = $object->fk_statut < Ticket::STATUS_CLOSED && $action != "presend" && $action != "presend_addmessage" && $action != "add_message"; ; + $btnstatus = $object->fk_status < Ticket::STATUS_CLOSED && $action != "presend" && $action != "presend_addmessage" && $action != "add_message"; ; $url = dol_buildpath('/comm/action/card.php', 1).'?action=create&datep='.date('YmdHi').'&origin=ticket&originid='.$object->id.'&projectid='.$object->fk_project.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?track_id='.$object->track_id); $morehtmlright .= dolGetButtonTitle($langs->trans('AddAction'), '', 'fa fa-plus-circle', $url, 'add-new-ticket-even-button', $btnstatus); From 177e8c17fb8c7905c36504199207dec206328601 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 18 May 2022 11:23:21 +0200 Subject: [PATCH 171/248] Fix scrutinizer --- htdocs/comm/action/class/actioncomm.class.php | 2 +- htdocs/comm/action/index.php | 2 +- htdocs/core/class/commonobject.class.php | 2 +- htdocs/core/class/html.form.class.php | 2 +- htdocs/core/class/utils.class.php | 2 +- htdocs/core/modules/expedition/doc/pdf_espadon.modules.php | 2 +- htdocs/core/modules/expedition/doc/pdf_merou.modules.php | 2 +- htdocs/core/modules/expedition/doc/pdf_rouget.modules.php | 2 +- htdocs/core/modules/reception/doc/pdf_squille.modules.php | 2 +- htdocs/expedition/class/expedition.class.php | 2 +- htdocs/fourn/class/fournisseur.facture-rec.class.php | 7 +++++++ htdocs/install/fileconf.php | 6 +++--- htdocs/product/card.php | 2 +- htdocs/societe/class/societe.class.php | 7 ++++--- 14 files changed, 25 insertions(+), 17 deletions(-) diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index f22cea8d04e..aeb20e6c7b4 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -1621,7 +1621,7 @@ class ActionComm extends CommonObject $label = $langs->trans("ShowAction"); $linkclose .= ' alt="'.dol_escape_htmltag($tooltip, 1).'"'; } - $linkclose .= ' title="'.dol_escape_htmltag($tooltip, 1, 0, 0, '', 1).'"'; + $linkclose .= ' title="'.dol_escape_htmltag($tooltip, 1, 0, '', 1).'"'; $linkclose .= ' class="'.$classname.' classfortooltip"'; /* $hookmanager->initHooks(array('actiondao')); diff --git a/htdocs/comm/action/index.php b/htdocs/comm/action/index.php index 920fe69025d..f5bbeb6467d 100644 --- a/htdocs/comm/action/index.php +++ b/htdocs/comm/action/index.php @@ -110,7 +110,7 @@ $week = GETPOST("week", "int") ?GETPOST("week", "int") : date("W"); $day = GETPOST("day", "int") ?GETPOST("day", "int") : date("d"); $pid = GETPOST("search_projectid", "int", 3) ? GETPOST("search_projectid", "int", 3) : GETPOST("projectid", "int", 3); $status = GETPOSTISSET("search_status") ? GETPOST("search_status", 'aZ09') : GETPOST("status", 'aZ09'); // status may be 0, 50, 100, 'todo' -$type = GETPOSTISSET("search_type", 'aZ09') ? GETPOST("search_type", 'aZ09') : GETPOST("type", 'aZ09'); +$type = GETPOSTISSET("search_type") ? GETPOST("search_type", 'aZ09') : GETPOST("type", 'aZ09'); $maxprint = GETPOSTISSET("maxprint") ? GETPOST("maxprint", 'int') : $conf->global->AGENDA_MAX_EVENTS_DAY_VIEW; $optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print') diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 6466754f241..b4bac9b1d73 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -201,7 +201,7 @@ abstract class CommonObject public $user; /** - * @var string The type of originating object ('commande', 'facture', ...) + * @var string The type of originating object ('commande', 'facture', ...). Note: on some object this field is called $origin_type * @see fetch_origin() */ public $origin; diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 81fbb83b264..c21434b49de 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -7621,7 +7621,7 @@ class Form if (!empty($objecttmp->fields)) { // For object that declare it, it is better to use declared fields (like societe, contact, ...) $tmpfieldstoshow = ''; foreach ($objecttmp->fields as $key => $val) { - if (!dol_eval($val['enabled'], 1, 1, 1, '1')) { + if (!dol_eval($val['enabled'], 1, 1, '1')) { continue; } if (!empty($val['showoncombobox'])) { diff --git a/htdocs/core/class/utils.class.php b/htdocs/core/class/utils.class.php index f3d46e09f30..8b74609bfa3 100644 --- a/htdocs/core/class/utils.class.php +++ b/htdocs/core/class/utils.class.php @@ -342,7 +342,7 @@ class Utils $handle = ''; - $lowmemorydump = GETPOSTISSET("lowmemorydump", "alpha") ? GETPOST("lowmemorydump") : getDolGlobalString('MAIN_LOW_MEMORY_DUMP'); + $lowmemorydump = GETPOSTISSET("lowmemorydump") ? GETPOST("lowmemorydump") : getDolGlobalString('MAIN_LOW_MEMORY_DUMP'); // Start call method to execute dump $fullcommandcrypted = $command." ".$paramcrypted." 2>&1"; diff --git a/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php b/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php index cc2d3f57052..fa47f7be159 100644 --- a/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php @@ -120,7 +120,7 @@ class pdf_espadon extends ModelePdfExpedition * * @param DoliDB $db Database handler */ - public function __construct($db) + public function __construct(DoliDB $db) { global $conf, $langs, $mysoc; diff --git a/htdocs/core/modules/expedition/doc/pdf_merou.modules.php b/htdocs/core/modules/expedition/doc/pdf_merou.modules.php index 9a905422ff1..87098733502 100644 --- a/htdocs/core/modules/expedition/doc/pdf_merou.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_merou.modules.php @@ -121,7 +121,7 @@ class pdf_merou extends ModelePdfExpedition * * @param DoliDB $db Database handler */ - public function __construct($db = 0) + public function __construct(DoliDB $db) { global $conf, $langs, $mysoc; diff --git a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php index 94e048382dc..64d8a2c65e6 100644 --- a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php @@ -121,7 +121,7 @@ class pdf_rouget extends ModelePdfExpedition * * @param DoliDB $db Database handler */ - public function __construct($db = 0) + public function __construct(DoliDB $db) { global $conf, $langs, $mysoc; diff --git a/htdocs/core/modules/reception/doc/pdf_squille.modules.php b/htdocs/core/modules/reception/doc/pdf_squille.modules.php index 9f03abef52c..1ad02edc46b 100644 --- a/htdocs/core/modules/reception/doc/pdf_squille.modules.php +++ b/htdocs/core/modules/reception/doc/pdf_squille.modules.php @@ -44,7 +44,7 @@ class pdf_squille extends ModelePdfReception * * @param DoliDB $db Database handler */ - public function __construct($db = 0) + public function __construct(DoliDB $db) { global $conf, $langs, $mysoc; diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 0dec85b2e4f..acb54dde6f3 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -752,7 +752,7 @@ class Expedition extends CommonObject //var_dump($this->lines[$i]); $mouvS = new MouvementStock($this->db); - $mouvS->origin = dol_clone($this, 1); + //$mouvS->origin = dol_clone($this, 1); $mouvS->setOrigin($this->element, $this->id); if (empty($obj->edbrowid)) { diff --git a/htdocs/fourn/class/fournisseur.facture-rec.class.php b/htdocs/fourn/class/fournisseur.facture-rec.class.php index ab68cd3ecc6..a43e4a3ff9b 100644 --- a/htdocs/fourn/class/fournisseur.facture-rec.class.php +++ b/htdocs/fourn/class/fournisseur.facture-rec.class.php @@ -127,6 +127,13 @@ class FactureFournisseurRec extends CommonInvoice public $model_pdf; + /** + * Invoice lines + * @var FactureFournisseurLigneRec[] + */ + public $lines = array(); + + /* Override fields in CommonObject public $entity; public $date_creation; diff --git a/htdocs/install/fileconf.php b/htdocs/install/fileconf.php index 16d8a919dbe..14f1ee2a1cd 100644 --- a/htdocs/install/fileconf.php +++ b/htdocs/install/fileconf.php @@ -143,7 +143,7 @@ if (!empty($force_install_message)) { @@ -178,7 +178,7 @@ if (!empty($force_install_noedit)) { $dolibarr_main_data_root = @$force_install_main_data_root; } if (empty($dolibarr_main_data_root)) { - $dolibarr_main_data_root = GETPOSTISSET('main_data_dir', 'alpha') ? GETPOST('main_data_dir') : detect_dolibarr_main_data_root($dolibarr_main_document_root); + $dolibarr_main_data_root = GETPOSTISSET('main_data_dir') ? GETPOST('main_data_dir') : detect_dolibarr_main_data_root($dolibarr_main_document_root); } ?> @@ -207,7 +207,7 @@ if (!empty($force_install_noedit)) { diff --git a/htdocs/product/card.php b/htdocs/product/card.php index 6040e116fa5..c7d26830ebf 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -1461,7 +1461,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { if ($type == 1) { print ''.$langs->trans("Duration").''; print ''; - print $formproduct->selectMeasuringUnits("duration_unit", "time", (GETPOSTISSET('duration_value') ? GETPOSTISSET('duration_value', 'alpha') : 'h'), 0, 1); + print $formproduct->selectMeasuringUnits("duration_unit", "time", (GETPOSTISSET('duration_value') ? GETPOST('duration_value', 'alpha') : 'h'), 0, 1); // Mandatory period print '       '; diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index 30f8515e92c..686c301af79 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -504,18 +504,19 @@ class Societe extends CommonObject /** * Date of last update - * @var string + * @var integer|string */ public $date_modification; /** * User that made last update - * @var string + * @var User */ public $user_modification; /** - * @var integer|string date_creation + * Date of creation + * @var integer|string */ public $date_creation; From 48cb30bd9babad7335121207a5dceab10d85fe99 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 18 May 2022 11:34:54 +0200 Subject: [PATCH 172/248] Fix scrutinizer --- .../modules/expedition/doc/pdf_espadon.modules.php | 2 +- .../modules/expedition/doc/pdf_merou.modules.php | 2 +- .../core/modules/facture/doc/pdf_crabe.modules.php | 12 ++++++------ .../core/modules/propale/doc/pdf_azur.modules.php | 3 ++- .../supplier_invoice/doc/pdf_canelle.modules.php | 13 +++++++------ .../interface_50_modTicket_TicketEmail.class.php | 2 +- htdocs/install/step5.php | 2 +- 7 files changed, 19 insertions(+), 17 deletions(-) diff --git a/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php b/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php index fa47f7be159..a038705ea22 100644 --- a/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php @@ -642,7 +642,7 @@ class pdf_espadon extends ModelePdfExpedition if ($this->getColumnStatus('weight')) { - $this->printStdColumnContent($pdf, $curY, 'weight', $weighttxt.(($weighttxt && $voltxt) ? '
    ' : '').$voltxt, array('html'=>1)); + $this->printStdColumnContent($pdf, $curY, 'weight', $weighttxt.(($weighttxt && $voltxt) ? '
    ' : '').$voltxt); $nexY = max($pdf->GetY(), $nexY); } diff --git a/htdocs/core/modules/expedition/doc/pdf_merou.modules.php b/htdocs/core/modules/expedition/doc/pdf_merou.modules.php index 87098733502..69105dd31cc 100644 --- a/htdocs/core/modules/expedition/doc/pdf_merou.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_merou.modules.php @@ -584,7 +584,7 @@ class pdf_merou extends ModelePdfExpedition $origin_id = $object->origin_id; // Add list of linked elements - $posy = pdf_writeLinkedObjects($pdf, $object, $outputlangs, $posx, $posy, 100, 3, 'R', $default_font_size - 1, $hookmanager); + $posy = pdf_writeLinkedObjects($pdf, $object, $outputlangs, $posx, $posy, 100, 3, 'R', $default_font_size - 1); //$this->Code39($Xoff+43, $Yoff+1, $object->commande->ref,$ext = true, $cks = false, $w = 0.4, $h = 4, $wide = true); //Definition Location of the Company block diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index 8046347e881..091b78d2ed5 100644 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -874,12 +874,12 @@ class pdf_crabe extends ModelePDFFactures /** * Show payments table * - * @param TCPDF $pdf Object PDF - * @param Facture $object Object invoice - * @param int $posy Position y in PDF - * @param Translate $outputlangs Object langs for output - * @param int $heightforfooter height for footer - * @return int <0 if KO, >0 if OK + * @param TCPDF $pdf Object PDF + * @param Facture $object Object invoice + * @param int $posy Position y in PDF + * @param Translate $outputlangs Object langs for output + * @param int $heightforfooter Height for footer + * @return int <0 if KO, >0 if OK */ protected function _tableau_versements(&$pdf, $object, $posy, $outputlangs, $heightforfooter = 0) { diff --git a/htdocs/core/modules/propale/doc/pdf_azur.modules.php b/htdocs/core/modules/propale/doc/pdf_azur.modules.php index c6bb975092d..abf2b843a39 100644 --- a/htdocs/core/modules/propale/doc/pdf_azur.modules.php +++ b/htdocs/core/modules/propale/doc/pdf_azur.modules.php @@ -1458,9 +1458,10 @@ class pdf_azur extends ModelePDFPropales * @param Propal $object Object to show * @param int $showaddress 0=no, 1=yes * @param Translate $outputlangs Object lang for output + * @param Translate $outputlangsbis Object lang for output bis * @return void */ - protected function _pagehead(&$pdf, $object, $showaddress, $outputlangs) + protected function _pagehead(&$pdf, $object, $showaddress, $outputlangs, $outputlangsbis = null) { global $conf, $langs; diff --git a/htdocs/core/modules/supplier_invoice/doc/pdf_canelle.modules.php b/htdocs/core/modules/supplier_invoice/doc/pdf_canelle.modules.php index 23a38b961ec..b026a39791c 100644 --- a/htdocs/core/modules/supplier_invoice/doc/pdf_canelle.modules.php +++ b/htdocs/core/modules/supplier_invoice/doc/pdf_canelle.modules.php @@ -967,13 +967,14 @@ class pdf_canelle extends ModelePDFSuppliersInvoices /** * Show payments table * - * @param TCPDF $pdf Object PDF - * @param Object $object Object to show - * @param int $posy Position y in PDF - * @param Translate $outputlangs Object langs for output - * @return int <0 if KO, >0 if OK + * @param TCPDF $pdf Object PDF + * @param Object $object Object to show + * @param int $posy Position y in PDF + * @param Translate $outputlangs Object langs for output + * @param int $heightforfooter Height for footer + * @return int <0 if KO, >0 if OK */ - protected function _tableau_versements(&$pdf, $object, $posy, $outputlangs) + protected function _tableau_versements(&$pdf, $object, $posy, $outputlangs, $heightforfooter = 0) { // phpcs:enable global $conf; diff --git a/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php b/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php index e13328e0a2a..840d6d9c3ba 100644 --- a/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php +++ b/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php @@ -169,7 +169,7 @@ class InterfaceTicketEmail extends DolibarrTriggers } if ($sendto) { - $this->composeAndSendCustomerMessage($sendto, $subject_customer, $body_customer, $see_ticket_customer, $object, $langs, $conf); + $this->composeAndSendCustomerMessage($sendto, $subject_customer, $body_customer, $see_ticket_customer, $object, $langs); } } diff --git a/htdocs/install/step5.php b/htdocs/install/step5.php index 89681794aeb..ee592007522 100644 --- a/htdocs/install/step5.php +++ b/htdocs/install/step5.php @@ -228,7 +228,7 @@ if ($action == "set" || empty($action) || preg_match('/upgrade/i', $action)) { $success = 1; } else { dolibarr_install_syslog('step5: FailedToCreateAdminLogin '.$newuser->error, LOG_ERR); - setEventMessage($langs->trans("FailedToCreateAdminLogin").' '.$newuser->error, null, 'errors'); + setEventMessages($langs->trans("FailedToCreateAdminLogin").' '.$newuser->error, null, 'errors'); //header("Location: step4.php?error=3&selectlang=$setuplang".(isset($login) ? '&login='.$login : '')); print '
    '.$langs->trans("FailedToCreateAdminLogin").': '.$newuser->error.'


    '; print $langs->trans("ErrorGoBackAndCorrectParameters").'

    '; From 86d34af4b0e3687b324b0e3719f26859bf9323df Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 18 May 2022 11:38:56 +0200 Subject: [PATCH 173/248] Fix deprecated code --- htdocs/compta/deplacement/list.php | 2 +- htdocs/compta/paiement/cheque/list.php | 2 +- htdocs/compta/paiement/rapport.php | 2 +- htdocs/contact/consumption.php | 2 +- htdocs/contrat/list.php | 2 +- htdocs/expensereport/list.php | 4 ++-- htdocs/fourn/facture/rapport.php | 2 +- htdocs/holiday/list.php | 8 ++++---- htdocs/opensurvey/results.php | 2 +- htdocs/projet/list.php | 4 ++-- htdocs/projet/tasks.php | 4 ++-- htdocs/projet/tasks/time.php | 2 +- htdocs/societe/consumption.php | 2 +- htdocs/societe/paymentmodes.php | 4 ++-- 14 files changed, 21 insertions(+), 21 deletions(-) diff --git a/htdocs/compta/deplacement/list.php b/htdocs/compta/deplacement/list.php index 9f92cecc4a7..2aa03441e9b 100644 --- a/htdocs/compta/deplacement/list.php +++ b/htdocs/compta/deplacement/list.php @@ -158,7 +158,7 @@ if ($resql) { print ''; } print ''; - $formother->select_year($year ? $year : -1, 'year', 1, 20, 5); + print $formother->selectyear($year ? $year : -1, 'year', 1, 20, 5); print ''; print ''; print ''; diff --git a/htdocs/compta/paiement/cheque/list.php b/htdocs/compta/paiement/cheque/list.php index d12caf36bbe..1c3abfe87bd 100644 --- a/htdocs/compta/paiement/cheque/list.php +++ b/htdocs/compta/paiement/cheque/list.php @@ -172,7 +172,7 @@ if ($resql) { print ''; } print ''; - $formother->select_year($year ? $year : -1, 'year', 1, 20, 5); + print $formother->selectyear($year ? $year : -1, 'year', 1, 20, 5); print ''; print ''; $form->select_comptes($search_account, 'search_account', 0, '', 1); diff --git a/htdocs/compta/paiement/rapport.php b/htdocs/compta/paiement/rapport.php index cf02c2aeb74..326be7144a8 100644 --- a/htdocs/compta/paiement/rapport.php +++ b/htdocs/compta/paiement/rapport.php @@ -102,7 +102,7 @@ $syear = GETPOST("reyear") ?GETPOST("reyear") : date("Y", time()); print $formother->select_month($cmonth, 'remonth'); -print $formother->select_year($syear, 'reyear'); +print $formother->selectyear($syear, 'reyear'); print ''; print ''; diff --git a/htdocs/contact/consumption.php b/htdocs/contact/consumption.php index 02813cee469..7f1d9bdc64b 100644 --- a/htdocs/contact/consumption.php +++ b/htdocs/contact/consumption.php @@ -410,7 +410,7 @@ if ($sql_select) { print ''; print ''; // date print $formother->select_month($month ? $month : -1, 'month', 1, 0, 'valignmiddle'); - $formother->select_year($year ? $year : -1, 'year', 1, 20, 1); + print $formother->selectyear($year ? $year : -1, 'year', 1, 20, 1); print ''; print ''; print ''; diff --git a/htdocs/contrat/list.php b/htdocs/contrat/list.php index 57b4657eab4..e76261010da 100644 --- a/htdocs/contrat/list.php +++ b/htdocs/contrat/list.php @@ -693,7 +693,7 @@ if (!empty($arrayfields['lower_planned_end_date']['checked'])) { print '
    '; print $formother->select_month($search_dfmonth, 'search_dfmonth', 1, 0); print ' '; - $formother->select_year($search_dfyear, 'search_dfyear', 1, 20, 5, 0, 0, ''); + print $formother->selectyear($search_dfyear, 'search_dfyear', 1, 20, 5, 0, 0, ''); print ''; } // Status diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php index 551957d0a69..24432cb7cf1 100644 --- a/htdocs/expensereport/list.php +++ b/htdocs/expensereport/list.php @@ -580,14 +580,14 @@ if ($resql) { if (!empty($arrayfields['d.date_valid']['checked'])) { print ''; //print ''; - //$formother->select_year($year_end,'year_end',1, $min_year, $max_year); + //print $formother->selectyear($year_end,'year_end',1, $min_year, $max_year); print ''; } // Date approve if (!empty($arrayfields['d.date_approve']['checked'])) { print ''; //print ''; - //$formother->select_year($year_end,'year_end',1, $min_year, $max_year); + //print $formother->selectyear($year_end,'year_end',1, $min_year, $max_year); print ''; } // Amount with no tax diff --git a/htdocs/fourn/facture/rapport.php b/htdocs/fourn/facture/rapport.php index 59b92f349c0..f46871b03e9 100644 --- a/htdocs/fourn/facture/rapport.php +++ b/htdocs/fourn/facture/rapport.php @@ -105,7 +105,7 @@ $syear = GETPOST("reyear") ?GETPOST("reyear") : date("Y", time()); print $formother->select_month($cmonth, 'remonth'); -print $formother->select_year($syear, 'reyear'); +print $formother->selectyear($syear, 'reyear'); print ''; print ''; diff --git a/htdocs/holiday/list.php b/htdocs/holiday/list.php index 5dc05d1c617..ed6e421d302 100644 --- a/htdocs/holiday/list.php +++ b/htdocs/holiday/list.php @@ -625,7 +625,7 @@ if ($resql) { if (!empty($arrayfields['cp.date_debut']['checked'])) { print ''; print ''; - $formother->select_year($search_year_start, 'search_year_start', 1, $min_year, $max_year); + print $formother->selectyear($search_year_start, 'search_year_start', 1, $min_year, $max_year); print ''; } @@ -633,7 +633,7 @@ if ($resql) { if (!empty($arrayfields['cp.date_fin']['checked'])) { print ''; print ''; - $formother->select_year($search_year_end, 'search_year_end', 1, $min_year, $max_year); + print $formother->selectyear($search_year_end, 'search_year_end', 1, $min_year, $max_year); print ''; } @@ -654,7 +654,7 @@ if ($resql) { if (!empty($arrayfields['cp.date_create']['checked'])) { print ''; print ''; - $formother->select_year($search_year_create, 'search_year_create', 1, $min_year, 0); + print $formother->selectyear($search_year_create, 'search_year_create', 1, $min_year, 0); print ''; } @@ -662,7 +662,7 @@ if ($resql) { if (!empty($arrayfields['cp.tms']['checked'])) { print ''; print ''; - $formother->select_year($search_year_update, 'search_year_update', 1, $min_year, 0); + print $formother->selectyear($search_year_update, 'search_year_update', 1, $min_year, 0); print ''; } diff --git a/htdocs/opensurvey/results.php b/htdocs/opensurvey/results.php index bb2e3604627..eda16dec32c 100644 --- a/htdocs/opensurvey/results.php +++ b/htdocs/opensurvey/results.php @@ -609,7 +609,7 @@ if (GETPOST('ajoutsujet')) { print ' '; - print $formother->select_year('', 'nouvelleannee', 1, 0, 5, 0, 1); + print $formother->selectyear('', 'nouvelleannee', 1, 0, 5, 0, 1); print '

    '.$langs->trans("AddStartHour").':

    '."\n"; print ''; } print ''; - $formother->select_year($search_syear ? $search_syear : -1, 'search_syear', 1, 20, 5, 0, 0, '', 'widthauto valignmiddle');*/ + print $formother->selectyear($search_syear ? $search_syear : -1, 'search_syear', 1, 20, 5, 0, 0, '', 'widthauto valignmiddle');*/ print '
    '; print $form->selectDate($search_date_start_start ? $search_date_start_start : -1, 'search_date_start_start', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('From')); print '
    '; @@ -914,7 +914,7 @@ if (!empty($arrayfields['p.datee']['checked'])) { print ''; } print ''; - $formother->select_year($search_eyear ? $search_eyear : -1, 'search_eyear', 1, 20, 5, 0, 0, '', 'widthauto valignmiddle');*/ + print $formother->selectyear($search_eyear ? $search_eyear : -1, 'search_eyear', 1, 20, 5, 0, 0, '', 'widthauto valignmiddle');*/ print '
    '; print $form->selectDate($search_date_end_start ? $search_date_end_start : -1, 'search_date_end_start', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('From')); print '
    '; diff --git a/htdocs/projet/tasks.php b/htdocs/projet/tasks.php index eacd507b35c..24f3874301b 100644 --- a/htdocs/projet/tasks.php +++ b/htdocs/projet/tasks.php @@ -901,7 +901,7 @@ if ($action == 'create' && $user->rights->projet->creer && (empty($object->third print ''; /*print ''; print ''; - $formother->select_year($search_dtstartyear ? $search_dtstartyear : -1, 'search_dtstartyear', 1, 20, 5);*/ + print $formother->selectyear($search_dtstartyear ? $search_dtstartyear : -1, 'search_dtstartyear', 1, 20, 5);*/ print '
    '; print $form->selectDate($search_date_start_start ? $search_date_start_start : -1, 'search_date_start_start', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('From')); print '
    '; @@ -915,7 +915,7 @@ if ($action == 'create' && $user->rights->projet->creer && (empty($object->third print ''; /*print ''; print ''; - $formother->select_year($search_dtendyear ? $search_dtendyear : -1, 'search_dtendyear', 1, 20, 5);*/ + print $formother->selectyear($search_dtendyear ? $search_dtendyear : -1, 'search_dtendyear', 1, 20, 5);*/ print '
    '; print $form->selectDate($search_date_end_start ? $search_date_end_start : -1, 'search_date_end_start', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('From')); print '
    '; diff --git a/htdocs/projet/tasks/time.php b/htdocs/projet/tasks/time.php index fa987805a25..3718fe55e27 100644 --- a/htdocs/projet/tasks/time.php +++ b/htdocs/projet/tasks/time.php @@ -1562,7 +1562,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser print ''; } print ''; - $formother->select_year($search_year, 'search_year', 1, 20, 5); + print $formother->selectyear($search_year, 'search_year', 1, 20, 5); print ''; } if (!empty($allprojectforuser)) { diff --git a/htdocs/societe/consumption.php b/htdocs/societe/consumption.php index 2ab5a836c51..5f997a37e9c 100644 --- a/htdocs/societe/consumption.php +++ b/htdocs/societe/consumption.php @@ -443,7 +443,7 @@ if ($sql_select) { print ''; print ''; // date print $formother->select_month($month ? $month : -1, 'month', 1, 0, 'valignmiddle'); - $formother->select_year($year ? $year : -1, 'year', 1, 20, 1, 0, 0, '', 'valignmiddle maxwidth75imp marginleftonly'); + print $formother->selectyear($year ? $year : -1, 'year', 1, 20, 1, 0, 0, '', 'valignmiddle maxwidth75imp marginleftonly'); print ''; print ''; print ''; diff --git a/htdocs/societe/paymentmodes.php b/htdocs/societe/paymentmodes.php index bdbf7453c35..e2ac40f8770 100644 --- a/htdocs/societe/paymentmodes.php +++ b/htdocs/societe/paymentmodes.php @@ -1683,7 +1683,7 @@ if ($socid && $action == 'editcard' && $permissiontoaddupdatepaymentinformation) print ''.$langs->trans("ExpiryDate").''; print ''; print $formother->select_month($companypaymentmode->exp_date_month, 'exp_date_month', 1); - print $formother->select_year($companypaymentmode->exp_date_year, 'exp_date_year', 1, 5, 10, 0, 0, '', 'marginleftonly'); + print $formother->selectyear($companypaymentmode->exp_date_year, 'exp_date_year', 1, 5, 10, 0, 0, '', 'marginleftonly'); print ''; print ''.$langs->trans("CVN").''; @@ -1841,7 +1841,7 @@ if ($socid && $action == 'createcard' && $permissiontoaddupdatepaymentinformatio print ''.$langs->trans("ExpiryDate").''; print ''; print $formother->select_month(GETPOST('exp_date_month', 'int'), 'exp_date_month', 1); - print $formother->select_year(GETPOST('exp_date_year', 'int'), 'exp_date_year', 1, 5, 10, 0, 0, '', 'marginleftonly'); + print $formother->selectyear(GETPOST('exp_date_year', 'int'), 'exp_date_year', 1, 5, 10, 0, 0, '', 'marginleftonly'); print ''; print ''.$langs->trans("CVN").''; From e0c3fa79cb0a616a6c9b894565f6583b742ea0e3 Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Wed, 18 May 2022 11:39:47 +0200 Subject: [PATCH 174/248] fix : method was undefined and attached files was nok --- htdocs/core/class/html.formticket.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/html.formticket.class.php b/htdocs/core/class/html.formticket.class.php index a7cc3a996b4..b5b15e3634b 100644 --- a/htdocs/core/class/html.formticket.class.php +++ b/htdocs/core/class/html.formticket.class.php @@ -1267,7 +1267,7 @@ class FormTicket if (GETPOST('mode', 'alpha') == 'init' || (GETPOST('modelmailselected', 'alpha') && GETPOST('modelmailselected', 'alpha') != '-1')) { if (!empty($arraydefaultmessage->joinfiles) && is_array($this->param['fileinit'])) { foreach ($this->param['fileinit'] as $file) { - $this->add_attached_files($file, basename($file), dol_mimetype($file)); + $formmail->add_attached_files($file, basename($file), dol_mimetype($file)); } } } From cf2c46b583311c67c4130158a31dab048cba6bab Mon Sep 17 00:00:00 2001 From: lmarcouiller Date: Wed, 18 May 2022 12:31:09 +0200 Subject: [PATCH 175/248] Fix : php 8.0 warnings --- htdocs/adherents/admin/member.php | 14 +++++++------- htdocs/bom/bom_agenda.php | 3 ++- htdocs/bom/bom_document.php | 1 + htdocs/bom/bom_net_needs.php | 1 + htdocs/bom/bom_note.php | 2 +- htdocs/bom/class/bom.class.php | 13 ++++++++----- htdocs/core/actions_addupdatedelete.inc.php | 4 ++-- htdocs/core/class/commonobject.class.php | 6 +++--- .../modules/holiday/mod_holiday_immaculate.php | 4 ++-- 9 files changed, 27 insertions(+), 21 deletions(-) diff --git a/htdocs/adherents/admin/member.php b/htdocs/adherents/admin/member.php index 64197636d0e..ed2453ef793 100644 --- a/htdocs/adherents/admin/member.php +++ b/htdocs/adherents/admin/member.php @@ -248,8 +248,8 @@ if (!empty($conf->banque->enabled) && !empty($conf->societe->enabled) && !empty( $arraychoices['bankviainvoice'] = $langs->trans("MoreActionBankViaInvoice"); } print ''; -print $form->selectarray('ADHERENT_BANK_USE', $arraychoices, $conf->global->ADHERENT_BANK_USE, 0); -if ($conf->global->ADHERENT_BANK_USE == 'bankdirect' || $conf->global->ADHERENT_BANK_USE == 'bankviainvoice') { +print $form->selectarray('ADHERENT_BANK_USE', $arraychoices, getDolGlobalString('ADHERENT_BANK_USE'), 0); +if (getDolGlobalString('ADHERENT_BANK_USE') == 'bankdirect' || getDolGlobalString('ADHERENT_BANK_USE') == 'bankviainvoice') { print '
    '.$langs->trans("ABankAccountMustBeDefinedOnPaymentModeSetup").'
    '; } print ''; @@ -378,16 +378,16 @@ foreach ($dirmodels as $reldir) { print ''; } else { print ''."\n"; - print 'scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"), 'switch_off').''; + print 'scandir) ? $module->scandir : '').'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"), 'switch_off').''; print ""; } // Defaut print ''; - if ($conf->global->MEMBER_ADDON_PDF == $name) { + if (getDolGlobalString('MEMBER_ADDON_PDF') == $name) { print img_picto($langs->trans("Default"), 'on'); } else { - print 'scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').''; + print 'scandir) ? $module->scandir : '').'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').''; } print ''; @@ -398,8 +398,8 @@ foreach ($dirmodels as $reldir) { $htmltooltip .= '
    '.$langs->trans("Width").'/'.$langs->trans("Height").': '.$module->page_largeur.'/'.$module->page_hauteur; } $htmltooltip .= '

    '.$langs->trans("FeaturesSupported").':'; - $htmltooltip .= '
    '.$langs->trans("Logo").': '.yn($module->option_logo, 1, 1); - $htmltooltip .= '
    '.$langs->trans("MultiLanguage").': '.yn($module->option_multilang, 1, 1); + $htmltooltip .= '
    '.$langs->trans("Logo").': '.yn(!empty($module->option_logo) ? $module->option_logo : 0, 1, 1); + $htmltooltip .= '
    '.$langs->trans("MultiLanguage").': '.yn(!empty($module->option_multilang) ? $module->option_multilang : 0, 1, 1); print ''; diff --git a/htdocs/bom/bom_agenda.php b/htdocs/bom/bom_agenda.php index 2b9c6f57bbd..4bc9095a57e 100644 --- a/htdocs/bom/bom_agenda.php +++ b/htdocs/bom/bom_agenda.php @@ -40,6 +40,7 @@ $ref = GETPOST('ref', 'alpha'); $action = GETPOST('action', 'aZ09'); $cancel = GETPOST('cancel', 'aZ09'); $backtopage = GETPOST('backtopage', 'alpha'); +$socid = GETPOST('socid', 'int'); if (GETPOST('actioncode', 'array')) { $actioncode = GETPOST('actioncode', 'array', 3); @@ -79,7 +80,7 @@ $extrafields->fetch_name_optionals_label($object->table_element); // Load object include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once // Must be include, not include_once. Include fetch and fetch_thirdparty but not fetch_optionals if ($id > 0 || !empty($ref)) { - $upload_dir = $conf->bom->multidir_output[$object->entity]."/".$object->id; + $upload_dir = (!empty($conf->bom->multidir_output[$object->entity]) ? $conf->bom->multidir_output[$object->entity] : $conf->bom->dir_output)."/".$object->id; } // Security check - Protection if external user diff --git a/htdocs/bom/bom_document.php b/htdocs/bom/bom_document.php index 64f3cdbfac1..a0390ef5105 100644 --- a/htdocs/bom/bom_document.php +++ b/htdocs/bom/bom_document.php @@ -104,6 +104,7 @@ $form = new Form($db); $title = $langs->trans("BillOfMaterials").' - '.$langs->trans("Files"); $help_url = 'EN:Module_BOM'; +$morehtmlref = ""; llxHeader('', $title, $help_url); diff --git a/htdocs/bom/bom_net_needs.php b/htdocs/bom/bom_net_needs.php index 30cd6792c55..2b0b9a9def5 100644 --- a/htdocs/bom/bom_net_needs.php +++ b/htdocs/bom/bom_net_needs.php @@ -34,6 +34,7 @@ $langs->loadLangs(array("mrp", "other", "stocks")); // Get parameters $id = GETPOST('id', 'int'); +$lineid = GETPOST('lineid', 'int'); $ref = GETPOST('ref', 'alpha'); $action = GETPOST('action', 'aZ09'); $confirm = GETPOST('confirm', 'alpha'); diff --git a/htdocs/bom/bom_note.php b/htdocs/bom/bom_note.php index 8ace40cc900..9984a1498b8 100644 --- a/htdocs/bom/bom_note.php +++ b/htdocs/bom/bom_note.php @@ -54,7 +54,7 @@ $extrafields->fetch_name_optionals_label($object->table_element); // Load object include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once // Must be include, not include_once. Include fetch and fetch_thirdparty but not fetch_optionals if ($id > 0 || !empty($ref)) { - $upload_dir = $conf->bom->multidir_output[$object->entity]."/".$object->id; + $upload_dir = (!empty($conf->bom->multidir_output[$object->entity]) ? $conf->bom->multidir_output[$object->entity] : $conf->bom->dir_output)."/".$object->id; } $permissionnote = $user->rights->bom->write; // Used by the include of actions_setnotes.inc.php diff --git a/htdocs/bom/class/bom.class.php b/htdocs/bom/class/bom.class.php index 86e07ed424d..fb7fd68e13a 100644 --- a/htdocs/bom/class/bom.class.php +++ b/htdocs/bom/class/bom.class.php @@ -916,27 +916,27 @@ class BOM extends CommonObject if ($this->db->num_rows($result)) { $obj = $this->db->fetch_object($result); $this->id = $obj->rowid; - if ($obj->fk_user_author) { + if (!empty($obj->fk_user_author)) { $cuser = new User($this->db); $cuser->fetch($obj->fk_user_author); $this->user_creation = $cuser; } - if ($obj->fk_user_valid) { + if (!empty($obj->fk_user_valid)) { $vuser = new User($this->db); $vuser->fetch($obj->fk_user_valid); $this->user_validation = $vuser; } - if ($obj->fk_user_cloture) { + if (!empty($obj->fk_user_cloture)) { $cluser = new User($this->db); $cluser->fetch($obj->fk_user_cloture); $this->user_cloture = $cluser; } $this->date_creation = $this->db->jdate($obj->datec); - $this->date_modification = $this->db->jdate($obj->datem); - $this->date_validation = $this->db->jdate($obj->datev); + $this->date_modification = !empty($obj->datem) ? $this->db->jdate($obj->datem) : ""; + $this->date_validation = !empty($obj->datev) ? $this->db->jdate($obj->datev) : ""; } $this->db->free($result); @@ -1134,6 +1134,9 @@ class BOM extends CommonObject if (! empty($line->childBom)) { foreach ($line->childBom as $childBom) $childBom->getNetNeeds($TNetNeeds, $line->qty*$qty); } else { + if (empty($TNetNeeds[$line->fk_product])) { + $TNetNeeds[$line->fk_product] = 0; + } $TNetNeeds[$line->fk_product] += $line->qty*$qty; } } diff --git a/htdocs/core/actions_addupdatedelete.inc.php b/htdocs/core/actions_addupdatedelete.inc.php index cec127eeac4..85b854f8ba7 100644 --- a/htdocs/core/actions_addupdatedelete.inc.php +++ b/htdocs/core/actions_addupdatedelete.inc.php @@ -101,10 +101,10 @@ if ($action == 'add' && !empty($permissiontoadd)) { //var_dump($key.' '.$value.' '.$object->fields[$key]['type']); $object->$key = $value; - if ($val['notnull'] > 0 && $object->$key == '' && !is_null($val['default']) && $val['default'] == '(PROV)') { + if (!empty($val['notnull']) && $val['notnull'] > 0 && $object->$key == '' && isset($val['default']) && $val['default'] == '(PROV)') { $object->$key = '(PROV)'; } - if ($val['notnull'] > 0 && $object->$key == '' && is_null($val['default'])) { + if (!empty($val['notnull']) && $val['notnull'] > 0 && $object->$key == '' && !isset($val['default'])) { $error++; setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv($val['label'])), null, 'errors'); } diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 6466754f241..dc7433f64d7 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -4879,7 +4879,7 @@ abstract class CommonObject $product_static->fetch($line->fk_product); $product_static->ref = $line->ref; //can change ref in hook - $product_static->label = $line->label; //can change label in hook + $product_static->label = !empty($line->label) ? $line->label : ""; //can change label in hook $text = $product_static->getNomUrl(1); @@ -4915,7 +4915,7 @@ abstract class CommonObject $description .= (!empty($conf->global->PRODUIT_DESC_IN_FORM) ? '' : dol_htmlentitiesbr($line->description)); // Description is what to show on popup. We shown nothing if already into desc. } - $line->pu_ttc = price2num($line->subprice * (1 + ($line->tva_tx / 100)), 'MU'); + $line->pu_ttc = price2num((!empty($line->subprice) ? $line->subprice : 0) * (1 + ((!empty($line->tva_tx) ? $line->tva_tx : 0) / 100)), 'MU'); // Output template part (modules that overwrite templates must declare this into descriptor) // Use global variables + $dateSelector + $seller and $buyer @@ -6837,7 +6837,7 @@ abstract class CommonObject if ((string) $key == '') { continue; } - list($val, $parent) = explode('|', $val); + if (strpos($val, "|") !== false) list($val, $parent) = explode('|', $val); $out .= ''; } else { - if ($hideunselectables && $disabled && ($selected != $obj->rowid)) { + if ($disabled && ($selected != $obj->rowid)) { $resultat = ''; } else { $resultat = '
    '.$langs->trans("GoTo").' '.$virtualurl.'