FAQ auf legacy free umgestellt, aber Admin Oberfläche funktioniert noch nicht. Upgrade nicht erforderlich, da bisher nicht genutzt. Diverse kleinere Bereinigungen, Formatierungen, Doku.

git-svn-id: https://svn.libreccm.org/ccm/trunk@1503 8810af33-2d31-482b-a856-94f89814c4df
master
pb 2012-02-10 17:24:55 +00:00
parent 8235f21dd3
commit 4f83152ac7
26 changed files with 922 additions and 72 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 575 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 B

View File

@ -0,0 +1,18 @@
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:categorization="http://www.arsdigita.com/categorization/1.0"
xmlns:bebop="http://www.arsdigita.com/bebop/1.0"
version="1.0">
<xsl:template match="categorization:objectCategories">
<b><xsl:value-of select="bebop:name"/></b>
<blockquote>
<xsl:apply-templates select="categorization:qualifiedCategoryName" />
</blockquote>
</xsl:template>
<xsl:template match="categorization:qualifiedCategoryName">
<xsl:value-of select="@qualifiedName"/><br />
</xsl:template>
</xsl:stylesheet>

View File

@ -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;
}

View File

@ -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();
}

View File

@ -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 {

View File

@ -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();

View File

@ -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);
}

View File

@ -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;

View File

@ -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");

View File

@ -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";
}
}

View File

@ -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);
}

View File

@ -7,12 +7,12 @@
<!-- Servlets for the faq applications -->
<servlet>
<servlet-name>FAQ</servlet-name>
<servlet-name>faq-main</servlet-name>
<servlet-class>com.arsdigita.faq.FaqServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FAQ</servlet-name>
<servlet-name>faq-main</servlet-name>
<url-pattern>/faq/*</url-pattern>
</servlet-mapping>

View File

@ -2,5 +2,5 @@
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:include href="../../../../packages/faq/xsl/faq.xsl"/>
<xsl:include href="../../../packages/faq/xsl/faq.xsl"/>
</xsl:stylesheet>

View File

@ -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;
}

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -20,18 +20,14 @@
<xsl:output method="html" indent="yes"/>
<xsl:param name="contextPath"/>
<xsl:param name="internal-theme"/>
<xsl:variable name="assets-dir">/packages/portalserver/www/assets</xsl:variable>
<xsl:variable name="css-dir">/packages/portalserver/www/css</xsl:variable>
<xsl:template match="bebop:page[@class='faq']">
<html>
<head>
<title><xsl:value-of select="bebop:title"/></title>
<link href="{$css-dir}/portalserver.css" rel="stylesheet" type="text/css"/>
<link href="{$internal-theme}/css/faq.css" rel="stylesheet" type="text/css"/>
<style type="text/css">
BODY { background: white; color: black}
.main {background-color: #ffffff;}
@ -163,7 +159,7 @@
<!-- start inactive tab -->
<td>
<table cellpadding="0" cellspacing="0" border="0">
<tr height="3"><td><img src="/assets/general/spacer.gif" height="3"/></td></tr>
<tr height="3"><td><img src="{$internal-theme}/images/spacer.gif" height="3"/></td></tr>
<tr height="23">
<td class="tabBeginningOff"><xsl:text>&#160;&#160;</xsl:text></td>
<td class="inactiveTab" nowrap="nowrap"><xsl:apply-templates select="bebop:link"/></td>
@ -245,7 +241,7 @@
</table>
</td>
</tr>
<tr><td colspan="3" class="inactiveTabColor" height="2"><img src="/assets/general/spacer.gif" height="2"/></td></tr>
<tr><td colspan="3" class="inactiveTabColor" height="2"><img src="{$internal-theme}/images/spacer.gif" height="2"/></td></tr>
</xsl:if>
<tr>
<td class="splitPanelLeft">
@ -253,7 +249,7 @@
<tr><td><xsl:apply-templates select="bebop:cell[2]"/></td></tr>
</table>
</td>
<td class="inactiveTabColor" width="2"><img src="/assets/general/spacer.gif" width="2"/></td>
<td class="inactiveTabColor" width="2"><img src="{$internal-theme}/images/spacer.gif" width="2"/></td>
<td class="splitPanelRight">
<table width="100%" cellspacing="4" cellpadding="0" border="0">
<tr><td><xsl:apply-templates select="bebop:cell[3]"/></td></tr>

View File

@ -71,6 +71,7 @@ public class Forum extends Application {
/** Private logger instance for debugging purpose */
private static final Logger s_log = Logger.getLogger(Forum.class);
public static final String BASE_DATA_OBJECT_TYPE =
"com.arsdigita.forum.Forum";
public static final String PACKAGE_TYPE = "forum";
@ -995,6 +996,7 @@ public class Forum extends Application {
set(ANONYMOUS_POSTS, new Boolean(allow));
}
@Override
public void setTitle(String title) {
String oldTitle = getTitle();
super.setTitle(title);

View File

@ -112,6 +112,7 @@ public class Loader extends PackageLoader {
//setupInboxAppType(); //TODO: why it is commented out?
setupRecentPostingsPortletType();
setupMyForumsPortletType();
// moved upwards
// setupDigestUser();
@ -187,6 +188,9 @@ public class Loader extends PackageLoader {
return type;
}
/**
*
*/
public static PortletType setupMyForumsPortletType() {
PortletType type = PortletType.createPortletType(

View File

@ -443,7 +443,7 @@ table.fancy th {
}
table.fancy td {
padding: 4;
padding: 4px;
border: 0 none;
font-size: 9pt;
}

View File

@ -143,6 +143,7 @@
<ccm:application name="ccm-docmgr"/>
-->
<ccm:application name="ccm-docrepo"/>
<ccm:application name="ccm-faq"/>
<ccm:application name="ccm-forum"/>
<ccm:application name="ccm-forum-categorised"/>
<!--