From 5c862435a89cebcd46119b26be09bacfc2224fa9 Mon Sep 17 00:00:00 2001 From: atm-lena Date: Mon, 7 Feb 2022 16:06:25 +0100 Subject: [PATCH 001/329] Ajout ligne BOM enfant dans mo_card action "create" --- htdocs/mrp/tpl/originproductline.tpl.php | 98 +++++++++++++++++++++++- 1 file changed, 97 insertions(+), 1 deletion(-) diff --git a/htdocs/mrp/tpl/originproductline.tpl.php b/htdocs/mrp/tpl/originproductline.tpl.php index ba1d7fccd86..97847427fcd 100644 --- a/htdocs/mrp/tpl/originproductline.tpl.php +++ b/htdocs/mrp/tpl/originproductline.tpl.php @@ -32,12 +32,30 @@ $qtytoconsumeforline = $this->tpl['qty'] / ( ! empty($this->tpl['efficiency']) ? }*/ $qtytoconsumeforline = price2num($qtytoconsumeforline, 'MS'); +$tmpproduct = new Product($this->db); +$tmpproduct->fetch($line->fk_product); +$tmpbom = new BOM($this->db); +$res = $tmpbom->fetch($line->fk_bom_child); + ?> tpl['strike']) ? '' : ' strikefordisabled').'">'; -print ''.$this->tpl['label'].''; +print ''; +if($res){ + print $tmpproduct->getNomUrl(1); + print ' '.$langs->trans("or").' '; + print $tmpbom->getNomUrl(1); + print ' '; + print (empty($conf->global->BOM_SHOW_ALL_BOM_BY_DEFAULT) ? img_picto('', 'folder') : img_picto('', 'folder-open')); + print ''; + +} else{ + print $this->tpl['label']; +} +print ''; +//print ''.$this->tpl['label'].''; print ''.$this->tpl['qty'].(($this->tpl['efficiency'] > 0 && $this->tpl['efficiency'] < 1) ? ' / '.$form->textwithpicto($this->tpl['efficiency'], $langs->trans("ValueOfMeansLoss")).' = '.$qtytoconsumeforline : '').''; print ''.(empty($this->tpl['stock']) ? 0 : price2num($this->tpl['stock'], 'MS')); if ($this->tpl['seuil_stock_alerte'] != '' && ($this->tpl['stock'] < $this->tpl['seuil_stock_alerte'])) { @@ -61,5 +79,83 @@ print ''; //print ''; print ''; print ''."\n"; + +// Select of all the sub-BOM lines +$sql = 'SELECT rowid, fk_bom_child, fk_product, qty FROM '.MAIN_DB_PREFIX.'bom_bomline AS bl'; +$sql.= ' WHERE fk_bom ='. (int) $tmpbom->id; +$resql = $this->db->query($sql); + +if ($resql) { + // Loop on all the sub-BOM lines if they exist + while ($obj = $this->db->fetch_object($resql)) { + $sub_bom_product = new Product($this->db); + $sub_bom_product->fetch($obj->fk_product); + $sub_bom_product->load_stock(); + + $sub_bom = new BOM($this->db); + $sub_bom->fetch($obj->fk_bom_child); + + $sub_bom_line = new BOMLine($this->db); + $sub_bom_line->fetch($obj->rowid); + + //If hidden conf is set, we show directly all the sub-BOM lines + if (!empty($conf->global->BOM_SHOW_ALL_BOM_BY_DEFAULT)) { + print ''; + } else { + print ''; + } + + // Product OR BOM + print ''; + if (!empty($obj->fk_bom_child)) { + print $sub_bom_product->getNomUrl(1); + print ' '.$langs->trans('or').' '; + print $sub_bom->getNomUrl(1); + } else { + print $sub_bom_product->getNomUrl(1); + print ''; + } + + // Qty + if ($sub_bom_line->qty_frozen > 0) { + print ''.price($sub_bom_line->qty, 0, '', 0, 0).''; + } else { + print ''.price($sub_bom_line->qty * $line->qty, 0, '', 0, 0).''; + } + + // Stock réel + if ($sub_bom_product->stock_reel > 0) { + print ''.$sub_bom_product->stock_reel.''; + } else { + print ' '; + } + + // Stock virtuel + if ($sub_bom_product->stock_theorique > 0) { + print ''.$sub_bom_product->stock_theorique.''; + } else { + print ' '; + } + + // Frozen qty + if ($sub_bom_line->qty_frozen > 0) { + print ''.$langs->trans('Yes').''; + } else { + print ' '; + } + + // Disable stock change + if ($sub_bom_line->disable_stock_change > 0) { + print ''.yn($sub_bom_line->disable_stock_change).''; + } else { + print ' '; + } + + print ''; + print ''; + print ''; + } +} + ?> From f921c10e3ac4204ff5bf5a313fe69ede88100a58 Mon Sep 17 00:00:00 2001 From: atm-lena Date: Mon, 7 Feb 2022 16:28:58 +0100 Subject: [PATCH 002/329] =?UTF-8?q?Gestion=20js=20:=20d=C3=A9roulement=20d?= =?UTF-8?q?es=20sous=20bom?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/mrp/class/mo.class.php | 7 ++++ htdocs/mrp/mo_card.php | 41 +++++++++++++++++++++++- htdocs/mrp/tpl/originproductline.tpl.php | 2 +- 3 files changed, 48 insertions(+), 2 deletions(-) diff --git a/htdocs/mrp/class/mo.class.php b/htdocs/mrp/class/mo.class.php index 29db4bcb669..7a2b738b81e 100644 --- a/htdocs/mrp/class/mo.class.php +++ b/htdocs/mrp/class/mo.class.php @@ -1312,6 +1312,13 @@ class Mo extends CommonObject $text_stock_options .= (!empty($conf->global->STOCK_CALCULATE_ON_RECEPTION) || !empty($conf->global->STOCK_CALCULATE_ON_RECEPTION_CLOSE) ? '- '.$langs->trans("StockOnReception").'
' : ''); print ''; + // Product or sub-bom + print ''.$langs->trans('Description'); + if (!empty($conf->global->BOM_SUB_BOM)) { + print '   '.img_picto('', 'folder-open', 'class="paddingright"').$langs->trans("ExpandAll").'  '; + print ''.img_picto('', 'folder', 'class="paddingright"').$langs->trans("UndoExpandAll").' '; + } + print ''; print ''.$langs->trans('Ref').''; print ''.$langs->trans('Qty'); if ($this->bom->bomtype == 0) { diff --git a/htdocs/mrp/mo_card.php b/htdocs/mrp/mo_card.php index 48e36831592..4ba3fe8f250 100644 --- a/htdocs/mrp/mo_card.php +++ b/htdocs/mrp/mo_card.php @@ -243,7 +243,46 @@ if ($action == 'create') { ?> - - + + + + array('enabled'=>$conf->propal->enabled, 'perms'=>1, 'label'=>'LinkToProposal', 'sql'=>"SELECT s.rowid as socid, s.nom as name, s.client, t.rowid, t.ref, t.ref_client, t.total_ht FROM ".$this->db->prefix()."societe as s, ".$this->db->prefix()."propal as t WHERE t.fk_soc = s.rowid AND t.fk_soc IN (".$this->db->sanitize($listofidcompanytoscan).') AND t.entity IN ('.getEntity('propal').')'), 'order'=>array('enabled'=>$conf->commande->enabled, 'perms'=>1, 'label'=>'LinkToOrder', 'sql'=>"SELECT s.rowid as socid, s.nom as name, s.client, t.rowid, t.ref, t.ref_client, t.total_ht FROM ".$this->db->prefix()."societe as s, ".$this->db->prefix()."commande as t WHERE t.fk_soc = s.rowid AND t.fk_soc IN (".$this->db->sanitize($listofidcompanytoscan).') AND t.entity IN ('.getEntity('commande').')'), @@ -8571,7 +8569,6 @@ class Form $sql = $possiblelink['sql']; $resqllist = $this->db->query($sql); - if ($resqllist) { $num = $this->db->num_rows($resqllist); $i = 0; diff --git a/htdocs/mrp/class/mo.class.php b/htdocs/mrp/class/mo.class.php index a686e2892f6..f3df78af869 100644 --- a/htdocs/mrp/class/mo.class.php +++ b/htdocs/mrp/class/mo.class.php @@ -675,7 +675,6 @@ class Mo extends CommonObject } $resultline = $moline->create($user, false); // Never use triggers here - if ($resultline <= 0) { $error++; $this->error = $moline->error; @@ -1206,7 +1205,7 @@ class Mo extends CommonObject /** * Create an array of lines - * + * @param string $rolefilter * @return array|int array of lines if OK, <0 if KO */ public function getLinesArray($rolefilter = '') @@ -1694,9 +1693,7 @@ class MoLine extends CommonObjectLine $resql = $this->db->query($sql); if ($resql) { $num = $this->db->num_rows($resql); - $i = 0; - while ($i < ($limit ? min($limit, $num) : $num)) { $obj = $this->db->fetch_object($resql); diff --git a/htdocs/mrp/mo_card.php b/htdocs/mrp/mo_card.php index fc6ae99ad55..2b6e7f5dbe4 100644 --- a/htdocs/mrp/mo_card.php +++ b/htdocs/mrp/mo_card.php @@ -31,6 +31,8 @@ require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; require_once DOL_DOCUMENT_ROOT.'/mrp/class/mo.class.php'; require_once DOL_DOCUMENT_ROOT.'/mrp/lib/mrp_mo.lib.php'; require_once DOL_DOCUMENT_ROOT.'/bom/class/bom.class.php'; +require_once DOL_DOCUMENT_ROOT.'/bom/lib/bom.lib.php'; + // Load translation files required by the page $langs->loadLangs(array("mrp", "other")); @@ -112,7 +114,6 @@ if ($reshook < 0) { setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); } - if (empty($reshook)) { $error = 0; @@ -130,14 +131,11 @@ if (empty($reshook)) { if ($cancel && !empty($backtopageforcancel)) { $backtopage = $backtopageforcancel; } - - - $triggermodname = 'MRP_MO_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 - if ($action == 'add' && empty($id)) { + if ($action == 'add' && empty($id) && !empty($TBomLineId)) { $noback = ""; include DOL_DOCUMENT_ROOT.'/core/actions_addupdatedelete.inc.php'; @@ -281,48 +279,11 @@ if ($action == 'create') { print dol_get_fiche_end(); + print mrpCollapseBomManagement(); + ?> Date: Tue, 15 Feb 2022 16:24:39 +0100 Subject: [PATCH 016/329] Clean Code --- htdocs/langs/en_US/mrp.lang | 1 + htdocs/mrp/class/mo.class.php | 2 +- htdocs/mrp/mo_card.php | 14 +++++--------- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/htdocs/langs/en_US/mrp.lang b/htdocs/langs/en_US/mrp.lang index 97b2634d40d..e3167bb7109 100644 --- a/htdocs/langs/en_US/mrp.lang +++ b/htdocs/langs/en_US/mrp.lang @@ -108,3 +108,4 @@ BOM=Bill Of Materials CollapseBOMHelp=You can define the default display of the details of the nomenclature in the configuration of the BOM module MOAndLines=Manufacturing Orders and lines MoChildGenerate=Generate Child Mo +ParentMo=MO Parent diff --git a/htdocs/mrp/class/mo.class.php b/htdocs/mrp/class/mo.class.php index f3df78af869..0eb01e09cb5 100644 --- a/htdocs/mrp/class/mo.class.php +++ b/htdocs/mrp/class/mo.class.php @@ -1205,7 +1205,7 @@ class Mo extends CommonObject /** * Create an array of lines - * @param string $rolefilter + * @param string $rolefilter string lines role filter * @return array|int array of lines if OK, <0 if KO */ public function getLinesArray($rolefilter = '') diff --git a/htdocs/mrp/mo_card.php b/htdocs/mrp/mo_card.php index 2b6e7f5dbe4..a104a9a5d31 100644 --- a/htdocs/mrp/mo_card.php +++ b/htdocs/mrp/mo_card.php @@ -133,10 +133,9 @@ if (empty($reshook)) { } $triggermodname = 'MRP_MO_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 - + //Create MO with Childs if ($action == 'add' && empty($id) && !empty($TBomLineId)) { - $noback = ""; + $noback = 0; include DOL_DOCUMENT_ROOT.'/core/actions_addupdatedelete.inc.php'; $mo_parent = $object; @@ -163,16 +162,13 @@ if (empty($reshook)) { $res = $object->add_object_linked('mo', $mo_parent->id); } - $noback = 0; - - header("Location: ".$urltogo); + header("Location: ".dol_buildpath('/mrp/mo_list.php', 1)); exit; } + // Actions cancel, add, update, update_extras, confirm_validate, confirm_delete, confirm_deleteline, confirm_clone, confirm_close, confirm_setdraft, confirm_reopen include DOL_DOCUMENT_ROOT.'/core/actions_addupdatedelete.inc.php'; - - // Actions when linking object each other include DOL_DOCUMENT_ROOT.'/core/actions_dellink.inc.php'; @@ -531,7 +527,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea $mo_parent = $object->getMoParent(); if (is_object($mo_parent)) { print ''; - print '' . $langs->trans('MOParent') . ''; + print '' . $langs->trans('ParentMo') . ''; print '' .$mo_parent->getNomUrl(1).''; print ''; } From c2bc3b20bbfd8c40c0e41326f3e8ea9f62417ec6 Mon Sep 17 00:00:00 2001 From: atm-lena Date: Thu, 17 Feb 2022 11:05:03 +0100 Subject: [PATCH 017/329] Don't display collapse if no bom on bomline --- htdocs/mrp/tpl/originproductline.tpl.php | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/htdocs/mrp/tpl/originproductline.tpl.php b/htdocs/mrp/tpl/originproductline.tpl.php index d261764f1c8..78d58062d4c 100644 --- a/htdocs/mrp/tpl/originproductline.tpl.php +++ b/htdocs/mrp/tpl/originproductline.tpl.php @@ -45,10 +45,12 @@ print 'getNomUrl(1); - print ' '; - print (empty($conf->global->BOM_SHOW_ALL_BOM_BY_DEFAULT) ? img_picto('', 'folder') : img_picto('', 'folder-open')); + if($tmpbom->id) { + print ' ' . $langs->trans("or") . ' '; + print $tmpbom->getNomUrl(1); + print ' '; + print (empty($conf->global->BOM_SHOW_ALL_BOM_BY_DEFAULT) ? img_picto('', 'folder') : img_picto('', 'folder-open')); + } print ''; } else { print $this->tpl['label']; @@ -92,6 +94,7 @@ $resql = $this->db->query($sql); if ($resql) { // Loop on all the sub-BOM lines if they exist while ($obj = $this->db->fetch_object($resql)) { + $sub_bom_product = new Product($this->db); $sub_bom_product->fetch($obj->fk_product); $sub_bom_product->load_stock(); From 7e6a5d5792ed06a41e6ad35a43e1f9bcc2c83854 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Thu, 17 Feb 2022 10:13:30 +0000 Subject: [PATCH 018/329] Fixing style errors. --- htdocs/mrp/tpl/originproductline.tpl.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/htdocs/mrp/tpl/originproductline.tpl.php b/htdocs/mrp/tpl/originproductline.tpl.php index 78d58062d4c..17ee9305726 100644 --- a/htdocs/mrp/tpl/originproductline.tpl.php +++ b/htdocs/mrp/tpl/originproductline.tpl.php @@ -45,7 +45,7 @@ print 'getNomUrl(1); print ' '; @@ -94,7 +94,6 @@ $resql = $this->db->query($sql); if ($resql) { // Loop on all the sub-BOM lines if they exist while ($obj = $this->db->fetch_object($resql)) { - $sub_bom_product = new Product($this->db); $sub_bom_product->fetch($obj->fk_product); $sub_bom_product->load_stock(); From c4a8bffa4822276a67ba15a5b39025c3ee0369c3 Mon Sep 17 00:00:00 2001 From: atm-lena Date: Mon, 21 Feb 2022 10:05:18 +0100 Subject: [PATCH 019/329] FIX Travis : global $db --- htdocs/mrp/tpl/originproductline.tpl.php | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/htdocs/mrp/tpl/originproductline.tpl.php b/htdocs/mrp/tpl/originproductline.tpl.php index 78d58062d4c..f4dbf74ea7d 100644 --- a/htdocs/mrp/tpl/originproductline.tpl.php +++ b/htdocs/mrp/tpl/originproductline.tpl.php @@ -22,19 +22,22 @@ if (empty($conf) || !is_object($conf)) { exit; } +global $db; + if (!is_object($form)) { $form = new Form($db); } + $qtytoconsumeforline = $this->tpl['qty'] / ( ! empty($this->tpl['efficiency']) ? $this->tpl['efficiency'] : 1 ); /*if ((empty($this->tpl['qty_frozen']) && $this->tpl['qty_bom'] > 1)) { $qtytoconsumeforline = $qtytoconsumeforline / $this->tpl['qty_bom']; }*/ $qtytoconsumeforline = price2num($qtytoconsumeforline, 'MS'); -$tmpproduct = new Product($this->db); +$tmpproduct = new Product($db); $tmpproduct->fetch($line->fk_product); -$tmpbom = new BOM($this->db); +$tmpbom = new BOM($db); $res = $tmpbom->fetch($line->fk_bom_child); ?> @@ -89,20 +92,20 @@ print ''."\n"; // Select of all the sub-BOM lines $sql = 'SELECT rowid, fk_bom_child, fk_product, qty FROM '.MAIN_DB_PREFIX.'bom_bomline AS bl'; $sql.= ' WHERE fk_bom ='. (int) $tmpbom->id; -$resql = $this->db->query($sql); +$resql = $db->query($sql); if ($resql) { // Loop on all the sub-BOM lines if they exist - while ($obj = $this->db->fetch_object($resql)) { + while ($obj = $db->fetch_object($resql)) { - $sub_bom_product = new Product($this->db); + $sub_bom_product = new Product($db); $sub_bom_product->fetch($obj->fk_product); $sub_bom_product->load_stock(); - $sub_bom = new BOM($this->db); + $sub_bom = new BOM($db); $sub_bom->fetch($obj->fk_bom_child); - $sub_bom_line = new BOMLine($this->db); + $sub_bom_line = new BOMLine($db); $sub_bom_line->fetch($obj->rowid); //If hidden conf is set, we show directly all the sub-BOM lines From e02b82e3464abe8bf46de196737fc0044c6b3502 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Mon, 21 Feb 2022 09:09:39 +0000 Subject: [PATCH 020/329] Fixing style errors. --- htdocs/mrp/tpl/originproductline.tpl.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/mrp/tpl/originproductline.tpl.php b/htdocs/mrp/tpl/originproductline.tpl.php index 035cb3a2184..22e53ae721e 100644 --- a/htdocs/mrp/tpl/originproductline.tpl.php +++ b/htdocs/mrp/tpl/originproductline.tpl.php @@ -96,7 +96,6 @@ $resql = $db->query($sql); if ($resql) { // Loop on all the sub-BOM lines if they exist while ($obj = $db->fetch_object($resql)) { - $sub_bom_product = new Product($db); $sub_bom_product->fetch($obj->fk_product); $sub_bom_product->load_stock(); From f177973efe21dba3e6984d549ecac06249e64419 Mon Sep 17 00:00:00 2001 From: atm-lena Date: Mon, 21 Feb 2022 10:13:25 +0100 Subject: [PATCH 021/329] Don't create Mo Child if it's only a product line on BOM --- htdocs/mrp/tpl/originproductline.tpl.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/htdocs/mrp/tpl/originproductline.tpl.php b/htdocs/mrp/tpl/originproductline.tpl.php index 035cb3a2184..d8a7eb99ed8 100644 --- a/htdocs/mrp/tpl/originproductline.tpl.php +++ b/htdocs/mrp/tpl/originproductline.tpl.php @@ -82,9 +82,13 @@ print ''; //print ''; print ''; -print ''; -print ''; -print ''; +if($tmpbom->id) { + print ''; + print ''; + print ''; +} else { + print ' '; +} print ''."\n"; From cf2f2c283b4928b4f9e9bfc4180511f5ef261f9e Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Mon, 21 Feb 2022 09:17:20 +0000 Subject: [PATCH 022/329] Fixing style errors. --- htdocs/mrp/tpl/originproductline.tpl.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/mrp/tpl/originproductline.tpl.php b/htdocs/mrp/tpl/originproductline.tpl.php index 096ae6109fd..d65f625048b 100644 --- a/htdocs/mrp/tpl/originproductline.tpl.php +++ b/htdocs/mrp/tpl/originproductline.tpl.php @@ -82,7 +82,7 @@ print ''; //print ''; print ''; -if($tmpbom->id) { +if ($tmpbom->id) { print ''; print ''; print ''; From 192e62fa5c00e5d82d831aa377c2916e41849806 Mon Sep 17 00:00:00 2001 From: lmarcouiller Date: Mon, 21 Feb 2022 15:41:41 +0100 Subject: [PATCH 023/329] 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 45fe83289f77614d5315c1745b5f1db45b51c598 Mon Sep 17 00:00:00 2001 From: atm-lena Date: Tue, 22 Feb 2022 11:32:33 +0100 Subject: [PATCH 024/329] MoChild category --- htdocs/core/class/html.form.class.php | 4 ++-- htdocs/langs/en_US/mrp.lang | 1 + htdocs/mrp/mo_card.php | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index b8e1850feaf..6ee9bf79049 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -8339,7 +8339,7 @@ class Form * @param array $compatibleImportElementsList Array of compatibles elements object for "import from" action * @return int <0 if KO, >=0 if OK */ - public function showLinkedObjectBlock($object, $morehtmlright = '', $compatibleImportElementsList = false) + public function showLinkedObjectBlock($object, $morehtmlright = '', $compatibleImportElementsList = false, $title='RelatedObjects') { global $conf, $langs, $hookmanager; global $bc, $action; @@ -8358,7 +8358,7 @@ class Form $nbofdifferenttypes = count($object->linkedObjects); print ''; - print load_fiche_titre($langs->trans('RelatedObjects'), $morehtmlright, '', 0, 0, 'showlinkedobjectblock'); + print load_fiche_titre($langs->trans($title), $morehtmlright, '', 0, 0, 'showlinkedobjectblock'); print '
'; diff --git a/htdocs/langs/en_US/mrp.lang b/htdocs/langs/en_US/mrp.lang index e3167bb7109..cef9054f727 100644 --- a/htdocs/langs/en_US/mrp.lang +++ b/htdocs/langs/en_US/mrp.lang @@ -109,3 +109,4 @@ CollapseBOMHelp=You can define the default display of the details of the nomencl MOAndLines=Manufacturing Orders and lines MoChildGenerate=Generate Child Mo ParentMo=MO Parent +MOChild=MO Child diff --git a/htdocs/mrp/mo_card.php b/htdocs/mrp/mo_card.php index a104a9a5d31..34ed92a2164 100644 --- a/htdocs/mrp/mo_card.php +++ b/htdocs/mrp/mo_card.php @@ -731,7 +731,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea // Show links to link elements $linktoelem = $form->showLinkToObjectBlock($object, null, array('mo')); - $somethingshown = $form->showLinkedObjectBlock($object, $linktoelem); + $somethingshown = $form->showLinkedObjectBlock($object, $linktoelem, false, 'MOChild'); print '
'; From e5ba5b208e5f4732dcdf2f285340df552d83c55d Mon Sep 17 00:00:00 2001 From: atm-lena Date: Tue, 22 Feb 2022 11:36:41 +0100 Subject: [PATCH 025/329] Correct Stickler --- 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 6ee9bf79049..48b7b27cc14 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -8339,7 +8339,7 @@ class Form * @param array $compatibleImportElementsList Array of compatibles elements object for "import from" action * @return int <0 if KO, >=0 if OK */ - public function showLinkedObjectBlock($object, $morehtmlright = '', $compatibleImportElementsList = false, $title='RelatedObjects') + public function showLinkedObjectBlock($object, $morehtmlright = '', $compatibleImportElementsList = false, $title = 'RelatedObjects') { global $conf, $langs, $hookmanager; global $bc, $action; From edbf1bb34b903d3c16c903935cac8b1847f516e3 Mon Sep 17 00:00:00 2001 From: lmarcouiller Date: Tue, 22 Feb 2022 16:35:10 +0100 Subject: [PATCH 026/329] 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 027/329] 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 5e644ed0a4afca0ed5e804a1d942e357d6b545f0 Mon Sep 17 00:00:00 2001 From: ATM john Date: Tue, 15 Mar 2022 18:24:49 +0100 Subject: [PATCH 028/329] Fix search degradation --- htdocs/compta/facture/list.php | 1 - htdocs/core/class/extrafields.class.php | 80 +++++++++++++------ .../tpl/extrafields_list_search_sql.tpl.php | 9 ++- 3 files changed, 61 insertions(+), 29 deletions(-) diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index ccf3c2f3f0c..c97e1a6d10f 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -139,7 +139,6 @@ $search_btn = GETPOST('button_search', 'alpha'); $search_remove_btn = GETPOST('button_removefilter', 'alpha'); $optioncss = GETPOST('optioncss', 'alpha'); - $option = GETPOST('search_option'); if ($option == 'late') { $search_status = '1'; diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index f8e5726d344..770956a7581 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -1173,35 +1173,56 @@ class ExtraFields $out = ' '; } elseif ($type == 'select') { $out = ''; - if (!empty($conf->use_javascript_ajax) && empty($conf->global->MAIN_EXTRAFIELDS_DISABLE_SELECT2)) { - include_once DOL_DOCUMENT_ROOT.'/core/lib/ajax.lib.php'; - $out .= ajax_combobox($keyprefix.$key.$keysuffix, array(), 0); - } + if ($mode) { + $options = array(); + foreach ($param['options'] as $okey => $val) { + if ((string) $okey == '') { + continue; + } - $out .= ''; + $out .= ''; + foreach ($param['options'] as $key => $val) { + if ((string) $key == '') { + continue; + } + $valarray = explode('|', $val); + $val = $valarray[0]; + $parent = ''; + if (!empty($valarray[1])) { + $parent = $valarray[1]; + } + $out .= ''; + } + $out .= ''; } - $out .= ''; } elseif ($type == 'sellist') { $out = ''; if (!empty($conf->use_javascript_ajax) && empty($conf->global->MAIN_EXTRAFIELDS_DISABLE_SELECT2)) { @@ -2208,6 +2229,17 @@ class ExtraFields } else { continue; // Value was not provided, we should not set it. } + } elseif ($key_type == 'select') { + // to detect if we are in search context + $value_arr_test = GETPOST($keysuffix."options_".$key.$keyprefix, 'none'); + if (is_array($value_arr_test)) { + $value_arr = GETPOST($keysuffix."options_".$key.$keyprefix, 'array:aZ09'); + // Make sure we get an array even if there's only one selected + $value_arr = (array) $value_arr; + $value_key = implode(',', $value_arr); + } else { + $value_key = GETPOST($keysuffix."options_".$key.$keyprefix); + } } elseif (in_array($key_type, array('checkbox', 'chkbxlst'))) { if (!GETPOSTISSET($keysuffix."options_".$key.$keyprefix)) { continue; // Value was not provided, we should not set it. diff --git a/htdocs/core/tpl/extrafields_list_search_sql.tpl.php b/htdocs/core/tpl/extrafields_list_search_sql.tpl.php index 8b7ff9ac62c..a4b0a8591b4 100644 --- a/htdocs/core/tpl/extrafields_list_search_sql.tpl.php +++ b/htdocs/core/tpl/extrafields_list_search_sql.tpl.php @@ -48,7 +48,7 @@ if (!empty($extrafieldsobjectkey) && !empty($search_array_options) && is_array($ } $sql .= ")"; } - } elseif ($crit != '' && (!in_array($typ, array('select', 'sellist')) || $crit != '0') && (!in_array($typ, array('link')) || $crit != '-1')) { + } elseif ($crit != '' && (!in_array($typ, array('select', 'sellist', 'select')) || $crit != '0') && (!in_array($typ, array('link')) || $crit != '-1')) { $mode_search = 0; if (in_array($typ, array('int', 'double', 'real', 'price'))) { $mode_search = 1; // Search on a numeric @@ -59,13 +59,14 @@ if (!empty($extrafieldsobjectkey) && !empty($search_array_options) && is_array($ if (in_array($typ, array('sellist')) && !is_numeric($crit)) { $mode_search = 0;// Search on a foreign key string } - if (in_array($typ, array('chkbxlst', 'checkbox'))) { + if (in_array($typ, array('chkbxlst', 'checkbox', 'select'))) { $mode_search = 4; // Search on a multiselect field with sql type = text } if (is_array($crit)) { $crit = implode(' ', $crit); // natural_search() expects a string - } elseif ($typ === 'select' and is_string($crit) and strpos($crit, ' ') === false) { - $sql .= " AND (".$extrafieldsobjectprefix.$tmpkey." = '".$db->escape($crit)."')"; + } elseif ($typ === 'select' and is_string($crit) and strpos($crit, ',') === false) { + $critSelect = implode("','", array_map(array($db, 'escape'), explode(',', $crit))); + $sql .= " AND (".$extrafieldsobjectprefix.$tmpkey." IN ('".$critSelect."') )"; continue; } $sql .= natural_search($extrafieldsobjectprefix.$tmpkey, $crit, $mode_search); From 16968b08f9f5f2971af0153923a618bff4c3bb1b Mon Sep 17 00:00:00 2001 From: ATM john Date: Wed, 30 Mar 2022 11:49:48 +0200 Subject: [PATCH 029/329] Add GETPOSTISARRAY --- htdocs/core/class/extrafields.class.php | 3 +-- htdocs/core/lib/functions.lib.php | 26 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index a840dbd02b9..6e92714293b 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -2131,8 +2131,7 @@ class ExtraFields } } elseif ($key_type == 'select') { // to detect if we are in search context - $value_arr_test = GETPOST($keysuffix."options_".$key.$keyprefix, 'none'); - if (is_array($value_arr_test)) { + if (GETPOSTISARRAY($keysuffix."options_".$key.$keyprefix)) { $value_arr = GETPOST($keysuffix."options_".$key.$keyprefix, 'array:aZ09'); // Make sure we get an array even if there's only one selected $value_arr = (array) $value_arr; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index f9672f776e5..9c268d31980 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -370,6 +370,32 @@ function GETPOSTISSET($paramname) return $isset; } +/** + * Return true if the parameter $paramname is submit from a POST OR GET as an array. + * Can be used before GETPOST to know if the $check param of GETPOST need to check an array or a string + * + * @param string $paramname Name or parameter to test + * @param int $method Type of method (0 = get then post, 1 = only get, 2 = only post, 3 = post then get) + * @return bool True if we have just submit a POST or GET request with the parameter provided (even if param is empty) + */ +function GETPOSTISARRAY($paramname, $method = 0) +{ + // for $method test need return the same $val as GETPOST + if (empty($method)) { + $val = isset($_GET[$paramname]) ? $_GET[$paramname] : (isset($_POST[$paramname]) ? $_POST[$paramname] : ''); + } elseif ($method == 1) { + $val = isset($_GET[$paramname]) ? $_GET[$paramname] : ''; + } elseif ($method == 2) { + $val = isset($_POST[$paramname]) ? $_POST[$paramname] : ''; + } elseif ($method == 3) { + $val = isset($_POST[$paramname]) ? $_POST[$paramname] : (isset($_GET[$paramname]) ? $_GET[$paramname] : ''); + } else { + $val = 'BadFirstParameterForGETPOST'; + } + + return is_array($val); +} + /** * Return value of a param into GET or POST supervariable. * Use the property $user->default_values[path]['createform'] and/or $user->default_values[path]['filters'] and/or $user->default_values[path]['sortorder'] From c1d9ea95dcb1d362c951317d1cc8216412cc2c26 Mon Sep 17 00:00:00 2001 From: ATM john Date: Wed, 30 Mar 2022 12:16:17 +0200 Subject: [PATCH 030/329] fix function name --- htdocs/api/class/api.class.php | 4 ++-- htdocs/categories/class/categorie.class.php | 2 +- .../comm/propal/class/api_proposals.class.php | 8 +++---- htdocs/commande/class/api_orders.class.php | 8 +++---- .../bank/class/api_bankaccounts.class.php | 22 +++++++++---------- .../facture/class/api_invoices.class.php | 8 +++---- htdocs/contrat/class/api_contracts.class.php | 8 +++---- htdocs/core/lib/functions.lib.php | 22 ++++++++++++++++--- .../expedition/class/api_shipments.class.php | 8 +++---- .../class/api_expensereports.class.php | 8 +++---- htdocs/exports/class/export.class.php | 2 +- .../class/api_supplier_invoices.class.php | 8 +++---- .../class/api_knowledgemanagement.class.php | 4 ++-- .../template/class/api_mymodule.class.php | 4 ++-- htdocs/product/class/api_products.class.php | 6 ++--- htdocs/projet/class/api_projects.class.php | 4 ++-- htdocs/projet/class/api_tasks.class.php | 4 ++-- .../class/api_recruitment.class.php | 8 +++---- 18 files changed, 77 insertions(+), 61 deletions(-) diff --git a/htdocs/api/class/api.class.php b/htdocs/api/class/api.class.php index fa21c37649f..32d691400d6 100644 --- a/htdocs/api/class/api.class.php +++ b/htdocs/api/class/api.class.php @@ -88,9 +88,9 @@ class DolibarrApi // phpcs:enable // TODO Use type detected in $object->fields if (in_array($field, array('note', 'note_private', 'note_public', 'desc', 'description'))) { - return checkVal($value, 'restricthtml'); + return sanitizeVal($value, 'restricthtml'); } else { - return checkVal($value, 'alphanohtml'); + return sanitizeVal($value, 'alphanohtml'); } } diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index a3d2dc3e57f..fca780cadef 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -913,7 +913,7 @@ class Categorie extends CommonObject $categories = array(); - $type = checkVal($type, 'aZ09'); + $type = sanitizeVal($type, 'aZ09'); $sub_type = $type; $subcol_name = "fk_".$type; diff --git a/htdocs/comm/propal/class/api_proposals.class.php b/htdocs/comm/propal/class/api_proposals.class.php index 59a03f78bb2..882189c86b3 100644 --- a/htdocs/comm/propal/class/api_proposals.class.php +++ b/htdocs/comm/propal/class/api_proposals.class.php @@ -343,8 +343,8 @@ class Proposals extends DolibarrApi $request_data = (object) $request_data; - $request_data->desc = checkVal($request_data->desc, 'restricthtml'); - $request_data->label = checkVal($request_data->label); + $request_data->desc = sanitizeVal($request_data->desc, 'restricthtml'); + $request_data->label = sanitizeVal($request_data->label); $updateRes = $this->propal->addline( $request_data->desc, @@ -488,8 +488,8 @@ class Proposals extends DolibarrApi $request_data = (object) $request_data; - $request_data->desc = checkVal($request_data->desc, 'restricthtml'); - $request_data->label = checkVal($request_data->label); + $request_data->desc = sanitizeVal($request_data->desc, 'restricthtml'); + $request_data->label = sanitizeVal($request_data->label); $propalline = new PropaleLigne($this->db); $result = $propalline->fetch($lineid); diff --git a/htdocs/commande/class/api_orders.class.php b/htdocs/commande/class/api_orders.class.php index fb912139d5f..e73fee8941f 100644 --- a/htdocs/commande/class/api_orders.class.php +++ b/htdocs/commande/class/api_orders.class.php @@ -335,8 +335,8 @@ class Orders extends DolibarrApi $request_data = (object) $request_data; - $request_data->desc = checkVal($request_data->desc, 'restricthtml'); - $request_data->label = checkVal($request_data->label); + $request_data->desc = sanitizeVal($request_data->desc, 'restricthtml'); + $request_data->label = sanitizeVal($request_data->label); $updateRes = $this->commande->addline( $request_data->desc, @@ -403,8 +403,8 @@ class Orders extends DolibarrApi $request_data = (object) $request_data; - $request_data->desc = checkVal($request_data->desc, 'restricthtml'); - $request_data->label = checkVal($request_data->label); + $request_data->desc = sanitizeVal($request_data->desc, 'restricthtml'); + $request_data->label = sanitizeVal($request_data->label); $updateRes = $this->commande->updateline( $lineid, diff --git a/htdocs/compta/bank/class/api_bankaccounts.class.php b/htdocs/compta/bank/class/api_bankaccounts.class.php index 23d4c2eefbb..8e38d1ffe78 100644 --- a/htdocs/compta/bank/class/api_bankaccounts.class.php +++ b/htdocs/compta/bank/class/api_bankaccounts.class.php @@ -250,7 +250,7 @@ class BankAccounts extends DolibarrApi } // Clean data - $description = checkVal($description, 'alphanohtml'); + $description = sanitizeVal($description, 'alphanohtml'); /** @@ -498,13 +498,13 @@ class BankAccounts extends DolibarrApi throw new RestException(404, 'account not found'); } - $type = checkVal($type); - $label = checkVal($label); - $cheque_number = checkVal($cheque_number); - $cheque_writer = checkVal($cheque_writer); - $cheque_bank = checkVal($cheque_bank); - $accountancycode = checkVal($accountancycode); - $num_releve = checkVal($num_releve); + $type = sanitizeVal($type); + $label = sanitizeVal($label); + $cheque_number = sanitizeVal($cheque_number); + $cheque_writer = sanitizeVal($cheque_writer); + $cheque_bank = sanitizeVal($cheque_bank); + $accountancycode = sanitizeVal($accountancycode); + $num_releve = sanitizeVal($num_releve); $result = $account->addline( $date, @@ -557,9 +557,9 @@ class BankAccounts extends DolibarrApi throw new RestException(404, 'account line not found'); } - $url = checkVal($url); - $label = checkVal($label); - $type = checkVal($type); + $url = sanitizeVal($url); + $label = sanitizeVal($label); + $type = sanitizeVal($type); $result = $account->add_url_line($line_id, $url_id, $url, $label, $type); if ($result < 0) { diff --git a/htdocs/compta/facture/class/api_invoices.class.php b/htdocs/compta/facture/class/api_invoices.class.php index 551edb05731..19fda9ee253 100644 --- a/htdocs/compta/facture/class/api_invoices.class.php +++ b/htdocs/compta/facture/class/api_invoices.class.php @@ -423,8 +423,8 @@ class Invoices extends DolibarrApi $request_data = (object) $request_data; - $request_data->desc = checkVal($request_data->desc, 'restricthtml'); - $request_data->label = checkVal($request_data->label); + $request_data->desc = sanitizeVal($request_data->desc, 'restricthtml'); + $request_data->label = sanitizeVal($request_data->label); $updateRes = $this->invoice->updateline( $lineid, @@ -712,8 +712,8 @@ class Invoices extends DolibarrApi $request_data = (object) $request_data; - $request_data->desc = checkVal($request_data->desc, 'restricthtml'); - $request_data->label = checkVal($request_data->label); + $request_data->desc = sanitizeVal($request_data->desc, 'restricthtml'); + $request_data->label = sanitizeVal($request_data->label); // Reset fk_parent_line for no child products and special product if (($request_data->product_type != 9 && empty($request_data->fk_parent_line)) || $request_data->product_type == 9) { diff --git a/htdocs/contrat/class/api_contracts.class.php b/htdocs/contrat/class/api_contracts.class.php index 5e534f3e43c..ea228550cae 100644 --- a/htdocs/contrat/class/api_contracts.class.php +++ b/htdocs/contrat/class/api_contracts.class.php @@ -278,8 +278,8 @@ class Contracts extends DolibarrApi $request_data = (object) $request_data; - $request_data->desc = checkVal($request_data->desc, 'restricthtml'); - $request_data->price_base_type = checkVal($request_data->price_base_type); + $request_data->desc = sanitizeVal($request_data->desc, 'restricthtml'); + $request_data->price_base_type = sanitizeVal($request_data->price_base_type); $updateRes = $this->contract->addline( $request_data->desc, @@ -336,8 +336,8 @@ class Contracts extends DolibarrApi $request_data = (object) $request_data; - $request_data->desc = checkVal($request_data->desc, 'restricthtml'); - $request_data->price_base_type = checkVal($request_data->price_base_type); + $request_data->desc = sanitizeVal($request_data->desc, 'restricthtml'); + $request_data->price_base_type = sanitizeVal($request_data->price_base_type); $updateRes = $this->contract->updateline( $lineid, diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 9c268d31980..9d5a9eae857 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -683,11 +683,11 @@ function GETPOST($paramname, $check = 'alphanohtml', $method = 0, $filter = null $tmpcheck = 'alphanohtml'; } foreach ($out as $outkey => $outval) { - $out[$outkey] = checkVal($outval, $tmpcheck, $filter, $options); + $out[$outkey] = sanitizeVal($outval, $tmpcheck, $filter, $options); } } } else { - $out = checkVal($out, $check, $filter, $options); + $out = sanitizeVal($out, $check, $filter, $options); } // Sanitizing for special parameters. @@ -736,9 +736,11 @@ function GETPOSTINT($paramname, $method = 0) return (int) GETPOST($paramname, 'int', $method, null, null, 0); } + /** - * Return a value after checking on a rule. A sanitization may also have been done. + * Return a sanitized or empty value after checking value against a rule. * + * @deprecated * @param string|array $out Value to check/clear. * @param string $check Type of check/sanitizing * @param int $filter Filter to apply when $check is set to 'custom'. (See http://php.net/manual/en/filter.filters.php for détails) @@ -746,6 +748,20 @@ function GETPOSTINT($paramname, $method = 0) * @return string|array Value sanitized (string or array). It may be '' if format check fails. */ function checkVal($out = '', $check = 'alphanohtml', $filter = null, $options = null) +{ + return sanitizeVal($out, $check, $filter, $options); +} + +/** + * Return a sanitized or empty value after checking value against a rule. + * + * @param string|array $out Value to check/clear. + * @param string $check Type of check/sanitizing + * @param int $filter Filter to apply when $check is set to 'custom'. (See http://php.net/manual/en/filter.filters.php for détails) + * @param mixed $options Options to pass to filter_var when $check is set to 'custom' + * @return string|array Value sanitized (string or array). It may be '' if format check fails. + */ +function sanitizeVal($out = '', $check = 'alphanohtml', $filter = null, $options = null) { global $conf; diff --git a/htdocs/expedition/class/api_shipments.class.php b/htdocs/expedition/class/api_shipments.class.php index 402fbdc04d1..357683ef35a 100644 --- a/htdocs/expedition/class/api_shipments.class.php +++ b/htdocs/expedition/class/api_shipments.class.php @@ -279,8 +279,8 @@ class Shipments extends DolibarrApi $request_data = (object) $request_data; - $request_data->desc = checkVal($request_data->desc, 'restricthtml'); - $request_data->label = checkVal($request_data->label); + $request_data->desc = sanitizeVal($request_data->desc, 'restricthtml'); + $request_data->label = sanitizeVal($request_data->label); $updateRes = $this->shipment->addline( $request_data->desc, @@ -347,8 +347,8 @@ class Shipments extends DolibarrApi $request_data = (object) $request_data; - $request_data->desc = checkVal($request_data->desc, 'restricthtml'); - $request_data->label = checkVal($request_data->label); + $request_data->desc = sanitizeVal($request_data->desc, 'restricthtml'); + $request_data->label = sanitizeVal($request_data->label); $updateRes = $this->shipment->updateline( $lineid, diff --git a/htdocs/expensereport/class/api_expensereports.class.php b/htdocs/expensereport/class/api_expensereports.class.php index 37319a3ec71..876b08f18f0 100644 --- a/htdocs/expensereport/class/api_expensereports.class.php +++ b/htdocs/expensereport/class/api_expensereports.class.php @@ -251,8 +251,8 @@ class ExpenseReports extends DolibarrApi $request_data = (object) $request_data; - $request_data->desc = checkVal($request_data->desc, 'restricthtml'); - $request_data->label = checkVal($request_data->label); + $request_data->desc = sanitizeVal($request_data->desc, 'restricthtml'); + $request_data->label = sanitizeVal($request_data->label); $updateRes = $this->expensereport->addline( $request_data->desc, @@ -319,8 +319,8 @@ class ExpenseReports extends DolibarrApi $request_data = (object) $request_data; - $request_data->desc = checkVal($request_data->desc, 'restricthtml'); - $request_data->label = checkVal($request_data->label); + $request_data->desc = sanitizeVal($request_data->desc, 'restricthtml'); + $request_data->label = sanitizeVal($request_data->label); $updateRes = $this->expensereport->updateline( $lineid, diff --git a/htdocs/exports/class/export.class.php b/htdocs/exports/class/export.class.php index c87f03f3110..a836be7d9d4 100644 --- a/htdocs/exports/class/export.class.php +++ b/htdocs/exports/class/export.class.php @@ -302,7 +302,7 @@ class Export public function build_filterQuery($TypeField, $NameField, $ValueField) { // phpcs:enable - $NameField = checkVal($NameField, 'aZ09'); + $NameField = sanitizeVal($NameField, 'aZ09'); $szFilterQuery = ''; //print $TypeField." ".$NameField." ".$ValueField; diff --git a/htdocs/fourn/class/api_supplier_invoices.class.php b/htdocs/fourn/class/api_supplier_invoices.class.php index 35e783729ff..d08409a279b 100644 --- a/htdocs/fourn/class/api_supplier_invoices.class.php +++ b/htdocs/fourn/class/api_supplier_invoices.class.php @@ -558,8 +558,8 @@ class SupplierInvoices extends DolibarrApi $request_data = (object) $request_data; - $request_data->description = checkVal($request_data->description, 'restricthtml'); - $request_data->ref_supplier = checkVal($request_data->ref_supplier); + $request_data->description = sanitizeVal($request_data->description, 'restricthtml'); + $request_data->ref_supplier = sanitizeVal($request_data->ref_supplier); $updateRes = $this->invoice->addline( $request_data->description, @@ -625,8 +625,8 @@ class SupplierInvoices extends DolibarrApi $request_data = (object) $request_data; - $request_data->description = checkVal($request_data->description, 'restricthtml'); - $request_data->ref_supplier = checkVal($request_data->ref_supplier); + $request_data->description = sanitizeVal($request_data->description, 'restricthtml'); + $request_data->ref_supplier = sanitizeVal($request_data->ref_supplier); $updateRes = $this->invoice->updateline( $lineid, diff --git a/htdocs/knowledgemanagement/class/api_knowledgemanagement.class.php b/htdocs/knowledgemanagement/class/api_knowledgemanagement.class.php index 5d26fa90137..e52c677318e 100644 --- a/htdocs/knowledgemanagement/class/api_knowledgemanagement.class.php +++ b/htdocs/knowledgemanagement/class/api_knowledgemanagement.class.php @@ -218,7 +218,7 @@ class KnowledgeManagement extends DolibarrApi } // Clean data - // $this->knowledgerecord->abc = checkVal($this->knowledgerecord->abc, 'alphanohtml'); + // $this->knowledgerecord->abc = sanitizeVal($this->knowledgerecord->abc, 'alphanohtml'); if ($this->knowledgerecord->create(DolibarrApiAccess::$user)<0) { throw new RestException(500, "Error creating KnowledgeRecord", array_merge(array($this->knowledgerecord->error), $this->knowledgerecord->errors)); @@ -260,7 +260,7 @@ class KnowledgeManagement extends DolibarrApi } // Clean data - // $this->knowledgerecord->abc = checkVal($this->knowledgerecord->abc, 'alphanohtml'); + // $this->knowledgerecord->abc = sanitizeVal($this->knowledgerecord->abc, 'alphanohtml'); if ($this->knowledgerecord->update(DolibarrApiAccess::$user, false) > 0) { return $this->get($id); diff --git a/htdocs/modulebuilder/template/class/api_mymodule.class.php b/htdocs/modulebuilder/template/class/api_mymodule.class.php index 4cb50c8de2f..5299ff04caa 100644 --- a/htdocs/modulebuilder/template/class/api_mymodule.class.php +++ b/htdocs/modulebuilder/template/class/api_mymodule.class.php @@ -218,7 +218,7 @@ class MyModuleApi extends DolibarrApi } // Clean data - // $this->myobject->abc = checkVal($this->myobject->abc, 'alphanohtml'); + // $this->myobject->abc = sanitizeVal($this->myobject->abc, 'alphanohtml'); if ($this->myobject->create(DolibarrApiAccess::$user)<0) { throw new RestException(500, "Error creating MyObject", array_merge(array($this->myobject->error), $this->myobject->errors)); @@ -260,7 +260,7 @@ class MyModuleApi extends DolibarrApi } // Clean data - // $this->myobject->abc = checkVal($this->myobject->abc, 'alphanohtml'); + // $this->myobject->abc = sanitizeVal($this->myobject->abc, 'alphanohtml'); if ($this->myobject->update(DolibarrApiAccess::$user, false) > 0) { return $this->get($id); diff --git a/htdocs/product/class/api_products.class.php b/htdocs/product/class/api_products.class.php index e44aef221f6..4c5f0810edd 100644 --- a/htdocs/product/class/api_products.class.php +++ b/htdocs/product/class/api_products.class.php @@ -779,9 +779,9 @@ class Products extends DolibarrApi } // Clean data - $ref_fourn = checkVal($ref_fourn, 'alphanohtml'); - $desc_fourn = checkVal($desc_fourn, 'restricthtml'); - $barcode = checkVal($barcode, 'alphanohtml'); + $ref_fourn = sanitizeVal($ref_fourn, 'alphanohtml'); + $desc_fourn = sanitizeVal($desc_fourn, 'restricthtml'); + $barcode = sanitizeVal($barcode, 'alphanohtml'); $result = $this->productsupplier->update_buyprice($qty, $buyprice, DolibarrApiAccess::$user, $price_base_type, $fourn, $availability, $ref_fourn, $tva_tx, $charges, $remise_percent, $remise, $newnpr, $delivery_time_days, $supplier_reputation, $localtaxes_array, $newdefaultvatcode, $multicurrency_buyprice, $multicurrency_price_base_type, $multicurrency_tx, $multicurrency_code, $desc_fourn, $barcode, $fk_barcode_type); diff --git a/htdocs/projet/class/api_projects.class.php b/htdocs/projet/class/api_projects.class.php index 59576b961d4..6a522346210 100644 --- a/htdocs/projet/class/api_projects.class.php +++ b/htdocs/projet/class/api_projects.class.php @@ -333,7 +333,7 @@ class Projects extends DolibarrApi $request_data = (object) $request_data; - $request_data->desc = checkVal($request_data->desc, 'restricthtml'); + $request_data->desc = sanitizeVal($request_data->desc, 'restricthtml'); $updateRes = $this->project->addline( $request_data->desc, @@ -400,7 +400,7 @@ class Projects extends DolibarrApi $request_data = (object) $request_data; - $request_data->desc = checkVal($request_data->desc, 'restricthtml'); + $request_data->desc = sanitizeVal($request_data->desc, 'restricthtml'); $updateRes = $this->project->updateline( $lineid, diff --git a/htdocs/projet/class/api_tasks.class.php b/htdocs/projet/class/api_tasks.class.php index cafb60f2865..0eaf8654421 100644 --- a/htdocs/projet/class/api_tasks.class.php +++ b/htdocs/projet/class/api_tasks.class.php @@ -333,7 +333,7 @@ class Tasks extends DolibarrApi $request_data = (object) $request_data; - $request_data->desc = checkVal($request_data->desc, 'restricthtml'); + $request_data->desc = sanitizeVal($request_data->desc, 'restricthtml'); $updateRes = $this->project->addline( $request_data->desc, @@ -400,7 +400,7 @@ class Tasks extends DolibarrApi $request_data = (object) $request_data; - $request_data->desc = checkVal($request_data->desc, 'restricthtml'); + $request_data->desc = sanitizeVal($request_data->desc, 'restricthtml'); $updateRes = $this->project->updateline( $lineid, diff --git a/htdocs/recruitment/class/api_recruitment.class.php b/htdocs/recruitment/class/api_recruitment.class.php index e0c2cb5da11..26e6c58fa4a 100644 --- a/htdocs/recruitment/class/api_recruitment.class.php +++ b/htdocs/recruitment/class/api_recruitment.class.php @@ -359,7 +359,7 @@ class Recruitment extends DolibarrApi } // Clean data - // $this->jobposition->abc = checkVal($this->jobposition->abc, 'alphanohtml'); + // $this->jobposition->abc = sanitizeVal($this->jobposition->abc, 'alphanohtml'); if ($this->jobposition->create(DolibarrApiAccess::$user)<0) { throw new RestException(500, "Error creating jobposition", array_merge(array($this->jobposition->error), $this->jobposition->errors)); @@ -391,7 +391,7 @@ class Recruitment extends DolibarrApi } // Clean data - // $this->jobposition->abc = checkVal($this->jobposition->abc, 'alphanohtml'); + // $this->jobposition->abc = sanitizeVal($this->jobposition->abc, 'alphanohtml'); if ($this->candidature->create(DolibarrApiAccess::$user)<0) { throw new RestException(500, "Error creating candidature", array_merge(array($this->candidature->error), $this->candidature->errors)); @@ -433,7 +433,7 @@ class Recruitment extends DolibarrApi } // Clean data - // $this->jobposition->abc = checkVal($this->jobposition->abc, 'alphanohtml'); + // $this->jobposition->abc = sanitizeVal($this->jobposition->abc, 'alphanohtml'); if ($this->jobposition->update(DolibarrApiAccess::$user, false) > 0) { return $this->get($id); @@ -476,7 +476,7 @@ class Recruitment extends DolibarrApi } // Clean data - // $this->jobposition->abc = checkVal($this->jobposition->abc, 'alphanohtml'); + // $this->jobposition->abc = sanitizeVal($this->jobposition->abc, 'alphanohtml'); if ($this->candidature->update(DolibarrApiAccess::$user, false) > 0) { return $this->get($id); From d50e0457f340aa790049d94f15a310a563f77642 Mon Sep 17 00:00:00 2001 From: ATM john Date: Wed, 30 Mar 2022 12:33:17 +0200 Subject: [PATCH 031/329] add todo comment --- htdocs/core/lib/functions.lib.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 9d5a9eae857..3515cacd874 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -765,6 +765,7 @@ function sanitizeVal($out = '', $check = 'alphanohtml', $filter = null, $options { global $conf; + // TODO : use class "Validate" to perform tests (and add missing tests) if needed for factorize // Check is done after replacement switch ($check) { case 'none': From 89eb19bafb4acdcc0b71eb3dafec044682646a1c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 Apr 2022 17:51:42 +0200 Subject: [PATCH 032/329] 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 033/329] 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 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 034/329] 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 035/329] 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 036/329] 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 037/329] 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 038/329] 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 039/329] 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 040/329] 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 041/329] 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 2af2efacdb68bb8847287fb2ce2966caa87cb2ed Mon Sep 17 00:00:00 2001 From: lmarcouiller Date: Fri, 15 Apr 2022 14:42:34 +0200 Subject: [PATCH 042/329] 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 bdb7ba5eaa188a1fe64bcc6147488b5434f5b53c Mon Sep 17 00:00:00 2001 From: Thomas Negre Date: Wed, 11 May 2022 11:19:55 +0200 Subject: [PATCH 043/329] fix extrafields not being kept on ticket creation --- htdocs/ticket/class/ticket.class.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php index 72ec8625e0e..eacff348a34 100644 --- a/htdocs/ticket/class/ticket.class.php +++ b/htdocs/ticket/class/ticket.class.php @@ -487,15 +487,6 @@ class Ticket extends CommonObject if (!$error) { $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."ticket"); - - if (!$notrigger) { - // Call trigger - $result = $this->call_trigger('TICKET_CREATE', $user); - if ($result < 0) { - $error++; - } - // End call triggers - } } if (!$error && ! empty($conf->global->TICKET_ADD_AUTHOR_AS_CONTACT)) { @@ -513,6 +504,15 @@ class Ticket extends CommonObject } } + if (!$error && !$notrigger) { + // Call trigger + $result = $this->call_trigger('TICKET_CREATE', $user); + if ($result < 0) { + $error++; + } + // End call triggers + } + // Commit or rollback if ($error) { foreach ($this->errors as $errmsg) { From 1768c3d9268fcc6c42c5202af85b5da2af1ae1b1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 12 May 2022 10:48:34 +0200 Subject: [PATCH 044/329] Code more robust when fk_account has been corrupted --- 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 b0113149146..3661eec8e8e 100644 --- a/htdocs/compta/bank/line.php +++ b/htdocs/compta/bank/line.php @@ -125,7 +125,11 @@ if ($user->rights->banque->modifier && $action == "update") { $error = 0; $acline = new AccountLine($db); - $acline->fetch($rowid); + $result = $acline->fetch($rowid); + if ($result <= 0) { + dol_syslog('Failed to read bank line with id '.$rowid, LOG_WARNING); // This happens due to old bug that has set fk_account to null. + $acline->id = $rowid; + } $acsource = new Account($db); $acsource->fetch($accountoldid); From 85cddf638fbe821a052969b0a3326c13ba282efd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 12 May 2022 11:06:22 +0200 Subject: [PATCH 045/329] Fix can fix a corrupted lost bank account on bank account lines --- htdocs/compta/bank/line.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/htdocs/compta/bank/line.php b/htdocs/compta/bank/line.php index 3661eec8e8e..3cde5212e2d 100644 --- a/htdocs/compta/bank/line.php +++ b/htdocs/compta/bank/line.php @@ -334,11 +334,12 @@ if ($result) { // Bank account print ''.$langs->trans("Account").''; print ''; - if (!$objp->rappro && !$bankline->getVentilExportCompta()) { - print img_picto('', 'bank_account', 'class="paddingright"'); - print $form->select_comptes($acct->id, 'accountid', 0, '', 0, '', 0, '', 1); - } else { + // $objp->fk_account may be not > 0 if data was lost by an old bug. In such a case, we let a chance to user to fix it. + if (($objp->rappro || $bankline->getVentilExportCompta()) && $objp->fk_account > 0) { print $acct->getNomUrl(1, 'transactions', 'reflabel'); + } else { + print img_picto('', 'bank_account', 'class="paddingright"'); + print $form->select_comptes($acct->id, 'accountid', 0, '', ($acct->id > 0 ? $acct->id : 1), '', 0, '', 1); } print ''; print ''; From 7a361a3bde5f6bf9d08c3dafec1146bdc7a42170 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 12 May 2022 14:28:17 +0200 Subject: [PATCH 046/329] More info to help debug --- htdocs/langs/en_US/companies.lang | 1 + htdocs/modulebuilder/template/myobject_list.php | 5 ++++- htdocs/product/list.php | 7 +++++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/htdocs/langs/en_US/companies.lang b/htdocs/langs/en_US/companies.lang index a3105a1eecd..5ad0b8e257f 100644 --- a/htdocs/langs/en_US/companies.lang +++ b/htdocs/langs/en_US/companies.lang @@ -102,6 +102,7 @@ WrongSupplierCode=Vendor code invalid CustomerCodeModel=Customer code model SupplierCodeModel=Vendor code model Gencod=Barcode +GencodBuyPrice=Barcode of price ref ##### Professional ID ##### ProfId1Short=Prof. id 1 ProfId2Short=Prof. id 2 diff --git a/htdocs/modulebuilder/template/myobject_list.php b/htdocs/modulebuilder/template/myobject_list.php index 92b131d56ba..6f9b266a8c1 100644 --- a/htdocs/modulebuilder/template/myobject_list.php +++ b/htdocs/modulebuilder/template/myobject_list.php @@ -493,10 +493,13 @@ $trackid = 'xxxx'.$object->id; include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php'; if ($search_all) { + $setupstring = ''; foreach ($fieldstosearchall as $key => $val) { $fieldstosearchall[$key] = $langs->trans($val); + $setupstring .= $key."=".$val.";"; } - print '
'.$langs->trans("FilterOnInto", $search_all).join(', ', $fieldstosearchall).'
'; + print ''."\n"; + print '
'.$langs->trans("FilterOnInto", $search_all).join(', ', $fieldstosearchall).'
'."\n"; } $moreforfilter = ''; diff --git a/htdocs/product/list.php b/htdocs/product/list.php index 26dbf18e439..ad2876c894e 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -178,7 +178,7 @@ if (!empty($conf->barcode->enabled)) { $fieldstosearchall['p.barcode'] = 'Gencod'; $fieldstosearchall['pfp.barcode'] = 'GencodBuyPrice'; } -// Personalized search criterias. Example: $conf->global->PRODUCT_QUICKSEARCH_ON_FIELDS = 'p.ref=ProductRef;p.label=ProductLabel' +// Personalized search criterias. Example: $conf->global->PRODUCT_QUICKSEARCH_ON_FIELDS = 'p.ref=ProductRef;p.label=ProductLabel;p.description=Description;p.note=Note;' if (!empty($conf->global->PRODUCT_QUICKSEARCH_ON_FIELDS)) { $fieldstosearchall = dolExplodeIntoArray($conf->global->PRODUCT_QUICKSEARCH_ON_FIELDS); } @@ -800,10 +800,13 @@ if ($resql) { } if ($sall) { + $setupstring = ''; foreach ($fieldstosearchall as $key => $val) { $fieldstosearchall[$key] = $langs->trans($val); + $setupstring .= $key."=".$val.";"; } - print '
'.$langs->trans("FilterOnInto", $sall).join(', ', $fieldstosearchall).'
'; + print ''."\n"; + print '
'.$langs->trans("FilterOnInto", $sall).join(', ', $fieldstosearchall).'
'."\n"; } // Filter on categories From 7c17f6b1cf3c71cca93cae709c7c8c977aa6bfac Mon Sep 17 00:00:00 2001 From: lvessiller Date: Thu, 12 May 2022 16:52:02 +0200 Subject: [PATCH 047/329] NEW create third-party with contact if not found on public ticket --- htdocs/admin/ticket_public.php | 105 +++++++++++++++---- htdocs/core/class/html.formticket.class.php | 107 ++++++++++++++++++-- htdocs/core/lib/ticket.lib.php | 2 +- htdocs/langs/en_US/errors.lang | 1 + htdocs/langs/en_US/ticket.lang | 2 + htdocs/langs/fr_FR/errors.lang | 1 + htdocs/langs/fr_FR/ticket.lang | 2 + htdocs/public/ticket/ajax/ajax.php | 87 ++++++++++++++++ htdocs/public/ticket/create_ticket.php | 91 +++++++++++++++-- 9 files changed, 365 insertions(+), 33 deletions(-) create mode 100644 htdocs/public/ticket/ajax/ajax.php diff --git a/htdocs/admin/ticket_public.php b/htdocs/admin/ticket_public.php index 88a7db9b1d7..29e0cce4036 100644 --- a/htdocs/admin/ticket_public.php +++ b/htdocs/admin/ticket_public.php @@ -42,21 +42,24 @@ $label = GETPOST('label', 'alpha'); $scandir = GETPOST('scandir', 'alpha'); $type = 'ticket'; -$error = 0; /* * Actions */ +$error = 0; +$errors = array(); if ($action == 'setTICKET_ENABLE_PUBLIC_INTERFACE') { if (GETPOST('value')) { - dolibarr_set_const($db, 'TICKET_ENABLE_PUBLIC_INTERFACE', 1, 'chaine', 0, '', $conf->entity); + $res = dolibarr_set_const($db, 'TICKET_ENABLE_PUBLIC_INTERFACE', 1, 'chaine', 0, '', $conf->entity); } else { - dolibarr_set_const($db, 'TICKET_ENABLE_PUBLIC_INTERFACE', 0, 'chaine', 0, '', $conf->entity); + $res = dolibarr_set_const($db, 'TICKET_ENABLE_PUBLIC_INTERFACE', 0, 'chaine', 0, '', $conf->entity); } -} - -if ($action == 'setvar') { + if (!($res > 0)) { + $error++; + $errors[] = $db->lasterror(); + } +} elseif ($action == 'setvar') { include_once DOL_DOCUMENT_ROOT."/core/lib/files.lib.php"; if (GETPOSTISSET('TICKET_ENABLE_PUBLIC_INTERFACE')) { // only for no js case @@ -64,14 +67,7 @@ if ($action == 'setvar') { $res = dolibarr_set_const($db, 'TICKET_ENABLE_PUBLIC_INTERFACE', $param_enable_public_interface, 'chaine', 0, '', $conf->entity); if (!($res > 0)) { $error++; - } - } - - if (GETPOSTISSET('TICKET_EMAIL_MUST_EXISTS')) { // only for no js case - $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++; + $errors[] = $db->lasterror(); } } @@ -80,6 +76,7 @@ if ($action == 'setvar') { $res = dolibarr_set_const($db, 'TICKET_DISABLE_CUSTOMER_MAILS', $param_disable_email, 'chaine', 0, '', $conf->entity); if (!($res > 0)) { $error++; + $errors[] = $db->lasterror(); } } @@ -88,6 +85,7 @@ if ($action == 'setvar') { $res = dolibarr_set_const($db, 'TICKET_SHOW_COMPANY_LOGO', $param_show_module_logo, 'chaine', 0, '', $conf->entity); if (!($res > 0)) { $error++; + $errors[] = $db->lasterror(); } } @@ -99,6 +97,7 @@ if ($action == 'setvar') { } if (!($res > 0)) { $error++; + $errors[] = $db->lasterror(); } $text_home = GETPOST('TICKET_PUBLIC_TEXT_HOME', 'restricthtml'); @@ -109,6 +108,7 @@ if ($action == 'setvar') { } if (!($res > 0)) { $error++; + $errors[] = $db->lasterror(); } $text_help = GETPOST('TICKET_PUBLIC_TEXT_HELP_MESSAGE', 'restricthtml'); @@ -119,6 +119,7 @@ if ($action == 'setvar') { } if (!($res > 0)) { $error++; + $errors[] = $db->lasterror(); } $mail_new_ticket = GETPOST('TICKET_MESSAGE_MAIL_NEW', 'restricthtml'); @@ -129,6 +130,7 @@ if ($action == 'setvar') { } if (!($res > 0)) { $error++; + $errors[] = $db->lasterror(); } $url_interface = GETPOST('TICKET_URL_PUBLIC_INTERFACE', 'alpha'); @@ -139,12 +141,14 @@ if ($action == 'setvar') { } if (!($res > 0)) { $error++; + $errors[] = $db->lasterror(); } $param_public_notification_new_message_default_email = GETPOST('TICKET_PUBLIC_NOTIFICATION_NEW_MESSAGE_DEFAULT_EMAIL', 'alpha'); $res = dolibarr_set_const($db, 'TICKET_PUBLIC_NOTIFICATION_NEW_MESSAGE_DEFAULT_EMAIL', $param_public_notification_new_message_default_email, 'chaine', 0, '', $conf->entity); if (!($res > 0)) { $error++; + $errors[] = $db->lasterror(); } if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { @@ -152,10 +156,60 @@ if ($action == 'setvar') { $res = dolibarr_set_const($db, 'TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS', $param_notification_also_main_addressemail, 'chaine', 0, '', $conf->entity); if (!($res > 0)) { $error++; + $errors[] = $db->lasterror(); } } +} 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); + if (!($res > 0)) { + $error++; + $errors[] = $db->lasterror(); + } + + if (!$error) { + if ($code == 'TICKET_EMAIL_MUST_EXISTS') { + $res = dolibarr_del_const($db, 'TICKET_CREATE_THIRD_PARTY_WITH_CONTACT_IF_NOT_EXIST', $conf->entity); + if (!($res > 0)) { + $error++; + $errors[] = $db->lasterror(); + } + } elseif ($code == 'TICKET_CREATE_THIRD_PARTY_WITH_CONTACT_IF_NOT_EXIST') { + $res = dolibarr_del_const($db, 'TICKET_EMAIL_MUST_EXISTS', $conf->entity); + if (!($res > 0)) { + $error++; + $errors[] = $db->lasterror(); + } + + // enable captcha by default + $res = dolibarr_set_const($db, 'MAIN_SECURITY_ENABLECAPTCHA', 1, 'chaine', 0, '', $conf->entity); + if (!($res > 0)) { + $error++; + $errors[] = $db->lasterror(); + } + } + } +} elseif (preg_match('/del_(.*)/',$action,$reg)) { + $code = $reg[1]; + $res = dolibarr_del_const($db, $code, $conf->entity); + if (!($res > 0)) { + $error++; + $errors[] = $db->lasterror(); + } } +if ($action != '') { + if (!$error) { + $db->commit(); + setEventMessage($langs->trans('SetupSaved')); + header("Location: " . $_SERVER['PHP_SELF']); + exit; + } else { + $db->rollback(); + setEventMessages('', $errors, 'errors'); + } +} /* @@ -180,7 +234,7 @@ $head = ticketAdminPrepareHead(); print dol_get_fiche_head($head, 'public', $langs->trans("Module56000Name"), -1, "ticket"); -print ''.$langs->trans("TicketPublicAccess").' :
'.dol_buildpath('/public/ticket/index.php', 2).''; +print ''.$langs->trans("TicketPublicAccess").' : '.dol_buildpath('/public/ticket/index.php?entity='.$conf->entity, 2).''; print dol_get_fiche_end(); @@ -220,11 +274,10 @@ if (!empty($conf->global->TICKET_ENABLE_PUBLIC_INTERFACE)) { // Check if email exists print ''.$langs->trans("TicketsEmailMustExist").''; print ''; - if ($conf->use_javascript_ajax) { - print ajax_constantonoff('TICKET_EMAIL_MUST_EXISTS'); + if (empty(getDolGlobalInt('TICKET_EMAIL_MUST_EXISTS'))) { + print '' . img_picto($langs->trans('Disabled'), 'switch_off') . ''; } else { - $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); - print $form->selectarray("TICKET_EMAIL_MUST_EXISTS", $arrval, $conf->global->TICKET_EMAIL_MUST_EXISTS); + print '' . img_picto($langs->trans('Enabled'), 'switch_on') . ''; } print ''; print ''; @@ -232,6 +285,20 @@ if (!empty($conf->global->TICKET_ENABLE_PUBLIC_INTERFACE)) { print ''; print ''; + // Create third-party with contact if email not linked to a contact + print ''.$langs->trans("TicketCreateThirdPartyWithContactIfNotExist").''; + print ''; + if (empty(getDolGlobalInt('TICKET_CREATE_THIRD_PARTY_WITH_CONTACT_IF_NOT_EXIST'))) { + print '' . img_picto($langs->trans('Disabled'), 'switch_off') . ''; + } else { + print '' . img_picto($langs->trans('Enabled'), 'switch_on') . ''; + } + print ''; + print ''; + print $form->textwithpicto('', $langs->trans("TicketCreateThirdPartyWithContactIfNotExistHelp"), 1, 'help'); + print ''; + print ''; + /*if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { // Show logo for module diff --git a/htdocs/core/class/html.formticket.class.php b/htdocs/core/class/html.formticket.class.php index 331fe542cb4..a7cc3a996b4 100644 --- a/htdocs/core/class/html.formticket.class.php +++ b/htdocs/core/class/html.formticket.class.php @@ -127,12 +127,13 @@ class FormTicket /** * Show the form to input ticket * - * @param int $withdolfichehead With dol_get_fiche_head() and dol_get_fiche_end() - * @param string $mode Mode ('create' or 'edit') - * @param int $public 1=If we show the form for the public interface + * @param int $withdolfichehead With dol_get_fiche_head() and dol_get_fiche_end() + * @param string $mode Mode ('create' or 'edit') + * @param int $public 1=If we show the form for the public interface + * @param Contact|null $with_contact [=NULL] Contact to link to this ticket if exists * @return void */ - public function showForm($withdolfichehead = 0, $mode = 'edit', $public = 0) + public function showForm($withdolfichehead = 0, $mode = 'edit', $public = 0, Contact $with_contact = null) { global $conf, $langs, $user, $hookmanager; @@ -178,10 +179,104 @@ class FormTicket } // TITLE + $email = GETPOSTISSET('email') ? GETPOST('email', 'alphanohtml') : ''; if ($this->withemail) { print ''; - print ''; + print ''; print ''; + + if ($with_contact) { + // contact search and result + $html_contact_search = ''; + $html_contact_search .= ''; + $html_contact_search .= ''; + $html_contact_search .= ''; + $html_contact_search .= ''; + $html_contact_search .= ''; + $html_contact_search .= ''; + $html_contact_search .= ''; + print $html_contact_search; + // contact lastname + $html_contact_lastname = ''; + $html_contact_lastname .= ''; + $html_contact_lastname .= ''; + $html_contact_lastname .= ''; + print $html_contact_lastname; + // contact firstname + $html_contact_firstname = ''; + $html_contact_firstname .= ''; + $html_contact_firstname .= ''; + $html_contact_firstname .= ''; + print $html_contact_firstname; + // company name + $html_company_name = ''; + $html_company_name .= ''; + $html_company_name .= ''; + $html_company_name .= ''; + print $html_company_name; + // contact phone + $html_contact_phone = ''; + $html_contact_phone .= ''; + $html_contact_phone .= ''; + $html_contact_phone .= ''; + print $html_contact_phone; + + // search contact form email + $langs->load('errors'); + 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 048/329] 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 d6f576b2f7f2a961ce227de39d98a1cacea53634 Mon Sep 17 00:00:00 2001 From: lvessiller Date: Fri, 13 May 2022 08:48:05 +0200 Subject: [PATCH 049/329] FIX travis From d624a1e25e2c9d5033650dc307883c544c7c2a15 Mon Sep 17 00:00:00 2001 From: lvessiller Date: Fri, 13 May 2022 08:57:08 +0200 Subject: [PATCH 050/329] 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 051/329] 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 052/329] 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 053/329] 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 054/329] 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 055/329] 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 056/329] 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 057/329] =?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 058/329] 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 059/329] 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 2ec2dc59a40534f78448a9044ce6b9690e802c2f Mon Sep 17 00:00:00 2001 From: lmarcouiller Date: Fri, 13 May 2022 14:55:21 +0200 Subject: [PATCH 060/329] New : import fields in societe class --- .../modules/import/import_csv.modules.php | 36 +++++++++++++---- .../modules/import/import_xlsx.modules.php | 39 +++++++++++++++---- htdocs/core/modules/modSociete.class.php | 20 ++++++++++ 3 files changed, 79 insertions(+), 16 deletions(-) diff --git a/htdocs/core/modules/import/import_csv.modules.php b/htdocs/core/modules/import/import_csv.modules.php index e45630df298..62f0ca6d387 100644 --- a/htdocs/core/modules/import/import_csv.modules.php +++ b/htdocs/core/modules/import/import_csv.modules.php @@ -709,15 +709,35 @@ class ImportCsv extends ModeleImports } // Define $listfields and $listvalues to build SQL request - $listfields[] = $fieldname; - - // Note: arrayrecord (and 'type') is filled with ->import_read_record called by import.php page before calling import_insert - if (empty($newval) && $arrayrecord[($key - 1)]['type'] < 0) { - $listvalues[] = ($newval == '0' ? $newval : "null"); - } elseif (empty($newval) && $arrayrecord[($key - 1)]['type'] == 0) { - $listvalues[] = "''"; + if ($conf->socialnetworks->enabled && strpos($fieldname, "socialnetworks") !== false) { + if (!in_array("socialnetworks", $listfields)) { + $listfields[] = "socialnetworks"; + } + if (!empty($newval) && $arrayrecord[($key - 1)]['type'] > 0) { + $socialkey = array_search("socialnetworks", $listfields); + if (empty($listvalues[$socialkey]) || $listvalues[$socialkey] == "null") { + $socialnetwork = explode("_", $fieldname)[1]; + $newvalue = '\'{ "'.$socialnetwork.'" : "'.$this->db->escape($newval).'" }\''; + $listvalues[$socialkey] = $newvalue; + } else { + $socialnetwork = explode("_", $fieldname)[1]; + $jsondata = $listvalues[$socialkey]; + $jsondata = str_replace("'", "", $jsondata); + $json = json_decode($jsondata); + $json->$socialnetwork = $this->db->escape($newval); + $listvalues[$socialkey] = "'".$this->db->escape(json_encode($json))."'"; + } + } } else { - $listvalues[] = "'".$this->db->escape($newval)."'"; + $listfields[] = $fieldname; + // Note: arrayrecord (and 'type') is filled with ->import_read_record called by import.php page before calling import_insert + if (empty($newval) && $arrayrecord[($key - 1)]['type'] < 0) { + $listvalues[] = ($newval == '0' ? $newval : "null"); + } elseif (empty($newval) && $arrayrecord[($key - 1)]['type'] == 0) { + $listvalues[] = "''"; + } else { + $listvalues[] = "'".$this->db->escape($newval)."'"; + } } } $i++; diff --git a/htdocs/core/modules/import/import_xlsx.modules.php b/htdocs/core/modules/import/import_xlsx.modules.php index 9fa5cbf2c44..a64063fa9af 100644 --- a/htdocs/core/modules/import/import_xlsx.modules.php +++ b/htdocs/core/modules/import/import_xlsx.modules.php @@ -363,6 +363,8 @@ class ImportXlsx extends ModeleImports $warning = 0; $this->errors = array(); $this->warnings = array(); + $this->nbinsert = 0; + $this->nbupdate = 0; //dol_syslog("import_csv.modules maxfields=".$maxfields." importid=".$importid); @@ -750,15 +752,36 @@ class ImportXlsx extends ModeleImports } // Define $listfields and $listvalues to build SQL request - $listfields[] = $fieldname; - - // Note: arrayrecord (and 'type') is filled with ->import_read_record called by import.php page before calling import_insert - if (empty($newval) && $arrayrecord[($key)]['type'] < 0) { - $listvalues[] = ($newval == '0' ? $newval : "null"); - } elseif (empty($newval) && $arrayrecord[($key)]['type'] == 0) { - $listvalues[] = "''"; + if ($conf->socialnetworks->enabled && strpos($fieldname, "socialnetworks") !== false) { + if (!in_array("socialnetworks", $listfields)) { + $listfields[] = "socialnetworks"; + } + if (!empty($newval) && $arrayrecord[($key)]['type'] > 0) { + $socialkey = array_search("socialnetworks", $listfields); + if (empty($listvalues[$socialkey]) || $listvalues[$socialkey] == "null") { + $socialnetwork = explode("_", $fieldname)[1]; + $newvalue = '\'{ "'.$socialnetwork.'" : "'.$this->db->escape($newval).'" }\''; + $listvalues[$socialkey] = $newvalue; + } else { + $socialnetwork = explode("_", $fieldname)[1]; + $jsondata = $listvalues[$socialkey]; + $jsondata = str_replace("'", "", $jsondata); + $json = json_decode($jsondata); + $json->$socialnetwork = $this->db->escape($newval); + $listvalues[$socialkey] = "'".$this->db->escape(json_encode($json))."'"; + } + } } else { - $listvalues[] = "'" . $this->db->escape($newval) . "'"; + $listfields[] = $fieldname; + + // Note: arrayrecord (and 'type') is filled with ->import_read_record called by import.php page before calling import_insert + if (empty($newval) && $arrayrecord[($key)]['type'] < 0) { + $listvalues[] = ($newval == '0' ? $newval : "null"); + } elseif (empty($newval) && $arrayrecord[($key)]['type'] == 0) { + $listvalues[] = "''"; + } else { + $listvalues[] = "'" . $this->db->escape($newval) . "'"; + } } } $i++; diff --git a/htdocs/core/modules/modSociete.class.php b/htdocs/core/modules/modSociete.class.php index 09089d57563..84a5e97f1bf 100644 --- a/htdocs/core/modules/modSociete.class.php +++ b/htdocs/core/modules/modSociete.class.php @@ -519,6 +519,16 @@ class modSociete extends DolibarrModules if (!empty($conf->global->ACCOUNTANCY_USE_PRODUCT_ACCOUNT_ON_THIRDPARTY)) { $this->import_fields_array[$r] += array('s.accountancy_code_sell'=>'ProductAccountancySellCode', 's.accountancy_code_buy'=>'ProductAccountancyBuyCode'); } + // Add social networks fields + if (!empty($conf->socialnetworks->enabled)) { + $sql = "SELECT code, label FROM ".MAIN_DB_PREFIX."c_socialnetworks WHERE active = 1"; + $resql = $this->db->query($sql); + while ($obj = $this->db->fetch_object($resql)) { + $fieldname = 's.socialnetworks_'.$obj->code; + $fieldlabel = ucfirst($obj->label); + $this->import_fields_array[$r][$fieldname] = $fieldlabel; + } + } // Add extra fields $sql = "SELECT name, label, fieldrequired FROM ".MAIN_DB_PREFIX."extrafields WHERE type <> 'separate' AND elementtype = 'societe' AND entity IN (0, ".$conf->entity.")"; $resql = $this->db->query($sql); @@ -695,6 +705,16 @@ class modSociete extends DolibarrModules 's.note_private' => "NotePrivate", 's.note_public' => "NotePublic" ); + // Add social networks fields + if (!empty($conf->socialnetworks->enabled)) { + $sql = "SELECT code, label FROM ".MAIN_DB_PREFIX."c_socialnetworks WHERE active = 1"; + $resql = $this->db->query($sql); + while ($obj = $this->db->fetch_object($resql)) { + $fieldname = 's.socialnetworks_'.$obj->code; + $fieldlabel = ucfirst($obj->label); + $this->import_fields_array[$r][$fieldname] = $fieldlabel; + } + } // Add extra fields $sql = "SELECT name, label, fieldrequired FROM ".MAIN_DB_PREFIX."extrafields WHERE type != 'separate' AND elementtype = 'socpeople' AND entity IN (0, ".$conf->entity.")"; $resql = $this->db->query($sql); From cfc8ce2ea86ce423540cfb5536dd9b8de709db0c Mon Sep 17 00:00:00 2001 From: lmarcouiller Date: Fri, 13 May 2022 15:02:17 +0200 Subject: [PATCH 061/329] Revert "New : import fields in societe class" This reverts commit 2ec2dc59a40534f78448a9044ce6b9690e802c2f. --- .../modules/import/import_csv.modules.php | 36 ++++------------- .../modules/import/import_xlsx.modules.php | 39 ++++--------------- htdocs/core/modules/modSociete.class.php | 20 ---------- 3 files changed, 16 insertions(+), 79 deletions(-) diff --git a/htdocs/core/modules/import/import_csv.modules.php b/htdocs/core/modules/import/import_csv.modules.php index 62f0ca6d387..e45630df298 100644 --- a/htdocs/core/modules/import/import_csv.modules.php +++ b/htdocs/core/modules/import/import_csv.modules.php @@ -709,35 +709,15 @@ class ImportCsv extends ModeleImports } // Define $listfields and $listvalues to build SQL request - if ($conf->socialnetworks->enabled && strpos($fieldname, "socialnetworks") !== false) { - if (!in_array("socialnetworks", $listfields)) { - $listfields[] = "socialnetworks"; - } - if (!empty($newval) && $arrayrecord[($key - 1)]['type'] > 0) { - $socialkey = array_search("socialnetworks", $listfields); - if (empty($listvalues[$socialkey]) || $listvalues[$socialkey] == "null") { - $socialnetwork = explode("_", $fieldname)[1]; - $newvalue = '\'{ "'.$socialnetwork.'" : "'.$this->db->escape($newval).'" }\''; - $listvalues[$socialkey] = $newvalue; - } else { - $socialnetwork = explode("_", $fieldname)[1]; - $jsondata = $listvalues[$socialkey]; - $jsondata = str_replace("'", "", $jsondata); - $json = json_decode($jsondata); - $json->$socialnetwork = $this->db->escape($newval); - $listvalues[$socialkey] = "'".$this->db->escape(json_encode($json))."'"; - } - } + $listfields[] = $fieldname; + + // Note: arrayrecord (and 'type') is filled with ->import_read_record called by import.php page before calling import_insert + if (empty($newval) && $arrayrecord[($key - 1)]['type'] < 0) { + $listvalues[] = ($newval == '0' ? $newval : "null"); + } elseif (empty($newval) && $arrayrecord[($key - 1)]['type'] == 0) { + $listvalues[] = "''"; } else { - $listfields[] = $fieldname; - // Note: arrayrecord (and 'type') is filled with ->import_read_record called by import.php page before calling import_insert - if (empty($newval) && $arrayrecord[($key - 1)]['type'] < 0) { - $listvalues[] = ($newval == '0' ? $newval : "null"); - } elseif (empty($newval) && $arrayrecord[($key - 1)]['type'] == 0) { - $listvalues[] = "''"; - } else { - $listvalues[] = "'".$this->db->escape($newval)."'"; - } + $listvalues[] = "'".$this->db->escape($newval)."'"; } } $i++; diff --git a/htdocs/core/modules/import/import_xlsx.modules.php b/htdocs/core/modules/import/import_xlsx.modules.php index a64063fa9af..9fa5cbf2c44 100644 --- a/htdocs/core/modules/import/import_xlsx.modules.php +++ b/htdocs/core/modules/import/import_xlsx.modules.php @@ -363,8 +363,6 @@ class ImportXlsx extends ModeleImports $warning = 0; $this->errors = array(); $this->warnings = array(); - $this->nbinsert = 0; - $this->nbupdate = 0; //dol_syslog("import_csv.modules maxfields=".$maxfields." importid=".$importid); @@ -752,36 +750,15 @@ class ImportXlsx extends ModeleImports } // Define $listfields and $listvalues to build SQL request - if ($conf->socialnetworks->enabled && strpos($fieldname, "socialnetworks") !== false) { - if (!in_array("socialnetworks", $listfields)) { - $listfields[] = "socialnetworks"; - } - if (!empty($newval) && $arrayrecord[($key)]['type'] > 0) { - $socialkey = array_search("socialnetworks", $listfields); - if (empty($listvalues[$socialkey]) || $listvalues[$socialkey] == "null") { - $socialnetwork = explode("_", $fieldname)[1]; - $newvalue = '\'{ "'.$socialnetwork.'" : "'.$this->db->escape($newval).'" }\''; - $listvalues[$socialkey] = $newvalue; - } else { - $socialnetwork = explode("_", $fieldname)[1]; - $jsondata = $listvalues[$socialkey]; - $jsondata = str_replace("'", "", $jsondata); - $json = json_decode($jsondata); - $json->$socialnetwork = $this->db->escape($newval); - $listvalues[$socialkey] = "'".$this->db->escape(json_encode($json))."'"; - } - } - } else { - $listfields[] = $fieldname; + $listfields[] = $fieldname; - // Note: arrayrecord (and 'type') is filled with ->import_read_record called by import.php page before calling import_insert - if (empty($newval) && $arrayrecord[($key)]['type'] < 0) { - $listvalues[] = ($newval == '0' ? $newval : "null"); - } elseif (empty($newval) && $arrayrecord[($key)]['type'] == 0) { - $listvalues[] = "''"; - } else { - $listvalues[] = "'" . $this->db->escape($newval) . "'"; - } + // Note: arrayrecord (and 'type') is filled with ->import_read_record called by import.php page before calling import_insert + if (empty($newval) && $arrayrecord[($key)]['type'] < 0) { + $listvalues[] = ($newval == '0' ? $newval : "null"); + } elseif (empty($newval) && $arrayrecord[($key)]['type'] == 0) { + $listvalues[] = "''"; + } else { + $listvalues[] = "'" . $this->db->escape($newval) . "'"; } } $i++; diff --git a/htdocs/core/modules/modSociete.class.php b/htdocs/core/modules/modSociete.class.php index 84a5e97f1bf..09089d57563 100644 --- a/htdocs/core/modules/modSociete.class.php +++ b/htdocs/core/modules/modSociete.class.php @@ -519,16 +519,6 @@ class modSociete extends DolibarrModules if (!empty($conf->global->ACCOUNTANCY_USE_PRODUCT_ACCOUNT_ON_THIRDPARTY)) { $this->import_fields_array[$r] += array('s.accountancy_code_sell'=>'ProductAccountancySellCode', 's.accountancy_code_buy'=>'ProductAccountancyBuyCode'); } - // Add social networks fields - if (!empty($conf->socialnetworks->enabled)) { - $sql = "SELECT code, label FROM ".MAIN_DB_PREFIX."c_socialnetworks WHERE active = 1"; - $resql = $this->db->query($sql); - while ($obj = $this->db->fetch_object($resql)) { - $fieldname = 's.socialnetworks_'.$obj->code; - $fieldlabel = ucfirst($obj->label); - $this->import_fields_array[$r][$fieldname] = $fieldlabel; - } - } // Add extra fields $sql = "SELECT name, label, fieldrequired FROM ".MAIN_DB_PREFIX."extrafields WHERE type <> 'separate' AND elementtype = 'societe' AND entity IN (0, ".$conf->entity.")"; $resql = $this->db->query($sql); @@ -705,16 +695,6 @@ class modSociete extends DolibarrModules 's.note_private' => "NotePrivate", 's.note_public' => "NotePublic" ); - // Add social networks fields - if (!empty($conf->socialnetworks->enabled)) { - $sql = "SELECT code, label FROM ".MAIN_DB_PREFIX."c_socialnetworks WHERE active = 1"; - $resql = $this->db->query($sql); - while ($obj = $this->db->fetch_object($resql)) { - $fieldname = 's.socialnetworks_'.$obj->code; - $fieldlabel = ucfirst($obj->label); - $this->import_fields_array[$r][$fieldname] = $fieldlabel; - } - } // Add extra fields $sql = "SELECT name, label, fieldrequired FROM ".MAIN_DB_PREFIX."extrafields WHERE type != 'separate' AND elementtype = 'socpeople' AND entity IN (0, ".$conf->entity.")"; $resql = $this->db->query($sql); From 1e406276c580939be97f4d76fc24bb9052206544 Mon Sep 17 00:00:00 2001 From: lmarcouiller Date: Fri, 13 May 2022 15:04:30 +0200 Subject: [PATCH 062/329] New : import fields in societe class --- .../modules/import/import_csv.modules.php | 36 +++++++++++++---- .../modules/import/import_xlsx.modules.php | 39 +++++++++++++++---- htdocs/core/modules/modSociete.class.php | 20 ++++++++++ 3 files changed, 79 insertions(+), 16 deletions(-) diff --git a/htdocs/core/modules/import/import_csv.modules.php b/htdocs/core/modules/import/import_csv.modules.php index e45630df298..62f0ca6d387 100644 --- a/htdocs/core/modules/import/import_csv.modules.php +++ b/htdocs/core/modules/import/import_csv.modules.php @@ -709,15 +709,35 @@ class ImportCsv extends ModeleImports } // Define $listfields and $listvalues to build SQL request - $listfields[] = $fieldname; - - // Note: arrayrecord (and 'type') is filled with ->import_read_record called by import.php page before calling import_insert - if (empty($newval) && $arrayrecord[($key - 1)]['type'] < 0) { - $listvalues[] = ($newval == '0' ? $newval : "null"); - } elseif (empty($newval) && $arrayrecord[($key - 1)]['type'] == 0) { - $listvalues[] = "''"; + if ($conf->socialnetworks->enabled && strpos($fieldname, "socialnetworks") !== false) { + if (!in_array("socialnetworks", $listfields)) { + $listfields[] = "socialnetworks"; + } + if (!empty($newval) && $arrayrecord[($key - 1)]['type'] > 0) { + $socialkey = array_search("socialnetworks", $listfields); + if (empty($listvalues[$socialkey]) || $listvalues[$socialkey] == "null") { + $socialnetwork = explode("_", $fieldname)[1]; + $newvalue = '\'{ "'.$socialnetwork.'" : "'.$this->db->escape($newval).'" }\''; + $listvalues[$socialkey] = $newvalue; + } else { + $socialnetwork = explode("_", $fieldname)[1]; + $jsondata = $listvalues[$socialkey]; + $jsondata = str_replace("'", "", $jsondata); + $json = json_decode($jsondata); + $json->$socialnetwork = $this->db->escape($newval); + $listvalues[$socialkey] = "'".$this->db->escape(json_encode($json))."'"; + } + } } else { - $listvalues[] = "'".$this->db->escape($newval)."'"; + $listfields[] = $fieldname; + // Note: arrayrecord (and 'type') is filled with ->import_read_record called by import.php page before calling import_insert + if (empty($newval) && $arrayrecord[($key - 1)]['type'] < 0) { + $listvalues[] = ($newval == '0' ? $newval : "null"); + } elseif (empty($newval) && $arrayrecord[($key - 1)]['type'] == 0) { + $listvalues[] = "''"; + } else { + $listvalues[] = "'".$this->db->escape($newval)."'"; + } } } $i++; diff --git a/htdocs/core/modules/import/import_xlsx.modules.php b/htdocs/core/modules/import/import_xlsx.modules.php index 9fa5cbf2c44..a64063fa9af 100644 --- a/htdocs/core/modules/import/import_xlsx.modules.php +++ b/htdocs/core/modules/import/import_xlsx.modules.php @@ -363,6 +363,8 @@ class ImportXlsx extends ModeleImports $warning = 0; $this->errors = array(); $this->warnings = array(); + $this->nbinsert = 0; + $this->nbupdate = 0; //dol_syslog("import_csv.modules maxfields=".$maxfields." importid=".$importid); @@ -750,15 +752,36 @@ class ImportXlsx extends ModeleImports } // Define $listfields and $listvalues to build SQL request - $listfields[] = $fieldname; - - // Note: arrayrecord (and 'type') is filled with ->import_read_record called by import.php page before calling import_insert - if (empty($newval) && $arrayrecord[($key)]['type'] < 0) { - $listvalues[] = ($newval == '0' ? $newval : "null"); - } elseif (empty($newval) && $arrayrecord[($key)]['type'] == 0) { - $listvalues[] = "''"; + if ($conf->socialnetworks->enabled && strpos($fieldname, "socialnetworks") !== false) { + if (!in_array("socialnetworks", $listfields)) { + $listfields[] = "socialnetworks"; + } + if (!empty($newval) && $arrayrecord[($key)]['type'] > 0) { + $socialkey = array_search("socialnetworks", $listfields); + if (empty($listvalues[$socialkey]) || $listvalues[$socialkey] == "null") { + $socialnetwork = explode("_", $fieldname)[1]; + $newvalue = '\'{ "'.$socialnetwork.'" : "'.$this->db->escape($newval).'" }\''; + $listvalues[$socialkey] = $newvalue; + } else { + $socialnetwork = explode("_", $fieldname)[1]; + $jsondata = $listvalues[$socialkey]; + $jsondata = str_replace("'", "", $jsondata); + $json = json_decode($jsondata); + $json->$socialnetwork = $this->db->escape($newval); + $listvalues[$socialkey] = "'".$this->db->escape(json_encode($json))."'"; + } + } } else { - $listvalues[] = "'" . $this->db->escape($newval) . "'"; + $listfields[] = $fieldname; + + // Note: arrayrecord (and 'type') is filled with ->import_read_record called by import.php page before calling import_insert + if (empty($newval) && $arrayrecord[($key)]['type'] < 0) { + $listvalues[] = ($newval == '0' ? $newval : "null"); + } elseif (empty($newval) && $arrayrecord[($key)]['type'] == 0) { + $listvalues[] = "''"; + } else { + $listvalues[] = "'" . $this->db->escape($newval) . "'"; + } } } $i++; diff --git a/htdocs/core/modules/modSociete.class.php b/htdocs/core/modules/modSociete.class.php index e4cf484df58..3b0a297ae0c 100644 --- a/htdocs/core/modules/modSociete.class.php +++ b/htdocs/core/modules/modSociete.class.php @@ -519,6 +519,16 @@ class modSociete extends DolibarrModules if (!empty($conf->global->ACCOUNTANCY_USE_PRODUCT_ACCOUNT_ON_THIRDPARTY)) { $this->import_fields_array[$r] += array('s.accountancy_code_sell'=>'ProductAccountancySellCode', 's.accountancy_code_buy'=>'ProductAccountancyBuyCode'); } + // Add social networks fields + if (!empty($conf->socialnetworks->enabled)) { + $sql = "SELECT code, label FROM ".MAIN_DB_PREFIX."c_socialnetworks WHERE active = 1"; + $resql = $this->db->query($sql); + while ($obj = $this->db->fetch_object($resql)) { + $fieldname = 's.socialnetworks_'.$obj->code; + $fieldlabel = ucfirst($obj->label); + $this->import_fields_array[$r][$fieldname] = $fieldlabel; + } + } // Add extra fields $sql = "SELECT name, label, fieldrequired FROM ".MAIN_DB_PREFIX."extrafields WHERE type <> 'separate' AND elementtype = 'societe' AND entity IN (0, ".$conf->entity.")"; $resql = $this->db->query($sql); @@ -718,6 +728,16 @@ class modSociete extends DolibarrModules 's.note_private' => "NotePrivate", 's.note_public' => "NotePublic" ); + // Add social networks fields + if (!empty($conf->socialnetworks->enabled)) { + $sql = "SELECT code, label FROM ".MAIN_DB_PREFIX."c_socialnetworks WHERE active = 1"; + $resql = $this->db->query($sql); + while ($obj = $this->db->fetch_object($resql)) { + $fieldname = 's.socialnetworks_'.$obj->code; + $fieldlabel = ucfirst($obj->label); + $this->import_fields_array[$r][$fieldname] = $fieldlabel; + } + } // Add extra fields $sql = "SELECT name, label, fieldrequired FROM ".MAIN_DB_PREFIX."extrafields WHERE type != 'separate' AND elementtype = 'socpeople' AND entity IN (0, ".$conf->entity.")"; $resql = $this->db->query($sql); From 1ba8bc9147588f51b9ae1f720ed6055f33accce3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 14 May 2022 07:51:48 +0200 Subject: [PATCH 063/329] 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 064/329] 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 065/329] 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 066/329] 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 067/329] 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 068/329] 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 069/329] 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 070/329] 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 071/329] 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 072/329] 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 073/329] 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 074/329] 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 075/329] 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 076/329] 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 077/329] 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 078/329] 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 079/329] 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 080/329] 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 081/329] 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 082/329] 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 083/329] 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 084/329] 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 085/329] 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 086/329] 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 087/329] 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 088/329] 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 089/329] 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 090/329] 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 091/329] 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 092/329] 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 093/329] 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 094/329] 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 ada81750c10ded375b2697a001043be6207da5d4 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Tue, 17 May 2022 12:53:50 +0200 Subject: [PATCH 095/329] NEW: Add Customer Ref on Intervention --- htdocs/fichinter/card.php | 20 ++++- htdocs/fichinter/class/fichinter.class.php | 76 ++++++++++++++++++- htdocs/fichinter/list.php | 29 ++++++- .../install/mysql/migration/15.0.0-16.0.0.sql | 2 + htdocs/install/mysql/tables/llx_fichinter.sql | 1 + 5 files changed, 123 insertions(+), 5 deletions(-) diff --git a/htdocs/fichinter/card.php b/htdocs/fichinter/card.php index 0d7e5278a14..a2271dbb063 100644 --- a/htdocs/fichinter/card.php +++ b/htdocs/fichinter/card.php @@ -55,6 +55,7 @@ $langs->loadLangs(array('bills', 'companies', 'interventions', 'stocks')); $id = GETPOST('id', 'int'); $ref = GETPOST('ref', 'alpha'); +$ref_client = GETPOST('ref_client', 'alpha'); $socid = (int) GETPOST('socid', 'int'); $contratid = (int) GETPOST('contratid', 'int'); $action = GETPOST('action', 'alpha'); @@ -222,6 +223,7 @@ if (empty($reshook)) { $object->author = $user->id; $object->description = GETPOST('description', 'restricthtml'); $object->ref = $ref; + $object->ref_client = $ref_client; $object->model_pdf = GETPOST('model', 'alpha'); $object->note_private = GETPOST('note_private', 'restricthtml'); $object->note_public = GETPOST('note_public', 'restricthtml'); @@ -432,6 +434,7 @@ if (empty($reshook)) { $object->author = $user->id; $object->description = GETPOST('description', 'restricthtml'); $object->ref = $ref; + $object->ref_client = $ref_client; $result = $object->update($user); if ($result < 0) { @@ -449,6 +452,12 @@ if (empty($reshook)) { if ($result < 0) { dol_print_error($db, $object->error); } + } elseif ($action == 'setref_client' && $user->rights->ficheinter->creer) { + // Positionne ref client + $result = $object->setRefClient($user, GETPOST('ref_client','alpha')); + if ($result < 0) { + setEventMessages($object->error, $object->errors, 'errors'); + } } elseif ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->ficheinter->supprimer) { $result = $object->delete($user); if ($result < 0) { @@ -879,6 +888,11 @@ if ($action == 'create') { // Ref print ''.$langs->trans('Ref').''.$langs->trans("Draft").''; + // Ref customer + print ''.$langs->trans('RefCustomer').''; + print ''; + print ''; + // Description (must be a textarea and not html must be allowed (used in list view) print ''.$langs->trans("Description").''; print ''; @@ -1134,10 +1148,10 @@ if ($action == 'create') { $morehtmlref = '
'; // Ref customer - //$morehtmlref.=$form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, $user->rights->fichinter->creer, 'string', '', 0, 1); - //$morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, $user->rights->fichinter->creer, 'string', '', null, null, '', 1); + $morehtmlref.=$form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, $user->rights->ficheinter->creer, 'string', '', 0, 1); + $morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, $user->rights->ficheinter->creer, 'string', '', null, null, '', 1); // Thirdparty - $morehtmlref .= $langs->trans('ThirdParty').' : '.$object->thirdparty->getNomUrl(1); + $morehtmlref .= '
'.$langs->trans('ThirdParty').' : '.$object->thirdparty->getNomUrl(1, 'customer'); // Project if (!empty($conf->projet->enabled)) { $langs->load("projects"); diff --git a/htdocs/fichinter/class/fichinter.class.php b/htdocs/fichinter/class/fichinter.class.php index b5e3a13f3c0..ec603defd62 100644 --- a/htdocs/fichinter/class/fichinter.class.php +++ b/htdocs/fichinter/class/fichinter.class.php @@ -44,6 +44,7 @@ class Fichinter extends CommonObject 'fk_contrat' =>array('type'=>'integer', 'label'=>'Fk contrat', 'enabled'=>1, 'visible'=>-1, 'position'=>25), 'ref' =>array('type'=>'varchar(30)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'showoncombobox'=>1, 'position'=>30), 'ref_ext' =>array('type'=>'varchar(255)', 'label'=>'Ref ext', 'enabled'=>1, 'visible'=>0, 'position'=>35), + 'ref_client' =>array('type'=>'varchar(255)', 'label'=>'RefCustomer', 'enabled'=>1, 'visible'=>-1, 'position'=>36), 'entity' =>array('type'=>'integer', 'label'=>'Entity', 'default'=>1, 'enabled'=>1, 'visible'=>-2, 'notnull'=>1, 'position'=>40, 'index'=>1), 'tms' =>array('type'=>'timestamp', 'label'=>'DateModification', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>45), 'datec' =>array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>1, 'visible'=>-1, 'position'=>50), @@ -146,6 +147,12 @@ class Fichinter extends CommonObject */ public $fk_project = 0; + /** + * Customer Ref + * @var string + */ + public $ref_client; + /** * @var array extraparams */ @@ -253,6 +260,9 @@ class Fichinter extends CommonObject if (!is_numeric($this->duration)) { $this->duration = 0; } + if (isset($this->ref_client)) { + $this->ref_client = trim($this->ref_client); + } if ($this->socid <= 0) { $this->error = 'ErrorFicheinterCompanyDoesNotExist'; @@ -271,6 +281,7 @@ class Fichinter extends CommonObject $sql .= "fk_soc"; $sql .= ", datec"; $sql .= ", ref"; + $sql .= ", ref_client"; $sql .= ", entity"; $sql .= ", fk_user_author"; $sql .= ", fk_user_modif"; @@ -286,6 +297,7 @@ class Fichinter extends CommonObject $sql .= $this->socid; $sql .= ", '".$this->db->idate($now)."'"; $sql .= ", '".$this->db->escape($this->ref)."'"; + $sql .= ", '".($this->ref_client ? "'".$this->db->escape($this->ref_client)."'" : "null")."'"; $sql .= ", ".((int) $conf->entity); $sql .= ", ".((int) $user->id); $sql .= ", ".((int) $user->id); @@ -372,6 +384,9 @@ class Fichinter extends CommonObject if (!dol_strlen($this->fk_project)) { $this->fk_project = 0; } + if (isset($this->ref_client)) { + $this->ref_client = trim($this->ref_client); + } $error = 0; @@ -380,6 +395,7 @@ class Fichinter extends CommonObject $sql = "UPDATE ".MAIN_DB_PREFIX."fichinter SET "; $sql .= "description = '".$this->db->escape($this->description)."'"; $sql .= ", duree = ".((int) $this->duration); + $sql .= ", ref_client = ".($this->ref_client ? "'".$this->db->escape($this->ref_client)."'" : "null"); $sql .= ", fk_projet = ".((int) $this->fk_project); $sql .= ", note_private = ".($this->note_private ? "'".$this->db->escape($this->note_private)."'" : "null"); $sql .= ", note_public = ".($this->note_public ? "'".$this->db->escape($this->note_public)."'" : "null"); @@ -422,7 +438,7 @@ class Fichinter extends CommonObject */ public function fetch($rowid, $ref = '') { - $sql = "SELECT f.rowid, f.ref, f.description, f.fk_soc, f.fk_statut,"; + $sql = "SELECT f.rowid, f.ref, f.ref_client, f.description, f.fk_soc, f.fk_statut,"; $sql .= " f.datec, f.dateo, f.datee, f.datet, f.fk_user_author,"; $sql .= " f.date_valid as datev,"; $sql .= " f.tms as datem,"; @@ -443,6 +459,7 @@ class Fichinter extends CommonObject $this->id = $obj->rowid; $this->ref = $obj->ref; + $this->ref_client = $obj->ref_client; $this->description = $obj->description; $this->socid = $obj->fk_soc; $this->statut = $obj->fk_statut; @@ -1289,6 +1306,7 @@ class Fichinter extends CommonObject // Initialise parametres $this->id = 0; $this->ref = 'SPECIMEN'; + $this->ref_client = 'SPECIMEN CLIENT'; $this->specimen = 1; $this->socid = 1; $this->datec = $now; @@ -1377,6 +1395,62 @@ class Fichinter extends CommonObject return CommonObject::commonReplaceThirdparty($db, $origin_id, $dest_id, $tables); } + + /** + * Set customer reference number + * + * @param User $user Object user that modify + * @param string $ref_client Customer reference + * @param int $notrigger 1=Does not execute triggers, 0= execute triggers + * @return int <0 if ko, >0 if ok + */ + public function setRefClient($user, $ref_client, $notrigger = 0) + { + // phpcs:enable + if (!empty($user->rights->ficheinter->creer)) { + $error = 0; + + $this->db->begin(); + + $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element." SET ref_client = ".(empty($ref_client) ? 'NULL' : "'".$this->db->escape($ref_client)."'"); + $sql .= " WHERE rowid = ".((int) $this->id); + + dol_syslog(__METHOD__.' $this->id='.$this->id.', ref_client='.$ref_client, LOG_DEBUG); + $resql = $this->db->query($sql); + if (!$resql) { + $this->errors[] = $this->db->error(); + $error++; + } + + if (!$error) { + $this->oldcopy = clone $this; + $this->ref_client = $ref_client; + } + + if (!$notrigger && empty($error)) { + // Call trigger + $result = $this->call_trigger('FICHINTER_MODIFY', $user); + if ($result < 0) { + $error++; + } + // End call triggers + } + + if (!$error) { + $this->db->commit(); + return 1; + } else { + foreach ($this->errors as $errmsg) { + dol_syslog(__METHOD__.' Error: '.$errmsg, LOG_ERR); + $this->error .= ($this->error ? ', '.$errmsg : $errmsg); + } + $this->db->rollback(); + return -1 * $error; + } + } else { + return -1; + } + } } /** diff --git a/htdocs/fichinter/list.php b/htdocs/fichinter/list.php index f0e028ea92f..d83a1438f1a 100644 --- a/htdocs/fichinter/list.php +++ b/htdocs/fichinter/list.php @@ -58,6 +58,7 @@ $toselect = GETPOST('toselect', 'array'); $contextpage = GETPOST('contextpage', 'aZ') ?GETPOST('contextpage', 'aZ') : 'interventionlist'; $search_ref = GETPOST('search_ref') ?GETPOST('search_ref', 'alpha') : GETPOST('search_inter', 'alpha'); +$search_ref_client = GETPOST('search_ref_client', 'alpha'); $search_company = GETPOST('search_company', 'alpha'); $search_desc = GETPOST('search_desc', 'alpha'); $search_projet_ref = GETPOST('search_projet_ref', 'alpha'); @@ -122,6 +123,7 @@ if (!empty($conf->global->FICHINTER_DISABLE_DETAILS)) { // Definition of fields for list $arrayfields = array( 'f.ref'=>array('label'=>'Ref', 'checked'=>1), + 'f.ref_client'=>array('label'=>'RefCustomer', 'checked'=>1), 's.nom'=>array('label'=>'ThirdParty', 'checked'=>1), 'pr.ref'=>array('label'=>'Project', 'checked'=>1, 'enabled'=>(empty($conf->projet->enabled) ? 0 : 1)), 'c.ref'=>array('label'=>'Contract', 'checked'=>1, 'enabled'=>(empty($conf->contrat->enabled) ? 0 : 1)), @@ -166,6 +168,7 @@ if (empty($reshook)) { // Purge search criteria if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All tests are required to be compatible with all browsers $search_ref = ""; + $search_ref_client = ""; $search_company = ""; $search_projet_ref = ""; $search_contrat_ref = ""; @@ -218,7 +221,7 @@ foreach ($arrayfields as $tmpkey => $tmpval) { } $sql = "SELECT"; -$sql .= " f.ref, f.rowid, f.fk_statut as status, f.description, f.datec as date_creation, f.tms as date_update, f.note_public, f.note_private,"; +$sql .= " f.ref, f.ref_client, f.rowid, f.fk_statut as status, f.description, f.datec as date_creation, f.tms as date_update, f.note_public, f.note_private,"; if (empty($conf->global->FICHINTER_DISABLE_DETAILS) && $atleastonefieldinlines) { $sql .= " fd.rowid as lineid, fd.description as descriptiondetail, fd.date as dp, fd.duree,"; } @@ -267,6 +270,9 @@ $sql .= " AND f.fk_soc = s.rowid"; if ($search_ref) { $sql .= natural_search('f.ref', $search_ref); } +if ($search_ref_client) { + $sql .= natural_search('f.ref_client', $search_ref_client); +} if ($search_company) { $sql .= natural_search('s.nom', $search_company); } @@ -351,6 +357,9 @@ if ($resql) { if ($search_ref) { $param .= "&search_ref=".urlencode($search_ref); } + if ($search_ref_client) { + $param .= "&search_ref_client=".urlencode($search_ref_client); + } if ($search_company) { $param .= "&search_company=".urlencode($search_company); } @@ -447,6 +456,11 @@ if ($resql) { print ''; print ''; } + if (!empty($arrayfields['f.ref_client']['checked'])) { + print ''; + print ''; + print ''; + } if (!empty($arrayfields['s.nom']['checked'])) { print ''; print ''; @@ -526,6 +540,9 @@ if ($resql) { if (!empty($arrayfields['f.ref']['checked'])) { print_liste_field_titre($arrayfields['f.ref']['label'], $_SERVER["PHP_SELF"], "f.ref", "", $param, '', $sortfield, $sortorder); } + if (!empty($arrayfields['f.ref_client']['checked'])) { + print_liste_field_titre($arrayfields['f.ref_client']['label'], $_SERVER["PHP_SELF"], "f.ref_client", "", $param, '', $sortfield, $sortorder); + } if (!empty($arrayfields['s.nom']['checked'])) { print_liste_field_titre($arrayfields['s.nom']['label'], $_SERVER["PHP_SELF"], "s.nom", "", $param, '', $sortfield, $sortorder); } @@ -582,6 +599,7 @@ if ($resql) { $objectstatic->id = $obj->rowid; $objectstatic->ref = $obj->ref; + $objectstatic->ref_client = $obj->ref_client; $objectstatic->statut = $obj->status; $objectstatic->status = $obj->status; @@ -630,6 +648,15 @@ if ($resql) { $totalarray['nbfield']++; } } + if (!empty($arrayfields['f.ref_client']['checked'])) { + // Customer ref + print ''; + print $obj->ref_client; + print ''; + if (!$i) { + $totalarray['nbfield']++; + } + } if (!empty($arrayfields['s.nom']['checked'])) { print ''; print $companystatic->getNomUrl(1, '', 44); diff --git a/htdocs/install/mysql/migration/15.0.0-16.0.0.sql b/htdocs/install/mysql/migration/15.0.0-16.0.0.sql index 501aa0fe751..8b00bee9b3c 100644 --- a/htdocs/install/mysql/migration/15.0.0-16.0.0.sql +++ b/htdocs/install/mysql/migration/15.0.0-16.0.0.sql @@ -361,4 +361,6 @@ ALTER TABLE llx_c_email_template ADD COLUMN email_to varchar(255); ALTER TABLE llx_c_email_template ADD COLUMN email_tocc varchar(255); ALTER TABLE llx_c_email_template ADD COLUMN email_tobcc varchar(255); +ALTER TABLE llx_fichinter ADD COLUMN ref_client varchar(255) after ref_ext; + diff --git a/htdocs/install/mysql/tables/llx_fichinter.sql b/htdocs/install/mysql/tables/llx_fichinter.sql index 7c1ef4cf184..999dd55b7f3 100644 --- a/htdocs/install/mysql/tables/llx_fichinter.sql +++ b/htdocs/install/mysql/tables/llx_fichinter.sql @@ -25,6 +25,7 @@ create table llx_fichinter fk_contrat integer DEFAULT 0, -- contrat auquel est rattache la fiche ref varchar(30) NOT NULL, -- number ref_ext varchar(255), + ref_client varchar(255), -- customer intervention number entity integer DEFAULT 1 NOT NULL, -- multi company id tms timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, datec datetime, -- date de creation From 8950ae160b563529126169b317f9039db045d4ea Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Tue, 17 May 2022 11:00:13 +0000 Subject: [PATCH 096/329] Fixing style errors. --- htdocs/fichinter/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fichinter/card.php b/htdocs/fichinter/card.php index a2271dbb063..eeb5261ef19 100644 --- a/htdocs/fichinter/card.php +++ b/htdocs/fichinter/card.php @@ -454,7 +454,7 @@ if (empty($reshook)) { } } elseif ($action == 'setref_client' && $user->rights->ficheinter->creer) { // Positionne ref client - $result = $object->setRefClient($user, GETPOST('ref_client','alpha')); + $result = $object->setRefClient($user, GETPOST('ref_client', 'alpha')); if ($result < 0) { setEventMessages($object->error, $object->errors, 'errors'); } From 480b48e5e1d34a65bd5187798cc8f2e7377ba789 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 17 May 2022 14:36:56 +0200 Subject: [PATCH 097/329] 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 098/329] 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 099/329] 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 100/329] 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 101/329] 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 102/329] 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 103/329] 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 104/329] 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 105/329] 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 106/329] 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 2f959306f78f3c3119a1c9ec9154774eb46915d6 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Tue, 17 May 2022 22:50:42 +0200 Subject: [PATCH 107/329] fix travis --- htdocs/install/mysql/migration/15.0.0-16.0.0.sql | 2 -- htdocs/install/mysql/tables/llx_fichinter.sql | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/htdocs/install/mysql/migration/15.0.0-16.0.0.sql b/htdocs/install/mysql/migration/15.0.0-16.0.0.sql index 8b00bee9b3c..6288a6a2e3a 100644 --- a/htdocs/install/mysql/migration/15.0.0-16.0.0.sql +++ b/htdocs/install/mysql/migration/15.0.0-16.0.0.sql @@ -362,5 +362,3 @@ ALTER TABLE llx_c_email_template ADD COLUMN email_tocc varchar(255); ALTER TABLE llx_c_email_template ADD COLUMN email_tobcc varchar(255); ALTER TABLE llx_fichinter ADD COLUMN ref_client varchar(255) after ref_ext; - - diff --git a/htdocs/install/mysql/tables/llx_fichinter.sql b/htdocs/install/mysql/tables/llx_fichinter.sql index 999dd55b7f3..b9f9008f202 100644 --- a/htdocs/install/mysql/tables/llx_fichinter.sql +++ b/htdocs/install/mysql/tables/llx_fichinter.sql @@ -25,7 +25,7 @@ create table llx_fichinter fk_contrat integer DEFAULT 0, -- contrat auquel est rattache la fiche ref varchar(30) NOT NULL, -- number ref_ext varchar(255), - ref_client varchar(255), -- customer intervention number + ref_client varchar(255), -- customer intervention number entity integer DEFAULT 1 NOT NULL, -- multi company id tms timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, datec datetime, -- date de creation From c47578943327436113ba4ef8137888b578500f69 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 17 May 2022 23:23:50 +0200 Subject: [PATCH 108/329] 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 109/329] 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 110/329] 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 111/329] 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 112/329] 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 113/329] 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 114/329] 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 115/329] 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 116/329] 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 117/329] 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 118/329] 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 119/329] 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.'