package com.psddev.cms.tool.widget; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.servlet.ServletException; import com.psddev.cms.db.Site; import com.psddev.cms.db.ToolUi; import com.psddev.cms.tool.CmsTool; import com.psddev.cms.tool.Dashboard; import com.psddev.cms.tool.DashboardWidget; import com.psddev.cms.tool.ToolPageContext; import com.psddev.dari.util.ObjectUtils; public class ResourcesWidget extends DashboardWidget { @ToolUi.Note("Leave empty to use the items defined globally.") private List<CmsTool.ResourceItem> items; public List<CmsTool.ResourceItem> getItems() { if (items == null) { items = new ArrayList<>(); } return items; } public void setItems(List<CmsTool.ResourceItem> items) { this.items = items; } @Override public void writeHtml(ToolPageContext page, Dashboard dashboard) throws IOException, ServletException { List<CmsTool.ResourceItem> resources = getItems(); if (resources == null || resources.isEmpty()) { Site site = page.getSite(); if (site != null) { resources = site.getResources(); } if (resources == null || resources.isEmpty()) { resources = page.getCmsTool().getResources(); } if (resources != null) { for (Iterator<CmsTool.ResourceItem> i = resources.iterator(); i.hasNext();) { if (ObjectUtils.isBlank(i.next().getUrl())) { i.remove(); } } } } page.writeStart("div", "class", "widget"); page.writeStart("h1", "class", "icon icon-globe"); page.writeHtml(page.localize(ResourcesWidget.class, "title")); page.writeEnd(); if (resources == null || resources.isEmpty()) { page.writeStart("div", "class", "message message-info"); page.writeHtml(page.localize(ResourcesWidget.class, "message.noResources")); page.writeEnd(); } else { page.writeStart("ul", "class", "links"); for (CmsTool.ResourceItem item : resources) { String url = item.getUrl(); if (!ObjectUtils.isBlank(url)) { page.writeStart("li"); page.writeStart("a", "href", url, "target", item.isSameWindow() ? "_top" : "_blank"); page.writeHtml(item.getName()); page.writeEnd(); page.writeEnd(); } } page.writeEnd(); } page.writeEnd(); } }