Update of 
/var/cvs/contributions/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement
In directory 
james.mmbase.org:/tmp/cvs-serv20466/src/java/com/finalist/cmsc/services/sitemanagement

Modified Files:
        SiteManagementServiceMMBaseImpl.java 
Log Message:
CMSC-121 stylesheet override


See also: 
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement
See also: http://www.mmbase.org/jira/browse/CMSC-121


Index: SiteManagementServiceMMBaseImpl.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement/SiteManagementServiceMMBaseImpl.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- SiteManagementServiceMMBaseImpl.java        28 Apr 2008 12:45:05 -0000      
1.17
+++ SiteManagementServiceMMBaseImpl.java        11 Sep 2008 10:51:33 -0000      
1.18
@@ -184,7 +184,7 @@
          // loop through pages
          // if override only take the sheets of the last page
          for (int count = pagesToRoot.size()-1; count >= 0; count--) {
-            getStylesheetForPage(pagesToRoot, count, stylesheets);
+//            getStylesheetForPage(pagesToRoot, count, stylesheets);
 
             if (!stylesheets.isEmpty()) {
                return stylesheets;
@@ -193,27 +193,57 @@
       }
       else {
          // loop through pages
-         for (int count = 0; count < pagesToRoot.size(); count++) {
-            getStylesheetForPage(pagesToRoot, count, stylesheets);
+         if (pagesToRoot.size() >= 2) {
+                               for (int count = 0; count < pagesToRoot.size() 
- 1; count++) {
+                                       getStylesheetForPage(pagesToRoot, 
count, stylesheets, true);
+                               }
+                               Page curPage = 
pagesToRoot.get(pagesToRoot.size() - 1);
+
+                               List<Integer> curStyleSheets = 
curPage.getStylesheet();
+                               if (curStyleSheets.size() > 0) {
+                                       addStyleSheetToList(stylesheets, 
curStyleSheets, true);
+                               } else {
+                                       Page parentPage = 
pagesToRoot.get(pagesToRoot.size() - 2);
+                                       List<Integer> parentStyleSheets = 
parentPage
+                                                       .getStylesheet();
+                                       addStyleSheetToList(stylesheets, 
parentStyleSheets, false);
+                               }
+                       } else if (pagesToRoot.size() == 1) {
+                               List<Integer> wholeStyleSheets = 
pagesToRoot.get(0)
+                                               .getStylesheet();
+                               addStyleSheetToList(stylesheets, 
wholeStyleSheets, true);
          }
-         
       }
      
       return stylesheets;
    }
 
 
+       private void addStyleSheetToList(List<Stylesheet> stylesheets,
+                       List<Integer> curStyleSheets, boolean 
needCheckOverwriteable) {
+               for (Integer tmpStyleSheet : curStyleSheets) {
+                       Stylesheet stylesheet = siteModelManager
+                                       .getStylesheet(tmpStyleSheet);
+                       if (needCheckOverwriteable || 
stylesheet.isOverwriteable()) {
+                               stylesheets.add(stylesheet);
+                       }
+               }
+       }
+
+
    protected void getStylesheetForPage(List<Page> pagesToRoot, int count,
-         List<Stylesheet> stylesheets) {
+         List<Stylesheet> stylesheets, boolean overrideType) {
       Page page = pagesToRoot.get(count);
 
       List<Integer> stylesheetNumbers = page.getStylesheet();
       for (int j = 0; j < stylesheetNumbers.size(); j++) {
          Integer stylesheetNumber = stylesheetNumbers.get(j);
          Stylesheet stylesheet = 
siteModelManager.getStylesheet(stylesheetNumber.intValue());
+         if(stylesheet.isOverwriteable()== overrideType || 
"all".equals(overrideType)){
          stylesheets.add(stylesheet);
       }
    }
+   }
 
 
    @Override
_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to