r120 - in trunk/src/main: java/org/chorem/bow webapp webapp/css webapp/img
Author: vbriand Date: 2010-10-29 10:56:57 +0200 (Fri, 29 Oct 2010) New Revision: 120 Url: http://chorem.org/repositories/revision/bow/120 Log: The bookmarks are now removable by import date on the preferences page. It is also possible to delete the bookmarks returned by a research Added: trunk/src/main/webapp/img/croixtr.png Modified: trunk/src/main/java/org/chorem/bow/ControllerServlet.java trunk/src/main/webapp/css/bookmark.css trunk/src/main/webapp/header.jsp trunk/src/main/webapp/preferences.jsp trunk/src/main/webapp/search.jsp Modified: trunk/src/main/java/org/chorem/bow/ControllerServlet.java =================================================================== --- trunk/src/main/java/org/chorem/bow/ControllerServlet.java 2010-10-26 15:04:25 UTC (rev 119) +++ trunk/src/main/java/org/chorem/bow/ControllerServlet.java 2010-10-29 08:56:57 UTC (rev 120) @@ -66,6 +66,7 @@ import org.nuiton.wikitty.FacetTopic; import org.nuiton.wikitty.PagedResult; import org.nuiton.wikitty.WikittyProxy; +import org.nuiton.wikitty.search.Element; import org.nuiton.wikitty.search.Search; /** @@ -244,6 +245,7 @@ if (log.isDebugEnabled()) { log.debug("Going to actionPreferences"); } + this.getBookmarksByImportDate(request, user); request.getRequestDispatcher("preferences.jsp").forward(request, response); } else if (action.equals("admin") && user != null) { if (log.isDebugEnabled()) { @@ -264,15 +266,21 @@ if (log.isDebugEnabled()) { log.debug("Going to actionDeleteImport"); } - this.actionDeleteImport(request, session, user); - request.getRequestDispatcher("preferences.jsp").forward(request, response); + this.actionDeleteImport(request, response, user); + //request.getRequestDispatcher("preferences.jsp").forward(request, response); } else if (action.equals("reIndexation") && user != null) { if (log.isDebugEnabled()) { log.debug("Going to actionReIndexation"); } this.actionReIndexation(request, session, user); request.getRequestDispatcher("admin.jsp").forward(request, response); - } else { + } else if (action.equals("deleteSearchResults") && user != null) { + if (log.isDebugEnabled()) { + log.debug("Going to actionDeleteSearchResults"); + } + this.actionDeleteSearchResults(request, response, user); + } + else { if (user != null) { request.getRequestDispatcher("error.jsp").forward(request, response); } else { @@ -290,14 +298,66 @@ } } + /* @param request servlet request + * @param user user information + * @throws IOException If the redirection fails + * @description Deletes every bookmark imported at a given date + */ + protected void actionDeleteImport(HttpServletRequest request, HttpServletResponse response, User user) throws IOException { + String date = request.getParameter("date"); + + if (date != null) { + WikittyProxy proxy = BowProxy.getInstance(); + + if (date.matches("[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{1,3}Z")) { + Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, Import.EXT_IMPORT).eq(Bookmark.FQ_FIELD_EMAIL, user.getEmail()). + eq(Import.FQ_FIELD_DATE, date).criteria(); + List<Import> bookmarks = proxy.findAllByCriteria(Import.class, criteria).getAll(); + List<String> ids = new ArrayList<String>(); - protected void actionDeleteImport(HttpServletRequest request, - HttpSession session, User user) { - ; + for (Import bookmark : bookmarks) { + ids.add(bookmark.getWikittyId()); + } + proxy.delete(ids); + } + response.sendRedirect("bow?action=preferences"); } + } - /* @param request servlet request + /* @param request servlet request * @param response servlet response + * @param user user information + * @throws IOException If the redirection fails + * @description Deletes the bookmarks returned after a research + */ + protected void actionDeleteSearchResults(HttpServletRequest request, HttpServletResponse response, User user) throws IOException { + String searchLine = request.getParameter("searchLine"); + String fullText = request.getParameter("fullTextLine"); + + if (searchLine != null && fullText != null) { + WikittyProxy proxy = BowProxy.getInstance(); + Criteria criteria = null; + if (fullText.isEmpty()) { + criteria = getBookmarkListCriteriaByUser(user, searchLine); + } else { + criteria = Search.query().keyword(fullText).eq(Bookmark.FQ_FIELD_EMAIL, user.getEmail()).criteria().addFacetField(Bookmark.FQ_FIELD_TAGS); + } + List<Bookmark> bookmarks = proxy.findAllByCriteria(Bookmark.class, criteria).getAll(); + List<String> ids = new ArrayList<String>(); + + for (Bookmark bookmark : bookmarks) { + if (((searchLine.isEmpty() && bookmark.getTags() == null) || !searchLine.isEmpty()) || + (fullText.isEmpty() && bookmark.getTags() == null) || !fullText.isEmpty()) { + ids.add(bookmark.getWikittyId()); + } + } + proxy.delete(ids); + } + response.sendRedirect("bow?action=home"); + } + + /* @param request servlet request + * @param response servlet response * @param user the user * @param token the permanent or temporary token * @throws ServletException if a servlet error occurs @@ -693,7 +753,7 @@ } else { String tag = request.getParameter("addTag"); if (tag != null && !tag.isEmpty()) { - if (searchLine == null || searchLine.isEmpty()) { + if (searchLine.isEmpty()) { searchLine = tag; } else { searchLine += " " + tag; @@ -934,21 +994,29 @@ protected void createImportExtension(List<Bookmark> bookmarks) { if (bookmarks != null && !bookmarks.isEmpty()) { - WikittyProxy proxy = BowProxy.getInstance(); - List<String> ids = new ArrayList<String>(); - for (Bookmark bookmark : bookmarks) { - String id = bookmark.getWikittyId(); - ids.add(id); - } - Date date = new Date(); - List<Import> imports = proxy.restore(Import.class, ids); - for (Import imp : imports) { - imp.setDate(date); - } - proxy.store(imports); + WikittyProxy proxy = BowProxy.getInstance(); + List<String> ids = new ArrayList<String>(); + for (Bookmark bookmark : bookmarks) { + String id = bookmark.getWikittyId(); + ids.add(id); + } + Date date = new Date(); + List<Import> imports = proxy.restore(Import.class, ids); + for (Import imp : imports) { + imp.setDate(date); + } + proxy.store(imports); } } + protected void getBookmarksByImportDate(HttpServletRequest request, User user) { + WikittyProxy proxy = BowProxy.getInstance(); + Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, Import.EXT_IMPORT).eq(Bookmark.FQ_FIELD_EMAIL, user.getEmail()).criteria(). + addFacetField(Import.FQ_FIELD_DATE); + List<FacetTopic> bookmarksImportDate = proxy.findAllByCriteria(Import.class, criteria).getTopic(Import.FQ_FIELD_DATE); + request.setAttribute("bookmarksImportDate", bookmarksImportDate); + } + /* @param request servlet request * @param response servlet response * @param user User user @@ -979,6 +1047,8 @@ parseHtmlToBookmarks(list, user, bookmarks, new ArrayList<String>()); bookmarks = proxy.store(bookmarks); createImportExtension(bookmarks); + initHomePage(request, user); + request.getRequestDispatcher("home.jsp").forward(request, response); } catch (ParserException e) { request.setAttribute("errorMsgUser", "Bad bookmarks file format, expected Netscape-like bookmarks file"); @@ -1097,7 +1167,7 @@ } else { WikittyProxy proxy = BowProxy.getInstance(); Criteria criteria = null; - if (fullText != null && !fullText.isEmpty()) { + if (!fullText.isEmpty()) { criteria = Search.query().keyword(fullText). eq(Bookmark.FQ_FIELD_EMAIL, user.getEmail()).criteria(). addFacetField(Bookmark.FQ_FIELD_TAGS); @@ -1141,10 +1211,10 @@ String[] words = searchLine.split("\\s+"); // put the tags in an array List<String> tags = new ArrayList<String>(Arrays.asList(words)); criteria = Search.query().eq(Bookmark.FQ_FIELD_EMAIL, user.getEmail()). - eq(Bookmark.FQ_FIELD_TAGS, tags).criteria().addFacetField(Bookmark.FQ_FIELD_TAGS); + eq(Bookmark.FQ_FIELD_TAGS, tags).criteria().addFacetField(Bookmark.FQ_FIELD_TAGS); } else { criteria = Search.query().eq(Bookmark.FQ_FIELD_EMAIL, user.getEmail()). - criteria().addFacetField(Bookmark.FQ_FIELD_TAGS); + criteria().addFacetField(Bookmark.FQ_FIELD_TAGS); } } return criteria; Modified: trunk/src/main/webapp/css/bookmark.css =================================================================== --- trunk/src/main/webapp/css/bookmark.css 2010-10-26 15:04:25 UTC (rev 119) +++ trunk/src/main/webapp/css/bookmark.css 2010-10-29 08:56:57 UTC (rev 120) @@ -375,4 +375,46 @@ .formFrame p input{ margin-bottom: 2px; +} + +.deleteImport{ + width: 100%; + height: 32px; + border: 1px solid black; + margin-bottom: 4px; + padding-top:10px; + padding-left: 15px; +} + +.deleteImportPink{ + background-color: #BF8A9C; +} + +.deleteImportWhite{ + background-color: white; + margin-left: 30px; +} + +.deleteImport span{ + color: blue; + font-size: large; +} + +.deleteImport .deleteImportButton{ + background: url('/bow/img/croixtr.png') no-repeat; + width: 31px; + height: 32px; + float: right; + margin-right: 15px; + position: relative; + top: -5px; +} + +#deleteSearchResultsButton{ + background: url('/bow/img/croixtr.png') no-repeat; + width: 31px; + height: 32px; + float: right; + margin-left: 25px; + margin-right: 11px; } \ No newline at end of file Modified: trunk/src/main/webapp/header.jsp =================================================================== --- trunk/src/main/webapp/header.jsp 2010-10-26 15:04:25 UTC (rev 119) +++ trunk/src/main/webapp/header.jsp 2010-10-29 08:56:57 UTC (rev 120) @@ -34,6 +34,24 @@ } return false; } + + function deleteConfirmation(goTo, bookmarksNb, importDate) { + var confMsg = "Do you really want to delete "; + + if (bookmarksNb > 1) { + confMsg += "these " + bookmarksNb + " bookmarks"; + } else { + confMsg += "this bookmark"; + } + + if (importDate !== undefined) + confMsg += " imported the " + importDate + "?"; + else + confMsg += "?"; + if (confirm(confMsg)) { + window.location = goTo; + } + } //--> </script> </head> Added: trunk/src/main/webapp/img/croixtr.png =================================================================== (Binary files differ) Property changes on: trunk/src/main/webapp/img/croixtr.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/src/main/webapp/preferences.jsp =================================================================== --- trunk/src/main/webapp/preferences.jsp 2010-10-26 15:04:25 UTC (rev 119) +++ trunk/src/main/webapp/preferences.jsp 2010-10-29 08:56:57 UTC (rev 120) @@ -3,6 +3,11 @@ <%@page import="org.chorem.bow.User"%> <%@page import="org.chorem.bow.TokenActions"%> <%@page import="org.chorem.bow.BookmarkActions"%> +<%@page import="org.chorem.bow.Bookmark" %> +<%@page import="org.chorem.bow.Import" %> +<%@page import="org.nuiton.wikitty.FacetTopic" %> +<%@page import="java.util.List" %> +<%@page import="java.util.Date" %> <% User user = (User) session.getAttribute("user"); Preference preference = (Preference) session.getAttribute("preference"); @@ -35,7 +40,7 @@ if (check == null) { preference.setSearchEngineUrlSuggestions(""); } - %> + %> <jsp:include page="header.jsp" flush="true"> <jsp:param name="cssFile" value="bookmark.css" /> </jsp:include> @@ -79,6 +84,40 @@ </p> </div> </form> + <div class="menu clearfix"> + <h2>Imported bookmarks</h2> + </div> + <% + List<FacetTopic> bookmarkImportList = (List<FacetTopic>)request.getAttribute("bookmarksImportDate"); + if (bookmarkImportList != null) { + if (bookmarkImportList.size() > 0) { + String bgColors[] = {"Pink", "White"}; + int i = 0; + int colorsNb = bgColors.length; + + for (FacetTopic bookmarkImport : bookmarkImportList) { + String date = bookmarkImport.getTopicName(); + String dateSave = date; + + date = date.replaceAll("[^0-9:-]+", " ").trim(); + date = date.substring(0, date.lastIndexOf(' ')); + %> + <div class="deleteImport deleteImport<%=bgColors[i % colorsNb]%>"> + <span><%= date + " (" + bookmarkImport.getCount() + " bookmarks)" %></span> + <a class="deleteImportButton" href="" onclick="deleteConfirmation('bow?action=deleteImport&date=<%=dateSave%>',<%=bookmarkImport.getCount()%>,'<%=date%>'); return(false);"></a> + </div> + <% + i++; + } + } else { + %> + <div class="deleteImport deleteImportWhite"> + <span>No imported bookmarks</span> + </div> + <% + } + } + %> </div> </div> <jsp:include page="rightMenu.jsp" flush="true" /> Modified: trunk/src/main/webapp/search.jsp =================================================================== --- trunk/src/main/webapp/search.jsp 2010-10-26 15:04:25 UTC (rev 119) +++ trunk/src/main/webapp/search.jsp 2010-10-29 08:56:57 UTC (rev 120) @@ -33,12 +33,19 @@ <option value="descDate">Desc Date</option> </select> <input type="submit" value="OK" /> + <% + List<Bookmark> bookmarkList = bookmarkActions.getBookmarks(); + int bookmarksNb = bookmarkList.size(); + + if (bookmarksNb > 0) { + %> + <a id="deleteSearchResultsButton" href="" onclick="deleteConfirmation('bow?action=deleteSearchResults&searchLine=<%= searchLine %>&fullTextLine=<%= fullText %>', <%=bookmarksNb%>); return(false);"></a> + <% } %> </p> </form> </div> <div class="content"> <% - List<Bookmark> bookmarkList = bookmarkActions.getBookmarks(); if (!bookmarkList.isEmpty()) { SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); for (Bookmark bookmark : bookmarkList) {
participants (1)
-
vbriand@users.chorem.org