diff --git a/htdocs/admin/tools/ui/class/documentation.class.php b/htdocs/admin/tools/ui/class/documentation.class.php index 642b07121da..3c2c0180cc8 100644 --- a/htdocs/admin/tools/ui/class/documentation.class.php +++ b/htdocs/admin/tools/ui/class/documentation.class.php @@ -155,6 +155,15 @@ class Documentation 'DocSetEventMessageContextualVariations' => '#seteventmessagesection-contextvariations', ) ), + 'Inputs' => array( + 'url' => dol_buildpath($baseUrl.'/components/inputs.php', 1), + 'icon' => 'fas fa-comments pictofixedwidth', + 'submenu' => array(), + 'summary' => array( + 'DocBasicUsage' => '#setinputssection-basicusage', + 'DocHelperFunctionsInputUsage' => '#setinputssection-helperfunctions', + ) + ), ), 'summary' => array( 'keySum' => '#keySum' diff --git a/htdocs/admin/tools/ui/components/inputs.php b/htdocs/admin/tools/ui/components/inputs.php new file mode 100644 index 00000000000..3f8c7edda78 --- /dev/null +++ b/htdocs/admin/tools/ui/components/inputs.php @@ -0,0 +1,308 @@ + + * + * This program and files/directory inner it is free software: you can + * redistribute it and/or modify it under the terms of the + * GNU Affero General Public License (AGPL) 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 AGPL for more details. + * + * You should have received a copy of the GNU AGPL + * along with this program. If not, see . + */ + +// Load Dolibarr environment +require '../../../../main.inc.php'; + +/** + * @var DoliDB $db + * @var HookManager $hookmanager + * @var Translate $langs + * @var User $user + */ + +// Protection if external user +if ($user->socid > 0) : accessforbidden(); +endif; + +// Includes +dol_include_once('admin/tools/ui/class/documentation.class.php'); +require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; + +// Load documentation translations +$langs->load('uxdocumentation'); + +$action = GETPOST('action', 'alpha'); + +// +$documentation = new Documentation($db); + +// Output html head + body - Param is Title +$documentation->docHeader('Inputs'); + +// Set view for menu and breadcrumb +// Menu must be set in constructor of documentation class +$documentation->view = array('Components','Inputs'); + +// Output sidebar +$documentation->showSidebar(); ?> + +
+ + showBreadCrumb(); ?> + +
+ +

trans('DocInputsTitle'); ?>

+

trans('DocInputsMainDescription'); ?>

+ + + showSummary(); ?> + + +
+

trans('DocBasicUsage'); ?>

+ +

trans('DocClassicInputsDescription'); ?>

+
+ Available Input + +

+ Disabled Input + +
+ Available Input', + '', + '', + 'Disabled Input', + '', + ); + echo $documentation->showCode($lines); ?> + + +

trans('DocCheckboxInputsDescription'); ?>

+
+ + + +
+ ', + '', + '', + ); + echo $documentation->showCode($lines); ?> + + +

trans('DocRadioInputsDescription'); ?>

+
+ Radio Input +
+ Radio Input' + ); + echo $documentation->showCode($lines); ?> +
+ + +
+

trans('DocHelperFunctionsInputUsage'); ?>

+

trans('DocSelectInputsDescription'); ?>

+
+ Select with empty value + 'value 1', '2' => 'value 2', '3' => 'value 3']; + $form = new Form($db); + print $form->selectarray('htmlnameselectwithemptyvalue', $values, 'idselectwithemptyvalue', 1, 0, 0, '', 0, 0, 0, '', 'minwidth200'); + ?> +

+ Select within empty value + 'value 1', '2' => 'value 2', '3' => 'value 3']; + $form = new Form($db); + print $form->selectarray('htmlnameselectwithinemptyvalue', $values, 'idnameselectwithinemptyvalue', 0, 0, 0, '', 0, 0, 0, '', 'minwidth200'); + ?> +
+ value) or array(key=>array(\'label\'=>..., \'data-...\'=>..., \'disabled\'=>..., \'css\'=>...)),', + ' * @param string|string[]|int $id Preselected key or array of preselected keys for multiselect. Use \'ifone\' to autoselect record if there is only one record.,', + ' * @param int<0,1>|string $show_empty 0 no empty value allowed, 1 or string to add an empty value into list (If 1: key is -1 and value is \'\' or " ", If \'Placeholder string\': key is -1 and value is the string), <0 to add an empty value with key that is this value.,', + ' * @param int<0,1> $key_in_label 1 to show key into label with format "[key] value",', + ' * @param int<0,1> $value_as_key 1 to use value as key,', + ' * @param string $moreparam Add more parameters onto the select tag. For example "style=\"width: 95%\"" to avoid select2 component to go over parent container,', + ' * @param int<0,1> $translate 1=Translate and encode value,', + ' * @param int $maxlen Length maximum for labels,', + ' * @param int<0,1> $disabled Html select box is disabled,', + ' * @param string $sort \'ASC\' or \'DESC\' = Sort on label, \'\' or \'NONE\' or \'POS\' = Do not sort, we keep original order,', + ' * @param string $morecss Add more class to css styles,', + ' * @param int $addjscombo Add js combo,', + ' * @param string $moreparamonempty Add more param on the empty option line. Not used if show_empty not set,', + ' * @param int $disablebademail 1=Check if a not valid email, 2=Check string \'---\', and if found into value, disable and colorize entry,', + ' * @param int $nohtmlescape No html escaping (not recommended, use \'data-html\' if you need to use label with HTML content).,', + ' * @return string HTML select string.,', + ' */', + '', + 'Select with empty value', + 'print $form->selectarray(\'htmlnameselectwithemptyvalue\', $values, \'idselectwithemptyvalue\', 1, 0, 0, \'\', 0, 0, 0, \'\', \'minwidth200\');', + '', + 'Select within empty value', + 'print $form->selectarray(\'htmlnameselectwithinemptyvalue\', $values, \'idnameselectwithinemptyvalue\', 0,0, 0, \'\', 0, 0, 0, \'\', \'minwidth200\');', + + ); + echo $documentation->showCode($lines); ?> + + +

trans('DocMultiSelectInputsDescription'); ?>

+
+ Multiselect + 'value 1', '2' => 'value 2', '3' => 'value 3']; + $form = new Form($db); + print $form->multiselectarray('categories', $values, GETPOST('categories', 'array'), 0, 0, 'minwidth200', 0, 0); + ?> +
+ $array Array(key=>value) or Array(key=>array(\'id\'=>key, \'label\'=>value, \'color\'=> , \'picto\'=> , \'labelhtml\'=> ))', + ' * @param string[] $selected Array of keys preselected', + ' * @param int<0,1> $key_in_label 1 to show key like in "[key] value"', + ' * @param int<0,1> $value_as_key 1 to use value as key', + ' * @param string $morecss Add more css style', + ' * @param int<0,1> $translate Translate and encode value', + ' * @param int|string $width Force width of select box. May be used only when using jquery couch. Example: 250, \'95%\'', + ' * @param string $moreattrib Add more options on select component. Example: \'disabled\'', + ' * @param string $elemtype Type of element we show (\'category\', ...). Will execute a formatting function on it. To use in readonly mode if js component support HTML formatting.', + ' * @param string $placeholder String to use as placeholder', + ' * @param int<-1,1> $addjscombo Add js combo', + ' * @return string HTML multiselect string', + ' * @see selectarray(), selectArrayAjax(), selectArrayFilter()', + ' */', + '', + 'Multiselect', + 'print $form->multiselectarray(\'categories\', $values, GETPOST(\'categories\', \'array\'), 0, 0, \'minwidth200\', 0, 0);' + ); + echo $documentation->showCode($lines); ?> + + +

trans('DocDateSelectInputsDescription'); ?>

+
+ Date Select + 'value 1', '2' => 'value 2', '3' => 'value 3']; + $form = new Form($db); + print $form->selectDate(); + ?> +

+ Date Select with hours + 'value 1', '2' => 'value 2', '3' => 'value 3']; + $form = new Form($db); + print $form->selectDate('', 're2', 1, 1, 1); + ?> +
+ $d 1=Show days, month, years,', + ' * @param int<0,2> $addnowlink Add a link "Now", 1 with server time, 2 with local computer time,', + ' * @param int<0,1> $disabled Disable input fields,', + ' * @param int|string $fullday When a checkbox with id #fullday is checked, hours are set with 00:00 (if value if \'fulldaystart\') or 23:59 (if value is \'fulldayend\'),', + ' * @param string $addplusone Add a link "+1 hour". Value must be name of another selectDate field.,', + ' * @param int|string|array $adddateof Add a link "Date of ..." using the following date. Must be array(array(\'adddateof\' => ..., \'labeladddateof\' => ...)),', + ' * @param string $openinghours Specify hour start and hour end for the select ex 8,20,', + ' * @param int $stepminutes Specify step for minutes between 1 and 30,', + ' * @param string $labeladddateof Label to use for the $adddateof parameter. Deprecated. Used only when $adddateof is not an array.,', + ' * @param string $placeholder Placeholder,', + ' * @param \'auto\'|\'gmt\'|\'tzserver\'|\'tzuserrel\' $gm \'auto\' (for backward compatibility, avoid this), \'gmt\' or \'tzserver\' or \'tzuserrel\',', + ' * @param string $calendarpicto URL of the icon/image used to display the calendar,', + ' * @return string Html for selectDate,', + ' * @see form_date(), select_month(), select_year(), select_dayofweek(),', + ' */', + '', + 'Date Select', + 'print $form->selectDate();', + '', + 'Date Select with hours', + 'print $form->selectDate(\'\', \'re2\', 1, 1, 1);' + ); + echo $documentation->showCode($lines); ?> + + + +

trans('DocEditorInputsDescription'); ?>

+
+ Create(); + ?> +
+ $readonly 0=Read/Edit, 1=Read only', + ' * @param array{x?:string,y?:string,find?:string} $poscursor Array for initial cursor position array(\'x\'=>x, \'y\'=>y).', + ' * array(\'find\'=> \'word\') can be used to go to line were the word has been found', + ' */', + '', + '$doleditor = new DolEditor(\'desc\', GETPOST(\'desc\', \'restricthtml\'), \'\', 160, \'dolibarr_details\', \'\', false, true, getDolGlobalString(\'FCKEDITOR_ENABLE_DETAILS\'), ROWS_4, \'90%\');', + 'print $form->multiselectarray(\'categories\', $values, GETPOST(\'categories\', \'array\'), 0, 0, \'minwidth200\', 0, 0);' + ); + echo $documentation->showCode($lines); ?> +
+
+ +
+ +docFooter(); + +?> diff --git a/htdocs/langs/en_US/uxdocumentation.lang b/htdocs/langs/en_US/uxdocumentation.lang index 590a150fccf..c9b0c510919 100644 --- a/htdocs/langs/en_US/uxdocumentation.lang +++ b/htdocs/langs/en_US/uxdocumentation.lang @@ -85,3 +85,15 @@ DocIconsTitle = Icons used by Dolibarr DocIconsList = List of usable icons with img_picto function DocIconsMainDescription = Dolibarr use a part of fontawesome 5 icons DocIconsFontAwesomeList = List of usable fontawesome icons + +#Input +DocClassicInputsDescription = Classic input to enter string values, integer values... +DocCheckboxInputsDescription = Checkbox input to enter boolean values +DocRadioInputsDescription = Radio input to enter boolean values +DocHelperFunctionsInputUsage = Helper functions usage +DocSelectInputsDescription = Select input to enter one value +DocMultiSelectInputsDescription = Multiselect input to enter several values +DocEditorInputsDescription = Editor input to enter text with HTML +DocDateSelectInputsDescription = Date input to enter a date with or without hours +DocInputsMainDescription = Documentation and exemples for inputs +DocInputsTitle = Inputs