Search in sources :

Example 1 with MCRNavigationBaseItem

use of org.mycore.wcms2.datamodel.MCRNavigationBaseItem 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 MCRNavigationBaseItem

use of org.mycore.wcms2.datamodel.MCRNavigationBaseItem 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)

Example 3 with MCRNavigationBaseItem

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

the class MCRWCMSDefaultNavigationProvider method fromJSON.

@Override
public MCRNavigation fromJSON(JsonObject navigationJSON) {
    JsonArray items = navigationJSON.get(JSON_ITEMS).getAsJsonArray();
    JsonArray hierarchy = navigationJSON.get(JSON_HIERARCHY).getAsJsonArray();
    if (hierarchy.size() > 0) {
        JsonObject root = hierarchy.get(0).getAsJsonObject();
        MCRNavigationBaseItem navigation = createItem(root, items);
        if (navigation instanceof MCRNavigation) {
            return (MCRNavigation) navigation;
        }
    }
    return null;
}
Also used : JsonArray(com.google.gson.JsonArray) MCRNavigation(org.mycore.wcms2.datamodel.MCRNavigation) MCRNavigationBaseItem(org.mycore.wcms2.datamodel.MCRNavigationBaseItem) JsonObject(com.google.gson.JsonObject)

Example 4 with MCRNavigationBaseItem

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

the class MCRWCMSDefaultNavigationProvider method createItem.

private MCRNavigationBaseItem createItem(JsonObject hierarchyObject, JsonArray items) {
    if (!hierarchyObject.has(JSON_WCMS_ID)) {
        LOGGER.warn("While saving navigation.xml. Invalid object in hierarchy.");
        return null;
    }
    MCRNavigationBaseItem item = getNavigationItem(hierarchyObject.get(JSON_WCMS_ID).getAsString(), items);
    if (item == null) {
        LOGGER.warn("While saving navigation.xml. Item with id {} is null!", hierarchyObject.get(JSON_WCMS_ID));
        return null;
    }
    JsonElement children = hierarchyObject.get(JSON_CHILDREN);
    if (children != null && children.isJsonArray() && item instanceof MCRNavigationItemContainer) {
        MCRNavigationItemContainer itemAsContainer = (MCRNavigationItemContainer) item;
        for (JsonElement child : children.getAsJsonArray()) {
            if (child.isJsonObject()) {
                MCRNavigationBaseItem childItem = createItem(child.getAsJsonObject(), items);
                if (childItem != null) {
                    itemAsContainer.getChildren().add(childItem);
                }
            }
        }
    }
    return item;
}
Also used : MCRNavigationItemContainer(org.mycore.wcms2.datamodel.MCRNavigationItemContainer) MCRNavigationBaseItem(org.mycore.wcms2.datamodel.MCRNavigationBaseItem) JsonElement(com.google.gson.JsonElement)

Aggregations

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