From 35c794494e3df9617892a2642db773819981f6cc Mon Sep 17 00:00:00 2001 From: Tom Elliott Date: Sun, 23 Aug 2026 20:45:25 -0500 Subject: [PATCH 1/2] chore(icons): migrate to Font Awesome 7 names, and fix the ones that never fit FOG core is moving to Font Awesome 7.3.1 and ships NO v4-shims.css, so every FA4 class name here would render as a blank box -- no console error, no missing asset, nothing to notice until someone looks at the menu. 39 call sites across 33 files. Two separate passes, because they carry different risk: - Mechanical renames from the FA 7.3.1 shim data (fa-magic -> fa-wand-magic-sparkles, fa-id-badge -> far, fa-windows/fa-slack -> fab, and the FA5-era aliases fa-check-circle -> fa-circle-check, fa-times-circle -> fa-circle-xmark, fa-th-list -> fa-table-list). Only the aliases would still have rendered; the rest are the breaking set. - Nine deliberate icon CHOICES, agreed with Tom, where the original never matched what the plugin does: ldap key -> address-book a directory, not a credential ou bullseye -> sitemap an AD OU is a tree node subnetgroup wifi -> network-wired IP subnets are not wireless wolbroadcast plug -> power-off the standard wake glyph tasktypeedit th-list -> tags types are categories taskstateedit hourglass-start -> traffic-light states, not waiting persistentgroups id-card -> layer-group id-card meant nothing here ntfy comment -> tower-broadcast push, not messaging location globe -> location-dot a map pin for "Location" Each plugin names its icon in BOTH config/plugin.config.php and its menu hook; both are updated or the plugin list and the sidebar disagree. The upgrade pass matches the specific icon being replaced rather than every icon in the plugin's files. The first version did the latter and silently overwrote ldap's "LDAP Groups" submenu icon (fa-users) with the new top-level one -- a different menu entry losing its own icon, with nothing to show for it. That is why the mapping table carries a column. Remaining bare `fa fa-*` uses (helloworld, pushbullet) are normalized to `fas`. `.fa` still resolves to solid in FA7, so they rendered either way, but leaving two on the old prefix is the inconsistency this whole pass is about. Every target verified present in FA7 FREE via metadata/icons.json -- a pro-only icon renders blank with no error. Mapping tables and the migration script are in Tom's background_scripts (fa4_to_fa7_map.txt, fa7_plugin_icon_upgrades.txt, migrate_fa4_to_fa7.py) so core's pass uses the identical table. Core pins FOG_PLUGINS_VERSION, so it will bump to this release in the same commit as its own migration -- keeping the two atomic for installs. Co-Authored-By: Claude --- capone/config/plugin.config.php | 2 +- capone/hooks/addcaponemenuitem.hook.php | 2 +- helloworld/config/plugin.config.php | 2 +- helloworld/hooks/addhelloworldmenuitem.hook.php | 2 +- ldap/config/plugin.config.php | 2 +- ldap/hooks/addldapmenuitem.hook.php | 4 ++-- location/config/plugin.config.php | 2 +- location/hooks/addlocationmenuitem.hook.php | 2 +- location/js/fog.location.list.js | 4 ++-- ntfy/config/plugin.config.php | 2 +- ntfy/hooks/addntfymenuitem.hook.php | 2 +- oidc/class/oidcmanager.class.php | 2 +- oidc/config/plugin.config.php | 2 +- oidc/hooks/addoidcmenuitem.hook.php | 4 ++-- oidc/js/fog.oidc.list.js | 4 ++-- oidc/pages/oidcmanagement.page.php | 6 +++--- ou/config/plugin.config.php | 2 +- ou/hooks/addoumenuitem.hook.php | 2 +- persistentgroups/config/plugin.config.php | 2 +- pushbullet/config/plugin.config.php | 2 +- pushbullet/hooks/addpushbulletmenuitem.hook.php | 2 +- slack/config/plugin.config.php | 2 +- slack/hooks/addslackmenuitem.hook.php | 2 +- subnetgroup/config/plugin.config.php | 2 +- subnetgroup/hooks/addsubnetgroupmenuitem.hook.php | 2 +- taskstateedit/config/plugin.config.php | 2 +- taskstateedit/hooks/addtaskstateeditmenuitem.hook.php | 2 +- tasktypeedit/config/plugin.config.php | 2 +- tasktypeedit/hooks/addtasktypeeditmenuitem.hook.php | 2 +- windowskey/config/plugin.config.php | 2 +- windowskey/hooks/addwindowskeymenuitem.hook.php | 2 +- wolbroadcast/config/plugin.config.php | 2 +- wolbroadcast/hooks/addwolbroadcastmenuitem.hook.php | 2 +- 33 files changed, 39 insertions(+), 39 deletions(-) diff --git a/capone/config/plugin.config.php b/capone/config/plugin.config.php index 6e460bd0..35b6aecc 100644 --- a/capone/config/plugin.config.php +++ b/capone/config/plugin.config.php @@ -22,7 +22,7 @@ $fog_plugin = []; $fog_plugin['name'] = 'capone'; $fog_plugin['description'] = 'Capone is an automation plugin for fog.'; -$fog_plugin['menuicon'] = 'fa fa-magic fa-fw'; +$fog_plugin['menuicon'] = 'fas fa-wand-magic-sparkles fa-fw'; $fog_plugin['version'] = '1.6.0'; $fog_plugin['fog_min'] = '1.6.0'; $fog_plugin['author'] = 'Tom Elliott'; diff --git a/capone/hooks/addcaponemenuitem.hook.php b/capone/hooks/addcaponemenuitem.hook.php index 0833fa99..3cf2a1f3 100644 --- a/capone/hooks/addcaponemenuitem.hook.php +++ b/capone/hooks/addcaponemenuitem.hook.php @@ -87,7 +87,7 @@ public function menuUpdate($arguments) public function menuData($arguments) { $arguments['hook_main'][$this->node] - = [_('Capone'), 'fa fa-magic']; + = [_('Capone'), 'fas fa-wand-magic-sparkles']; } /** * Adds the capone page to search elements. diff --git a/helloworld/config/plugin.config.php b/helloworld/config/plugin.config.php index cd027f26..68dc04e8 100644 --- a/helloworld/config/plugin.config.php +++ b/helloworld/config/plugin.config.php @@ -27,7 +27,7 @@ . 'plugin structure (config, model, manager, page, hooks, JS).'; // A font-awesome class ("fa ...") is rendered as an icon; anything else is // treated as an src. -$fog_plugin['menuicon'] = 'fa fa-cube fa-fw'; +$fog_plugin['menuicon'] = 'fas fa-cube fa-fw'; // Your plugin's own version. Shown in Plugin Management and written to // plugins.pVersion, so "which build is installed here" has an answer. Nothing // compares it to anything -- it is yours to number as you like. diff --git a/helloworld/hooks/addhelloworldmenuitem.hook.php b/helloworld/hooks/addhelloworldmenuitem.hook.php index d32a87b1..6e85ddf4 100644 --- a/helloworld/hooks/addhelloworldmenuitem.hook.php +++ b/helloworld/hooks/addhelloworldmenuitem.hook.php @@ -75,7 +75,7 @@ public function __construct() public function menuData($arguments) { $arguments['hook_main'][$this->node] - = [_('Hello World'), 'fa fa-cube']; + = [_('Hello World'), 'fas fa-cube']; } /** * Registers the page as searchable. diff --git a/ldap/config/plugin.config.php b/ldap/config/plugin.config.php index 19c5872b..eacfa143 100644 --- a/ldap/config/plugin.config.php +++ b/ldap/config/plugin.config.php @@ -26,7 +26,7 @@ . 'server. This can be done typically by using your distros package ' . 'manager software. (e.g. apt-get install php5-ldap, ' . 'yum install php-ldap)'; -$fog_plugin['menuicon'] = 'fa fa-key fa-fw'; +$fog_plugin['menuicon'] = 'fas fa-address-book fa-fw'; $fog_plugin['version'] = '1.6.0'; $fog_plugin['fog_min'] = '1.6.0'; $fog_plugin['author'] = 'Tom Elliott'; diff --git a/ldap/hooks/addldapmenuitem.hook.php b/ldap/hooks/addldapmenuitem.hook.php index 6933eb81..21abef5d 100644 --- a/ldap/hooks/addldapmenuitem.hook.php +++ b/ldap/hooks/addldapmenuitem.hook.php @@ -108,13 +108,13 @@ public function menuUpdate($arguments) public function menuData($arguments) { $arguments['hook_main'][$this->node] - = [_('LDAP Servers'), 'fa fa-key']; + = [_('LDAP Servers'), 'fas fa-address-book']; // Groups get their own node because granting a role or a user group // is an ordinary association, and the shared association tab needs // the group itself to be the owning object. See // LDAPGroupManagement. $arguments['hook_main'][self::GROUP_NODE] - = [_('LDAP Groups'), 'fa fa-users']; + = [_('LDAP Groups'), 'fas fa-users']; } /** * Adds the plugin page to the search page lists diff --git a/location/config/plugin.config.php b/location/config/plugin.config.php index 05c63240..7f8f3735 100644 --- a/location/config/plugin.config.php +++ b/location/config/plugin.config.php @@ -32,7 +32,7 @@ _('sites with clients moving back and forth'), _('between different sites') ); -$fog_plugin['menuicon'] = 'fa fa-globe fa-fw'; +$fog_plugin['menuicon'] = 'fas fa-location-dot fa-fw'; $fog_plugin['version'] = '1.6.0'; $fog_plugin['fog_min'] = '1.6.0'; $fog_plugin['author'] = 'Tom Elliott, Lee Rowlett'; diff --git a/location/hooks/addlocationmenuitem.hook.php b/location/hooks/addlocationmenuitem.hook.php index 7b01344b..09bddfac 100644 --- a/location/hooks/addlocationmenuitem.hook.php +++ b/location/hooks/addlocationmenuitem.hook.php @@ -88,7 +88,7 @@ public function menuUpdate($arguments) public function menuData($arguments) { $arguments['hook_main'][$this->node] - = [_('Locations'), 'fa fa-globe']; + = [_('Locations'), 'fas fa-location-dot']; // Existence check goes through the cached settings reader, not a raw // Setting->load(). This hook only ever needs to know whether the row // has been seeded yet, but it fired on every main-menu build -- which diff --git a/location/js/fog.location.list.js b/location/js/fog.location.list.js index 4f3fcc33..4e6ceb07 100644 --- a/location/js/fog.location.list.js +++ b/location/js/fog.location.list.js @@ -18,8 +18,8 @@ }, { render: function(data, type, row) { - var enabled = '', - disabled = ''; + var enabled = '', + disabled = ''; if (row.tftp > 0) { return enabled; } diff --git a/ntfy/config/plugin.config.php b/ntfy/config/plugin.config.php index 53b21070..942acca4 100644 --- a/ntfy/config/plugin.config.php +++ b/ntfy/config/plugin.config.php @@ -25,7 +25,7 @@ $fog_plugin['name'] = 'ntfy'; $fog_plugin['description'] = 'Adds ntfy notifications using either the ' . 'ntfy.sh default server or a self-hosted server.'; -$fog_plugin['menuicon'] = 'fa fa-comment fa-fw'; +$fog_plugin['menuicon'] = 'fas fa-tower-broadcast fa-fw'; $fog_plugin['version'] = '1.6.0'; $fog_plugin['fog_min'] = '1.6.0'; $fog_plugin['author'] = 'Tony Lam, Tom Elliott'; diff --git a/ntfy/hooks/addntfymenuitem.hook.php b/ntfy/hooks/addntfymenuitem.hook.php index afa6a451..5f4d2aea 100644 --- a/ntfy/hooks/addntfymenuitem.hook.php +++ b/ntfy/hooks/addntfymenuitem.hook.php @@ -72,7 +72,7 @@ public function __construct() public function menuData($arguments) { $arguments['hook_main'][$this->node] - = [_('ntfy Accounts'), 'fa fa-comment']; + = [_('ntfy Accounts'), 'fas fa-tower-broadcast']; } /** * Adds the ntfy page to objects elements. diff --git a/oidc/class/oidcmanager.class.php b/oidc/class/oidcmanager.class.php index 35cfea70..edbc41ee 100644 --- a/oidc/class/oidcmanager.class.php +++ b/oidc/class/oidcmanager.class.php @@ -144,7 +144,7 @@ public function createSql() // once. management/login.php (fogproject#1175) is the way // back, and the management page names it next to the box. "'0'", - "'fa fa-id-badge'" + "'far fa-id-badge'" ], [ // No UNIQUE index on opName. FOGController::save() issues an diff --git a/oidc/config/plugin.config.php b/oidc/config/plugin.config.php index 6c2c2a10..b8ef3d23 100644 --- a/oidc/config/plugin.config.php +++ b/oidc/config/plugin.config.php @@ -26,7 +26,7 @@ . 'plugin nothing types a password into FOG: the browser is redirected ' . 'to the provider and comes back with a signed token. Local password ' . 'login always remains available.'; -$fog_plugin['menuicon'] = 'fa fa-id-badge fa-fw'; +$fog_plugin['menuicon'] = 'far fa-id-badge fa-fw'; $fog_plugin['version'] = '1.6.0'; // The extension points this plugin is built on -- plugin API routes, the // login-page provider hook, and establishSession() provenance -- landed diff --git a/oidc/hooks/addoidcmenuitem.hook.php b/oidc/hooks/addoidcmenuitem.hook.php index 9c516f53..7fbfb363 100644 --- a/oidc/hooks/addoidcmenuitem.hook.php +++ b/oidc/hooks/addoidcmenuitem.hook.php @@ -101,12 +101,12 @@ public function menuUpdate($arguments) public function menuData($arguments) { $arguments['hook_main'][$this->node] - = [_('OpenID Connect'), 'fa fa-id-badge']; + = [_('OpenID Connect'), 'far fa-id-badge']; // Groups get their own node because granting a role or a user group // is an ordinary association, and the shared association tab needs // the group itself to be the owning object. See OIDCGroupManagement. $arguments['hook_main'][self::GROUP_NODE] - = [_('OpenID Connect Groups'), 'fa fa-users']; + = [_('OpenID Connect Groups'), 'fas fa-users']; } /** * Adds the plugin page to the search page lists. diff --git a/oidc/js/fog.oidc.list.js b/oidc/js/fog.oidc.list.js index 4cd60557..9454b10c 100644 --- a/oidc/js/fog.oidc.list.js +++ b/oidc/js/fog.oidc.list.js @@ -26,9 +26,9 @@ { render: function(data, type, row) { var on = '' - + ''; + + ''; var off = '' - + ''; + + ''; return row.enabled > 0 ? on : off; }, targets: 2 diff --git a/oidc/pages/oidcmanagement.page.php b/oidc/pages/oidcmanagement.page.php index c1978368..abc2a6b5 100644 --- a/oidc/pages/oidcmanagement.page.php +++ b/oidc/pages/oidcmanagement.page.php @@ -172,10 +172,10 @@ protected function _addFields() => self::makeInput( 'form-control oidcicon-input', 'icon', - 'fa fa-id-badge', + 'far fa-id-badge', 'text', 'icon', - $icon ?: 'fa fa-id-badge' + $icon ?: 'far fa-id-badge' ), self::makeLabel( $this->_labelClass, @@ -399,7 +399,7 @@ public function oidcGeneral() => self::makeInput( 'form-control oidcicon-input', 'icon', - 'fa fa-id-badge', + 'far fa-id-badge', 'text', 'icon', $get('icon') diff --git a/ou/config/plugin.config.php b/ou/config/plugin.config.php index e08848f4..9a274ea4 100644 --- a/ou/config/plugin.config.php +++ b/ou/config/plugin.config.php @@ -25,7 +25,7 @@ 'OU is a plugin that allows you to predefine OU\'s and associate ' . 'with hosts.' ); -$fog_plugin['menuicon'] = 'fa fa-bullseye fa-fw'; +$fog_plugin['menuicon'] = 'fas fa-sitemap fa-fw'; $fog_plugin['version'] = '1.6.0'; $fog_plugin['fog_min'] = '1.6.0'; $fog_plugin['author'] = 'Tom Elliott'; diff --git a/ou/hooks/addoumenuitem.hook.php b/ou/hooks/addoumenuitem.hook.php index fa33deec..4a16f956 100644 --- a/ou/hooks/addoumenuitem.hook.php +++ b/ou/hooks/addoumenuitem.hook.php @@ -88,7 +88,7 @@ public function menuUpdate($arguments) public function menuData($arguments) { $arguments['hook_main'][$this->node] - = [_('OUs'), 'fa fa-bullseye']; + = [_('OUs'), 'fas fa-sitemap']; } /** * Adds the ou page to search elements. diff --git a/persistentgroups/config/plugin.config.php b/persistentgroups/config/plugin.config.php index a0a3b942..03cc29fe 100644 --- a/persistentgroups/config/plugin.config.php +++ b/persistentgroups/config/plugin.config.php @@ -22,7 +22,7 @@ $fog_plugin = []; $fog_plugin['name'] = 'persistentgroups'; $fog_plugin['description'] = 'Enable persistent groups.'; -$fog_plugin['menuicon'] = 'fa fa-id-card fa-fw'; +$fog_plugin['menuicon'] = 'fas fa-layer-group fa-fw'; $fog_plugin['version'] = '1.6.0'; $fog_plugin['fog_min'] = '1.6.0'; $fog_plugin['author'] = 'Tom Elliott'; diff --git a/pushbullet/config/plugin.config.php b/pushbullet/config/plugin.config.php index 3382c4b0..f93707bc 100644 --- a/pushbullet/config/plugin.config.php +++ b/pushbullet/config/plugin.config.php @@ -24,7 +24,7 @@ $fog_plugin = []; $fog_plugin['name'] = 'pushbullet'; $fog_plugin['description'] = 'Adds pushbullet notifications.'; -$fog_plugin['menuicon'] = 'fa fa-bell fa-fw'; +$fog_plugin['menuicon'] = 'fas fa-bell fa-fw'; $fog_plugin['version'] = '1.6.0'; $fog_plugin['fog_min'] = '1.6.0'; $fog_plugin['author'] = 'Tom Elliott, Joe Schmitt'; diff --git a/pushbullet/hooks/addpushbulletmenuitem.hook.php b/pushbullet/hooks/addpushbulletmenuitem.hook.php index 47b4ec70..2933749d 100644 --- a/pushbullet/hooks/addpushbulletmenuitem.hook.php +++ b/pushbullet/hooks/addpushbulletmenuitem.hook.php @@ -72,7 +72,7 @@ public function __construct() public function menuData($arguments) { $arguments['hook_main'][$this->node] - = [_('Pushbullet Accounts'), 'fa fa-bell']; + = [_('Pushbullet Accounts'), 'fas fa-bell']; } /** * Adds the pushbullet page to objects elements. diff --git a/slack/config/plugin.config.php b/slack/config/plugin.config.php index e8ecafe5..b8ce4b42 100644 --- a/slack/config/plugin.config.php +++ b/slack/config/plugin.config.php @@ -22,7 +22,7 @@ $fog_plugin = []; $fog_plugin['name'] = 'slack'; $fog_plugin['description'] = 'Adds slack-api integration.'; -$fog_plugin['menuicon'] = 'fa fa-slack fa-fw'; +$fog_plugin['menuicon'] = 'fab fa-slack fa-fw'; $fog_plugin['version'] = '1.6.0'; $fog_plugin['fog_min'] = '1.6.0'; $fog_plugin['author'] = 'Tom Elliott'; diff --git a/slack/hooks/addslackmenuitem.hook.php b/slack/hooks/addslackmenuitem.hook.php index ea6832c7..3b41dad2 100644 --- a/slack/hooks/addslackmenuitem.hook.php +++ b/slack/hooks/addslackmenuitem.hook.php @@ -70,7 +70,7 @@ public function __construct() public function menuData($arguments) { $arguments['hook_main'][$this->node] - = [_('Slack Accounts'), 'fa fa-slack']; + = [_('Slack Accounts'), 'fab fa-slack']; } /** * Adds the location page to search elements. diff --git a/subnetgroup/config/plugin.config.php b/subnetgroup/config/plugin.config.php index 5fced179..8f5d29d4 100644 --- a/subnetgroup/config/plugin.config.php +++ b/subnetgroup/config/plugin.config.php @@ -25,7 +25,7 @@ $fog_plugin['name'] = 'subnetgroup'; $fog_plugin['description'] = 'Associates host groups with IP subnets' . ' in order to automatically assign hosts according to their IP address'; -$fog_plugin['menuicon'] = 'fa fa-wifi fa-fw'; +$fog_plugin['menuicon'] = 'fas fa-network-wired fa-fw'; $fog_plugin['version'] = '1.6.0'; $fog_plugin['fog_min'] = '1.6.0'; $fog_plugin['author'] = 'Tom Elliott, sctt'; diff --git a/subnetgroup/hooks/addsubnetgroupmenuitem.hook.php b/subnetgroup/hooks/addsubnetgroupmenuitem.hook.php index 42baf164..83b1eadd 100644 --- a/subnetgroup/hooks/addsubnetgroupmenuitem.hook.php +++ b/subnetgroup/hooks/addsubnetgroupmenuitem.hook.php @@ -88,7 +88,7 @@ public function menuUpdate($arguments) public function menuData($arguments) { $arguments['hook_main'][$this->node] - = [_('Subnet Groups'), 'fa fa-wifi']; + = [_('Subnet Groups'), 'fas fa-network-wired']; } /** * Adds the subnet group page to search elements. diff --git a/taskstateedit/config/plugin.config.php b/taskstateedit/config/plugin.config.php index 772cdf07..198977c9 100644 --- a/taskstateedit/config/plugin.config.php +++ b/taskstateedit/config/plugin.config.php @@ -24,7 +24,7 @@ $fog_plugin['description'] = _( 'Allows editing/creating of Task States fog currently has.' ); -$fog_plugin['menuicon'] = 'fa fa-hourglass-start fa-fw'; +$fog_plugin['menuicon'] = 'fas fa-traffic-light fa-fw'; $fog_plugin['version'] = '1.6.0'; $fog_plugin['fog_min'] = '1.6.0'; $fog_plugin['author'] = 'Tom Elliott'; diff --git a/taskstateedit/hooks/addtaskstateeditmenuitem.hook.php b/taskstateedit/hooks/addtaskstateeditmenuitem.hook.php index 4738c773..b6e2c359 100644 --- a/taskstateedit/hooks/addtaskstateeditmenuitem.hook.php +++ b/taskstateedit/hooks/addtaskstateeditmenuitem.hook.php @@ -88,7 +88,7 @@ public function menuUpdate($arguments) public function menuData($arguments) { $arguments['hook_main'][$this->node] - = [_('Task States'), 'fa fa-hourglass-start']; + = [_('Task States'), 'fas fa-traffic-light']; } /** * Adds search element. diff --git a/tasktypeedit/config/plugin.config.php b/tasktypeedit/config/plugin.config.php index ad20e631..a5b1bbb7 100644 --- a/tasktypeedit/config/plugin.config.php +++ b/tasktypeedit/config/plugin.config.php @@ -24,7 +24,7 @@ $fog_plugin['description'] = _( 'Allows editing/creating of Task Types fog currently has.' ); -$fog_plugin['menuicon'] = 'fa fa-th-list fa-fw'; +$fog_plugin['menuicon'] = 'fas fa-tags fa-fw'; $fog_plugin['version'] = '1.6.0'; $fog_plugin['fog_min'] = '1.6.0'; $fog_plugin['author'] = 'Tom Elliott'; diff --git a/tasktypeedit/hooks/addtasktypeeditmenuitem.hook.php b/tasktypeedit/hooks/addtasktypeeditmenuitem.hook.php index fd710daa..0eae750f 100644 --- a/tasktypeedit/hooks/addtasktypeeditmenuitem.hook.php +++ b/tasktypeedit/hooks/addtasktypeeditmenuitem.hook.php @@ -88,7 +88,7 @@ public function menuUpdate($arguments) public function menuData($arguments) { $arguments['hook_main'][$this->node] - = [_('Task Types'), 'fa fa-th-list']; + = [_('Task Types'), 'fas fa-tags']; } /** * Adds search element. diff --git a/windowskey/config/plugin.config.php b/windowskey/config/plugin.config.php index bda4be99..0d29e8e3 100644 --- a/windowskey/config/plugin.config.php +++ b/windowskey/config/plugin.config.php @@ -33,7 +33,7 @@ _('When the plugin is removed, the assigned key will remain'), _('with the host') ); -$fog_plugin['menuicon'] = 'fa fa-windows fa-fw'; +$fog_plugin['menuicon'] = 'fab fa-windows fa-fw'; $fog_plugin['version'] = '1.6.0'; $fog_plugin['fog_min'] = '1.6.0'; $fog_plugin['author'] = 'Tom Elliott'; diff --git a/windowskey/hooks/addwindowskeymenuitem.hook.php b/windowskey/hooks/addwindowskeymenuitem.hook.php index cb335e2a..f80383ec 100644 --- a/windowskey/hooks/addwindowskeymenuitem.hook.php +++ b/windowskey/hooks/addwindowskeymenuitem.hook.php @@ -86,7 +86,7 @@ public function menuUpdate($arguments) public function menuData($arguments) { $arguments['hook_main'][$this->node] - = [_('Windows Keys'), 'fa fa-windows']; + = [_('Windows Keys'), 'fab fa-windows']; } /** * Adds the windows key page to search elements. diff --git a/wolbroadcast/config/plugin.config.php b/wolbroadcast/config/plugin.config.php index 21737751..eeb47591 100644 --- a/wolbroadcast/config/plugin.config.php +++ b/wolbroadcast/config/plugin.config.php @@ -24,7 +24,7 @@ $fog_plugin['description'] = 'Allows you to create WOL across ' . 'separate broadcast addresses. ' . 'Should only be used if you cannot edit your network switches.'; -$fog_plugin['menuicon'] = 'fa fa-plug fa-fw'; +$fog_plugin['menuicon'] = 'fas fa-power-off fa-fw'; $fog_plugin['version'] = '1.6.0'; $fog_plugin['fog_min'] = '1.6.0'; $fog_plugin['author'] = 'Tom Elliott'; diff --git a/wolbroadcast/hooks/addwolbroadcastmenuitem.hook.php b/wolbroadcast/hooks/addwolbroadcastmenuitem.hook.php index dffbf562..bf5cbd83 100644 --- a/wolbroadcast/hooks/addwolbroadcastmenuitem.hook.php +++ b/wolbroadcast/hooks/addwolbroadcastmenuitem.hook.php @@ -86,7 +86,7 @@ public function menuUpdate($arguments) public function menuData($arguments) { $arguments['hook_main'][$this->node] - = [_('WOL Broadcasts'), 'fa fa-plug']; + = [_('WOL Broadcasts'), 'fas fa-power-off']; } /** * Adds the wol page to search elements. From 80d72e795f47877b45aaa480e725acf1056cf705 Mon Sep 17 00:00:00 2001 From: Tom Elliott Date: Sun, 23 Aug 2026 20:51:08 -0500 Subject: [PATCH 2/2] chore(icons): resolve two collisions with core's own menu Checking the new plugin icons against core's sidebar found five icons doing duty for two different menu items each -- three of them introduced by the previous commit, which picked plugin icons without looking at what core already used. An icon that means two things is the same navigational problem as a wrong icon. ou sitemap -> folder-tree core's Groups menu is sitemap; an Organizational Unit is a folder tree helloworld cube -> flask core's Snapins menu is cube; this is the example/skeleton plugin The other three are resolved on the core side, where the collision belonged: User Groups moves off address-book (the LDAP plugin's directory genuinely is an address book), Sites moves off location-dot to building (a FOG Site is an organisational site, and the Location plugin owns the map pin), and Modules moves off gears, which it shared with Client Settings. Core and plugins together now use 38 distinct icons with no collisions. Co-Authored-By: Claude --- helloworld/config/plugin.config.php | 2 +- helloworld/hooks/addhelloworldmenuitem.hook.php | 2 +- ou/config/plugin.config.php | 2 +- ou/hooks/addoumenuitem.hook.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/helloworld/config/plugin.config.php b/helloworld/config/plugin.config.php index 68dc04e8..bd2372ea 100644 --- a/helloworld/config/plugin.config.php +++ b/helloworld/config/plugin.config.php @@ -27,7 +27,7 @@ . 'plugin structure (config, model, manager, page, hooks, JS).'; // A font-awesome class ("fa ...") is rendered as an icon; anything else is // treated as an src. -$fog_plugin['menuicon'] = 'fas fa-cube fa-fw'; +$fog_plugin['menuicon'] = 'fas fa-flask fa-fw'; // Your plugin's own version. Shown in Plugin Management and written to // plugins.pVersion, so "which build is installed here" has an answer. Nothing // compares it to anything -- it is yours to number as you like. diff --git a/helloworld/hooks/addhelloworldmenuitem.hook.php b/helloworld/hooks/addhelloworldmenuitem.hook.php index 6e85ddf4..ec7ec07c 100644 --- a/helloworld/hooks/addhelloworldmenuitem.hook.php +++ b/helloworld/hooks/addhelloworldmenuitem.hook.php @@ -75,7 +75,7 @@ public function __construct() public function menuData($arguments) { $arguments['hook_main'][$this->node] - = [_('Hello World'), 'fas fa-cube']; + = [_('Hello World'), 'fas fa-flask']; } /** * Registers the page as searchable. diff --git a/ou/config/plugin.config.php b/ou/config/plugin.config.php index 9a274ea4..17213358 100644 --- a/ou/config/plugin.config.php +++ b/ou/config/plugin.config.php @@ -25,7 +25,7 @@ 'OU is a plugin that allows you to predefine OU\'s and associate ' . 'with hosts.' ); -$fog_plugin['menuicon'] = 'fas fa-sitemap fa-fw'; +$fog_plugin['menuicon'] = 'fas fa-folder-tree fa-fw'; $fog_plugin['version'] = '1.6.0'; $fog_plugin['fog_min'] = '1.6.0'; $fog_plugin['author'] = 'Tom Elliott'; diff --git a/ou/hooks/addoumenuitem.hook.php b/ou/hooks/addoumenuitem.hook.php index 4a16f956..646ada21 100644 --- a/ou/hooks/addoumenuitem.hook.php +++ b/ou/hooks/addoumenuitem.hook.php @@ -88,7 +88,7 @@ public function menuUpdate($arguments) public function menuData($arguments) { $arguments['hook_main'][$this->node] - = [_('OUs'), 'fas fa-sitemap']; + = [_('OUs'), 'fas fa-folder-tree']; } /** * Adds the ou page to search elements.