Author: ymartel Date: 2012-05-10 18:03:28 +0200 (Thu, 10 May 2012) New Revision: 146 Url: http://chorem.org/repositories/revision/chorem/146 Log: when create or edit a wikitty from a given extension, should edit the required extensions too Modified: trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/GenericAction.java trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/decorator.jsp Modified: trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/GenericAction.java =================================================================== --- trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/GenericAction.java 2012-05-10 09:59:57 UTC (rev 145) +++ trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/GenericAction.java 2012-05-10 16:03:28 UTC (rev 146) @@ -1,24 +1,13 @@ package org.chorem.webmotion.actions; import com.google.common.collect.LinkedHashMultimap; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; import org.apache.commons.lang3.ArrayUtils; -import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.chorem.ChoremClient; import org.debux.webmotion.server.WebMotionController; import org.debux.webmotion.server.render.Render; -import org.nuiton.wikitty.WikittyUtil; import org.nuiton.wikitty.entities.Element; import org.nuiton.wikitty.entities.Wikitty; import org.nuiton.wikitty.entities.WikittyExtension; @@ -30,6 +19,15 @@ import org.nuiton.wikitty.query.WikittyQueryParser; import org.nuiton.wikitty.query.WikittyQueryResult; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; + /** * * @author poussin @@ -43,43 +41,6 @@ /** to use log facility, just put in your code: log.info(\"...\"); */ static private Log log = LogFactory.getLog(GenericAction.class); - // ANCIENNE IMLANTATION A SUPPRIMER - public Render search2(ChoremClient client, String[] extension, String query) { - WikittyQuery q = null; - if (StringUtils.isNotBlank(query)) { - q = new WikittyQueryParser().parseQuery(query); - } - if (extension != null) { - WikittyQueryMaker maker = new WikittyQueryMaker().or(); - for(String extName : extension) { - if (StringUtils.isNotBlank(extName)) { - maker.exteq(extName); - } - } - - if (q == null) { - q = maker.end(); - } else { - q = new WikittyQueryMaker(q).and() - .condition(q.getCondition()) - .condition(maker.getCondition()).end(); - } - } - LinkedHashMultimap<String, Wikitty> map = LinkedHashMultimap.create(); - if (q != null) { - WikittyQueryResult<Wikitty> result = client.findAllByQuery(Wikitty.class, q); - for (Wikitty w : result) { - for (String ext : w.getExtensionNames()) { - String ts = w.getExtension(ext).getTagValue(WikittyTagValue.TAG_TO_STRING); - if (StringUtils.isNotBlank(ts)) { - map.put(ext, w); - } - } - } - } - return renderView("search.jsp", "result", map); - } - // FIXME poussin 20120418 cette methode est-elle vraiment utilise ? // si oui searchJson ne peut-elle pas la remplacer ? public Render searchFieldJson(ChoremClient client, String query) { @@ -329,22 +290,25 @@ if (w == null) { w = new WikittyImpl(); } + + LinkedHashSet<WikittyExtension> exts = new LinkedHashSet<WikittyExtension>(); + + // If extension is not null, load all required extensions too if (extension != null) { + // Be sure that the wikitty has good extension if wanted and their requirements + List<String> extensionNames = Arrays.asList(extension); List<WikittyExtension> newExts = - client.restoreExtensionAndDependenciesLastVesion(Arrays.asList(extension)); + client.restoreExtensionAndDependenciesLastVesion(extensionNames); w.addExtension(newExts); + + // As we want to edit a wikitty by its extensions, we should edit the required extensions too + // Add the extension and required ones in the list of extensions to display + exts.addAll(newExts); } - LinkedHashSet<WikittyExtension> exts = new LinkedHashSet<WikittyExtension>(); - if (w != null) { - if (extension == null) { - exts.addAll(w.getExtensions()); - } else { - for (String extName : extension) { - exts.addAll(w.getExtensionDependencies(extName, true)); - exts.add(w.getExtension(extName)); - } - } + if (extension == null) { + // Show all wikitty if no extension were mentioned + exts.addAll(w.getExtensions()); } return renderView("edit.jsp", "wikitty", w, "extensions", exts); Modified: trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/decorator.jsp =================================================================== --- trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/decorator.jsp 2012-05-10 09:59:57 UTC (rev 145) +++ trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/decorator.jsp 2012-05-10 16:03:28 UTC (rev 146) @@ -54,17 +54,18 @@ <li><a href="<c:url value="/wikitty/Company/search"/>"><i class="icon-th-list icon-black"></i> All company</a></li> <li><a href="<c:url value="/wikitty/Company/edit/new"/>"><i class="icon-plus icon-black"></i> Add company</a></li> <li class="divider"></li> + <li><a href="<c:url value="/wikitty/Person/search"/>"><i class="icon-th-list icon-black"></i> All person</a></li> + <li><a href="<c:url value="/wikitty/Person/edit/new"/>"><i class="icon-plus icon-black"></i> Add person</a></li> + <li class="divider"></li> <li><a href="<c:url value="/wikitty/Employee/search"/>"><i class="icon-th-list icon-black"></i> All employee</a></li> <li><a href="<c:url value="/wikitty/Employee/edit/new"/>"><i class="icon-plus icon-black"></i> Add employee</a></li> <li class="divider"></li> - <li><a href="<c:url value="/wikitty/Person/search"/>"><i class="icon-th-list icon-black"></i> All person</a></li> - <li><a href="<c:url value="/wikitty/Person/edit/new"/>"><i class="icon-plus icon-black"></i> Add person</a></li> - <li class="divider"></li> <li><a href="<c:url value="/wikitty/Touch/search"/>"><i class="icon-th-list icon-black"></i> All touch</a></li> <li><a href="<c:url value="/wikitty/Touch/edit/new"/>"><i class="icon-plus icon-black"></i> Add touch</a></li> </ul> </li> <li class="dropdown nav-group"> + <!-- around projects --> <a href="<c:url value="/wikitty/search?extension=Quotation&extension=ProjectOrder&extension=Task"/>">Project</a> <a href="#" class="dropdown-toggle" data-toggle="dropdown"> <b class="caret"></b> @@ -85,15 +86,21 @@ </ul> </li> <li class="dropdown nav-group"> - <a href="/financial">Financial</a> - <a href="#" - class="dropdown-toggle" - data-toggle="dropdown"> + <!-- around financial --> + <a href="<c:url value="/wikitty/search?extension=Invoice&extension=Quotation&extension=Invoiceable"/>">Financial</a> + <a href="#" class="dropdown-toggle" data-toggle="dropdown"> <b class="caret"></b> </a> <ul class="dropdown-menu"> - <li><a href="/financial/projected">Projected</a></li> - <li><a href="/wikitty/search?query=extension=Invoice">Invoice</a></li> + <li>Projected</li> + <li><a href="<c:url value="/wikitty/Quotation/search"/>"><i class="icon-th-list icon-black"></i> All quotations</a></li> + <li><a href="<c:url value="/wikitty/Quotation/edit/new"/>"><i class="icon-plus icon-black"></i> Add quotation</a></li> + <li class="divider"></li> + <li>Invoice</li> + <li><a href="<c:url value="/wikitty/Invoice/search"/>"><i class="icon-th-list icon-black"></i> All invoices</a></li> + <li><a href="<c:url value="/wikitty/Invoice/edit/new"/>"><i class="icon-plus icon-black"></i> Add invoice</a></li> + <li class="divider"></li> + <li>Other</li> <li><a href="/wikitty/search?query=extension=Accounting">Accounting</a></li> </ul> </li>