From 4f83152ac7c51ae0505741e3abec31f9cb1a9901 Mon Sep 17 00:00:00 2001 From: pb Date: Fri, 10 Feb 2012 17:24:55 +0000 Subject: [PATCH] =?UTF-8?q?FAQ=20auf=20legacy=20free=20umgestellt,=20aber?= =?UTF-8?q?=20Admin=20Oberfl=C3=A4che=20funktioniert=20noch=20nicht.=20Upg?= =?UTF-8?q?rade=20nicht=20erforderlich,=20da=20bisher=20nicht=20genutzt.?= =?UTF-8?q?=20Diverse=20kleinere=20Bereinigungen,=20Formatierungen,=20Doku?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.libreccm.org/ccm/trunk@1503 8810af33-2d31-482b-a856-94f89814c4df --- .../heirloom/images/tabbed-pane/tab-bar.png | Bin 0 -> 254 bytes .../images/tabbed-pane/tab-selected-end.png | Bin 0 -> 258 bytes .../images/tabbed-pane/tab-selected.png | Bin 0 -> 575 bytes .../images/tabbed-pane/tab-unselected-end.png | Bin 0 -> 238 bytes .../images/tabbed-pane/tab-unselected.png | Bin 0 -> 416 bytes .../categorization/xsl/categorization.xsl | 18 + ...ants.java => Constants.java.nolongerInUse} | 0 .../src/com/arsdigita/docrepo/File.java | 32 +- .../src/com/arsdigita/docrepo/Folder.java | 9 +- .../com/arsdigita/docrepo/Initializer.java | 2 +- .../src/com/arsdigita/docrepo/Repository.java | 39 +- .../arsdigita/docrepo/RepositoryServlet.java | 35 + .../com/arsdigita/docrepo/ResourceImpl.java | 40 +- .../docrepo/ui/DestinationFolderForm.java | 8 +- ccm-faq/src/com/arsdigita/faq/Faq.java | 43 +- ccm-faq/src/com/arsdigita/faq/FaqServlet.java | 6 +- .../WEB-INF/{web.faq.xml => web.ccm-faq.xml} | 4 +- .../heirloom}/apps/faq/xsl/index.xsl | 2 +- ccm-faq/web/themes/heirloom/css/faq.css | 735 ++++++++++++++++++ .../heirloom/images}/faq-32.gif | Bin .../heirloom}/packages/faq/xsl/comments.xsl | 0 .../heirloom}/packages/faq/xsl/faq.xsl | 12 +- ccm-forum/src/com/arsdigita/forum/Forum.java | 2 + ccm-forum/src/com/arsdigita/forum/Loader.java | 4 + .../css/portalserver/portalserver.css | 2 +- ccm-sci-bundle/bundles/devel/cfg/project.xml | 1 + 26 files changed, 922 insertions(+), 72 deletions(-) create mode 100644 ccm-core/web/themes/heirloom/images/tabbed-pane/tab-bar.png create mode 100644 ccm-core/web/themes/heirloom/images/tabbed-pane/tab-selected-end.png create mode 100644 ccm-core/web/themes/heirloom/images/tabbed-pane/tab-selected.png create mode 100644 ccm-core/web/themes/heirloom/images/tabbed-pane/tab-unselected-end.png create mode 100644 ccm-core/web/themes/heirloom/images/tabbed-pane/tab-unselected.png create mode 100755 ccm-core/web/themes/heirloom/packages/categorization/xsl/categorization.xsl rename ccm-docrepo/src/com/arsdigita/docrepo/{Constants.java => Constants.java.nolongerInUse} (100%) create mode 100644 ccm-docrepo/src/com/arsdigita/docrepo/RepositoryServlet.java rename ccm-faq/web/WEB-INF/{web.faq.xml => web.ccm-faq.xml} (85%) rename ccm-faq/web/{__ccm__ => themes/heirloom}/apps/faq/xsl/index.xsl (67%) create mode 100644 ccm-faq/web/themes/heirloom/css/faq.css rename ccm-faq/web/{assets/cw/applications => themes/heirloom/images}/faq-32.gif (100%) rename ccm-faq/web/{ => themes/heirloom}/packages/faq/xsl/comments.xsl (100%) rename ccm-faq/web/{ => themes/heirloom}/packages/faq/xsl/faq.xsl (96%) diff --git a/ccm-core/web/themes/heirloom/images/tabbed-pane/tab-bar.png b/ccm-core/web/themes/heirloom/images/tabbed-pane/tab-bar.png new file mode 100644 index 0000000000000000000000000000000000000000..9c5ea5a1e8cda98ae85d27187f73f82b30464e1e GIT binary patch literal 254 zcmVwKzDtLPD}KGQ&+xzC%O1Jw3-y zPsB+{%UM~=P*6q`Wj6o-00DGTPE!Ct=GbNc000SaNLh0L01FZT01FZU(%pXi00007 zbV*G`2ht1_5hx76rV)z(002TsL_t(|oQ=@O0l**-13__^oWbtDRd=9cA5*}>=t1;g zMeM_Yb3Q~4QZ6}hP+RStgE7~d9PD%U%fY92_2=UA4@6iD)Gh`;{r~^~07*qoM6N<$ Ef+sFitN;K2 literal 0 HcmV?d00001 diff --git a/ccm-core/web/themes/heirloom/images/tabbed-pane/tab-selected-end.png b/ccm-core/web/themes/heirloom/images/tabbed-pane/tab-selected-end.png new file mode 100644 index 0000000000000000000000000000000000000000..e7890a8c2ca9d8b6345ce6511109412e022e76fe GIT binary patch literal 258 zcmV+d0sa1oP)b&h^hsNKvwhs6H7P6vW1Nk^lyJJ5Ajl-=XG5xrJf%} z*QUYJWbN4)OQf~toC8SqRrTfrV?u~w9FI~C#&FIfRhIaUiee(V5OrObVAb6@20WZ= z+je)#vh@Oh_x=XNKMjCP(|Ml%GJwACw-_7efddB)960dO3k~2l*QN+v%>V!Z07*qo IM6N<$f^>{x*8l(j literal 0 HcmV?d00001 diff --git a/ccm-core/web/themes/heirloom/images/tabbed-pane/tab-selected.png b/ccm-core/web/themes/heirloom/images/tabbed-pane/tab-selected.png new file mode 100644 index 0000000000000000000000000000000000000000..19ebe5fecf5bf9d629885ef9d3f3148bbdece9a2 GIT binary patch literal 575 zcmeAS@N?(olHy`uVBq!ia0y~yV2WU1V6fp}Vqjn}{TKX>fq{Xuz$3Dlfq`2Hgc&d0 zt^32kz`$PO>FdgViARoKRp=X&&29z;#(SPFjv*Dd-rhCLQc9FK{_y)$xAw@vn4VbE~d7xLkG&A(4yu9*3*d;RL2UU=xao23jpsuu5izu$Mc{^rQ&>t|CY z6}>Z?owvF3@kNkS{PD+ypFe*5`|n?wk>%IF-@b0WpJ(r{zMOGEhrqkC-SPbV+jD2< z=hf*?Z&P4!{W)pZIxo%esq>u~H4Iz6K3zJa%`y{*K$vab-@dPs%(*lCg%#tR)&B)4n_wK#sxbB_WkCMW6*J85TGympb)02yz?ANDLLna5C}fP7_-*K7{6~nlXK>rBUnUhopW9?Ap{|`WB{O)-tidYjsaj} o`)`l$F~)e~^TUS^AN~zL0E3!7VV{<-8UO$Q07*qoM6N<$f}B27r~m)} literal 0 HcmV?d00001 diff --git a/ccm-core/web/themes/heirloom/images/tabbed-pane/tab-unselected.png b/ccm-core/web/themes/heirloom/images/tabbed-pane/tab-unselected.png new file mode 100644 index 0000000000000000000000000000000000000000..e6a6b9f4befd12eac5094b6f20a4593aea1815f9 GIT binary patch literal 416 zcmeAS@N?(olHy`uVBq!ia0y~yV2WU1V6fp}Vqjn}{TKX>fq{Xuz$3Dlfq`2Hgc&d0 zt^32kz`$PO>FdgViARp#n%U#C@-zkpMte^e$B>F!Z?7+0+u|V6dNGnoB_oP~r#9h5 zDUYv$yVAsxhLoevLO+D%e3~D8$Ta@l>wWLPET2*&bG&liOZBg{^BEqjj+-wKcYSKH z-0{L$%htVq!{i|Fb$Qe6ZEIg^H8QvaFP&0!?)0V=3JikIJKp~`;L+l6xF9es=vk#1 z3xlI`L}=(`lQss04368|wlXmkI{&cg7iH*>b`oZIAjs4pz~pd1U={;IzW_sv00UFo z1r~;i76t_v5>RU?jg4k(*r8~`$l%05Z}k5&n`w+~-IOQaA2Tp8FnGH9xvX + + + + +
+ +
+
+ + +
+
+ +
\ No newline at end of file diff --git a/ccm-docrepo/src/com/arsdigita/docrepo/Constants.java b/ccm-docrepo/src/com/arsdigita/docrepo/Constants.java.nolongerInUse similarity index 100% rename from ccm-docrepo/src/com/arsdigita/docrepo/Constants.java rename to ccm-docrepo/src/com/arsdigita/docrepo/Constants.java.nolongerInUse diff --git a/ccm-docrepo/src/com/arsdigita/docrepo/File.java b/ccm-docrepo/src/com/arsdigita/docrepo/File.java index 3380e1b3f..b7705c560 100644 --- a/ccm-docrepo/src/com/arsdigita/docrepo/File.java +++ b/ccm-docrepo/src/com/arsdigita/docrepo/File.java @@ -18,7 +18,6 @@ */ package com.arsdigita.docrepo; - import com.arsdigita.domain.DataObjectNotFoundException; import com.arsdigita.domain.DomainObjectFactory; import com.arsdigita.mimetypes.MimeType; @@ -26,7 +25,6 @@ import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.OID; import com.arsdigita.persistence.metadata.Property; import com.arsdigita.util.Assert; -import org.apache.oro.text.perl.Perl5Util; import javax.activation.DataHandler; import javax.activation.FileDataSource; @@ -39,6 +37,9 @@ import java.math.BigDecimal; import java.util.Iterator; import java.util.Vector; +import org.apache.log4j.Logger; +import org.apache.oro.text.perl.Perl5Util; + /** * Represents a File in the document manager application. * @@ -46,11 +47,10 @@ import java.util.Vector; * @author Ron Henderson (ron@arsdigita.com) * @version $Id: File.java pboy $ */ -public class File extends ResourceImpl implements Constants { +public class File extends ResourceImpl { /** Logger instance for debugging support. */ - protected static org.apache.log4j.Logger s_log = - org.apache.log4j.Logger.getLogger(File.class); + protected static Logger s_log = Logger.getLogger(File.class); public static final String BASE_DATA_OBJECT_TYPE = "com.arsdigita.docrepo.File"; @@ -152,7 +152,7 @@ public class File extends ResourceImpl implements Constants { */ @Override protected void beforeSave() { - set(IS_FOLDER, Boolean.FALSE); + set(Repository.IS_FOLDER, Boolean.FALSE); super.beforeSave(); } @@ -169,7 +169,7 @@ public class File extends ResourceImpl implements Constants { * content type cannot be determined. */ public String getContentType() { - return (String) get(TYPE); + return (String) get(Repository.TYPE); } /** @@ -198,7 +198,7 @@ public class File extends ResourceImpl implements Constants { */ private void setContentType(String type) { if (isNew()) { - set(TYPE, type); + set(Repository.TYPE, type); } else { if (!type.equals(getContentType())) { throw new TypeChangeException(getContentType(), type); @@ -258,9 +258,9 @@ public class File extends ResourceImpl implements Constants { final byte[] content = text.getBytes(); DocBlobject dblob = new DocBlobject(); dblob.setContent(content); - set(CONTENT, dblob); - set(SIZE, BigDecimal.valueOf(content.length)); - setContentType(TEXT_PLAIN); + set(Repository.CONTENT, dblob); + set(Repository.SIZE, BigDecimal.valueOf(content.length)); + setContentType(Repository.TEXT_PLAIN); } /** @@ -318,8 +318,8 @@ public class File extends ResourceImpl implements Constants { byte[] content = os.toByteArray(); DocBlobject dblob = new DocBlobject(); dblob.setContent(content); - set(CONTENT, dblob); - set(SIZE, BigDecimal.valueOf(content.length)); + set(Repository.CONTENT, dblob); + set(Repository.SIZE, BigDecimal.valueOf(content.length)); } catch (IOException e) { throw new ResourceException("error reading content: " + e.getMessage()); @@ -333,7 +333,7 @@ public class File extends ResourceImpl implements Constants { * cannot be computed. */ public BigDecimal getSize() { - BigDecimal size = (BigDecimal) get(SIZE); + BigDecimal size = (BigDecimal) get(Repository.SIZE); if (size != null) { return size; } else { @@ -358,8 +358,8 @@ public class File extends ResourceImpl implements Constants { byte[] content = getRawContent(); DocBlobject dblob = new DocBlobject(); dblob.setContent(content); - dest.set(CONTENT,dblob); - dest.set(SIZE, BigDecimal.valueOf(content.length)); + dest.set(Repository.CONTENT,dblob); + dest.set(Repository.SIZE, BigDecimal.valueOf(content.length)); dest.save(); return dest; } diff --git a/ccm-docrepo/src/com/arsdigita/docrepo/Folder.java b/ccm-docrepo/src/com/arsdigita/docrepo/Folder.java index dfc32fce7..e4c81ca6e 100644 --- a/ccm-docrepo/src/com/arsdigita/docrepo/Folder.java +++ b/ccm-docrepo/src/com/arsdigita/docrepo/Folder.java @@ -40,7 +40,7 @@ import java.util.StringTokenizer; * @author Ron Henderson (ron@arsdigita.com) * @version $Id: Folder.java pboy $ */ -public class Folder extends ResourceImpl implements Constants { +public class Folder extends ResourceImpl { public static final String BASE_DATA_OBJECT_TYPE = "com.arsdigita.docrepo.Folder"; @@ -135,7 +135,7 @@ public class Folder extends ResourceImpl implements Constants { if (s_log.isDebugEnabled()) { s_log.debug("folder before save"); } - set(IS_FOLDER, Boolean.TRUE); + set(Repository.IS_FOLDER, Boolean.TRUE); super.beforeSave(); } @@ -200,7 +200,7 @@ public class Folder extends ResourceImpl implements Constants { public boolean hasResource(String name) { DataAssociation da = (DataAssociation) get("immediateChildren"); DomainCollection resources = new DomainCollection(da); - resources.addEqualsFilter(NAME, name); + resources.addEqualsFilter(Repository.NAME, name); try { return resources.next(); } finally { @@ -247,7 +247,7 @@ public class Folder extends ResourceImpl implements Constants { String subPath[] = new String[pathElementCount]; for (int i = 0; i < pathElementCount; i++) { - StringBuffer buf = new StringBuffer(); + StringBuilder buf = new StringBuilder(); for (int j = 0; j <= i; j++) { buf.append(SEPARATOR); buf.append(name[j]); @@ -314,6 +314,7 @@ public class Folder extends ResourceImpl implements Constants { * Returns the display name for a folder, which is equivalent to * calling getName(). */ + @Override public String getDisplayName() { return getName(); } diff --git a/ccm-docrepo/src/com/arsdigita/docrepo/Initializer.java b/ccm-docrepo/src/com/arsdigita/docrepo/Initializer.java index ea7ab13d9..27c7d0950 100644 --- a/ccm-docrepo/src/com/arsdigita/docrepo/Initializer.java +++ b/ccm-docrepo/src/com/arsdigita/docrepo/Initializer.java @@ -72,7 +72,7 @@ public class Initializer extends CompoundInitializer { new ACSObjectInstantiator() { @Override public DomainObject doNewInstance(DataObject obj) { - Boolean isFolder = (Boolean) obj.get(Constants.IS_FOLDER); + Boolean isFolder = (Boolean) obj.get(Repository.IS_FOLDER); if (isFolder != null && isFolder.booleanValue()) { return new Folder(obj); } else { diff --git a/ccm-docrepo/src/com/arsdigita/docrepo/Repository.java b/ccm-docrepo/src/com/arsdigita/docrepo/Repository.java index 31e71a4c2..91f5eb523 100644 --- a/ccm-docrepo/src/com/arsdigita/docrepo/Repository.java +++ b/ccm-docrepo/src/com/arsdigita/docrepo/Repository.java @@ -57,7 +57,7 @@ import org.apache.log4j.Logger; * @author Ron Henderson (ron@arsdigita.com) */ -public class Repository extends Application implements Constants { +public class Repository extends Application { /** Logger instance for debugging purpose. */ private static Logger s_log = Logger.getLogger(Repository.class); @@ -65,20 +65,44 @@ public class Repository extends Application implements Constants { public static final String BASE_DATA_OBJECT_TYPE = "com.arsdigita.docrepo.Repository"; + // pdl constants + private static final String ACTION = "action"; + public static final String CONTENT = "content"; + public static final String DESCRIPTION = "description"; + private static final String DURATION = "duration"; + private static final String FOLDER_ID = "folderID"; + public static final String IS_FOLDER = "isFolder"; + private static final String LAST_MODIFIED_DATE = "lastModifiedDate"; + private static final String MIME_TYPE_LABEL = "mimeTypeDescription"; + public static final String NAME = "name"; + private static final String OBJECT_ID = "objectID"; + public static final String PARENT = "parent"; + private static final String PARTY_ID = "partyID"; + public static final String PATH = "path"; + public static final String SIZE = "size"; + public static final String TYPE = "mimeType"; + private static final String USER_ID = "userID"; + private static final String OWNER = "ownerID"; + private static final String ROOT = "rootID"; + + String REPOSITORIES_MOUNTED = "subscribedRepositories"; + + // MIME type constants + + public static final String TEXT_PLAIN = com.arsdigita.mail.Mail.TEXT_PLAIN; + public static final String TEXT_HTML = com.arsdigita.mail.Mail.TEXT_HTML; + + private Folder m_root = null; + /** * * @return */ + @Override protected String getBaseDataObjectType() { return BASE_DATA_OBJECT_TYPE; } - // pdl constants - private static final String OWNER = "ownerID"; - private static final String ROOT = "rootID"; - - private Folder m_root = null; - /** * Retreives a repository from the database usings its OID. * @@ -137,6 +161,7 @@ public class Repository extends Application implements Constants { /** * Grant write permission to the Portal participants. */ + @Override protected void afterSave() { super.afterSave(); diff --git a/ccm-docrepo/src/com/arsdigita/docrepo/RepositoryServlet.java b/ccm-docrepo/src/com/arsdigita/docrepo/RepositoryServlet.java new file mode 100644 index 000000000..cc2982124 --- /dev/null +++ b/ccm-docrepo/src/com/arsdigita/docrepo/RepositoryServlet.java @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2011 Peter boy (pboy@barkhof.uni-bremen.de + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +package com.arsdigita.docrepo; + +import com.arsdigita.bebop.page.BebopApplicationServlet; + +import org.apache.log4j.Logger; + +/** + * + * @author pb + */ +public class RepositoryServlet extends BebopApplicationServlet { + + /** Private logger instance to faciliate debugging procedures */ + private static final Logger s_log = Logger.getLogger(RepositoryServlet.class); + +} diff --git a/ccm-docrepo/src/com/arsdigita/docrepo/ResourceImpl.java b/ccm-docrepo/src/com/arsdigita/docrepo/ResourceImpl.java index a434ab063..4c76156f1 100644 --- a/ccm-docrepo/src/com/arsdigita/docrepo/ResourceImpl.java +++ b/ccm-docrepo/src/com/arsdigita/docrepo/ResourceImpl.java @@ -69,7 +69,7 @@ import javax.servlet.http.HttpServletRequest; * @version $Id: ResourceImpl.java pboy $ */ public abstract class ResourceImpl extends VersionedACSObject - implements Resource, Constants { + implements Resource { /** Logger instance for debugging support. */ protected static Logger s_log = Logger.getLogger(ResourceImpl.class); @@ -200,8 +200,8 @@ public abstract class ResourceImpl extends VersionedACSObject * sufficient to update the path only when the name changes, but * the current implementation is conservative about path updates. */ - final boolean pathChanged = - isPropertyModified(PARENT) || isPropertyModified(NAME); + final boolean pathChanged = isPropertyModified(Repository.PARENT) + || isPropertyModified(Repository.NAME); if (pathChanged) { String oldPath = null; @@ -332,19 +332,19 @@ public abstract class ResourceImpl extends VersionedACSObject public String getName() { - return (String) get(NAME); + return (String) get(Repository.NAME); } public void setName(String name) { - set(NAME, name); + set(Repository.NAME, name); } public String getDescription() { - return (String) get(DESCRIPTION); + return (String) get(Repository.DESCRIPTION); } public void setDescription(String description) { - set(DESCRIPTION, description); + set(Repository.DESCRIPTION, description); } public Resource getParent() { @@ -380,12 +380,12 @@ public abstract class ResourceImpl extends VersionedACSObject } public String getPath() { - String path = (String) get(PATH); + String path = (String) get(Repository.PATH); return path; } private void setPath(String path) { - set(PATH, path); + set(Repository.PATH, path); } public abstract boolean isFolder(); @@ -406,7 +406,7 @@ public abstract class ResourceImpl extends VersionedACSObject String ids = null; if (collection.next()) { - ids = (String)collection.get(PATH); + ids = (String)collection.get(Repository.PATH); collection.close(); } else { // this means that the id is not valid so there is no path @@ -421,16 +421,16 @@ public abstract class ResourceImpl extends VersionedACSObject collection = SessionManager.getSession().retrieve (BASE_DATA_OBJECT_TYPE); - Filter filter = collection.addFilter(PATH + " <= :ancestors"); + Filter filter = collection.addFilter(Repository.PATH + " <= :ancestors"); filter.set("ancestors", ids); filter = collection.addFilter - (PATH + " = substr(:path, 1, length(" + PATH +"))"); + (Repository.PATH + " = substr(:path, 1, length(" + Repository.PATH +"))"); filter.set("path", ids); - collection.addOrder(PATH); + collection.addOrder(Repository.PATH); while (collection.next()) { - ancestors.append(SEPARATOR + collection.get(NAME)); + ancestors.append(SEPARATOR + collection.get(Repository.NAME)); } return ancestors.toString(); @@ -604,12 +604,13 @@ public abstract class ResourceImpl extends VersionedACSObject */ protected Vector getPropertyNames() { Vector names = new Vector(); - names.addElement(NAME); - names.addElement(DESCRIPTION); - names.addElement(IS_FOLDER); + names.addElement(Repository.NAME); + names.addElement(Repository.DESCRIPTION); + names.addElement(Repository.IS_FOLDER); return names; } + @Override public java.util.Date getLastModifiedDate() { java.util.Date date = (java.util.Date)get("lastModifiedDate"); return date; @@ -619,6 +620,7 @@ public abstract class ResourceImpl extends VersionedACSObject set("lastModifiedDate",date); } + @Override public java.util.Date getCreationDate() { java.util.Date date = (java.util.Date)get("creationDate"); return date; @@ -628,6 +630,7 @@ public abstract class ResourceImpl extends VersionedACSObject set("creationDate",date); } + @Override public User getCreationUser() { DataObject dobj = (DataObject)get("creationUser"); if(dobj == null) { @@ -641,6 +644,7 @@ public abstract class ResourceImpl extends VersionedACSObject set("creationUser", user); } + @Override public User getLastModifiedUser() { DataObject dobj = (DataObject)get("lastModifiedUser"); if(dobj == null) { @@ -654,6 +658,7 @@ public abstract class ResourceImpl extends VersionedACSObject set("lastModifiedUser", user); } + @Override public String getCreationIP() { String ip = (String)get("creationIP"); return ip; @@ -669,6 +674,7 @@ public abstract class ResourceImpl extends VersionedACSObject set("creationIP",ip); } + @Override public String getLastModifiedIP() { String ip = (String)get("lastModifiedIP"); return ip; diff --git a/ccm-docrepo/src/com/arsdigita/docrepo/ui/DestinationFolderForm.java b/ccm-docrepo/src/com/arsdigita/docrepo/ui/DestinationFolderForm.java index 9c0a00922..93c56f49f 100644 --- a/ccm-docrepo/src/com/arsdigita/docrepo/ui/DestinationFolderForm.java +++ b/ccm-docrepo/src/com/arsdigita/docrepo/ui/DestinationFolderForm.java @@ -269,16 +269,16 @@ class DestinationFolderForm extends Form int item = 0; while (collection.next()) { Filter filter = query.addFilter - (" not " + ResourceImpl.PATH + " like " + + (" not " + Repository.PATH + " like " + ":item" + item); filter.set("item" + item, - collection.get(ResourceImpl.PATH)); + collection.get(Repository.PATH)); } } } - query.addOrder(ResourceImpl.PATH); - query.addOrder(ResourceImpl.NAME); + query.addOrder(Repository.PATH); + query.addOrder(Repository.NAME); while (query.next()) { BigDecimal parentID = (BigDecimal) query.get("parentID"); diff --git a/ccm-faq/src/com/arsdigita/faq/Faq.java b/ccm-faq/src/com/arsdigita/faq/Faq.java index aee60d03e..9db0aa225 100644 --- a/ccm-faq/src/com/arsdigita/faq/Faq.java +++ b/ccm-faq/src/com/arsdigita/faq/Faq.java @@ -26,11 +26,12 @@ import com.arsdigita.persistence.DataQuery; import com.arsdigita.persistence.OID; import com.arsdigita.persistence.SessionManager; import com.arsdigita.util.TypedText; - import com.arsdigita.web.Application; import java.math.BigDecimal; +import org.apache.log4j.Logger; + /** * Faq class. * @@ -39,24 +40,45 @@ import java.math.BigDecimal; public class Faq extends Application { + /** Private logger instance for debugging purpose */ + private static final Logger log = Logger.getLogger(Faq.class); + + // PDL stuff + public static final String BASE_DATA_OBJECT_TYPE = - "com.arsdigita.faq.Faq"; - - private static final org.apache.log4j.Logger log = - org.apache.log4j.Logger.getLogger(Faq.class); + "com.arsdigita.faq.Faq"; + /** + * + * @param oid + * @throws DataObjectNotFoundException + */ public Faq(OID oid) throws DataObjectNotFoundException { super(oid); } + /** + * + * @param key + * @throws DataObjectNotFoundException + */ public Faq(BigDecimal key) throws DataObjectNotFoundException { this(new OID(BASE_DATA_OBJECT_TYPE, key)); } + /** + * + * @param dataObject + */ public Faq(DataObject dataObject) { super(dataObject); } + /** + * + * @return + */ + @Override protected String getBaseDataObjectType() { return BASE_DATA_OBJECT_TYPE; } @@ -65,10 +87,13 @@ public class Faq extends Application { /** * Use this instead of the constructor to create new Faq objects */ - public static Faq create(String urlName, String title, + public static Faq create(String urlName, + String title, Application parent) { - return (Faq) Application.createApplication - (BASE_DATA_OBJECT_TYPE, urlName, title, parent); + return (Faq) Application.createApplication(BASE_DATA_OBJECT_TYPE, + urlName, + title, + parent); } /** @@ -160,7 +185,7 @@ public class Faq extends Application { @Override public String getServletPath() { - return "faq"; + return "/faq"; } } diff --git a/ccm-faq/src/com/arsdigita/faq/FaqServlet.java b/ccm-faq/src/com/arsdigita/faq/FaqServlet.java index 033d12180..1809b9de1 100644 --- a/ccm-faq/src/com/arsdigita/faq/FaqServlet.java +++ b/ccm-faq/src/com/arsdigita/faq/FaqServlet.java @@ -38,8 +38,10 @@ public class FaqServlet extends BebopApplicationServlet { private static final Logger s_log = Logger.getLogger(FaqServlet.class); + @Override public void init() throws ServletException { super.init(); + s_log.debug("creating FAQ page"); Page index = buildIndexPage(); Page admin = buildAdminIndexPage(); @@ -48,8 +50,8 @@ public class FaqServlet extends BebopApplicationServlet { put("/index.jsp", index); put("/one.jsp", index); - put("admin/", admin); - put("admin/index.jsp", admin); + // put("admin", admin); + // put("admin/index.jsp", admin); } diff --git a/ccm-faq/web/WEB-INF/web.faq.xml b/ccm-faq/web/WEB-INF/web.ccm-faq.xml similarity index 85% rename from ccm-faq/web/WEB-INF/web.faq.xml rename to ccm-faq/web/WEB-INF/web.ccm-faq.xml index 284897ff8..114457014 100644 --- a/ccm-faq/web/WEB-INF/web.faq.xml +++ b/ccm-faq/web/WEB-INF/web.ccm-faq.xml @@ -7,12 +7,12 @@ - FAQ + faq-main com.arsdigita.faq.FaqServlet - FAQ + faq-main /faq/* diff --git a/ccm-faq/web/__ccm__/apps/faq/xsl/index.xsl b/ccm-faq/web/themes/heirloom/apps/faq/xsl/index.xsl similarity index 67% rename from ccm-faq/web/__ccm__/apps/faq/xsl/index.xsl rename to ccm-faq/web/themes/heirloom/apps/faq/xsl/index.xsl index 8dd978a90..786de988d 100644 --- a/ccm-faq/web/__ccm__/apps/faq/xsl/index.xsl +++ b/ccm-faq/web/themes/heirloom/apps/faq/xsl/index.xsl @@ -2,5 +2,5 @@ - + \ No newline at end of file diff --git a/ccm-faq/web/themes/heirloom/css/faq.css b/ccm-faq/web/themes/heirloom/css/faq.css new file mode 100644 index 000000000..2b7705f7a --- /dev/null +++ b/ccm-faq/web/themes/heirloom/css/faq.css @@ -0,0 +1,735 @@ +/* + * Fundamental Styles + * Copied from portalserver + */ + +body { + background-color: white; + font-family: Arial, Helvetica, sans-serif; + font-size: 10pt; + margin: 0; +} + +table { + border-spacing: 0; + empty-cells: show; +} + +td { + font-family: Arial, Helvetica, sans-serif; + font-size: 10pt; + vertical-align: top; +} + +.main { /* background-color: #ffffff; */ } +.dark { /* background-color: #666666; */ } +.medium { /* background-color: #999999; */ } +.light { /* background-color: #cccccc; */ } + +.activeTabColor { + background: #A2E1E1; +} + +.inactiveTabColor { + background: #E1E1E1; +} + +.dialogTitle { + font-weight: bold; + font-size: 12pt; +} + +.messageOfTheDay { + padding-left: 0.4em; + padding-right: 0.4em; + margin-top: 0.4em; + margin-bottom: 0.4em; + border-style: solid; + border-bottom-width: 1px; + border-top-width: 1px; + border-right-width: 1px; + border-left-width: 1px; + border-color: #cccccc; +} + +/* We would use a div here, but it triggers a rendering bug. */ + +table.setInside { + width: 100%; + border-spacing: 0; +} + +table.setInside td.setInside { + padding: 6px; + padding-bottom: 0; +} + +/* + * Global Header + * + * This is currently a gray stripe at the top of each portal and + * application page. The left side, a context bar, uses the class + * attribute "globalNavigation" and the right uses "globalControl". + */ + +table.globalHeader { + background-color: rgb(225,225,225); + font-size: 10pt; + width: 100%; +} + +table.globalHeader td { + padding: 6px; + padding-bottom: 7px; + vertical-align: middle; +} + +table.globalHeader td.globalLogo { + width: 25px; + height: 25px; + background-image: url(../logo.png); + background-repeat: no-repeat; +} + +td.globalNavigation { + color: #3F3F3F; +} + +td.globalNavigation a { + color: #3F3F3F; +} + +td.global-links { + float: right; +} + +td.global-link-icon { + padding: 0 4px 0 10px; +} + +td.global-link-icon img { + border: 0; +} + +td.global-link a { + color: blue; + text-decoration: none; +} + +td.globalNavigation span.contextBarSeparator { + color: #3F3F3F; + font-weight: bold; +} + +td.globalNavigation span.immediateContext { + color: #3F3F3F; + font-weight: bold; +} + +form.globalSearch { + margin: 0; + border: 0; + padding: 0; +} + +td.globalControl { + color: #3F3F3F; + margin: 0; + padding: 0; + padding-right: 6px; + text-align: right; + vertical-align: middle; + font-weight: bold; +} + +td.globalControl a, +td.globalControl img { + margin: 0; + padding: 0; + color: #3F3F3F; + vertical-align: middle; + border: 0 none; + text-decoration: none; +} + +/* + * Local Header + * + * The header elements right under the blue stripe. These are + * elements logically connected to the current application, not to the + * system in general. + */ + +table.localHeader { + width: 100%; +} + +table.localHeader td.localTitle { + text-align: left; + font-weight: bold; + font-size: 12pt; +} + +table.localHeader td.localControl, +table.localHeader td.localControl a { + text-align: right; +} + +/* + * Split Panel + */ + +table.splitPanel { + width: 100%; +} + +table.splitPanelHeader { + /* Nothing here yet. */ +} + +td.splitPanelLeft { + width: 25%; +} + +td.splitPanelRight { + width: 75%; +} + +/* + * Tabs and Header/Body/Footer Separators + */ + +table.topRuleNoTabs { + background-color: rgb(162,30,30); + width: 100%; + margin: 0; + margin-bottom: 6px; + border-top: 1px solid black; + padding: 0; +} + +table.topRuleUnderTabs { + background-color: rgb(162,30,30); + width: 100%; + margin: 0; + margin-bottom: 6px; + padding: 0; +} + +table.bottomRule { + background-color: rgb(162,30,30); + width: 100%; + margin: 0; + margin-top: 6px; + border-bottom: 1px solid black; + padding: 0; +} + +table.tabs { + margin: 0; + border-spacing: 0; +} + +table.tabs a { + color: black; + text-decoration: none; + white-space: nowrap; +} + +table.tabs td { + margin: 0; + border: 0; + padding: 0; + font-weight: bold; + font-size: 10pt; + color: black; + text-decoration: none; + white-space: nowrap; +} + +table.tabs td.activeTab { + vertical-align: middle; + background-color: rgb(162,30,30); + border-top: 1px solid black; + color: #FFFFFF; + padding-top: 1px; +} + +table.tabs td.inactiveTab { + vertical-align: middle; + background-color: rgb(225,225,225); + border-top: 1px solid black; + border-bottom: 1px solid black; + color: #DDDDDD; + padding-top: 2px; +} + +table.tabs td.trimSpace { + border-bottom: 1px solid black; +} + +table.tabs td.tabBeginning { + border-left: 1px solid black; + border-top: 1px solid black; + background-color: rgb(162,30,30); + width: 6px; +} + +table.tabs td.tabBeginningOff { + border-top: 1px solid black; + border-left: 1px solid black; + border-bottom: 1px solid black; + background-color: rgb(225,225,225); + width: 6px; +} + +table.tabs td.tabEnd { + border-top: 1px solid black; + border-right: 1px solid black; + background-color: rgb(162,30,30); + width: 6px; +} + +table.tabs td.tabEndOff { + border-right: 1px solid black; + border-top: 1px solid black; + border-bottom: 1px solid black; + background-color: rgb(225,225,225); + width: 6px; +} + +/* + * Portals and Portlets + * + * "NW" denotes Narrow and Wide columns, in that order. Other layouts + * will require other CSS rules. + */ + +table.portalLayoutNW { + width: 100%; + margin: 0; + padding: 0; +} + +table.portalLayoutNW td.narrowColumn { + width: 25%; +} + +table.portalLayoutNW td.columnSeparator { + border: 0; + padding: 0; +} + +table.portalLayoutNW td.wideColumn { + width: 75%; +} + +table.portalLayoutW { + width: 100%; + margin: 0; + padding: 0; +} + +table.portalLayoutW td.VeryWideColumn { + width:100%; +} + +table.portalLayoutWN { + width: 100%; + margin: 0; + padding: 0; +} + +table.portalLayoutWN td.narrowColumn { + width: 25%; +} + +table.portalLayoutWN td.columnSeparator { + border: 0; + padding: 0; +} + +table.portalLayoutWN td.wideColumn { + width: 75%; +} + +table.portalLayoutNWN { + width: 100%; + margin: 0; + padding: 0; +} + +table.portalLayoutNWN td.narrowColumnLeft { + width: 25%; +} + +table.portalLayoutNWN td.narrowColumnRight { + width: 25%; +} + +table.portalLayoutNWN td.columnSeparator { + border: 0; + padding: 0; +} + +table.portalLayoutNWN td.wideColumn { + width: 50%; +} + +table.portalLayoutNNN { + width: 100%; + margin: 0; + padding: 0; +} + +table.portalLayoutNNN td.narrowColumnLeft { + width: 33%; +} + +table.portalLayoutNNN td.narrowColumnRight { + width: 33%; +} + +table.portalLayoutNNN td.columnSeparator { + border: 0; + padding: 0; +} + +table.portalLayoutNNN td.narrowColumnCenter { + width: 33%; +} + +table.portlet { + width: 100%; + margin: 0; + margin-bottom: 6px; + padding: 0; +} + +table.portlet td.portletHeader { + font-weight: bold; + background: #dddddd; + color: #666666; + padding: 4px; + padding-left: 6px; + vertical-align: middle; +} + +table.portlet td.portletIcon { + background: #dddddd; + padding: 4px; + text-align: right; +} + +table.portlet td.portletBody { + padding: 6px; +} + +/* + * Fancy Tables (for tabular data) + */ + +table.fancy { + width: 100%; + border-collapse: collapse; + border-spacing: 0; + border: 1px solid black; +} + +table.fancy th { + padding: 4px; + border:0 none; + font-size: 9pt; + text-align: left; +} + +table.fancy td { + padding: 4px; + border: 0 none; + font-size: 9pt; +} + +table.fancy thead tr { + background-color: #eeeeee; +} + +table.fancy thead tr.subheading { + background-color: #93bee2; +} + +table.fancy thead tr.subheading td { + text-align: right; +} + +table.fancy tbody td.subDivider { + padding: 0; + background-color: #93bee2; +} + +table.fancy thead th { + font-weight: bold; + text-align: left; + white-space: nowrap; +} + +table.fancy thead th.numeric { + text-align: right; +} + +table.fancy thead th.date { + text-align: center; +} + +table.fancy thead th.icon { + text-align: center; +} + +table.fancy tbody td { + border-top: 1px solid black; +} + +table.fancy tbody td.noborder { + border-top: none; +} + +table.fancy tbody td.numeric { + text-align: right; +} + +table.fancy tbody td.date { + text-align: right; + white-space: nowrap; +} + +table.fancy tbody td.icon { + text-align: center; +} + +/* + * With is for tables that want to look standard (no lines on the inside) but + * also want to have the really thin line around the outside + */ +table.plainWithBorder { + width: 100%; + border-collapse: collapse; + border-spacing: 0; + border: 1px solid black; +} + + +/* + * Miscellaneous + */ + +select { + font-family: Arial, Helvetica, sans-serif; + font-size: 9pt; +} + +tr.rowEven { background-color: #eeeeff; } + +th { + font-family: Arial, Helvetica, sans-serif; + font-size: 10pt; + font-weight: bold; + text-align: left; + vertical-align: bottom; +} + +td.panelHeader { + padding-left: 0.4em; + padding-right: 0.4em; + padding-top: 0.1em; + padding-bottom: 0.1em; + vertical-align: middle; + text-align: left; + font-weight: bold; +} + +/* styles for section headers */ + +table.sectionHeader { + border:0 none; +} + +table.sectionHeader td { + font-weight:bold; + font-size:12pt; + border:0 none; + white-space:nowrap; +} + +table.sectionHeader td.add { + text-align:right; +} + +table.sectionHeader td.path { + text-align:right; + font-family:monospace; + font-weight:normal; + font-size:10pt; +} + +/* styles for colorpicker */ +table.colorband { + border:1px solid black; +} +table.colorband td { + width:20px; + height:20px; + border:1px solid black; +} + +/* styles for controlBar */ + +table.controlBar { + width:100%; + font-size:8pt; + border:0 none; + border-collapse:collapse; + border-spacing:0; + border:1px solid black; +} + +table.controlBar td { + font-size:8pt; + border:0 none; + white-space:nowrap; +} + +table.controlBar span { + font-size:8pt; + font-weight:bold; + border:0 none; + white-space:nowrap; +} + +table.controlBar select { + font-size:8pt; + vertical-align: middle; +} + +table.controlBar input { + font-size:8pt; + vertical-align: middle; +} + +table.controlBar img { + vertical-align: middle; +} + +tbody.controlBar td { + border-top:1px solid black; +} + +tbody.controlBar td.numeric { + text-align:right; + padding-right:20px; +} + +tbody.controlBar td.date { + text-align:right; + white-space:nowrap; +} + +tbody.controlBar td.icon { + text-align:center; +} + +/**************Admin style*****************/ + +body { + margin: 0; +} +div.tabs div, div.tabs table { + position: relative; +} + +div.tabs { + margin: 0px 0 4px 0; +} + +div.tabs table { + margin-left: 6px; +} + +div.tabs table.tab-set { + top: 1px; + border-collapse: collapse; + float: left; + margin-left: 6px; + margin: 0 0 0 4px; + border: 0; + padding: 0; + border-spacing: 0; + font-size: x-small; +} + +div.tabs table td { + margin: 0; + border: 0; + padding: 0; +} +div.tabs table td.end { + width: 10px; +} + +div.tabs table td.label { + padding: 5px 0 3px 10px; +} + +div.tabs table td.current-tab-end { + width: 10px; +} + +div.tabs table td.current-tab-label { + padding: 5px 0 3px 10px; +} + +/* When selected */ + +div.tabs table.selected { + z-index: 20; + background: rgb(162,30,30) url(../images/tabbed-pane/tab-selected.png) no-repeat; +} + +div.tabs table.tab-set td.current-tab-label { + color: white; + background: rgb(162,30,30) url(../images/tabbed-pane/tab-selected.png) no-repeat; +} +div.tabs table.tab-set td.current-tab-end { + background: url(../images/tabbed-pane/tab-selected-end.png) no-repeat; +} + +/* When not selected */ + +div.tabs table.unselected { + background: rgb(225,225,225) url(../images/tabbed-pane/tab-unselected.png) no-repeat; +} + +div.tabs table.tab-set td.label { + color: rgb(63,63,63); + background: rgb(225,225,225) url(../images/tabbed-pane/tab-unselected.png) no-repeat; +} + +div.tabs table.tab-set td.end { + background: url(../images/tabbed-pane/tab-unselected-end.png) no-repeat; +} + +div.tabs table.tab-set td.tab-spacer { + width: 4px; +} + +div.tabs a { + text-decoration: none; +} + +div.tabs table.rule { + width: 100%; + clear: left; + background: rgb(162,30,30) url(../images/tabbed-pane/tab-bar.png) repeat-x; + height: 11px; + margin: 0px; + padding: 0px; +} + diff --git a/ccm-faq/web/assets/cw/applications/faq-32.gif b/ccm-faq/web/themes/heirloom/images/faq-32.gif similarity index 100% rename from ccm-faq/web/assets/cw/applications/faq-32.gif rename to ccm-faq/web/themes/heirloom/images/faq-32.gif diff --git a/ccm-faq/web/packages/faq/xsl/comments.xsl b/ccm-faq/web/themes/heirloom/packages/faq/xsl/comments.xsl similarity index 100% rename from ccm-faq/web/packages/faq/xsl/comments.xsl rename to ccm-faq/web/themes/heirloom/packages/faq/xsl/comments.xsl diff --git a/ccm-faq/web/packages/faq/xsl/faq.xsl b/ccm-faq/web/themes/heirloom/packages/faq/xsl/faq.xsl similarity index 96% rename from ccm-faq/web/packages/faq/xsl/faq.xsl rename to ccm-faq/web/themes/heirloom/packages/faq/xsl/faq.xsl index 27b36c153..e20111e40 100644 --- a/ccm-faq/web/packages/faq/xsl/faq.xsl +++ b/ccm-faq/web/themes/heirloom/packages/faq/xsl/faq.xsl @@ -20,18 +20,14 @@ - -/packages/portalserver/www/assets -/packages/portalserver/www/css - <xsl:value-of select="bebop:title"/> - +