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