Go to the documentation of this file.
26 require
'../../main.inc.php';
27 require_once DOL_DOCUMENT_ROOT.
'/core/lib/admin.lib.php';
28 require_once DOL_DOCUMENT_ROOT.
'/product/class/html.formproduct.class.php';
29 require_once DOL_DOCUMENT_ROOT.
'/core/lib/pdf.lib.php';
30 require_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
31 require_once DOL_DOCUMENT_ROOT.
"/core/lib/takepos.lib.php";
33 $terminal =
GETPOST(
'terminal',
'int');
35 if (!empty($_REQUEST[
'CASHDESK_ID_THIRDPARTY'.$terminal.
'_id'])) {
36 $_GET[
'CASHDESK_ID_THIRDPARTY'.$terminal] =
GETPOST(
'CASHDESK_ID_THIRDPARTY'.$terminal.
'_id',
'alpha');
37 $_POST[
'CASHDESK_ID_THIRDPARTY'.$terminal] =
GETPOST(
'CASHDESK_ID_THIRDPARTY'.$terminal.
'_id',
'alpha');
38 $_REQUEST[
'CASHDESK_ID_THIRDPARTY'.$terminal] =
GETPOST(
'CASHDESK_ID_THIRDPARTY'.$terminal.
'_id',
'alpha');
46 $langs->loadLangs(array(
"admin",
"cashdesk",
"printing",
"receiptprinter"));
50 $sql =
"SELECT code, libelle as label FROM ".MAIN_DB_PREFIX.
"c_paiement";
51 $sql .=
" WHERE entity IN (".getEntity(
'c_paiement').
")";
52 $sql .=
" AND active = 1";
53 $sql .=
" ORDER BY libelle";
57 while ($obj = $db->fetch_object(
$resql)) {
58 array_push($paiements, $obj);
62 $terminaltouse = $terminal;
69 if (
GETPOST(
'action',
'alpha') ==
'set') {
72 $res =
dolibarr_set_const($db,
"CASHDESK_ID_THIRDPARTY".$terminaltouse, (
GETPOST(
'socid',
'int') > 0 ?
GETPOST(
'socid',
'int') :
''),
'chaine', 0,
'', $conf->entity);
74 $res =
dolibarr_set_const($db,
"CASHDESK_ID_BANKACCOUNT_CASH".$terminaltouse, (
GETPOST(
'CASHDESK_ID_BANKACCOUNT_CASH'.$terminaltouse,
'alpha') > 0 ?
GETPOST(
'CASHDESK_ID_BANKACCOUNT_CASH'.$terminaltouse,
'alpha') :
''),
'chaine', 0,
'', $conf->entity);
75 $res =
dolibarr_set_const($db,
"CASHDESK_ID_BANKACCOUNT_CHEQUE".$terminaltouse, (
GETPOST(
'CASHDESK_ID_BANKACCOUNT_CHEQUE'.$terminaltouse,
'alpha') > 0 ?
GETPOST(
'CASHDESK_ID_BANKACCOUNT_CHEQUE'.$terminaltouse,
'alpha') :
''),
'chaine', 0,
'', $conf->entity);
76 $res =
dolibarr_set_const($db,
"CASHDESK_ID_BANKACCOUNT_CB".$terminaltouse, (
GETPOST(
'CASHDESK_ID_BANKACCOUNT_CB'.$terminaltouse,
'alpha') > 0 ?
GETPOST(
'CASHDESK_ID_BANKACCOUNT_CB'.$terminaltouse,
'alpha') :
''),
'chaine', 0,
'', $conf->entity);
78 $res =
dolibarr_set_const($db,
"CASHDESK_ID_BANKACCOUNT_SUMUP".$terminaltouse, (
GETPOST(
'CASHDESK_ID_BANKACCOUNT_SUMUP'.$terminaltouse,
'alpha') > 0 ?
GETPOST(
'CASHDESK_ID_BANKACCOUNT_SUMUP'.$terminaltouse,
'alpha') :
''),
'chaine', 0,
'', $conf->entity);
80 foreach ($paiements as $modep) {
81 if (in_array($modep->code, array(
'LIQ',
'CB',
'CHQ'))) {
84 $name =
"CASHDESK_ID_BANKACCOUNT_".$modep->code.$terminaltouse;
87 $res =
dolibarr_set_const($db,
"CASHDESK_ID_WAREHOUSE".$terminaltouse, (
GETPOST(
'CASHDESK_ID_WAREHOUSE'.$terminaltouse,
'alpha') > 0 ?
GETPOST(
'CASHDESK_ID_WAREHOUSE'.$terminaltouse,
'alpha') :
''),
'chaine', 0,
'', $conf->entity);
88 $res =
dolibarr_set_const($db,
"CASHDESK_NO_DECREASE_STOCK".$terminaltouse,
GETPOST(
'CASHDESK_NO_DECREASE_STOCK'.$terminaltouse,
'alpha'),
'chaine', 0,
'', $conf->entity);
89 $res =
dolibarr_set_const($db,
"TAKEPOS_PRINTER_TO_USE".$terminaltouse,
GETPOST(
'TAKEPOS_PRINTER_TO_USE'.$terminaltouse,
'alpha'),
'chaine', 0,
'', $conf->entity);
90 $res =
dolibarr_set_const($db,
"TAKEPOS_ORDER_PRINTER1_TO_USE".$terminaltouse,
GETPOST(
'TAKEPOS_ORDER_PRINTER1_TO_USE'.$terminaltouse,
'alpha'),
'chaine', 0,
'', $conf->entity);
91 $res =
dolibarr_set_const($db,
"TAKEPOS_ORDER_PRINTER2_TO_USE".$terminaltouse,
GETPOST(
'TAKEPOS_ORDER_PRINTER2_TO_USE'.$terminaltouse,
'alpha'),
'chaine', 0,
'', $conf->entity);
92 $res =
dolibarr_set_const($db,
"TAKEPOS_ORDER_PRINTER3_TO_USE".$terminaltouse,
GETPOST(
'TAKEPOS_ORDER_PRINTER3_TO_USE'.$terminaltouse,
'alpha'),
'chaine', 0,
'', $conf->entity);
93 $res =
dolibarr_set_const($db,
"TAKEPOS_TEMPLATE_TO_USE_FOR_INVOICES".$terminaltouse,
GETPOST(
'TAKEPOS_TEMPLATE_TO_USE_FOR_INVOICES'.$terminaltouse,
'alpha'),
'chaine', 0,
'', $conf->entity);
94 $res =
dolibarr_set_const($db,
"TAKEPOS_TEMPLATE_TO_USE_FOR_ORDERS".$terminaltouse,
GETPOST(
'TAKEPOS_TEMPLATE_TO_USE_FOR_ORDERS'.$terminaltouse,
'alpha'),
'chaine', 0,
'', $conf->entity);
96 $res =
dolibarr_set_const($db,
'CASHDESK_READER_KEYCODE_FOR_ENTER'.$terminaltouse, (
GETPOST(
'CASHDESK_READER_KEYCODE_FOR_ENTER'.$terminaltouse,
'int') > 0 ?
GETPOST(
'CASHDESK_READER_KEYCODE_FOR_ENTER'.$terminaltouse,
'int') :
''),
'chaine', 0,
'', $conf->entity);
98 $res =
dolibarr_set_const($db,
"TAKEPOS_ADDON".$terminaltouse,
GETPOST(
'TAKEPOS_ADDON'.$terminaltouse,
'alpha'),
'chaine', 0,
'', $conf->entity);
101 $res =
dolibarr_set_const($db,
'TAKEPOS_HEADER'.$terminaltouse,
GETPOST(
'TAKEPOS_HEADER'.$terminaltouse,
'restricthtml'),
'chaine', 0,
'', $conf->entity);
102 $res =
dolibarr_set_const($db,
'TAKEPOS_FOOTER'.$terminaltouse,
GETPOST(
'TAKEPOS_FOOTER'.$terminaltouse,
'restricthtml'),
'chaine', 0,
'', $conf->entity);
127 llxHeader(
'', $langs->trans(
"CashDeskSetup"));
129 $linkback =
'<a href="'.DOL_URL_ROOT.
'/admin/modules.php">'.$langs->trans(
"BackToModuleList").
'</a>';
130 print
load_fiche_titre($langs->trans(
"CashDeskSetup").
' (TakePOS)', $linkback,
'title_setup');
132 print
dol_get_fiche_head($head,
'terminal'.$terminal,
'TakePOS', -1,
'cash-register');
137 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'?terminal='.(empty($terminal) ? 1 : $terminal).
'" method="post">';
138 print
'<input type="hidden" name="token" value="'.newToken().
'">';
139 print
'<input type="hidden" name="action" value="set">';
141 print
'<div class="div-table-responsive">';
142 print
'<table class="noborder centpercent">';
143 print
'<tr class="liste_titre">';
144 print
'<td>'.$langs->trans(
"Parameters").
'</td><td>'.$langs->trans(
"Value").
'</td>';
147 print
'<tr class="oddeven"><td class="fieldrequired">'.$langs->trans(
"CashDeskThirdPartyForSell").
'</td>';
149 print
$form->select_company(
getDolGlobalInt(
'CASHDESK_ID_THIRDPARTY'.$terminaltouse),
'socid',
'(s.client IN (1, 3) AND s.status = 1)', 1, 0, 0, array(), 0);
152 $atleastonefound = 0;
154 print
'<tr class="oddeven"><td>'.$langs->trans(
"CashDeskBankAccountForSell").
'</td>';
156 print
img_picto(
'',
'bank_account',
'class="pictofixedwidth"');
157 $form->select_comptes(
getDolGlobalInt(
'CASHDESK_ID_BANKACCOUNT_CASH'.$terminaltouse),
'CASHDESK_ID_BANKACCOUNT_CASH'.$terminaltouse, 0,
"courant=2", 1);
162 print
'<tr class="oddeven"><td>'.$langs->trans(
"CashDeskBankAccountForCheque").
'</td>';
164 print
img_picto(
'',
'bank_account',
'class="pictofixedwidth"');
165 $form->select_comptes(
getDolGlobalInt(
'CASHDESK_ID_BANKACCOUNT_CHEQUE'.$terminaltouse),
'CASHDESK_ID_BANKACCOUNT_CHEQUE'.$terminaltouse, 0,
"courant=1", 1);
166 if (
getDolGlobalInt(
'CASHDESK_ID_BANKACCOUNT_CHEQUE'.$terminaltouse)) {
170 print
'<tr class="oddeven"><td>'.$langs->trans(
"CashDeskBankAccountForCB").
'</td>';
172 print
img_picto(
'',
'bank_account',
'class="pictofixedwidth"');
173 $form->select_comptes(
getDolGlobalInt(
'CASHDESK_ID_BANKACCOUNT_CB'.$terminaltouse),
'CASHDESK_ID_BANKACCOUNT_CB'.$terminaltouse, 0,
"courant=1", 1);
179 print
'<tr class="oddeven"><td>'.$langs->trans(
"CashDeskBankAccountForSumup").
'</td>';
181 print
img_picto(
'',
'bank_account',
'class="pictofixedwidth"');
182 $form->select_comptes(
getDolGlobalInt(
'CASHDESK_ID_BANKACCOUNT_SUMUP'.$terminaltouse),
'CASHDESK_ID_BANKACCOUNT_SUMUP'.$terminaltouse, 0,
"courant=1", 1);
189 foreach ($paiements as $modep) {
190 if (in_array($modep->code, array(
'LIQ',
'CB',
'CHQ'))) {
193 $name =
"CASHDESK_ID_BANKACCOUNT_".$modep->code.$terminaltouse;
194 print
'<tr class="oddeven"><td>'.$langs->trans(
"CashDeskBankAccountFor").
' '.$langs->trans($modep->label).
'</td>';
196 if (!empty($conf->global->$name)) {
199 $cour = preg_match(
'/^LIQ.*/', $modep->code) ? 2 : 1;
200 print
img_picto(
'',
'bank_account',
'class="pictofixedwidth"');
207 print
'<tr class="oddeven"><td>'.$langs->trans(
"CashDeskDoNotDecreaseStock").
'</td>';
210 print
$form->selectyesno(
'CASHDESK_NO_DECREASE_STOCK'.$terminal,
getDolGlobalInt(
'CASHDESK_NO_DECREASE_STOCK'.$terminal), 1);
213 $res =
dolibarr_set_const($db,
"CASHDESK_NO_DECREASE_STOCK".$terminal, 1,
'chaine', 0,
'', $conf->entity);
215 print $langs->trans(
"Yes").
'<br>';
216 print
'<span class="opacitymedium">'.$langs->trans(
'StockDecreaseForPointOfSaleDisabledbyBatch').
'</span>';
220 $disabled = $conf->global->{
'CASHDESK_NO_DECREASE_STOCK'.$terminal};
223 print
'<tr class="oddeven"><td>'.$langs->trans(
"CashDeskIdWareHouse").
'</td>';
224 print
'<td class="minwidth300">';
226 print
img_picto(
'',
'bank_account',
'class="pictofixedwidth"');
227 print $formproduct->selectWarehouses($conf->global->{
'CASHDESK_ID_WAREHOUSE'.$terminal},
'CASHDESK_ID_WAREHOUSE'.$terminal,
'', 1, $disabled, 0,
'', 0, 0, array(),
'maxwidth250');
228 print
' <a href="'.DOL_URL_ROOT.
'/product/stock/card.php?action=create&backtopage='.urlencode($_SERVER[
"PHP_SELF"].
'?&terminal='.$terminal).
'"><span class="fa fa-plus-circle valignmiddle"></span></a>';
230 print
'<span class="opacitymedium">'.$langs->trans(
"StockDecreaseForPointOfSaleDisabled").
'</span>';
234 if (
isModEnabled(
'productbatch') && !empty($conf->global->CASHDESK_FORCE_DECREASE_STOCK) && !$conf->global->{
'CASHDESK_NO_DECREASE_STOCK'.$terminal}) {
235 print
'<tr class="oddeven"><td>'.$langs->trans(
'CashDeskForceDecreaseStockLabel').
'</td>';
237 print
'<span class="opacitymedium">'.$langs->trans(
'CashDeskForceDecreaseStockDesc').
'</span>';
244 require_once DOL_DOCUMENT_ROOT.
'/core/class/dolreceiptprinter.class.php';
247 $printer->listprinters();
249 foreach ($printer->listprinters as $key => $value) {
250 $printers[$value[
'rowid']] = $value[
'name'];
252 print
'<tr class="oddeven"><td>'.$langs->trans(
"MainPrinterToUse").
'</td>';
254 print
$form->selectarray(
'TAKEPOS_PRINTER_TO_USE'.$terminal, $printers,
getDolGlobalInt(
'TAKEPOS_PRINTER_TO_USE'.$terminal), 1);
257 print
'<tr class="oddeven"><td>'.$langs->trans(
"OrderPrinterToUse").
' - '.$langs->trans(
"Printer").
' 1</td>';
259 print
$form->selectarray(
'TAKEPOS_ORDER_PRINTER1_TO_USE'.$terminal, $printers,
getDolGlobalInt(
'TAKEPOS_ORDER_PRINTER1_TO_USE'.$terminal), 1);
261 print
'<tr class="oddeven"><td>'.$langs->trans(
"OrderPrinterToUse").
' - '.$langs->trans(
"Printer").
' 2</td>';
263 print
$form->selectarray(
'TAKEPOS_ORDER_PRINTER2_TO_USE'.$terminal, $printers,
getDolGlobalInt(
'TAKEPOS_ORDER_PRINTER2_TO_USE'.$terminal), 1);
265 print
'<tr class="oddeven"><td>'.$langs->trans(
"OrderPrinterToUse").
' - '.$langs->trans(
"Printer").
' 3</td>';
267 print
$form->selectarray(
'TAKEPOS_ORDER_PRINTER3_TO_USE'.$terminal, $printers,
getDolGlobalInt(
'TAKEPOS_ORDER_PRINTER3_TO_USE'.$terminal), 1);
271 $printer->listPrintersTemplates();
272 $templates = array();
273 foreach ($printer->listprinterstemplates as $key => $value) {
274 $templates[$value[
'rowid']] = $value[
'name'];
276 print
'<tr class="oddeven"><td>'.$langs->trans(
"MainTemplateToUse").
' (<a href="'.DOL_URL_ROOT.
'/admin/receiptprinter.php?mode=template">'.$langs->trans(
"SetupReceiptTemplate").
'</a>)</td>';
278 print
$form->selectarray(
'TAKEPOS_TEMPLATE_TO_USE_FOR_INVOICES'.$terminal, $templates,
getDolGlobalInt(
'TAKEPOS_TEMPLATE_TO_USE_FOR_INVOICES'.$terminal), 1);
281 print
'<tr class="oddeven"><td>'.$langs->trans(
"OrderTemplateToUse").
'</td>';
283 print
$form->selectarray(
'TAKEPOS_TEMPLATE_TO_USE_FOR_ORDERS'.$terminal, $templates,
getDolGlobalInt(
'TAKEPOS_TEMPLATE_TO_USE_FOR_ORDERS'.$terminal), 1);
288 print
'<tr class="oddeven"><td>'.$langs->trans(
'CashDeskReaderKeyCodeForEnter').
'</td>';
290 print
'<input type="text" name="CASHDESK_READER_KEYCODE_FOR_ENTER'.$terminaltouse.
'" value="'.
getDolGlobalString(
'CASHDESK_READER_KEYCODE_FOR_ENTER'.$terminaltouse).
'" />';
295 print
'<tr class="oddeven"><td>';
296 print $langs->trans(
"BillsNumberingModule");
297 print
'<td colspan="2">';
298 $array = array(0=>$langs->trans(
"Default"));
299 $dirmodels = array_merge(array(
'/'), (array) $conf->modules_parts[
'models']);
300 foreach ($dirmodels as $reldir) {
303 $handle = opendir($dir);
304 if (is_resource($handle)) {
305 while (($file = readdir($handle)) !==
false) {
306 if (!is_dir($dir.$file) || (substr($file, 0, 1) <>
'.' && substr($file, 0, 3) <>
'CVS')) {
308 $classname = preg_replace(
'/\.php$/',
'', $file);
310 if (!is_file($dir.$filebis)) {
311 $filebis = $file.
"/".$file.
".modules.php";
312 $classname =
"mod_facture_".$file;
315 preg_match(
'/\-(.*)_(.*)$/', $classname, $reg);
316 if (!empty($reg[2]) && $reg[2] != strtoupper($mysoc->country_code)) {
320 $classname = preg_replace(
'/\-.*$/',
'', $classname);
321 if (!class_exists($classname) && is_readable($dir.$filebis) && (preg_match(
'/mod_/', $filebis) || preg_match(
'/mod_/', $classname)) && substr($filebis,
dol_strlen($filebis) - 3, 3) ==
'php') {
323 require_once $dir.$filebis;
325 $module =
new $classname($db);
328 if ($module->version ==
'development' && $conf->global->MAIN_FEATURES_LEVEL < 2) {
331 if ($module->version ==
'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1) {
335 if ($module->isEnabled()) {
336 $array[preg_replace(
'/\-.*$/',
'', preg_replace(
'/\.php$/',
'', $file))] = preg_replace(
'/\-.*$/',
'', preg_replace(
'/mod_facture_/',
'', preg_replace(
'/\.php$/',
'', $file)));
345 print
$form->selectarray(
'TAKEPOS_ADDON'.$terminaltouse, $array, (empty($conf->global->{
'TAKEPOS_ADDON'.$terminaltouse}) ?
'0' : $conf->global->{
'TAKEPOS_ADDON'.$terminaltouse}), 0);
346 print
"</td></tr>\n";
356 $substitutionarray[
'__(AnyTranslationKey)__'] = $langs->trans(
'Translation');
357 $htmltext =
'<i>'.$langs->trans(
'AvailableVariables').
':<br>';
358 foreach ($substitutionarray as $key => $val) {
359 $htmltext .= $key.
'<br>';
366 print
'<div class="div-table-responsive-no-min">';
367 print
'<table class="noborder centpercent">';
368 print
'<tr class="liste_titre">';
369 print
'<td>'.$langs->trans(
"Parameters").
'</td><td>'.$langs->trans(
'Value').
'</td>';
373 print
'<tr class="oddeven">';
375 print
$form->textwithpicto($langs->trans(
'Header'), $htmltext, 1,
'help',
'', 0, 2,
'freetexttooltip').
'<br>';
378 $variablename =
'TAKEPOS_HEADER'.$terminaltouse;
380 print
'<textarea name="'.$variablename.
'" class="flat" cols="120">'.$conf->global->{$variablename}.
'</textarea>';
382 include_once DOL_DOCUMENT_ROOT.
'/core/class/doleditor.class.php';
384 print $doleditor->Create();
389 print
'<tr class="oddeven">';
391 print
$form->textwithpicto($langs->trans(
'Footer'), $htmltext, 1,
'help',
'', 0, 2,
'freetexttooltip').
'<br>';
394 $variablename =
'TAKEPOS_FOOTER'.$terminaltouse;
396 print
'<textarea name="'.$variablename.
'" class="flat" cols="120">'.$conf->global->{$variablename}.
'</textarea>';
398 include_once DOL_DOCUMENT_ROOT.
'/core/class/doleditor.class.php';
400 print $doleditor->Create();
408 print
info_admin($langs->trans(
"AtLeastOneDefaultBankAccountMandatory"), 0, 0,
'error');
413 print
$form->buttonsSaveCancel(
"Save",
'');
Class to manage Receipt Printers.
load_fiche_titre($titre, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
if($cancel &&! $id) if($action=='add' &&! $cancel) if($action=='delete') if($id) $form
Actions.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
takepos_admin_prepare_head()
Prepare array with list of tabs.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='')
Show tabs of a record.
if(!function_exists('utf8_encode')) if(!function_exists('utf8_decode')) getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
dol_strlen($string, $stringencoding='UTF-8')
Make a strlen call.
info_admin($text, $infoonimgalt=0, $nodiv=0, $admin='1', $morecss='hideonsmartphone', $textfordropdown='')
Show information for admin users or standard users.
isModEnabled($module)
Is Dolibarr module enabled.
dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $note='', $entity=1)
Insert a parameter (key,value) into database (delete old key then insert it again).
if(isModEnabled('facture') &&!empty($user->rights->facture->lire)) if((isModEnabled('fournisseur') &&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->rights->fournisseur->facture->lire)||(isModEnabled('supplier_invoice') && $user->rights->supplier_invoice->lire)) if(isModEnabled('don') &&!empty($user->rights->don->lire)) if(isModEnabled('tax') &&!empty($user->rights->tax->charges->lire)) if(isModEnabled('facture') &&isModEnabled('commande') && $user->rights->commande->lire &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) $resql
Social contributions to pay.
pdf_getSubstitutionArray($outputlangs, $exclude=null, $object=null, $onlykey=0)
Return array of possible substitutions for PDF content (without external module substitutions).
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='')
Set event messages in dol_events session object.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program Calling this function terminate execution ...
getDolGlobalInt($key, $default=0)
Return dolibarr global constant int value.
if(!defined('NOREQUIRESOC')) if(!defined('NOREQUIRETRAN')) if(!defined('NOCSRFCHECK')) if(!defined('NOTOKENRENEWAL')) if(!defined('NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined('NOREQUIREAJAX')) llxHeader()
Empty header.
Class to manage a WYSIWYG editor.