From ef0ea1378d96be5c86b1fc563868e73572cd429e Mon Sep 17 00:00:00 2001 From: Peter Kulko <93188219+PKulkoRaccoonGang@users.noreply.github.com> Date: Mon, 29 Sep 2025 19:44:28 +0300 Subject: [PATCH] docs: [FC-86] Restructure Modify Items section with Add/Replace examples (#598) * docs: example of adding Marketing links via the plugin slots * refactor: code refactoring * feat: added logoDestination props for Header component * refactor: after rebase * refactor: updated tests * refactor: after review * refactor: removed logoDestination prop * docs: Custom Marketing links mobile example * refactor: after review --- .../DesktopMainMenuSlot/README.md | 59 +++++++++++++++++- .../images/desktop_main_menu_add_items.png | Bin 0 -> 5152 bytes ...> desktop_main_menu_replace_all_items.png} | Bin src/plugin-slots/MobileMainMenuSlot/README.md | 58 ++++++++++++++++- .../images/mobile_main_menu_add_items.png | Bin 0 -> 37804 bytes ...=> mobile_main_menu_replace_all_items.png} | Bin 6 files changed, 112 insertions(+), 5 deletions(-) create mode 100644 src/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_add_items.png rename src/plugin-slots/DesktopMainMenuSlot/images/{desktop_main_menu_modify_items.png => desktop_main_menu_replace_all_items.png} (100%) create mode 100644 src/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_add_items.png rename src/plugin-slots/MobileMainMenuSlot/images/{mobile_main_menu_modify_items.png => mobile_main_menu_replace_all_items.png} (100%) diff --git a/src/plugin-slots/DesktopMainMenuSlot/README.md b/src/plugin-slots/DesktopMainMenuSlot/README.md index b266cdc..a02fd75 100644 --- a/src/plugin-slots/DesktopMainMenuSlot/README.md +++ b/src/plugin-slots/DesktopMainMenuSlot/README.md @@ -13,9 +13,11 @@ This slot is used to replace/modify/hide the desktop main menu. ### Modify Items -The following `env.config.jsx` will modify the items in the desktop main menu. +#### Replace All Items -![Screenshot of modified items](./images/desktop_main_menu_modify_items.png) +The following `env.config.jsx` will replace all items in the desktop main menu. + +![Screenshot of modified items](./images/desktop_main_menu_replace_all_items.png) ```jsx import { PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; @@ -59,6 +61,58 @@ const config = { export default config; ``` +#### Add Items + +The following `env.config.jsx` will add items in the desktop main menu. + +![Screenshot of custom marketing links](./images/desktop_main_menu_add_items.png) + +```jsx +import { PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; + +const modifyMainMenu = (widget) => { + const existingMenu = widget.RenderWidget.props.menu || []; + + const newMarketingLinks = [ + { + type: 'item', + href: 'https://example.com/how-it-works', + content: 'How it works', + }, + { + type: 'item', + href: 'https://example.com/courses', + content: 'Courses', + }, + { + type: 'item', + href: 'https://example.com/schools', + content: 'Schools', + } + ]; + + widget.content.menu = [...existingMenu, ...newMarketingLinks]; + return widget; +}; + +const config = { + pluginSlots: { + 'org.openedx.frontend.layout.header_desktop_main_menu.v1': { + keepDefault: true, + plugins: [ + { + op: PLUGIN_OPERATIONS.Modify, + widgetId: 'default_contents', + fn: modifyMainMenu, + }, + ] + }, + }, +} + +export default config; +``` + ### Replace Menu with Custom Component The following `env.config.jsx` will replace the desktop main menu entirely (in this case with a centered 🗺️ `h1`) @@ -134,4 +188,3 @@ const config = { export default config; ``` - diff --git a/src/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_add_items.png b/src/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_add_items.png new file mode 100644 index 0000000000000000000000000000000000000000..3e3e6acb62084454ec4a18b634de7a155d3ecabe GIT binary patch literal 5152 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 { + const existingMenu = widget.RenderWidget.props.menu || []; + + const newMarketingLinks = [ + { + type: 'item', + href: 'https://example.com/how-it-works', + content: 'How it works', + }, + { + type: 'item', + href: 'https://example.com/courses', + content: 'Courses', + }, + { + type: 'item', + href: 'https://example.com/schools', + content: 'Schools', + } + ]; + + widget.content.menu = [...existingMenu, ...newMarketingLinks]; + return widget; +}; + +const config = { + pluginSlots: { + 'org.openedx.frontend.layout.header_mobile_main_menu.v1': { + keepDefault: true, + plugins: [ + { + op: PLUGIN_OPERATIONS.Modify, + widgetId: 'default_contents', + fn: modifyMainMenu, + }, + ] + }, + }, +} + +export default config; +``` + ### Replace Menu with Custom Component The following `env.config.jsx` will replace the mobile main menu entirely (in this case with a centered 🗺️ `h1`) diff --git a/src/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_add_items.png b/src/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_add_items.png new file mode 100644 index 0000000000000000000000000000000000000000..25b0dcf5cbf1d7fdaa443fbeb7b8795bae897299 GIT binary patch literal 37804 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 literal 0 HcmV?d00001 diff --git a/src/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_modify_items.png b/src/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_replace_all_items.png similarity index 100% rename from src/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_modify_items.png rename to src/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_replace_all_items.png