?iť?
Current Path : /home/s/c/g/scgforma/www/soctest/htdocs/core/class/ |
Current File : /home/s/c/g/scgforma/www/soctest/htdocs/core/class/html.formadmin.class.php |
<?php /* Copyright (C) 2004-2014 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2011 Regis Houssin <regis.houssin@inodbox.com> * Copyright (C) 2007 Patrick Raguin <patrick.raguin@gmail.com> * * 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 <http://www.gnu.org/licenses/>. */ /** * \file htdocs/core/class/html.formadmin.class.php * \ingroup core * \brief File of class for html functions for admin pages */ /** * Class to generate html code for admin pages */ class FormAdmin { public $db; public $error; /** * Constructor * * @param DoliDB $db Database handler */ public function __construct($db) { $this->db = $db; } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** * Return html select list with available languages (key='en_US', value='United States' for example) * * @param string $selected Language pre-selected * @param string $htmlname Name of HTML select * @param int $showauto Show 'auto' choice * @param array $filter Array of keys to exclude in list * @param string $showempty '1'=Add empty value or string to show * @param int $showwarning Show a warning if language is not complete * @param int $disabled Disable edit of select * @param string $morecss Add more css styles * @param int $showcode 1=Add language code into label at begining, 2=Add language code into label at end * @param int $forcecombo Force to use combo box (so no ajax beautify effect) * @return string Return HTML select string with list of languages */ public function select_language($selected = '', $htmlname = 'lang_id', $showauto = 0, $filter = null, $showempty = '', $showwarning = 0, $disabled = 0, $morecss = '', $showcode = 0, $forcecombo = 0) { // phpcs:enable global $conf, $langs; if (!empty($conf->global->MAIN_DEFAULT_LANGUAGE_FILTER)) $filter[$conf->global->MAIN_DEFAULT_LANGUAGE_FILTER] = 1; $langs_available=$langs->get_available_languages(DOL_DOCUMENT_ROOT, 12); $out=''; $out.= '<select class="flat'.($morecss?' '.$morecss:'').'" id="'.$htmlname.'" name="'.$htmlname.'"'.($disabled?' disabled':'').'>'; if ($showempty) { $out.= '<option value="0"'; if ($selected == '') $out.= ' selected'; $out.= '>'; if ($showempty != '1') $out.=$showempty; else $out.=' '; $out.='</option>'; } if ($showauto) { $out.= '<option value="auto"'; if ($selected == 'auto') $out.= ' selected'; $out.= '>'.$langs->trans("AutoDetectLang").'</option>'; } asort($langs_available); foreach ($langs_available as $key => $value) { $valuetoshow=$value; if ($showcode == 1) $valuetoshow=$key.' - '.$value; if ($showcode == 2) $valuetoshow=$value.' ('.$key.')'; if ($filter && is_array($filter)) { if ( ! array_key_exists($key, $filter)) { $out.= '<option value="'.$key.'">'.$valuetoshow.'</option>'; } } elseif ($selected == $key) { $out.= '<option value="'.$key.'" selected>'.$valuetoshow.'</option>'; } else { $out.= '<option value="'.$key.'">'.$valuetoshow.'</option>'; } } $out.= '</select>'; // Make select dynamic if (! $forcecombo) { include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php'; $out.= ajax_combobox($htmlname); } return $out; } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** * Return list of available menus (eldy_backoffice, ...) * * @param string $selected Preselected menu value * @param string $htmlname Name of html select * @param array $dirmenuarray Array of directories to scan * @param string $moreattrib More attributes on html select tag * @return integer|null */ public function select_menu($selected, $htmlname, $dirmenuarray, $moreattrib = '') { // phpcs:enable global $langs,$conf; // Clean parameters // Check parameters if (! is_array($dirmenuarray)) return -1; $menuarray=array(); foreach ($conf->file->dol_document_root as $dirroot) { foreach($dirmenuarray as $dirtoscan) { $dir=$dirroot.$dirtoscan; //print $dir.'<br>'; if (is_dir($dir)) { $handle=opendir($dir); if (is_resource($handle)) { while (($file = readdir($handle))!==false) { if (is_file($dir."/".$file) && substr($file, 0, 1) <> '.' && substr($file, 0, 3) <> 'CVS' && substr($file, 0, 5) != 'index') { if (preg_match('/lib\.php$/i', $file)) continue; // We exclude library files if (preg_match('/eldy_(backoffice|frontoffice)\.php$/i', $file)) continue; // We exclude all menu manager files if (preg_match('/auguria_(backoffice|frontoffice)\.php$/i', $file)) continue; // We exclude all menu manager files if (preg_match('/smartphone_(backoffice|frontoffice)\.php$/i', $file)) continue; // We exclude all menu manager files $filelib=preg_replace('/\.php$/i', '', $file); $prefix=''; // 0=Recommanded, 1=Experimental, 2=Developpement, 3=Other if (preg_match('/^eldy/i', $file)) $prefix='0'; elseif (preg_match('/^smartphone/i', $file)) $prefix='2'; else $prefix='3'; if ($file == $selected) { $menuarray[$prefix.'_'.$file]='<option value="'.$file.'" selected>'.$filelib.'</option>'; } else { $menuarray[$prefix.'_'.$file]='<option value="'.$file.'">'.$filelib.'</option>'; } } } closedir($handle); } } } } ksort($menuarray); // Output combo list of menus print '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'"'.($moreattrib?' '.$moreattrib:'').'>'; $oldprefix=''; foreach ($menuarray as $key => $val) { $tab=explode('_', $key); $newprefix=$tab[0]; if ($newprefix=='1' && ($conf->global->MAIN_FEATURES_LEVEL < 1)) continue; if ($newprefix=='2' && ($conf->global->MAIN_FEATURES_LEVEL < 2)) continue; if ($newprefix != $oldprefix) // Add separators { // Affiche titre print '<option value="-1" disabled>'; if ($newprefix=='0') print '-- '.$langs->trans("VersionRecommanded").' --'; if ($newprefix=='1') print '-- '.$langs->trans("VersionExperimental").' --'; if ($newprefix=='2') print '-- '.$langs->trans("VersionDevelopment").' --'; if ($newprefix=='3') print '-- '.$langs->trans("Other").' --'; print '</option>'; $oldprefix=$newprefix; } print $val."\n"; // Show menu entry } print '</select>'; } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** * Return combo list of available menu families * * @param string $selected Menu pre-selected * @param string $htmlname Name of html select * @param string[] $dirmenuarray Directories to scan * @return void */ public function select_menu_families($selected, $htmlname, $dirmenuarray) { // phpcs:enable global $langs,$conf; //$expdevmenu=array('smartphone_backoffice.php','smartphone_frontoffice.php'); // Menu to disable if $conf->global->MAIN_FEATURES_LEVEL is not set $expdevmenu=array(); $menuarray=array(); foreach($dirmenuarray as $dirmenu) { foreach ($conf->file->dol_document_root as $dirroot) { $dir=$dirroot.$dirmenu; if (is_dir($dir)) { $handle=opendir($dir); if (is_resource($handle)) { while (($file = readdir($handle))!==false) { if (is_file($dir."/".$file) && substr($file, 0, 1) <> '.' && substr($file, 0, 3) <> 'CVS') { $filelib=preg_replace('/(_backoffice|_frontoffice)?\.php$/i', '', $file); if (preg_match('/^index/i', $filelib)) continue; if (preg_match('/^default/i', $filelib)) continue; if (preg_match('/^empty/i', $filelib)) continue; if (preg_match('/\.lib/i', $filelib)) continue; if (empty($conf->global->MAIN_FEATURES_LEVEL) && in_array($file, $expdevmenu)) continue; $menuarray[$filelib]=1; } $menuarray['all']=1; } closedir($handle); } } } } ksort($menuarray); // Affichage liste deroulante des menus print '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'">'; $oldprefix=''; foreach ($menuarray as $key => $val) { $tab=explode('_', $key); $newprefix=$tab[0]; print '<option value="'.$key.'"'; if ($key == $selected) { print ' selected'; } print '>'; if ($key == 'all') print $langs->trans("AllMenus"); else print $key; print '</option>'."\n"; } print '</select>'; } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** * Return a HTML select list of timezones * * @param string $selected Menu pre-selectionnee * @param string $htmlname Nom de la zone select * @return void */ public function select_timezone($selected, $htmlname) { // phpcs:enable global $langs,$conf; print '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'">'; print '<option value="-1"> </option>'; $arraytz = array( "Pacific/Midway"=>"GMT-11:00", "Pacific/Fakaofo"=>"GMT-10:00", "America/Anchorage"=>"GMT-09:00", "America/Los_Angeles"=>"GMT-08:00", "America/Dawson_Creek"=>"GMT-07:00", "America/Chicago"=>"GMT-06:00", "America/Bogota"=>"GMT-05:00", "America/Anguilla"=>"GMT-04:00", "America/Araguaina"=>"GMT-03:00", "America/Noronha"=>"GMT-02:00", "Atlantic/Azores"=>"GMT-01:00", "Africa/Abidjan"=>"GMT+00:00", "Europe/Paris"=>"GMT+01:00", "Europe/Helsinki"=>"GMT+02:00", "Europe/Moscow"=>"GMT+03:00", "Asia/Dubai"=>"GMT+04:00", "Asia/Karachi"=>"GMT+05:00", "Indian/Chagos"=>"GMT+06:00", "Asia/Jakarta"=>"GMT+07:00", "Asia/Hong_Kong"=>"GMT+08:00", "Asia/Tokyo"=>"GMT+09:00", "Australia/Sydney"=>"GMT+10:00", "Pacific/Noumea"=>"GMT+11:00", "Pacific/Auckland"=>"GMT+12:00", "Pacific/Enderbury"=>"GMT+13:00" ); foreach ($arraytz as $lib => $gmt) { print '<option value="'.$lib.'"'; if ($selected == $lib || $selected == $gmt) print ' selected'; print '>'.$gmt.'</option>'."\n"; } print '</select>'; } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** * Return html select list with available languages (key='en_US', value='United States' for example) * * @param string $selected Paper format pre-selected * @param string $htmlname Name of HTML select field * @param string $filter Value to filter on code * @param int $showempty Add empty value * @return string Return HTML output */ public function select_paper_format($selected = '', $htmlname = 'paperformat_id', $filter = 0, $showempty = 0) { // phpcs:enable global $langs; $langs->load("dict"); $sql = "SELECT code, label, width, height, unit"; $sql.= " FROM ".MAIN_DB_PREFIX."c_paper_format"; $sql.= " WHERE active=1"; if ($filter) $sql.=" AND code LIKE '%".$this->db->escape($filter)."%'"; $resql=$this->db->query($sql); if ($resql) { $num=$this->db->num_rows($resql); $i=0; while ($i < $num) { $obj=$this->db->fetch_object($resql); $unitKey = $langs->trans('SizeUnit'.$obj->unit); $paperformat[$obj->code]= $langs->trans('PaperFormat'.strtoupper($obj->code)).' - '.round($obj->width).'x'.round($obj->height).' '.($unitKey == 'SizeUnit'.$obj->unit ? $obj->unit : $unitKey); $i++; } } else { dol_print_error($this->db); return ''; } $out=''; $out.= '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'">'; if ($showempty) { $out.= '<option value=""'; if ($selected == '') $out.= ' selected'; $out.= '> </option>'; } foreach ($paperformat as $key => $value) { if ($selected == $key) { $out.= '<option value="'.$key.'" selected>'.$value.'</option>'; } else { $out.= '<option value="'.$key.'">'.$value.'</option>'; } } $out.= '</select>'; return $out; } }