/** * Builds an html-info string about the current page and its linked resources * * @return HTML-String */ private String getCurrentPageInfoStringHTML() { // test if currentPage links to resource, which is used (linked) somewhere // else in the manifest final CPManager cpMgm = CPManager.getInstance(); final DefaultElement ele = cpMgm.getElementByIdentifier(cp, currentPage.getIdRef()); boolean single = false; if (ele instanceof CPResource) { final CPResource res = (CPResource) ele; single = cpMgm.isSingleUsedResource(res, cp); } final StringBuilder b = new StringBuilder(); b.append("<br /><ul>"); b.append( "<li><b>" + translate("cptreecontroller.pagetitle") + "</b> " + currentPage.getTitle() + "</li>"); if (single) { b.append( "<li><b>" + translate("cptreecontroller.file") + "</b> " + currentPage.getFileName() + "</li>"); } b.append("</ul>"); return b.toString(); }
/** * Performs the node-move-actions (invokes methods of the manager...) * * @param event * @return returns true, if move was successfull */ private boolean movePage(final MoveTreeNodeEvent event) { final CPManager cpMgm = CPManager.getInstance(); final String movedNodeId = event.getNodeId(); cpMgm.moveElement(cp, movedNodeId, event.getNewParentNodeId(), event.getPosition()); cpMgm.writeToFile(cp); selectTreeNodeById(movedNodeId); return true; }
/** * copies the page with given nodeID * * @param nodeID */ private String copyPage(final CPPage page) { String newIdentifier = null; if (page != null) { final CPManager cpMgm = CPManager.getInstance(); newIdentifier = cpMgm.copyElement(cp, page.getIdentifier()); cpMgm.writeToFile(cp); } return newIdentifier; }
/** * deletes a page from the manifest * * @param nodeID */ private void deletePage(final String identifier, final boolean deleteResource) { if (identifier.equals("")) { // no page selected } else { final CPManager cpMgm = CPManager.getInstance(); final String path = treeModel.getPath(identifier); treeCtr.removePath(path); cpMgm.removeElement(cp, identifier, deleteResource); cpMgm.writeToFile(cp); } }
/** * Adds a page to the CP * * @return */ protected String addPage(final CPPage page) { final CPManager cpMgm = CPManager.getInstance(); String newNodeID = ""; if (currentPage.getIdentifier().equals("")) { newNodeID = cpMgm.addBlankPage(cp, page.getTitle()); } else { // adds new page as child of currentPage newNodeID = cpMgm.addBlankPage(cp, page.getTitle(), currentPage.getIdentifier()); } setCurrentPage(new CPPage(newNodeID, cp)); cpMgm.writeToFile(cp); // treeCtr.getInitialComponent().setDirty(true); return newNodeID; }
/** @param page */ protected void updatePage(final CPPage page) { setCurrentPage(page); final CPManager cpMgm = CPManager.getInstance(); cpMgm.updatePage(cp, page); cpMgm.writeToFile(cp); if (page.isOrgaPage()) { // TODO:GW Shall the repo entry title be updated when the organization // title changes? // // If the organization title changed, also update the repo entry // // title. // RepositoryManager resMgr = RepositoryManager.getInstance(); // RepositoryEntry cpEntry = // resMgr.lookupRepositoryEntry(cp.getResourcable(), false); // cpEntry.setDisplayname(page.getTitle()); treeCtr.setRootNodeTitle(page.getTitle()); } selectTreeNodeByCPPage(page); }
protected CPTreeController( final UserRequest ureq, final WindowControl control, final ContentPackage cp) { super(ureq, control); contentVC = createVelocityContainer("treeView"); this.cp = cp; final String rootTitle = cp.getFirstOrganizationInManifest().getTitle(); final CPManager cpMgm = CPManager.getInstance(); treeModel = cpMgm.getTreeDataModel(cp); treeCtr = new TreeController(ureq, control, rootTitle, treeModel, null); treeCtr.setTreeInlineEditing(true, null, null); // do not sort jsTree (structure is given by manifest) treeCtr.setTreeSorting(false, false, false); listenTo(treeCtr); setLinks(); contentVC.put("cptreecontroller.tree", treeCtr.getInitialComponent()); putInitialPanel(contentVC); }
/** * Adds a new page to the CP * * @return */ protected String addNewHTMLPage() { final String newId = CPManager.getInstance() .addBlankPage( cp, translate("cptreecontroller.newpage.title"), currentPage.getIdentifier()); final CPPage newPage = new CPPage(newId, cp); // Create an html file final VFSContainer root = cp.getRootDir(); final VFSLeaf htmlFile = root.createChildLeaf(newId + ".html"); newPage.setFile(htmlFile); updatePage(newPage); return newId; }
/** * Retrieves the parent identifier of the current page * * @return The identifier of the current page's parent */ private String getParentIdentifier() { final DefaultElement currentElem = CPManager.getInstance().getElementByIdentifier(cp, currentPage.getIdentifier()); // Get the parent node to be displayed after deletion. String parentIdentifier = null; if (currentElem instanceof CPItem) { final Element parent = ((CPItem) currentElem).getParentElement(); if (parent instanceof CPItem) { final CPItem parentItem = (CPItem) parent; parentIdentifier = parentItem.getIdentifier(); } else if (parent instanceof CPOrganization) { final CPOrganization parentItem = (CPOrganization) parent; parentIdentifier = parentItem.getIdentifier(); } } return parentIdentifier; }
/** * Update the module configuration to have all mandatory configuration flags set to usefull * default values * * @param isNewNode true: an initial configuration is set; false: upgrading from previous node * configuration version, set default to maintain previous behaviour */ @Override public void updateModuleConfigDefaults(boolean isNewNode) { int CURRENTVERSION = 7; ModuleConfiguration config = getModuleConfiguration(); if (isNewNode) { // use defaults for new course building blocks config.setBooleanEntry(NodeEditController.CONFIG_STARTPAGE, Boolean.FALSE.booleanValue()); config.setBooleanEntry(NodeEditController.CONFIG_COMPONENT_MENU, Boolean.TRUE.booleanValue()); // how to render files (include jquery etc) DeliveryOptions nodeDeliveryOptions = DeliveryOptions.defaultWithGlossary(); nodeDeliveryOptions.setInherit(Boolean.TRUE); config.set(CPEditController.CONFIG_DELIVERYOPTIONS, nodeDeliveryOptions); config.setConfigurationVersion(CURRENTVERSION); } else { config.remove(NodeEditController.CONFIG_INTEGRATION); if (config.getConfigurationVersion() < 2) { // update new configuration options using default values for existing // nodes config.setBooleanEntry(NodeEditController.CONFIG_STARTPAGE, Boolean.TRUE.booleanValue()); Boolean componentMenu = config.getBooleanEntry(NodeEditController.CONFIG_COMPONENT_MENU); if (componentMenu == null) { config.setBooleanEntry( NodeEditController.CONFIG_COMPONENT_MENU, Boolean.TRUE.booleanValue()); } config.setConfigurationVersion(2); } if (config.getConfigurationVersion() < 3) { config.set( NodeEditController.CONFIG_CONTENT_ENCODING, NodeEditController.CONFIG_CONTENT_ENCODING_AUTO); config.set( NodeEditController.CONFIG_JS_ENCODING, NodeEditController.CONFIG_JS_ENCODING_AUTO); config.setConfigurationVersion(3); } // Version 5 was ineffective since the delivery options were not set. We have to redo this and // save it as version 6 if (config.getConfigurationVersion() < 7) { String contentEncoding = (String) config.get(NodeEditController.CONFIG_CONTENT_ENCODING); if (contentEncoding != null && contentEncoding.equals("auto")) { contentEncoding = null; // new style for auto } String jsEncoding = (String) config.get(NodeEditController.CONFIG_JS_ENCODING); if (jsEncoding != null && jsEncoding.equals("auto")) { jsEncoding = null; // new style for auto } CPPackageConfig reConfig = null; DeliveryOptions nodeDeliveryOptions = (DeliveryOptions) config.get(CPEditController.CONFIG_DELIVERYOPTIONS); if (nodeDeliveryOptions == null) { // Update missing delivery options now, inherit from repo by default nodeDeliveryOptions = DeliveryOptions.defaultWithGlossary(); nodeDeliveryOptions.setInherit(Boolean.TRUE); RepositoryEntry re = getReferencedRepositoryEntry(); // Check if delivery options are set for repo entry, if not create default if (re != null) { reConfig = CPManager.getInstance().getCPPackageConfig(re.getOlatResource()); if (reConfig == null) { reConfig = new CPPackageConfig(); } DeliveryOptions repoDeliveryOptions = reConfig.getDeliveryOptions(); if (repoDeliveryOptions == null) { // migrate existing config back to repo entry using the default as a base repoDeliveryOptions = DeliveryOptions.defaultWithGlossary(); reConfig.setDeliveryOptions(repoDeliveryOptions); repoDeliveryOptions.setContentEncoding(contentEncoding); repoDeliveryOptions.setJavascriptEncoding(jsEncoding); CPManager.getInstance().setCPPackageConfig(re.getOlatResource(), reConfig); } else { // see if we have any different settings than the repo. if so, don't use inherit mode if (contentEncoding != repoDeliveryOptions.getContentEncoding() || jsEncoding != repoDeliveryOptions.getJavascriptEncoding()) { nodeDeliveryOptions.setInherit(Boolean.FALSE); nodeDeliveryOptions.setContentEncoding(contentEncoding); nodeDeliveryOptions.setJavascriptEncoding(jsEncoding); } } } // remove old config parameters config.remove(NodeEditController.CONFIG_CONTENT_ENCODING); config.remove(NodeEditController.CONFIG_JS_ENCODING); // replace with new delivery options config.set(CPEditController.CONFIG_DELIVERYOPTIONS, nodeDeliveryOptions); } config.setConfigurationVersion(7); } // else node is up-to-date - nothing to do } if (config.getConfigurationVersion() != CURRENTVERSION) { OLog logger = Tracing.createLoggerFor(CPCourseNode.class); logger.error( "CP course node version not updated to lastest version::" + CURRENTVERSION + ", was::" + config.getConfigurationVersion() + ". Check the code, programming error."); } }