Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/ivyportal 18032 UI facelift conflict #1312

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
6660843
feature/IVYPORTAL-18032-UI-facelift-conflict
lmluat-axonivy Dec 11, 2024
f65996d
feature/IVYPORTAL-18032-UI-facelift-conflict
lmluat-axonivy Dec 11, 2024
e2e2645
bug/IVYPORTAL-18051-Portal-Dashboard-shows-no-permission-screen-when-…
nhthinh-axonivy Dec 12, 2024
d48f4b0
feature/IVYPORTAL-18032-UI-facelift-conflict
lmluat-axonivy Dec 12, 2024
33eddc0
feature/IVYPORTAL-18032-UI-facelift-conflict
lmluat-axonivy Dec 12, 2024
fe9dca1
IVYPORTAL-18072 SPIKE: Evaluate the full screen issue with new case a…
mnhnam-axonivy Dec 12, 2024
fc41236
feature/IVYPORTAL-18032-UI-facelift-conflict
lmluat-axonivy Dec 12, 2024
4ac64e2
feature/IVYPORTAL-18032-UI-facelift-conflict
lmluat-axonivy Dec 12, 2024
b91770d
feature/IVYPORTAL-18032-UI-facelift-conflict
lmluat-axonivy Dec 12, 2024
30b0efc
feature/IVYPORTAL-18032-UI-facelift-conflict
lmluat-axonivy Dec 12, 2024
0f4b154
feature/IVYPORTAL-18032-UI-facelift-conflict
lmluat-axonivy Dec 12, 2024
3c38c31
feature/IVYPORTAL-18032-UI-facelift-conflict
lmluat-axonivy Dec 12, 2024
245af24
feature/IVYPORTAL-18032-UI-facelift-conflict
lmluat-axonivy Dec 12, 2024
98caf30
feature/IVYPORTAL-18032-UI-facelift-conflict
lmluat-axonivy Dec 13, 2024
546f872
feature/IVYPORTAL-18032-UI-facelift-conflict
lmluat-axonivy Dec 13, 2024
2640eb0
feature/IVYPORTAL-18032-UI-facelift-conflict
lmluat-axonivy Dec 13, 2024
955e9b9
feature/IVYPORTAL-18028-High-Failure-to-use-HTTPS-or-SFTP-URL-in-Mave…
lmluat-axonivy Dec 13, 2024
e5754fe
Update portal_walkthrough_testplan.jmx for new test data (#1306)
lttung-axonivy Dec 13, 2024
6b4aa0a
IVYPORTAL-18029 High - Client-side cross-site scripting
mnhnam-axonivy Dec 16, 2024
f4cf170
Updated all pom build.plugin.version=12.0.0, ivy.engine.version=12.0.…
lttung-axonivy Dec 16, 2024
c8474f3
IVYPORTAL-18029 High - Client-side cross-site scripting
mnhnam-axonivy Dec 16, 2024
033f462
feature/IVYPORTAL-18032-UI-facelift-conflict
lmluat-axonivy Dec 16, 2024
a26cd6c
Merge branch 'master' into feature/IVYPORTAL-18032-UI-facelift-conflict
lmluat-axonivy Dec 16, 2024
d070a8d
Merge branch 'master' into feature/IVYPORTAL-18032-UI-facelift-conflict
lmluat-axonivy Dec 16, 2024
d131511
feature/IVYPORTAL-18032-UI-facelift-conflict
lmluat-axonivy Dec 16, 2024
62c78a3
feature/IVYPORTAL-18032-UI-facelift-conflict
lmluat-axonivy Dec 16, 2024
0eeaa31
feature/IVYPORTAL-18032-UI-facelift-conflict
lmluat-axonivy Dec 16, 2024
960f088
IVYPORTAL-18029 High - Client-side cross-site scripting
mnhnam-axonivy Dec 16, 2024
95f02eb
Merge pull request #1307 from axonivy-market/feature/IVYPORTAL-18029-…
mnhnam-axonivy Dec 16, 2024
7c327a7
feature/IVYPORTAL-18032-UI-facelift-conflict
lmluat-axonivy Dec 16, 2024
12ee8e7
feature/IVYPORTAL-18032-UI-facelift-conflict
lmluat-axonivy Dec 16, 2024
b6f0df9
Revert "feature/IVYPORTAL-18032-UI-facelift-conflict"
lmluat-axonivy Dec 16, 2024
ba0dbde
Revert "feature/IVYPORTAL-18032-UI-facelift-conflict"
lmluat-axonivy Dec 16, 2024
cbc283b
feature/IVYPORTAL-18032-UI-facelift-conflict
lmluat-axonivy Dec 16, 2024
efbe2c1
Merge branch 'master' of https://github.com/axonivy-market/portal int…
mnhnam-axonivy Dec 16, 2024
e38b739
Merge branch 'feature/IVYPORTAL-18029-High-Client-side-cross-site-scr…
mnhnam-axonivy Dec 16, 2024
f3e1757
IVYPORTAL-18029: Security findings- Client-side cross-site scriptin…
mnhnam-axonivy Dec 16, 2024
c770f8c
IVYPORTAL-18031 Medium - DOM text reinterpreted as HTML
chnam-axonivy Dec 17, 2024
e41f482
Merge pull request #1314 from axonivy-market/bug/IVYPORTAL-18031-Medi…
chnam-axonivy Dec 17, 2024
f4a0f06
Merge branch 'master' of https://github.com/axonivy-market/portal int…
mnhnam-axonivy Dec 17, 2024
bdf9f32
IVYPORTAL-18029 Security findings- Client-side cross-site scripting
mnhnam-axonivy Dec 17, 2024
559ae67
Merge pull request #1316 from axonivy-market/feature/IVYPORTAL-18029-…
mnhnam-axonivy Dec 17, 2024
e2ce1b2
IVYPORTAL-18072 SPIKE: Evaluate the full screen issue with new case a…
mnhnam-axonivy Dec 17, 2024
bd3734e
feature/IVYPORTAL-18032-UI-facelift-conflict
lmluat-axonivy Dec 17, 2024
96773dc
Merge pull request #1300 from axonivy-market/bug/IVYPORTAL-18072-SPIK…
mnhnam-axonivy Dec 18, 2024
d8db2c4
Merge branch 'master' into feature/IVYPORTAL-18032-UI-facelift-conflict
lmluat-axonivy Dec 18, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions AxonIvyPortal/PortalKitTestHelper/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
<version>9.1.0.0-SNAPSHOT</version>
<packaging>iar</packaging>
<properties>
<ivy.engine.version>12.0.1</ivy.engine.version>
<build.plugin.version>12.0.0-SNAPSHOT</build.plugin.version>
<ivy.engine.version>12.0.2</ivy.engine.version>
<build.plugin.version>12.0.0</build.plugin.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
Expand Down
4 changes: 2 additions & 2 deletions AxonIvyPortal/portal-components/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
</snapshotRepository>
</distributionManagement>
<properties>
<ivy.engine.version>12.0.1</ivy.engine.version>
<build.plugin.version>12.0.0-SNAPSHOT</build.plugin.version>
<ivy.engine.version>12.0.2</ivy.engine.version>
<build.plugin.version>12.0.0</build.plugin.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
Expand Down
4 changes: 2 additions & 2 deletions AxonIvyPortal/portal-migration/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
<version>9.4.0</version>
<packaging>iar</packaging>
<properties>
<ivy.engine.version>12.0.1</ivy.engine.version>
<build.plugin.version>12.0.0-SNAPSHOT</build.plugin.version>
<ivy.engine.version>12.0.2</ivy.engine.version>
<build.plugin.version>12.0.0</build.plugin.version>
</properties>
<build>
<plugins>
Expand Down
4 changes: 2 additions & 2 deletions AxonIvyPortal/portal-selenium-test/customized_pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
<version>9.1.0.0-SNAPSHOT</version>
<packaging>iar</packaging>
<properties>
<build.plugin.version>12.0.0-SNAPSHOT</build.plugin.version>
<ivy.engine.version>12.0.1</ivy.engine.version>
<build.plugin.version>12.0.0</build.plugin.version>
<ivy.engine.version>12.0.2</ivy.engine.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
<version>9.1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<build.plugin.version>12.0.0-SNAPSHOT</build.plugin.version>
<ivy.engine.version>12.0.1</ivy.engine.version>
<build.plugin.version>12.0.0</build.plugin.version>
<ivy.engine.version>12.0.2</ivy.engine.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<distributionManagement>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1650,7 +1650,7 @@
</elementProp>
<elementProp name="case-default_case_list_dashboard_case_1:quick-search-form:quick-search-input-0" elementType="HTTPArgument">
<boolProp name="HTTPArgument.always_encode">true</boolProp>
<stringProp name="Argument.value">Create test data with category attach to one business case</stringProp>
<stringProp name="Argument.value">Business case has lots of tasks cases</stringProp>
<stringProp name="Argument.metadata">=</stringProp>
<boolProp name="HTTPArgument.use_equals">true</boolProp>
<stringProp name="Argument.name">case-default_case_list_dashboard_case_1:quick-search-form:quick-search-input-0</stringProp>
Expand Down
4 changes: 2 additions & 2 deletions AxonIvyPortal/portal-selenium-test/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
<version>9.1.0.0-SNAPSHOT</version>
<packaging>iar</packaging>
<properties>
<ivy.engine.version>12.0.1</ivy.engine.version>
<build.plugin.version>12.0.0-SNAPSHOT</build.plugin.version>
<ivy.engine.version>12.0.2</ivy.engine.version>
<build.plugin.version>12.0.0</build.plugin.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ function highlightProcessItems() {
}

function highlightEditProcessIcon() {
appendStepAnnotation($("[id$='process-widget:edit-process-form:edit-process-icon:awesome-icon-selection']"), "4", -10, 100);
appendStepAnnotation($("[id$='process-widget:edit-process-form:edit-process-icon:awesome-icon-selection']"), "4", -40, 110);
}

function highlightEditProcessDialog() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ public void screenshotCaseDetails() throws IOException {
ScreenshotUtils.captureElementWithMarginOptionScreenshot(detailsPage.openAddAttachmentDialog(),
ScreenshotUtils.CASE_DETAIL_FOLDER + "how-to-attach-document-to-case", new ScreenshotMargin(10));
detailsPage.closeAddAttachmentDialog();
detailsPage.uploadDocumentWithoutError(FileHelper.getAbsolutePathToTestFile("test-no-files-no-js.pdf"));
detailsPage.uploadDocument(FileHelper.getAbsolutePathToTestFile("test-no-files-no-js.pdf"));

refreshPage();
detailsPage.waitForCaseDetailsDisplay();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,11 @@ public void screenshotPortalFullProcessesList() throws IOException {
ScreenshotUtils.captureElementWithMarginOptionScreenshot(processWidget.getProcessEditMenu(0),
ScreenshotUtils.PROCESSES_WIDGET_FOLDER + "edit-process-menu-item", new ScreenshotMargin(150, 200));
processWidget.clickOnProcessEditMenu(0);
ScreenshotUtils.maximizeBrowser();
ScreenshotUtils.executeDecorateJs("highlightEditProcessDialog()");
ScreenshotUtils.executeDecorateJs("highlightEditProcessIcon()");
ScreenshotUtils.captureElementWithMarginOptionScreenshot(processWidget.getEditProcessDialog(),
ScreenshotUtils.PROCESSES_WIDGET_FOLDER + "edit-process-dialog", new ScreenshotMargin(10));
ScreenshotUtils.PROCESSES_WIDGET_FOLDER + "edit-process-dialog", new ScreenshotMargin(5));
ScreenshotUtils.resizeBrowser(new Dimension(1366, 800));
refreshPage();
processWidget.waitUtilProcessWidgetDisplayed();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -850,6 +850,11 @@ public void uploadDocumentWithoutError(String pathToFile) {
$("button[id$='document:document-upload-close-command']").shouldBe(getClickableCondition(), DEFAULT_TIMEOUT)
.click();
}

public void uploadDocument(String pathToFile) {
$("input[id$='document-upload-panel_input']").shouldBe(exist, DEFAULT_TIMEOUT)
.shouldBe(Condition.hidden, DEFAULT_TIMEOUT).sendKeys(pathToFile);
}

public void openAddDocumentDialogAndUploadDocument(String pathToFile) {
getAddAttachmentDialog();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ public void nextPageTable() {
}

public void resetFilter() {
$("div.filter-overlay-panel__footer").shouldBe(appear, DEFAULT_TIMEOUT).$$("button[id$='reset-button']")
$("div.filter-overlay-panel__footer").shouldBe(appear, DEFAULT_TIMEOUT).$$("a[id$='reset-button']")
.filter(text("Reset")).first().shouldBe(getClickableCondition(), DEFAULT_TIMEOUT).click();
$("div.filter-overlay-panel__footer").shouldBe(disappear, DEFAULT_TIMEOUT);
waitForElementClickable($$("div.table-widget-panel")
Expand Down Expand Up @@ -269,7 +269,7 @@ public void removeAllFilterItems() {
}

public void openManageFiltersDialog() {
$("div#manage-filter").shouldBe(appear, DEFAULT_TIMEOUT).$("button").shouldBe(getClickableCondition()).click();
$("div#manage-filter").shouldBe(appear, DEFAULT_TIMEOUT).$("a").shouldBe(getClickableCondition()).click();
}

public void closeManageFilterDialog() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -545,7 +545,7 @@ public SelenideElement getCompactModeProcessFilterPanelSaveButton() {
}

public SelenideElement getCompactModeProcessFilterPanelResetButton() {
return getCompactModeProcessFilterPanel().$("button[id$=':reset-button']");
return getCompactModeProcessFilterPanel().$("a[id$=':reset-button']");
}

public void resetCompactModeProcessFilterPanel() {
Expand Down Expand Up @@ -1033,7 +1033,7 @@ public NotificationCompactPage openNotificationPanel() {
}

public void clickOnManageFilterLink() {
$("div[class*='filter-overlay-panel__footer']").shouldBe(appear, DEFAULT_TIMEOUT).$("div#manage-filter").shouldBe(appear, DEFAULT_TIMEOUT).$("button[class*='saved-filter__manage-filter']").shouldBe(getClickableCondition(), DEFAULT_TIMEOUT).click();
$("div[class*='filter-overlay-panel__footer']").shouldBe(appear, DEFAULT_TIMEOUT).$("div#manage-filter").shouldBe(appear, DEFAULT_TIMEOUT).$("a[class*='saved-filter__manage-filter']").shouldBe(getClickableCondition(), DEFAULT_TIMEOUT).click();
$("[id$='manage-filter-dialog']").shouldBe(appear, DEFAULT_TIMEOUT);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ public void applyFilter() {
}

public void resetFilter() {
$("div.filter-overlay-panel__footer").shouldBe(appear, DEFAULT_TIMEOUT).$$("button[id$='reset-button']")
$("div.filter-overlay-panel__footer").shouldBe(appear, DEFAULT_TIMEOUT).$$("a[id$='reset-button']")
.filter(text("Reset")).first().shouldBe(getClickableCondition(), DEFAULT_TIMEOUT).click();
}

Expand Down Expand Up @@ -183,7 +183,7 @@ public boolean hasSavedFilterItem(String filterName) {
}

public void clickOnManageFilterLink() {
$("div#manage-filter").shouldBe(appear, DEFAULT_TIMEOUT).$("button").shouldBe(getClickableCondition()).click();
$("div#manage-filter").shouldBe(appear, DEFAULT_TIMEOUT).$("a").shouldBe(getClickableCondition()).click();
$("[id$='manage-filter-dialog']").shouldBe(appear, DEFAULT_TIMEOUT);
}

Expand Down Expand Up @@ -530,7 +530,7 @@ public void saveFilter(String widgetFilterName) {
}

public void openManageFiltersDialog() {
$("div#manage-filter").shouldBe(appear, DEFAULT_TIMEOUT).$("button").shouldBe(getClickableCondition()).click();
$("div#manage-filter").shouldBe(appear, DEFAULT_TIMEOUT).$("a").shouldBe(getClickableCondition()).click();
}

public void removeAllFilterItems() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -481,6 +481,10 @@ public NewDashboardPage openTaskList() {
return openMainMenu().selectTaskMenu();
}

public void waitForTaskTitleAppear() {
waitForElementDisplayed(By.id("title"), true);
}

public void waitForIFrameContentVisible() {
waitForIFrameScreenshotSizeGreaterThan(IFRAME_SCREENSHOT_FILE_SIZE_AT_MINIMUM);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.axonivy.portal.selenium.common.NavigationHelper;
import com.axonivy.portal.selenium.page.MainMenuPage;
import com.axonivy.portal.selenium.page.NewDashboardPage;
import com.axonivy.portal.selenium.page.TaskIFrameTemplatePage;
import com.axonivy.portal.selenium.page.TopMenuTaskWidgetPage;
import com.axonivy.portal.selenium.page.UserProfilePage;
import com.axonivy.portal.selenium.page.WorkingTaskDialogFromUserProfilePage;
Expand All @@ -26,9 +27,10 @@ public void setup() {
public void testChangeLanguageWhenWorkingOnTask() {
NavigationHelper.navigateToTaskList();
TopMenuTaskWidgetPage taskWidget = new TopMenuTaskWidgetPage();
taskWidget.startTaskIFrameByIndex(0);
TaskIFrameTemplatePage taskPage = taskWidget.startTaskIFrameByIndex(0);
taskWidget.switchBackToParent();
taskWidget.clickOnMyProfile();
taskPage.waitForTaskTitleAppear();
taskPage.clickOnMyProfile();
WorkingTaskDialogFromUserProfilePage workingTaskDialogPage = new WorkingTaskDialogFromUserProfilePage();
workingTaskDialogPage.leaveTask();
UserProfilePage userProfilePage = new UserProfilePage();
Expand Down
1 change: 1 addition & 0 deletions AxonIvyPortal/portal/cms/cms_de.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,7 @@ ch.ivy.addon.portalkit.ui.jsf:
active: Aktiviert
add: Hinzufügen
addDocument: Dokument hinzufügen
addLink: Link hinzufügen
addNote: Notiz hinzufügen
allCategories: Alle Kategorien
allTypes: Alle Typen
Expand Down
1 change: 1 addition & 0 deletions AxonIvyPortal/portal/cms/cms_en.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -409,6 +409,7 @@ ch.ivy.addon.portalkit.ui.jsf:
active: Active
add: Add
addDocument: Add document
addLink: Add Link
addNote: Add note
allCategories: All Categories
allTypes: All types
Expand Down
1 change: 1 addition & 0 deletions AxonIvyPortal/portal/cms/cms_es.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -411,6 +411,7 @@ ch.ivy.addon.portalkit.ui.jsf:
active: Activado
add: Añadir
addDocument: Agregar documento
addLink: Añadir enlace
addNote: Agregar nota
allCategories: Todas las categorias
allTypes: Todos los tipos
Expand Down
1 change: 1 addition & 0 deletions AxonIvyPortal/portal/cms/cms_fr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -408,6 +408,7 @@ ch.ivy.addon.portalkit.ui.jsf:
active: Activé
add: Ajouter
addDocument: Ajouter un document
addLink: Ajouter un lien
addNote: Ajouter une note
allCategories: Toutes les catégories
allTypes: Tous les types
Expand Down
4 changes: 2 additions & 2 deletions AxonIvyPortal/portal/config/variables/Portal/Dashboard.json
Original file line number Diff line number Diff line change
Expand Up @@ -377,7 +377,7 @@
],
"layout": {
"w": 12,
"h": 8,
"h": 12,
"x": 0,
"y": 0
},
Expand Down Expand Up @@ -489,7 +489,7 @@
],
"layout": {
"w": 12,
"h": 8,
"h": 12,
"x": 0,
"y": 0
},
Expand Down
4 changes: 2 additions & 2 deletions AxonIvyPortal/portal/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
</snapshotRepository>
</distributionManagement>
<properties>
<ivy.engine.version>12.0.1</ivy.engine.version>
<build.plugin.version>12.0.0-SNAPSHOT</build.plugin.version>
<ivy.engine.version>12.0.2</ivy.engine.version>
<build.plugin.version>12.0.0</build.plugin.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,6 @@ public void buildPortalLeftMenu(ITask workingTask, boolean isWorkingOnATask) {
mainMenuModel = new DefaultMenuModel();
mainMenuModel.getElements().add(buildDashboardItem()); // menuIndex = 0



List<SubMenuItem> subMenuItems = PortalMenuNavigator.callSubMenuItemsProcess();
int menuIndex = 1;
for (SubMenuItem subMenu : subMenuItems) {
Expand Down Expand Up @@ -152,13 +150,17 @@ private MenuElement buildDashboardItem() {
String mainMenuDisplayName = mainMenuEntryService.getNameInCurrentLocale();
String mainMenuIcon = mainMenuEntryService.getMenuIcon();

var subItemDashboards = getSubItemDashboards();
List<Dashboard> subItemDashboards = getSubItemDashboards();
if (subItemDashboards.size() > 1) {
return buildDashboardGroupMenu(subItemDashboards, dashboardTitle, mainMenuDisplayName, mainMenuIcon,
currentLanguage, dashboardLink);
} else if (subItemDashboards.size() == 1) {
Dashboard dashboard = subItemDashboards.getFirst();
String localizedTitle = getLocalizedTitle(dashboard, currentLanguage, dashboardTitle);
return buildSingleDashboardMenu(localizedTitle, dashboardId, dashboardLink, dashboard.getIcon());
}

return buildSingleDashboardMenu(dashboardTitle, dashboardId, dashboardLink);
return buildSingleDashboardMenu(dashboardTitle, "", dashboardLink, "");
}

private String determineDashboardLink() {
Expand Down Expand Up @@ -240,9 +242,11 @@ private void setMenuExpansion(DefaultSubMenu dashboardGroupMenu) {
}
}

private MenuElement buildSingleDashboardMenu(String dashboardTitle, String dashboardId, String dashboardLink) {
private MenuElement buildSingleDashboardMenu(String dashboardTitle, String dashboardId, String dashboardLink,
String dashboardIcon) {
var dashboardMenu = new PortalMenuBuilder(dashboardTitle, MenuKind.DASHBOARD, this.isWorkingOnATask)
.icon(PortalMenuItem.DEFAULT_DASHBOARD_ICON).url(dashboardLink).workingTaskId(this.workingTaskId).build();
.icon(StringUtils.isNoneEmpty(dashboardIcon) ? dashboardIcon : PortalMenuItem.DEFAULT_DASHBOARD_ICON)
.url(dashboardLink).workingTaskId(this.workingTaskId).build();

if (StringUtils.isBlank(dashboardId)) {
dashboardId = dashboardMenu.getId();
Expand Down
Loading
Loading