public String doView(RenderRequest request, RenderResponse response) throws Exception { // The JSP to show upon success String defaultView = VIEW_PAGE; // Determine the project container to use Project project = findProject(request); // Check the user's permissions User user = PortalUtils.getUser(request); if (!ProjectUtils.hasAccess(project.getId(), user, "project-wiki-view")) { throw new PortletException("Unauthorized to view in this project"); } // Load the records Connection db = useConnection(request); WikiList wikiList = new WikiList(); wikiList.setProjectId(project.getId()); PagedListInfo pagedList = new PagedListInfo(); pagedList.setColumnToSortBy(DatabaseUtils.toLowerCase(db, "w.subject")); pagedList.setItemsPerPage(-1); wikiList.setPagedListInfo(pagedList); wikiList.buildList(db); request.setAttribute(WIKI_LIST, wikiList); // JSP view return defaultView; }
/** * Retrieves all user projects that they are authorized to modify. * * @param db - the database connection * @param user - the user to find projects for * @return ProjectList - the list of projects the user is authorized to modify * @throws SQLException - generated trying to retrieve the data */ private ProjectList findUserProjects(Connection db, User user) throws SQLException { ProjectList tmpList = new ProjectList(); ProjectList returnList = new ProjectList(); tmpList.setOpenProjectsOnly(true); tmpList.setProjectsForUser(user.getId()); tmpList.buildList(db); for (Project p : tmpList) { if (ProjectUtils.hasAccess(p.getId(), user, "project-lists-modify")) { returnList.add(p); } } return returnList; }
public String doView(RenderRequest request, RenderResponse response) throws Exception { // The JSP to show upon success String defaultView = VIEW_PAGE; String ctx = request.getContextPath(); // Determine the project container to use Project project = findProject(request); // Check the user's permissions User user = getUser(request); if (!ProjectUtils.hasAccess(project.getId(), user, "project-discussion-topics-view")) { throw new PortletException("Unauthorized to view in this project"); } // Retrieve parameters int forumId = PortalUtils.getPageViewAsInt(request); String resetList = request.getParameter("resetList"); // Build a list of records Connection db = useConnection(request); // Paging will be used for remembering several list view settings if ("true".equals(resetList)) { // deletePagedListInfo(request, "projectIssuesInfo"); } PagedListInfo pagedListInfo = getPagedListInfo(request, PAGED_LIST_INFO); pagedListInfo.setLink(ctx + "/show/" + project.getUniqueId() + "/forum/" + forumId); if (pagedListInfo.getInitializationLevel() == PagedListInfo.LEVEL_INITIALIZED) { pagedListInfo.setColumnToSortBy("i.last_reply_date"); pagedListInfo.setSortOrder("desc"); } // Load the category info Forum forum = new Forum(db, forumId, project.getId()); request.setAttribute(FORUM, forum); PortalUtils.setGeneratedData(request, FORUM, forum); // Load the records TopicList topicList = new TopicList(); topicList.setProjectId(project.getId()); topicList.setCategoryId(forum.getId()); topicList.setPagedListInfo(pagedListInfo); topicList.buildList(db); request.setAttribute(TOPIC_LIST, topicList); // JSP view return defaultView; }
public void testHTMLTableImageToWiki() throws Exception { // Stage a project for the cache Project project = new Project(); project.setId(9999999); project.setTitle("Some Project"); project.setUniqueId("some-project"); CacheUtils.updateValue(Constants.SYSTEM_PROJECT_CACHE, 9999999, project); CacheUtils.updateValue(Constants.SYSTEM_PROJECT_UNIQUE_ID_CACHE, "some-project", 9999999); String wiki = HTMLToWikiUtils.htmlToWiki(htmlSample1, "", project.getId()); assertEquals( "" + "||Site||Description||\n" + "|[[Image:tzvids.arizona.stimulus.gi.jpg]]|This is the first picture\n" + "!\n" + "!(nice)|\n" + "|[[Image:tzvids.haiti.aid.afp.gi.jpg]]|This is the second picture|\n" + "", wiki); // Read it, re-write it, and compare Wiki thisWiki = new Wiki(); thisWiki.setProjectId(project.getId()); thisWiki.setContent(wiki); WikiToHTMLContext wikiContext = new WikiToHTMLContext(thisWiki, new HashMap<String, ImageInfo>(), -1, false, ""); String html = WikiToHTMLUtils.getHTML(wikiContext, null); assertEquals(wiki, HTMLToWikiUtils.htmlToWiki(html, "", project.getId())); }
public void testHTMLTableToWiki() throws Exception { // Stage a project for the cache Project project = new Project(); project.setId(9999999); project.setTitle("Some Project"); project.setUniqueId("some-project"); CacheUtils.updateValue(Constants.SYSTEM_PROJECT_CACHE, 9999999, project); CacheUtils.updateValue(Constants.SYSTEM_PROJECT_UNIQUE_ID_CACHE, "some-project", 9999999); String wiki = HTMLToWikiUtils.htmlToWiki(htmlSample1, "", project.getId()); assertEquals( "" + "||ConcourseConnect||ConcourseSuite||\n" + "|ConcourseConnect is the first platform that enables the creation of true commercial networks. Commercial networks are the intersection of social networking, web 2.0 collaboration and sales and marketing tools.\n" + "!\n" + "!ConcourseConnect enables organizations to create dynamic communities to connect various stakeholders and manage the entire ecosystem with an integrated management console and backend CRM tools. [[Security, Registration, Invitation|Installation Options]]|ConcourseSuite is Concursive's dedicated Customer Relationship Management (CRM) product. It is a complete front office solution that integrates CRM, website creation, content management and team collaboration capabilities into one easy to use, easy to deploy solution that is available in both hosted and on-premise configurations. [[Technical Documentation]] (Owner)|\n" + "", wiki); // Read it, re-write it, and compare Wiki thisWiki = new Wiki(); thisWiki.setProjectId(project.getId()); thisWiki.setContent(wiki); WikiToHTMLContext wikiContext = new WikiToHTMLContext(thisWiki, new HashMap<String, ImageInfo>(), -1, false, ""); String html = WikiToHTMLUtils.getHTML(wikiContext, null); assertEquals(wiki, HTMLToWikiUtils.htmlToWiki(html, "", project.getId())); }
@Override public void processAction(ActionRequest request, ActionResponse response) throws PortletException, IOException { String ctx = request.getContextPath(); boolean isClose = "true".equals(request.getParameter("close")); if (isClose) { // Clean up the session LOG.debug("Closing the form"); request.getPortletSession().removeAttribute(VIEW_TYPE); response.sendRedirect(ctx + CLOSE_PAGE); return; } int projectIdToBookmark = Integer.valueOf(request.getParameter(PROJECT_ID_TO_BOOKMARK)); int projectIdOfLists = Integer.valueOf(request.getParameter(PROJECT_ID_OF_LISTS)); String newListName = request.getParameter(NEW_LIST_NAME); // If the user selected an item in the drop-down, then that means they are // changing lists int pidToCompare = Integer.valueOf(request.getParameter("pidToCompare")); boolean isChangePidOfLists = pidToCompare != projectIdOfLists; if (isChangePidOfLists) { LOG.debug("A new project has been selected: " + projectIdOfLists); response.setRenderParameter(PROJECT_ID_OF_LISTS, String.valueOf(projectIdOfLists)); return; } try { LOG.debug("Saving the form..."); boolean isSuccess; User user = PortalUtils.getUser(request); int userId = user.getId(); Connection db = PortalUtils.useConnection(request); Project projectOfLists = new Project(db, projectIdOfLists); Project projectToBookmark = new Project(db, projectIdToBookmark); Collection<Integer> listIds = getListIds(request.getParameterValues(LIST)); // verify user can modify lists for project boolean isAddNewList = false; if (ProjectUtils.hasAccess(projectOfLists.getId(), user, "project-lists-modify")) { if (!StringUtils.hasText(newListName) && (listIds.size() == 0)) { System.out.println("Error need to show From"); request.getPortletSession().setAttribute(ACTION_ERROR, "Choose a list or create one"); request.getPortletSession().setAttribute(VIEW_TYPE, VIEW_FORM_PAGE); return; } if (StringUtils.hasText(newListName)) { if (!ProjectUtils.hasAccess(projectOfLists.getId(), user, "project-lists-add")) { request .getPortletSession() .setAttribute(ACTION_ERROR, "Not authorized to create new list"); request.getPortletSession().setAttribute(VIEW_TYPE, VIEW_FORM_PAGE); return; } int newListId = saveNewList(db, projectIdOfLists, newListName); if (newListId == -1) { request.getPortletSession().setAttribute(ACTION_ERROR, "Unable to create new list."); request.getPortletSession().setAttribute(VIEW_TYPE, SAVE_FAILURE); return; } else { listIds.add(newListId); isAddNewList = true; } } TaskList existingTasks = findExistingTasksForProjects(db, projectIdOfLists, projectIdToBookmark); // check to see if the user is deleting tasks (listItems) if ((isAddNewList && existingTasks.size() > listIds.size() - 1) || !isAddNewList && existingTasks.size() > listIds.size()) { if (!ProjectUtils.hasAccess(projectOfLists.getId(), user, "project-lists-delete")) { request .getPortletSession() .setAttribute(ACTION_ERROR, "Not authorized to delete items"); request.getPortletSession().setAttribute(VIEW_TYPE, VIEW_FORM_PAGE); return; } else { deleteFromLists(db, existingTasks, listIds); } } isSuccess = saveToLists( db, existingTasks, listIds, userId, projectIdToBookmark, projectToBookmark.getTitle(), projectIdOfLists, request); } else { isSuccess = false; request.getPortletSession().setAttribute(ACTION_ERROR, "Not authorized to bookmark"); } if (isSuccess) { // Close the panel, everything went well response.sendRedirect(ctx + "/close_panel_refresh.jsp"); } else { request.getPortletSession().setAttribute(VIEW_TYPE, SAVE_FAILURE); } } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(e); } }
@Override public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException { try { String view = VIEW_FORM_PAGE; String viewType = request.getParameter("viewType"); if (viewType == null) { viewType = (String) request.getPortletSession().getAttribute("viewType"); } // Set global preferences request.setAttribute(TITLE, request.getPreferences().getValue(PREF_TITLE, null)); request.setAttribute( INTRODUCTION_MESSAGE, request.getPreferences().getValue(PREF_INTRODUCTION_MESSAGE, null)); User user = PortalUtils.getUser(request); Project project = PortalUtils.getProject(request); Task task = (Task) request.getPortletSession().getAttribute("task"); int projectId = project == null ? -1 : project.getId(); String projectIdOfLists = request.getParameter(PROJECT_ID_OF_LISTS); int pidOfLists = projectIdOfLists == null ? -1 : Integer.parseInt(projectIdOfLists); LOG.debug("doView: pidOfLists -- " + pidOfLists); // Clean up session request.getPortletSession().removeAttribute(VIEW_TYPE); request.getPortletSession().removeAttribute(PROJECT_ID_OF_LISTS); if (SAVE_FAILURE.equals(viewType)) { // Prep the form to show errors... request.setAttribute( ACTION_ERROR, request.getPreferences().getValue(PREF_FAILURE_MESSAGE, null)); // Show the form with any errors provided PortalUtils.processErrors(request, task.getErrors()); } else if (SAVE_SUCCESS.equals(viewType)) { // Save Success request.setAttribute( SUCCESS_MESSAGE, request.getPreferences().getValue(PREF_SUCCESS_MESSAGE, null)); view = VIEW_MESSAGE_PAGE; } else { if (!user.isLoggedIn()) { // If user is not logged in, redirect view = VIEW_MESSAGE_PAGE; request.setAttribute(ACTION_ERROR, "You need to be logged in to perform this action"); } else if (projectId <= 0) { request.setAttribute(ACTION_ERROR, "No project was specified"); view = VIEW_MESSAGE_PAGE; } else { view = VIEW_FORM_PAGE; try { Connection db = PortalUtils.useConnection(request); int userProfileId = user.getProfileProjectId(); Project userProfile; if (userProfileId == -1) { view = VIEW_MESSAGE_PAGE; request.setAttribute(ACTION_ERROR, "No profile is available to bookmark."); } else { userProfile = ProjectUtils.loadProject(userProfileId); if (pidOfLists == -1) { pidOfLists = userProfile.getId(); } // check the user has permissions to add/delete from lists for the project whose lists // are being modified // these will be used by the view to dynamically show/hide functionality request.setAttribute( CAN_ADD_LIST, ProjectUtils.hasAccess(pidOfLists, user, "project-lists-add")); request.setAttribute( CAN_DELETE_FROM_LIST, ProjectUtils.hasAccess(pidOfLists, user, "project-lists-delete")); ProjectList projectList = findUserProjects(db, user); ProjectList availableProjects = new ProjectList(); // Profile needs to appear on top so remove it from list and don't add twice availableProjects.add(userProfile); for (int i = 0; i != projectList.size(); i++) { Project p = projectList.get(i); if (p.getId() != userProfile.getId()) { availableProjects.add(p); } } TaskCategoryList availableLists = getAvailableLists(db, pidOfLists); String errorMessage = (String) request.getPortletSession().getAttribute(ACTION_ERROR); if (StringUtils.hasText(errorMessage)) { request.setAttribute(ACTION_ERROR, errorMessage); } Map<Integer, TaskCategory> usedLists = findExistingTaskCategorysForProjects(db, pidOfLists, project.getId()); request.setAttribute(PROJECT_ID_OF_LISTS, pidOfLists); request.setAttribute(PROJECT, project); request.setAttribute(AVAILABLE_LISTS, availableLists); request.setAttribute(USER_PROFILE, userProfile); request.setAttribute(AVAILABLE_PROJECTS, availableProjects); request.setAttribute(USED_LIST_MAP, usedLists); } } catch (SQLException e) { e.printStackTrace(); view = VIEW_MESSAGE_PAGE; request.setAttribute( ACTION_ERROR, "An error occurred processing your request. Please try again."); } } } // Clean up session request.getPortletSession().removeAttribute(ACTION_ERROR); PortletContext context = getPortletContext(); PortletRequestDispatcher requestDispatcher = context.getRequestDispatcher(view); requestDispatcher.include(request, response); } catch (Exception e) { e.printStackTrace(); throw new PortletException(e); } }