Search in sources :

Example 1 with MCRNavigationItem

use of org.mycore.wcms2.datamodel.MCRNavigationItem in project mycore by MyCoRe-Org.

the class MCRWCMSNavigationManager method updateHref.

/**
 * Runs recursive through the item tree and changes each href and hrefStartingPage attribute to the new href.
 *
 * @param item
 *            navigation item to change (and all its children)
 * @param from
 *            which href to change
 * @param to
 *            new value of href
 * @return if something in the tree was changed
 */
public static boolean updateHref(MCRNavigationBaseItem item, String from, String to) {
    boolean dirty = false;
    if (item instanceof MCRNavigation) {
        MCRNavigation navigation = (MCRNavigation) item;
        if (navigation.getHrefStartingPage() != null && navigation.getHrefStartingPage().equals(from)) {
            navigation.setHrefStartingPage(to);
            dirty = true;
        }
    } else if (item instanceof MCRNavigationItem) {
        MCRNavigationItem navItem = (MCRNavigationItem) item;
        if (navItem.getHref().equals(from)) {
            navItem.setHref(to);
            dirty = true;
        }
    }
    if (item instanceof MCRNavigationItemContainer) {
        MCRNavigationItemContainer container = (MCRNavigationItemContainer) item;
        for (MCRNavigationBaseItem child : container.getChildren()) {
            if (updateHref(child, from, to)) {
                dirty = true;
            }
        }
    }
    return dirty;
}
Also used : MCRNavigation(org.mycore.wcms2.datamodel.MCRNavigation) MCRNavigationItem(org.mycore.wcms2.datamodel.MCRNavigationItem) MCRNavigationItemContainer(org.mycore.wcms2.datamodel.MCRNavigationItemContainer) MCRNavigationBaseItem(org.mycore.wcms2.datamodel.MCRNavigationBaseItem)

Example 2 with MCRNavigationItem

use of org.mycore.wcms2.datamodel.MCRNavigationItem in project mycore by MyCoRe-Org.

the class MCRWCMSDefaultNavigationProvider method add.

private JsonObject add(MCRNavigationBaseItem item, JsonArray hierarchy, JsonArray items) {
    int id = items.size();
    JsonObject jsonItem = gson.toJsonTree(item).getAsJsonObject();
    jsonItem.addProperty(JSON_WCMS_ID, id);
    jsonItem.remove(JSON_CHILDREN);
    WCMSType type = null;
    String href = null;
    if (item instanceof MCRNavigation) {
        type = WCMSType.root;
        href = ((MCRNavigation) item).getHrefStartingPage();
    } else if (item instanceof MCRNavigationMenuItem) {
        type = WCMSType.menu;
        href = ((MCRNavigationMenuItem) item).getDir();
    } else if (item instanceof MCRNavigationItem) {
        type = WCMSType.item;
        href = ((MCRNavigationItem) item).getHref();
    } else if (item instanceof MCRNavigationInsertItem) {
        type = WCMSType.insert;
    } else if (item instanceof MCRNavigationGroup) {
        type = WCMSType.group;
    } else {
        LOGGER.warn("Unable to set type for item {}", id);
    }
    jsonItem.addProperty(JSON_WCMS_TYPE, type.name());
    if (href != null) {
        jsonItem.add("access", getAccess(href));
    }
    items.add(jsonItem);
    // create hierarchy for root
    JsonObject hierarchyObject = new JsonObject();
    hierarchyObject.addProperty(JSON_WCMS_ID, id);
    hierarchy.add(hierarchyObject);
    return hierarchyObject;
}
Also used : MCRNavigation(org.mycore.wcms2.datamodel.MCRNavigation) MCRNavigationItem(org.mycore.wcms2.datamodel.MCRNavigationItem) MCRNavigationMenuItem(org.mycore.wcms2.datamodel.MCRNavigationMenuItem) JsonObject(com.google.gson.JsonObject) MCRNavigationInsertItem(org.mycore.wcms2.datamodel.MCRNavigationInsertItem) MCRNavigationGroup(org.mycore.wcms2.datamodel.MCRNavigationGroup)

Aggregations

MCRNavigation (org.mycore.wcms2.datamodel.MCRNavigation)2 MCRNavigationItem (org.mycore.wcms2.datamodel.MCRNavigationItem)2 JsonObject (com.google.gson.JsonObject)1 MCRNavigationBaseItem (org.mycore.wcms2.datamodel.MCRNavigationBaseItem)1 MCRNavigationGroup (org.mycore.wcms2.datamodel.MCRNavigationGroup)1 MCRNavigationInsertItem (org.mycore.wcms2.datamodel.MCRNavigationInsertItem)1 MCRNavigationItemContainer (org.mycore.wcms2.datamodel.MCRNavigationItemContainer)1 MCRNavigationMenuItem (org.mycore.wcms2.datamodel.MCRNavigationMenuItem)1