24 require
'../main.inc.php';
25 require_once DOL_DOCUMENT_ROOT.
'/core/lib/admin.lib.php';
26 require_once DOL_DOCUMENT_ROOT.
'/core/lib/pdf.lib.php';
27 require_once DOL_DOCUMENT_ROOT.
'/mrp/class/mo.class.php';
28 require_once DOL_DOCUMENT_ROOT.
'/mrp/lib/mrp_mo.lib.php';
29 require_once DOL_DOCUMENT_ROOT.
'/mrp/lib/mrp.lib.php';
32 $langs->loadLangs(array(
'admin',
'errors',
'mrp',
'other'));
38 $action =
GETPOST(
'action',
'aZ09');
39 $value =
GETPOST(
'value',
'alpha');
40 $modulepart =
GETPOST(
'modulepart',
'aZ09');
42 $label =
GETPOST(
'label',
'alpha');
43 $scandir =
GETPOST(
'scan_dir',
'alpha');
51 include DOL_DOCUMENT_ROOT.
'/core/actions_setmoduleoptions.inc.php';
53 if ($action ==
'updateMask') {
54 $maskconstmrp =
GETPOST(
'maskconstMo',
'alpha');
55 $maskmrp =
GETPOST(
'maskMo',
'alpha');
58 $res =
dolibarr_set_const($db, $maskconstmrp, $maskmrp,
'chaine', 0,
'', $conf->entity);
70 } elseif ($action ==
'specimen') {
71 $modele =
GETPOST(
'module',
'alpha');
74 $mo->initAsSpecimen();
77 $file =
''; $classname =
''; $filefound = 0;
78 $dirmodels = array_merge(array(
'/'), (array) $conf->modules_parts[
'models']);
79 foreach ($dirmodels as $reldir) {
80 $file =
dol_buildpath($reldir.
"core/modules/mrp/doc/pdf_".$modele.
".modules.php", 0);
81 if (file_exists($file)) {
83 $classname =
"pdf_".$modele;
91 $module =
new $classname($db);
93 if ($module->write_file($mo, $langs) > 0) {
94 header(
"Location: ".DOL_URL_ROOT.
"/document.php?modulepart=mrp&file=SPECIMEN.pdf");
102 dol_syslog($langs->trans(
"ErrorModuleNotFound"), LOG_ERR);
104 } elseif ($action ==
'set') {
107 } elseif ($action ==
'del') {
110 if ($conf->global->MRP_MO_ADDON_PDF ==
"$value") {
114 } elseif ($action ==
'setdoc') {
116 if (
dolibarr_set_const($db,
"MRP_MO_ADDON_PDF", $value,
'chaine', 0,
'', $conf->entity)) {
119 $conf->global->MRP_MO_ADDON_PDF = $value;
127 } elseif ($action ==
'setmod') {
132 } elseif ($action ==
'set_MRP_MO_DRAFT_WATERMARK') {
133 $draft =
GETPOST(
"MRP_MO_DRAFT_WATERMARK");
134 $res =
dolibarr_set_const($db,
"MRP_MO_DRAFT_WATERMARK", trim($draft),
'chaine', 0,
'', $conf->entity);
145 } elseif ($action ==
'set_MRP_MO_FREE_TEXT') {
146 $freetext =
GETPOST(
"MRP_MO_FREE_TEXT",
'restricthtml');
148 $res =
dolibarr_set_const($db,
"MRP_MO_FREE_TEXT", $freetext,
'chaine', 0,
'', $conf->entity);
168 $dirmodels = array_merge(array(
'/'), (array) $conf->modules_parts[
'models']);
170 llxHeader(
"", $langs->trans(
"MrpSetupPage"));
172 $linkback =
'<a href="'.DOL_URL_ROOT.
'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans(
"BackToModuleList").
'</a>';
173 print
load_fiche_titre($langs->trans(
"MrpSetupPage"), $linkback,
'title_setup');
185 print
'<table class="noborder centpercent">';
186 print
'<tr class="liste_titre">';
187 print
'<td>'.$langs->trans(
"Name").
'</td>';
188 print
'<td>'.$langs->trans(
"Description").
'</td>';
189 print
'<td class="nowrap">'.$langs->trans(
"Example").
'</td>';
190 print
'<td class="center" width="60">'.$langs->trans(
"Status").
'</td>';
191 print
'<td class="center" width="16">'.$langs->trans(
"ShortInfo").
'</td>';
196 foreach ($dirmodels as $reldir) {
200 $handle = opendir($dir);
201 if (is_resource($handle)) {
202 while (($file = readdir($handle)) !==
false) {
203 if (substr($file, 0, 7) ==
'mod_mo_' && substr($file,
dol_strlen($file) - 3, 3) ==
'php') {
204 $file = substr($file, 0,
dol_strlen($file) - 4);
206 require_once $dir.$file.
'.php';
208 $module =
new $file($db);
211 if ($module->version ==
'development' && $conf->global->MAIN_FEATURES_LEVEL < 2) {
214 if ($module->version ==
'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1) {
218 if ($module->isEnabled()) {
219 print
'<tr class="oddeven"><td>'.$module->name.
"</td><td>\n";
220 print $module->info();
224 print
'<td class="nowrap">';
225 $tmp = $module->getExample();
226 if (preg_match(
'/^Error/', $tmp)) {
227 $langs->load(
"errors");
228 print
'<div class="error">'.$langs->trans($tmp).
'</div>';
229 } elseif ($tmp ==
'NotConfigured') {
230 print
'<span class="opacitymedium">'.$langs->trans($tmp).
'</span>';
236 print
'<td class="center">';
237 if ($conf->global->MRP_MO_ADDON == $file) {
238 print
img_picto($langs->trans(
"Activated"),
'switch_on');
240 print
'<a class="reposition" href="'.$_SERVER[
"PHP_SELF"].
'?action=setmod&token='.
newToken().
'&value='.urlencode($file).
'">';
241 print
img_picto($langs->trans(
"Disabled"),
'switch_off');
247 $mrp->initAsSpecimen();
251 $htmltooltip .=
''.$langs->trans(
"Version").
': <b>'.$module->getVersion().
'</b><br>';
253 $nextval = $module->getNextValue($mysoc, $mrp);
254 if (
"$nextval" != $langs->trans(
"NotAvailable")) {
255 $htmltooltip .=
''.$langs->trans(
"NextValue").
': ';
257 if (preg_match(
'/^Error/', $nextval) || $nextval ==
'NotConfigured') {
258 $nextval = $langs->trans($nextval);
260 $htmltooltip .= $nextval.
'<br>';
262 $htmltooltip .= $langs->trans($module->error).
'<br>';
266 print
'<td class="center">';
267 print
$form->textwithpicto(
'', $htmltooltip, 1, 0);
278 print
"</table><br>\n";
290 $sql .=
" FROM ".MAIN_DB_PREFIX.
"document_model";
291 $sql .=
" WHERE type = '".$db->escape($type).
"'";
292 $sql .=
" AND entity = ".$conf->entity;
293 $resql = $db->query($sql);
296 $num_rows = $db->num_rows(
$resql);
297 while ($i < $num_rows) {
298 $array = $db->fetch_array(
$resql);
299 array_push($def, $array[0]);
307 print
"<table class=\"noborder\" width=\"100%\">\n";
308 print
"<tr class=\"liste_titre\">\n";
309 print
'<td>'.$langs->trans(
"Name").
'</td>';
310 print
'<td>'.$langs->trans(
"Description").
'</td>';
311 print
'<td class="center" width="60">'.$langs->trans(
"Status").
"</td>\n";
312 print
'<td class="center" width="60">'.$langs->trans(
"Default").
"</td>\n";
313 print
'<td class="center" width="38">'.$langs->trans(
"ShortInfo").
'</td>';
314 print
'<td class="center" width="38">'.$langs->trans(
"Preview").
'</td>';
319 foreach ($dirmodels as $reldir) {
320 foreach (array(
'',
'/doc') as $valdir) {
321 $realpath = $reldir.
"core/modules/mrp".$valdir;
325 $handle = opendir($dir);
326 if (is_resource($handle)) {
327 while (($file = readdir($handle)) !==
false) {
333 foreach ($filelist as $file) {
334 if (preg_match(
'/\.modules\.php$/i', $file) && preg_match(
'/^(pdf_|doc_)/', $file)) {
335 if (file_exists($dir.
'/'.$file)) {
336 $name = substr($file, 4,
dol_strlen($file) - 16);
337 $classname = substr($file, 0,
dol_strlen($file) - 12);
339 require_once $dir.
'/'.$file;
340 $module =
new $classname($db);
342 $modulequalified = 1;
343 if ($module->version ==
'development' && $conf->global->MAIN_FEATURES_LEVEL < 2) {
344 $modulequalified = 0;
346 if ($module->version ==
'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1) {
347 $modulequalified = 0;
350 if ($modulequalified) {
351 print
'<tr class="oddeven"><td width="100">';
352 print (empty($module->name) ? $name : $module->name);
354 if (method_exists($module,
'info')) {
355 print $module->info($langs);
357 print $module->description;
362 if (in_array($name, $def)) {
363 print
'<td class="center">'.
"\n";
364 print
'<a class="reposition" href="'.$_SERVER[
"PHP_SELF"].
'?action=del&token='.
newToken().
'&value='.urlencode($name).
'">';
365 print
img_picto($langs->trans(
"Enabled"),
'switch_on');
369 print
'<td class="center">'.
"\n";
370 print
'<a class="reposition" href="'.$_SERVER[
"PHP_SELF"].
'?action=set&token='.
newToken().
'&value='.urlencode($name).
'&scan_dir='.urlencode($module->scandir).
'&label='.urlencode($module->name).
'">'.
img_picto($langs->trans(
"Disabled"),
'switch_off').
'</a>';
375 print
'<td class="center">';
376 if ($conf->global->MRP_MO_ADDON_PDF == $name) {
377 print
img_picto($langs->trans(
"Default"),
'on');
379 print
'<a class="reposition" href="'.$_SERVER[
"PHP_SELF"].
'?action=setdoc&token='.
newToken().
'&value='.urlencode($name).
'&scan_dir='.urlencode($module->scandir).
'&label='.urlencode($module->name).
'" alt="'.$langs->trans(
"Default").
'">'.
img_picto($langs->trans(
"Disabled"),
'off').
'</a>';
384 $htmltooltip =
''.$langs->trans(
"Name").
': '.$module->name;
385 $htmltooltip .=
'<br>'.$langs->trans(
"Type").
': '.($module->type ? $module->type : $langs->trans(
"Unknown"));
386 if ($module->type ==
'pdf') {
387 $htmltooltip .=
'<br>'.$langs->trans(
"Width").
'/'.$langs->trans(
"Height").
': '.$module->page_largeur.
'/'.$module->page_hauteur;
389 $htmltooltip .=
'<br>'.$langs->trans(
"Path").
': '.preg_replace(
'/^\//',
'', $realpath).
'/'.$file;
391 $htmltooltip .=
'<br><br><u>'.$langs->trans(
"FeaturesSupported").
':</u>';
392 $htmltooltip .=
'<br>'.$langs->trans(
"MultiLanguage").
': '.
yn($module->option_multilang, 1, 1);
393 $htmltooltip .=
'<br>'.$langs->trans(
"WatermarkOnDraftMOs").
': '.
yn($module->option_draft_watermark, 1, 1);
396 print
'<td class="center">';
397 print
$form->textwithpicto(
'', $htmltooltip, 1, 0);
401 print
'<td class="center">';
402 if ($module->type ==
'pdf') {
403 print
'<a href="'.$_SERVER[
"PHP_SELF"].
'?action=specimen&module='.$name.
'">'.
img_object($langs->trans(
"Preview"),
'pdf').
'</a>';
405 print
img_object($langs->trans(
"PreviewNotAvailable"),
'generic');
427 print
'<table class="noborder centpercent">';
428 print
'<tr class="liste_titre">';
429 print
'<td>'.$langs->trans(
"Parameter").
'</td>';
430 print
'<td class="center" width="60">'.$langs->trans(
"Value").
'</td>';
431 print
"<td> </td>\n";
435 $substitutionarray[
'__(AnyTranslationKey)__'] = $langs->trans(
"Translation");
436 $htmltext =
'<i>'.$langs->trans(
"AvailableVariables").
':<br>';
437 foreach ($substitutionarray as $key => $val) {
438 $htmltext .= $key.
'<br>';
442 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'" method="post">';
443 print
'<input type="hidden" name="token" value="'.newToken().
'">';
444 print
'<input type="hidden" name="action" value="set_MRP_MO_FREE_TEXT">';
445 print
'<tr class="oddeven"><td colspan="2">';
446 print
$form->textwithpicto($langs->trans(
"FreeLegalTextOnMOs"), $langs->trans(
"AddCRIfTooLong").
'<br><br>'.$htmltext, 1,
'help',
'', 0, 2,
'freetexttooltip').
'<br>';
447 $variablename =
'MRP_MO_FREE_TEXT';
448 if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT)) {
449 print
'<textarea name="'.$variablename.
'" class="flat" cols="120">'.
getDolGlobalString($variablename).
'</textarea>';
451 include_once DOL_DOCUMENT_ROOT.
'/core/class/doleditor.class.php';
453 print $doleditor->Create();
455 print
'</td><td class="right">';
456 print
'<input type="submit" class="button button-edit" value="'.$langs->trans(
"Modify").
'">';
457 print
"</td></tr>\n";
462 print
"<form method=\"post\" action=\"".$_SERVER[
"PHP_SELF"].
"\">";
463 print
'<input type="hidden" name="token" value="'.newToken().
'">';
464 print
"<input type=\"hidden\" name=\"action\" value=\"set_MRP_MO_DRAFT_WATERMARK\">";
465 print
'<tr class="oddeven"><td>';
466 print
$form->textwithpicto($langs->trans(
"WatermarkOnDraftMOs"), $htmltext, 1,
'help',
'', 0, 2,
'watermarktooltip').
'<br>';
468 print
'<input class="flat minwidth200" type="text" name="MRP_MO_DRAFT_WATERMARK" value="'.dol_escape_htmltag(
getDolGlobalString(
'MRP_MO_DRAFT_WATERMARK')).
'">';
469 print
'</td><td class="right">';
470 print
'<input type="submit" class="button button-edit" value="'.$langs->trans(
"Modify").
'">';
471 print
"</td></tr>\n";
GETPOST($paramname, $check= 'alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
delDocumentModel($name, $type)
Delete document model used by doc generator.
yn($yesno, $case=1, $color=0)
Return yes or no in current language.
if($cancel &&!$id) if($action== 'add'&&!$cancel) if($action== 'delete') if($id) $form
Actions.
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).
addDocumentModel($name, $type, $label= '', $description= '')
Add document model used by doc generator.
if(!function_exists('utf8_encode')) if(!function_exists('utf8_decode')) getDolGlobalString($key, $default= '')
Return dolibarr global constant string 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.
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
setEventMessages($mesg, $mesgs, $style= 'mesgs', $messagekey= '')
Set event messages in dol_events session object.
load_fiche_titre($titre, $morehtmlright= '', $picto= 'generic', $pictoisfullpath=0, $id= '', $morecssontable= '', $morehtmlcenter= '')
Load a title with picto.
dol_strlen($string, $stringencoding= 'UTF-8')
Make a strlen call.
dolibarr_del_const($db, $name, $entity=1)
Delete a constant.
img_picto($titlealt, $picto, $moreatt= '', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt= '', $morecss= '', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename= '', $restricttologhandler= '', $logcontext=null)
Write log message into outputs.
img_object($titlealt, $picto, $moreatt= '', $pictoisfullpath=false, $srconly=0, $notitle=0)
Show a picto called object_picto (generic function)
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 ...
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).
dol_get_fiche_head($links=array(), $active= '', $title= '', $notab=0, $picto= '', $pictoisfullpath=0, $morehtmlright= '', $morecss= '', $limittoshow=0, $moretabssuffix= '')
Show tabs of a record.
mrpAdminPrepareHead()
Prepare admin pages header.
dol_print_error($db= '', $error= '', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
newToken()
Return the value of token currently saved into session with name 'newtoken'.
Class to manage a WYSIWYG editor.