Update of
/var/cvs/contributions/CMSContainer_Modules/subsite/src/java/com/finalist/cmsc/subsite/forms
In directory
james.mmbase.org:/tmp/cvs-serv26454/subsite/src/java/com/finalist/cmsc/subsite/forms
Modified Files:
SubSiteAction.java
Added Files:
PPContentAction.java
Log Message:
CMSC-635 - Big updates on subsite module and overview of personal pages.
See also:
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer_Modules/subsite/src/java/com/finalist/cmsc/subsite/forms
See also: http://www.mmbase.org/jira/browse/CMSC-635
PPContentAction.java is new
Index: SubSiteAction.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer_Modules/subsite/src/java/com/finalist/cmsc/subsite/forms/SubSiteAction.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- SubSiteAction.java 1 Feb 2008 12:55:56 -0000 1.1
+++ SubSiteAction.java 5 Feb 2008 17:42:06 -0000 1.2
@@ -9,20 +9,50 @@
*/
package com.finalist.cmsc.subsite.forms;
+import java.util.Calendar;
+import java.util.List;
+
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import net.sf.mmapps.commons.util.StringUtil;
+
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.mmbase.bridge.Cloud;
+import org.mmbase.bridge.Field;
import org.mmbase.bridge.Node;
import org.mmbase.bridge.NodeList;
+import org.mmbase.bridge.NodeManager;
+import org.mmbase.bridge.NodeQuery;
+import org.mmbase.bridge.util.Queries;
+import org.mmbase.bridge.util.SearchUtil;
+import org.mmbase.storage.search.Constraint;
+import org.mmbase.storage.search.FieldValueDateConstraint;
+import org.mmbase.storage.search.Step;
+import org.mmbase.storage.search.StepField;
+import org.mmbase.storage.search.implementation.BasicFieldValueDateConstraint;
+import org.mmbase.util.logging.Logger;
+import org.mmbase.util.logging.Logging;
+import com.finalist.cmsc.mmbase.PropertiesUtil;
import com.finalist.cmsc.navigation.NavigationUtil;
-import com.finalist.cmsc.struts.MMBaseAction;
+import com.finalist.cmsc.navigation.PagesUtil;
+import com.finalist.cmsc.repository.ContentElementUtil;
+import com.finalist.cmsc.repository.RepositoryUtil;
+import com.finalist.cmsc.repository.forms.SearchAction;
+import com.finalist.cmsc.repository.forms.SearchForm;
+import com.finalist.cmsc.resources.forms.QueryStringComposer;
+import com.finalist.cmsc.struts.PagerAction;
+import com.finalist.cmsc.subsite.util.SubSiteUtil;
+
+public class SubSiteAction extends PagerAction {
-public class SubSiteAction extends MMBaseAction {
+ /**
+ * MMbase logging system
+ */
+ private static Logger log =
Logging.getLoggerInstance(SearchAction.class.getName());
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
@@ -32,6 +62,9 @@
/*System.out.println(request.getParameterNames().toString());
System.out.println(request.getParameterMap().toString());*/
+ // Initialize
+ SearchForm searchForm = (SearchForm) form;
+
String subsite = request.getParameter("subsite");
/* Purpose of this file
@@ -60,16 +93,97 @@
addToRequest(request, "subsiteElements", subsiteElements);
}*/
+ Node subsiteNode = null;
//Retrieve list of pages of subsite
- if (! subsite.equalsIgnoreCase("")) {
- Node subsiteNode = cloud.getNode(subsite);
- if (subsiteNode != null) {
- NodeList pageNodes = NavigationUtil.getChildren(subsiteNode);
- addToRequest(request, "pageNodes", pageNodes);
+ if (!StringUtil.isEmpty(subsite)) {
+ subsiteNode = cloud.getNode(subsite);
+ /*if (subsiteNode != null) {
+ NodeList elements = NavigationUtil.getChildren(subsiteNode);
+ // NodeList elements =
RepositoryUtil.getLinkedElements(subsiteNode, null, null, null, false, -1, -1,
-1, -1, -1);
+ addToRequest(request, "elements", elements);
+ //addToRequest(request, "subsite", subsite);
// request.setAttribute("pageNodes", pageNodes);
+ }*/
+ } else {
+
+ return mapping.findForward(CANCEL);
+ }
+
+ NodeManager nodeManager = subsiteNode.getNodeManager();
+ // Order the result by:
+ String order = searchForm.getOrder();
+
+ // set default order field
+ if (StringUtil.isEmpty(order)) {
+ if (nodeManager.hasField("title")) {
+ order = "title";
+ }
+ if (nodeManager.hasField("name")) {
+ order = "name";
+ }
}
+
+
+ //QueryStringComposer queryStringComposer = new QueryStringComposer();
+ //NodeQuery query = cloud.createNodeQuery();
+ //createLinkedElementsQuery(channel, orderby, direction, offset,
maxNumber, year, month, day)
+ NodeQuery query = createLinkedElementsQuery(subsiteNode, order, null, 0,
25, -1, -1, -1);
+
+
+ // Add the title constraint:
+ if (!StringUtil.isEmpty(searchForm.getTitle())) {
+ Field field = nodeManager.getField(PagesUtil.TITLE_FIELD);
+ Constraint titleConstraint = SearchUtil.createLikeConstraint(query,
field, searchForm.getTitle());
+ SearchUtil.addConstraint(query, titleConstraint);
}
+ /*
+ NodeManager nodeManager = subsiteNode.getNodeManager();
+
+ // First add the proper step to the query.
+ Step theStep = null;
+ theStep = query.addStep(nodeManager);
+ query.setNodeStep(theStep);
+
+
+
+ query.setDistinct(true);
+
+ // Add the title constraint:
+ if (!StringUtil.isEmpty(searchForm.getTitle())) {
+
+ queryStringComposer.addParameter(PagesUtil.TITLE_FIELD,
searchForm.getTitle());
+ Field field = nodeManager.getField(PagesUtil.TITLE_FIELD);
+ Constraint titleConstraint = SearchUtil.createLikeConstraint(query,
field, searchForm.getTitle());
+ SearchUtil.addConstraint(query, titleConstraint);
+ }
+
+ // Set the maximum result size.
+ String resultsPerPage =
PropertiesUtil.getProperty(SearchAction.REPOSITORY_SEARCH_RESULTS_PER_PAGE);
+ if (resultsPerPage == null || !resultsPerPage.matches("\\d+")) {
+ query.setMaxNumber(25);
+ }
+ else {
+ query.setMaxNumber(Integer.parseInt(resultsPerPage));
+ }
+
+ // Set the offset (used for paging).
+ if (searchForm.getOffset() != null &&
searchForm.getOffset().matches("\\d+")) {
+ query.setOffset(query.getMaxNumber() *
Integer.parseInt(searchForm.getOffset()));
+ queryStringComposer.addParameter(OFFSET, searchForm.getOffset());
+ }*/
+
+ log.debug("QUERY: " + query);
+
+ int resultCount = Queries.count(query);
+ NodeList results = cloud.getList(query);
+ System.out.println("Count = " + resultCount);
+ //System.out.println("Query = " + query);
+ // Set everything on the request.
+ searchForm.setResultCount(resultCount);
+ searchForm.setResults(results);
+ //request.setAttribute("geturl", queryStringComposer.getQueryString());
+
/* if (!StringUtil.isEmpty(subsite)) {
Node channel = cloud.getNode(subsite);
@@ -88,8 +202,42 @@
addToRequest(request, "createdNumbers", createdNumbers);
}*/
- return mapping.findForward(SUCCESS);
-// return super.execute(mapping, form, request, response, cloud);
+// return mapping.findForward(SUCCESS);
+ return super.execute(mapping, form, request, response, cloud);
+ }
+
+ public static NodeQuery createLinkedElementsQuery(Node channel, String
orderby, String direction, int offset, int maxNumber, int year, int month, int
day) {
+ String destinationManager = SubSiteUtil.PERSONALPAGE;
+
+ NodeQuery query;
+ if (orderby == null) {
+ orderby = NavigationUtil.NAVREL + ".pos";
+ }
+
+ query = SearchUtil.createRelatedNodeListQuery(channel,
destinationManager, NavigationUtil.NAVREL);
+ SearchUtil.addFeatures(query, channel, destinationManager,
NavigationUtil.NAVREL, null, null, orderby, direction);
+
+ // Precision of now is based on minutes.
+ Calendar cal = Calendar.getInstance();
+ cal.set(Calendar.SECOND, 0);
+ cal.set(Calendar.MILLISECOND, 0);
+
+ if(year != -1 || month != -1 || day != -1) {
+ Field field =
query.getCloud().getNodeManager(destinationManager).getField("publishdate");
//Does this work?
+ StepField basicStepField = query.getStepField(field);
+ if(year != -1) {
+ SearchUtil.addConstraint(query, new
BasicFieldValueDateConstraint(basicStepField, new Integer(year),
FieldValueDateConstraint.YEAR));
+ }
+ if(month != -1) {
+ SearchUtil.addConstraint(query, new
BasicFieldValueDateConstraint(basicStepField, new Integer(month),
FieldValueDateConstraint.MONTH));
+ }
+ if(day != -1) {
+ SearchUtil.addConstraint(query, new
BasicFieldValueDateConstraint(basicStepField, new Integer(day),
FieldValueDateConstraint.DAY_OF_MONTH));
+ }
+ }
+
+ SearchUtil.addLimitConstraint(query, offset, maxNumber);
+ return query;
}
}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs