22require
'../../../../main.inc.php';
32if ($user->socid > 0) {
37require_once DOL_DOCUMENT_ROOT .
'/admin/tools/ui/class/documentation.class.php';
40$langs->load(
'uxdocumentation');
46$documentation->docHeader(
'Icons', [], [
'admin/tools/ui/css/doc-icons.css'],
GETPOST(
'hidenavmenu'));
50$documentation->view = array(
'Components',
'Icons');
54$displayMode =
GETPOST(
'displayMode') ==
'kanban' ?
'kanban' :
'icon-only';
55$revertDisplayMode = $displayMode ==
'kanban' ?
'icon-only' :
'kanban';
56$revertDisplayName = $displayMode ==
'kanban' ? $langs->trans(
'ViewList') : $langs->trans(
'ViewKanban');
57$switchDisplayLink =
dol_buildpath($documentation->baseUrl .
'/components/icons.php', 1) .
'?displayMode=' . $revertDisplayMode;
58$switchDisplayLinkIcon = $displayMode ==
'kanban' ?
'fa fa-th' :
'fa fa-th-list';
62 $documentation->showSidebar();
66<div
class=
"doc-wrapper<?php print GETPOST('hidenavmenu') ? "-bis
" : ""; ?>">
70 $documentation->showBreadCrumb();
74 <div
class=
"doc-content-wrapper">
76 <h1
class=
"documentation-title"><?php echo $langs->trans(
'DocIconsTitle'); ?></h1>
77 <p
class=
"documentation-text"><?php echo $langs->trans(
'DocIconsMainDescription'); ?></p>
80 <?php $documentation->showSummary(); ?>
84 <!-- List of usage font awesome icon -->
85 <div
class=
"documentation-section" id=
"img-picto-section-list">
88 $iconFileName =
'shims.json';
89 $iconFilePath = DOL_DOCUMENT_ROOT .
'/theme/common/fontawesome-5/metadata';
91 $fontAwesomeIconRaw = file_get_contents($iconFilePath.
'/' .$iconFileName);
92 if ($fontAwesomeIconRaw ===
false) {
96 $fontAwesomeIcons = json_decode($fontAwesomeIconRaw);
97 if ($fontAwesomeIcons ===
null) {
102 <h2
class=
"documentation-title"><?php echo $langs->trans(
'DocIconsListImgPicto'); ?></h2>
105 <?php print $form->getSearchFilterToolInput(
106 '.documentation-img-picto-icon-list .info-box, .documentation-img-picto-icon-list .doc-icon-list-item',
107 'search-tools-input',
110 'data-no-item-target' =>
'#img-picto-section-list .search-tool-no-results',
117 if ($mode !=
'no-btn') {
118 print dolGetButtonTitle($revertDisplayName,
'', $switchDisplayLinkIcon, $switchDisplayLink.
'#img-picto-section-list',
'', 1, [
'forcenohideoftext' => 1]);
123 <div
class=
"documentation-example">
124 <div
class=
"documentation-img-picto-icon-list">
126 $arrayofdolibarriconkey = getImgPictoNameList();
128 foreach ($arrayofdolibarriconkey as $iconName) {
129 $labelAlt =
'Text on title tag for tooltip';
131 if ($displayMode ==
'kanban') {
132 $iconCode =
img_picto($iconName, $iconName);
133 print
'<div class="info-box ">
134 <span class="info-box-icon bg-infobox-expensereport">
137 <div class="info-box-content">
138 <div class="info-box-title" >'. $iconName .
'</div>
139 <div class="info-box-lines">
140 <div class="info-box-line spanoverflow nowrap">
141 <div class="inline-block nowraponall">
142 <div class="documentation-code"><pre>'.
dol_htmlentities(
'img_picto(\''.$labelAlt.
'\', \
''.$iconName.
'\')
').'</pre></div>
145 </div><!-- /.info-box-lines -->
146 </div><!-- /.info-box-content -->
149 $tooltip = '<u>
'.$langs->trans("DocCodeForMenuOrModuleBuilder").':</u><br>
'.$iconName;
150 $tooltip .= '<br><br><u>
'.$langs->trans("DocExampleForPHPCode").':</u><br>
img_picto(\
''.$labelAlt.
'\', \
''.$iconName.
'\')
';
151 $iconCode = img_picto($tooltip, $iconName, '', 0, 0, 0, '', 'classfortooltip
');
152 print '<span
class=
"doc-icon-list-item">
'.$iconCode;
153 print '<span
class=
"doc-icon-hidden-name-for-search">
'.$iconName.'</span></span>
';
159 <div class="search-tool-no-results center hidden-search-result" ><?php print $langs->trans('NoResults
') ?></div>
168 <!-- List of usage font awesome icon -->
169 <div class="documentation-section" id="icon-section-list">
172 $iconFileFa = 'icons.json
';
173 $iconFilePath = DOL_DOCUMENT_ROOT . '/theme/common/fontawesome-5/metadata
';
175 // Load the full FontAwesome 5 icons JSON
176 $allIconsRaw = file_get_contents($iconFilePath . '/
' . $iconFileFa);
177 $fontAwesomeIcons = []; // This will be the output array in shims.json format
179 if ($allIconsRaw === false) {
180 dol_print_error($db, 'Error: missing file
' . $iconFilePath . '/
' . $iconFileFa);
182 $allIcons = json_decode($allIconsRaw, true);
183 if ($allIcons === null) {
184 dol_print_error($db, 'Error: cannot decode JSON from
' . $iconFilePath . '/
' . $iconFileFa);
186 foreach ($allIcons as $iconName => $iconData) {
187 // Determine prefix: 'fab
' for brands, 'fas
' or 'far
' can be added later if needed
188 $prefix = in_array('brands
', $iconData['styles
']) ? 'fab
' : null;
189 // Format: [ "icon-name", "prefix if any", null ]
190 $fontAwesomeIcons[] = [$iconName, $prefix, null]; // null reserved for future alias
196 <h2 class="documentation-title"><?php echo $langs->trans('DocIconsListFontAwesome
'); ?></h2>
197 <?php /* <p class="documentation-text"><?php echo $langs->trans('DocDocIconsListDescription
'); ?></p>*/ ?>
199 <?php print $form->getSearchFilterToolInput('.documentation-fontawesome-icon-list .info-box, .documentation-fontawesome-icon-list .doc-icon-list-item
',
200 'search-tools-input
',
203 'data-no-item-target
' => '#icon-section-list .search-tool-no-results
',
210 if ($mode != 'no-btn
') {
211 print dolGetButtonTitle($revertDisplayName, '', $switchDisplayLinkIcon, $switchDisplayLink.'#icon-section-list
', '', 1, ['forcenohideoftext
' => 1]);
216 <div class="documentation-example">
217 <div class="documentation-fontawesome-icon-list">
219 $alreadyDisplay = [];
220 if ($fontAwesomeIcons) {
221 foreach ($fontAwesomeIcons as $iconData) {
222 $class = $iconData[1] ?? 'fa
';
223 if (!empty($iconData[2])) {
224 $class .= ' fa-
'.$iconData[2];
226 $class .= ' fa-
'.$iconData[0];
229 if (in_array($class, $alreadyDisplay)) {
233 $alreadyDisplay[] = $class;
234 $iconCode = '<span
class=
"'.$class.'" ></span>
';
235 $iconLabel = !empty($iconData[2]) ? $iconData[2] : $iconData[0];
237 if ($displayMode == 'kanban
') {
238 print '<div
class=
"info-box ">
239 <span
class=
"info-box-icon bg-infobox-expensereport">
242 <div
class=
"info-box-content">
243 <div
class=
"info-box-title" >
' . $iconLabel . '</div>
244 <div
class=
"info-box-lines">
245 <div
class=
"info-box-line spanoverflow nowrap">
246 <div
class=
"inline-block nowraponall">
247 <div
class=
"documentation-code"><pre>
' . dol_htmlentities($iconCode) . '</pre></div>
250 </div><!-- /.info-box-lines -->
251 </div><!-- /.info-box-content -->
254 $tooltip = '<u>
'.$langs->trans("DocCodeForMenuOrModuleBuilder").':</u><br>
'.$class;
255 print '<span
class=
"doc-icon-list-item classfortooltip" title=
"'.dol_escape_htmltag($tooltip).'">
'.$iconCode.'<span
class=
"doc-icon-hidden-name-for-search">
'.$class.'</span></span>
';
262 <div class="search-tool-no-results center hidden-search-result" ><?php print $langs->trans('NoResults
') ?></div>
270// Output close body + html
271$documentation->docFooter();
280function getImgPictoNameList()
282 $imgpicto = array_merge(array_keys(getImgPictoConv()), array(
283 // Keep in this list only picto that are NOT already into getImgPictoConv()
289 '1downarrow_selected
',
290 '1leftarrow_selected
',
291 '1rightarrow_selected
',
322 'external-link-square-alt
',
345 'long-arrow-alt-right
',
403 return array_unique($imgpicto); // @phpstan-ignore return.type
Class to manage UI documentation.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2, $allowothertags=array())
Show picto whatever it's its name (generic function)
dol_htmlentities($string, $flags=ENT_QUOTES|ENT_SUBSTITUTE, $encoding='UTF-8', $double_encode=false)
Replace htmlentities functions.
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.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
$conf db user
Active Directory does not allow anonymous connections.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.