CCM NG/ccm-cms:
- CreateForm for Event - Cleanup resources. Some files were accendentily copied to the wrong place. git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4698 8810af33-2d31-482b-a856-94f89814c4dfpull/2/head
parent
f1aa5bc54d
commit
34932edfc8
|
|
@ -0,0 +1,71 @@
|
|||
/*
|
||||
* Copyright (C) 2017 LibreCCM Foundation.
|
||||
*
|
||||
* 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., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*/
|
||||
package com.arsdigita.cms.ui.contenttypes;
|
||||
|
||||
import com.arsdigita.bebop.FormData;
|
||||
import com.arsdigita.bebop.Label;
|
||||
import com.arsdigita.bebop.PageState;
|
||||
import com.arsdigita.bebop.form.Date;
|
||||
import com.arsdigita.bebop.parameters.NotEmptyValidationListener;
|
||||
import com.arsdigita.cms.ItemSelectionModel;
|
||||
import com.arsdigita.cms.ui.authoring.CreationSelector;
|
||||
import com.arsdigita.cms.ui.authoring.PageCreateForm;
|
||||
import com.arsdigita.globalization.GlobalizedMessage;
|
||||
|
||||
import org.librecms.CmsConstants;
|
||||
import org.librecms.contentsection.ContentItemInitializer;
|
||||
import org.librecms.contenttypes.Event;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
public class EventCreateForm extends PageCreateForm {
|
||||
|
||||
private static final String START_DATE = "startDate";
|
||||
|
||||
private Date startDate;
|
||||
|
||||
public EventCreateForm(final ItemSelectionModel itemSelectionModel,
|
||||
final CreationSelector creationSelector) {
|
||||
super(itemSelectionModel, creationSelector);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addWidgets() {
|
||||
|
||||
super.addWidgets();
|
||||
|
||||
add(new Label(new GlobalizedMessage(
|
||||
"cms.contenttypes.ui.event.start_date",
|
||||
CmsConstants.CMS_BUNDLE)));
|
||||
startDate = new Date(START_DATE);
|
||||
startDate.addValidationListener(new NotEmptyValidationListener());
|
||||
add(startDate);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ContentItemInitializer<?> getItemInitializer(
|
||||
final FormData data, final PageState state) {
|
||||
|
||||
return item -> ((Event) item)
|
||||
.setStartDate((java.util.Date) startDate.getValue(state));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
/*
|
||||
* Copyright (C) 2017 LibreCCM Foundation.
|
||||
*
|
||||
* 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., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*/
|
||||
package com.arsdigita.cms.ui.contenttypes;
|
||||
|
||||
import com.arsdigita.bebop.FormData;
|
||||
import com.arsdigita.bebop.Label;
|
||||
import com.arsdigita.bebop.PageState;
|
||||
import com.arsdigita.bebop.event.FormInitListener;
|
||||
import com.arsdigita.bebop.event.FormSubmissionListener;
|
||||
import com.arsdigita.bebop.form.Date;
|
||||
import com.arsdigita.bebop.parameters.NotEmptyValidationListener;
|
||||
import com.arsdigita.cms.ItemSelectionModel;
|
||||
import com.arsdigita.cms.ui.authoring.CreationSelector;
|
||||
import com.arsdigita.cms.ui.authoring.PageCreateForm;
|
||||
import com.arsdigita.globalization.GlobalizedMessage;
|
||||
|
||||
import org.librecms.CmsConstants;
|
||||
import org.librecms.contentsection.ContentItemInitializer;
|
||||
import org.librecms.contenttypes.News;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
public class NewsCreateForm extends PageCreateForm {
|
||||
|
||||
private static final String NEWS_DATE = "newsDate";
|
||||
|
||||
private Date newsDate;
|
||||
|
||||
public NewsCreateForm(final ItemSelectionModel itemSelectionModel,
|
||||
final CreationSelector creationSelector) {
|
||||
|
||||
super(itemSelectionModel, creationSelector);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addWidgets() {
|
||||
|
||||
super.addWidgets();
|
||||
|
||||
add(new Label(new GlobalizedMessage("cms.contenttypes.ui.newsitem.date",
|
||||
CmsConstants.CMS_BUNDLE)));
|
||||
newsDate = new Date(NEWS_DATE);
|
||||
newsDate.addValidationListener(new NotEmptyValidationListener());
|
||||
add(newsDate);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ContentItemInitializer<?> getItemInitializer(
|
||||
final FormData data, final PageState state) {
|
||||
|
||||
return item -> ((News) item)
|
||||
.setReleaseDate((java.util.Date) newsDate.getValue(state));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -18,7 +18,8 @@
|
|||
*/
|
||||
package org.librecms.contenttypes;
|
||||
|
||||
import com.arsdigita.cms.ui.authoring.PageCreateForm;
|
||||
import com.arsdigita.cms.ui.contenttypes.EventCreateForm;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import java.util.Objects;
|
||||
|
|
@ -34,12 +35,13 @@ import javax.persistence.Temporal;
|
|||
import javax.persistence.TemporalType;
|
||||
|
||||
import org.hibernate.envers.Audited;
|
||||
import org.hibernate.validator.constraints.NotEmpty;
|
||||
|
||||
import org.libreccm.l10n.LocalizedString;
|
||||
|
||||
import org.librecms.contentsection.ContentItem;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import static org.librecms.CmsConstants.*;
|
||||
|
||||
/**
|
||||
|
|
@ -51,7 +53,7 @@ import static org.librecms.CmsConstants.*;
|
|||
@Table(name = "EVENTS", schema = DB_SCHEMA)
|
||||
@ContentTypeDescription(labelBundle = "org.librecms.contenttypes.Event",
|
||||
descriptionBundle = "org.librecms.contenttypes.Event")
|
||||
@AuthoringKit(createComponent = PageCreateForm.class,
|
||||
@AuthoringKit(createComponent = EventCreateForm.class,
|
||||
steps = {})
|
||||
public class Event extends ContentItem implements Serializable {
|
||||
|
||||
|
|
@ -72,7 +74,7 @@ public class Event extends ContentItem implements Serializable {
|
|||
|
||||
@Column(name = "START_DATE", nullable = false)
|
||||
@Temporal(TemporalType.DATE)
|
||||
@NotEmpty
|
||||
@NotNull
|
||||
private Date startDate;
|
||||
|
||||
@Column(name = "END_DATE")
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ package org.librecms.contenttypes;
|
|||
import com.arsdigita.cms.ui.contenttypes.NewsCreateForm;
|
||||
|
||||
import org.hibernate.envers.Audited;
|
||||
import org.hibernate.validator.constraints.NotEmpty;
|
||||
import org.libreccm.l10n.LocalizedString;
|
||||
import org.librecms.contentsection.ContentItem;
|
||||
|
||||
|
|
@ -154,7 +153,7 @@ public class News extends ContentItem implements Serializable {
|
|||
public String toString(final String data) {
|
||||
return super.toString(String.format(", text = %s, "
|
||||
+ "releaseDate = %tF %<tT, "
|
||||
+ "homepage = %b%d",
|
||||
+ "homepage = %b%s",
|
||||
Objects.toString(text),
|
||||
releaseDate,
|
||||
homepage,
|
||||
|
|
|
|||
|
|
@ -1,40 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2002-2004 Red Hat Inc. All Rights Reserved.
|
||||
*
|
||||
* 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.cms.util;
|
||||
import com.arsdigita.globalization.Globalized;
|
||||
|
||||
/**
|
||||
* Modules which depend on CMS should implement this interface instead of
|
||||
* com.arsdigita.globalization.Globalized to gain access to CMS globalization
|
||||
* resource file (specifically important for content type packages).
|
||||
*
|
||||
* @author <a href="mailto:yon@arsdigita.com">yon@arsdigita.com</a>
|
||||
* @version $Revision: #5 $ $Date: 2004/08/17 $
|
||||
*/
|
||||
public interface CMSGlobalized extends Globalized {
|
||||
|
||||
/*
|
||||
* The central CMS resource file (per language) which may be used by
|
||||
* all of CMS specific modules.
|
||||
* It overwrites the file provided by globalization package as a generic
|
||||
* default/fall back!
|
||||
*/
|
||||
public static final String BUNDLE_NAME = "com.arsdigita.cms.CMSResources";
|
||||
|
||||
}
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2004 Red Hat Inc. All Rights Reserved.
|
||||
*
|
||||
* 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.cms.util;
|
||||
|
||||
import com.arsdigita.globalization.ChainedResourceBundle;
|
||||
|
||||
import java.util.PropertyResourceBundle;
|
||||
import java.util.ResourceBundle;
|
||||
|
||||
|
||||
// Developers Note (2013-04):
|
||||
// No longer used because we found no way to make localization work properly.
|
||||
// Back to use plain property files as of 2013-04 (version 6.6.8)
|
||||
// Retained for easy reference to further develop localization infrastructure.
|
||||
|
||||
|
||||
/**
|
||||
* Main ResourceBundle for CMS UI.
|
||||
* Can be extended using:
|
||||
* - addBundle - to add new keys
|
||||
* - putBundle - to override keys already in CMSResources e.g. to customize
|
||||
* notification email text
|
||||
*/
|
||||
public class CMSResourceBundle extends ChainedResourceBundle implements CMSGlobalized {
|
||||
|
||||
public CMSResourceBundle() {
|
||||
super();
|
||||
// addBundle((PropertyResourceBundle) getBundle(BUNDLE_NAME));
|
||||
|
||||
// try to make proper localisation work, no success, ne regression either
|
||||
addBundle((PropertyResourceBundle) getBundle(BUNDLE_NAME,
|
||||
ResourceBundle.Control.getNoFallbackControl(
|
||||
ResourceBundle.Control.FORMAT_DEFAULT)));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,516 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2004 Red Hat Inc. All Rights Reserved.
|
||||
*
|
||||
* 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.cms.util;
|
||||
|
||||
import com.arsdigita.cms.ContentBundle;
|
||||
import com.arsdigita.cms.ContentItem;
|
||||
import com.arsdigita.cms.ItemCollection;
|
||||
import com.arsdigita.cms.Folder;
|
||||
import com.arsdigita.cms.TextAsset;
|
||||
import com.arsdigita.cms.contenttypes.GenericArticle;
|
||||
import com.arsdigita.kernel.Kernel;
|
||||
import com.arsdigita.kernel.KernelExcursion;
|
||||
import com.arsdigita.persistence.DataCollection;
|
||||
import com.arsdigita.persistence.DataObject;
|
||||
import com.arsdigita.persistence.Session;
|
||||
import com.arsdigita.persistence.SessionManager;
|
||||
import com.arsdigita.persistence.TransactionContext;
|
||||
import com.arsdigita.util.cmd.Program;
|
||||
|
||||
import org.apache.commons.cli.CommandLine;
|
||||
import org.apache.commons.cli.OptionBuilder;
|
||||
import org.jsoup.Jsoup;
|
||||
import org.jsoup.nodes.Document;
|
||||
import org.jsoup.nodes.Element;
|
||||
import org.jsoup.select.Elements;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jens Pelzetter
|
||||
*/
|
||||
@SuppressWarnings("PMD.SystemPrintln")
|
||||
public class ContentItemNameFix extends Program {
|
||||
|
||||
private boolean pretend = false;
|
||||
|
||||
public ContentItemNameFix() {
|
||||
super("ContentItemNameFix", "1.0.0", "");
|
||||
|
||||
getOptions().addOption(
|
||||
OptionBuilder
|
||||
.hasArg(false)
|
||||
.withLongOpt("pretend")
|
||||
.withDescription("Only show what would be done")
|
||||
.create("p"));
|
||||
}
|
||||
|
||||
public static final void main(final String[] args) {
|
||||
new ContentItemNameFix().run(args);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doRun(final CommandLine cmdLine) {
|
||||
|
||||
System.out.printf("Running ContentItemNameFix...\n");
|
||||
|
||||
pretend = cmdLine.hasOption("p");
|
||||
|
||||
if (pretend) {
|
||||
System.out.printf("Pretend option is on, only showing what would be done...\n\n");
|
||||
} else {
|
||||
System.out.print("\n");
|
||||
}
|
||||
|
||||
new KernelExcursion() {
|
||||
|
||||
@Override
|
||||
protected void excurse() {
|
||||
setEffectiveParty(Kernel.getSystemParty());
|
||||
|
||||
final Set<LinkToCheck> linksToCheck = new HashSet<LinkToCheck>();
|
||||
|
||||
final Session session = SessionManager.getSession();
|
||||
final TransactionContext transactionContext = session.getTransactionContext();
|
||||
|
||||
transactionContext.beginTxn();
|
||||
|
||||
final DataCollection draftFolders = session.retrieve(Folder.BASE_DATA_OBJECT_TYPE);
|
||||
draftFolders.addEqualsFilter(ContentItem.VERSION, "draft");
|
||||
|
||||
while (draftFolders.next()) {
|
||||
checkFolder(draftFolders.getDataObject(), linksToCheck);
|
||||
}
|
||||
|
||||
final DataCollection draftBundles = session.retrieve(
|
||||
ContentBundle.BASE_DATA_OBJECT_TYPE);
|
||||
draftBundles.addEqualsFilter(ContentItem.VERSION, "draft");
|
||||
|
||||
while (draftBundles.next()) {
|
||||
checkBundle(draftBundles.getDataObject(), linksToCheck);
|
||||
|
||||
}
|
||||
|
||||
transactionContext.commitTxn();
|
||||
|
||||
System.out.println("-------------------------------------------------------------");
|
||||
|
||||
System.out.println("Checking for potentially brocken links...");
|
||||
System.out.println("GenericArticle (ccm-cms-types-article, ccm-cms-types-news, ...");
|
||||
System.out.println("");
|
||||
|
||||
final DataCollection articles = session.retrieve(
|
||||
GenericArticle.BASE_DATA_OBJECT_TYPE);
|
||||
articles.addEqualsFilter(ContentItem.VERSION, "draft");
|
||||
while (articles.next()) {
|
||||
checkArticle(articles.getDataObject(), linksToCheck);
|
||||
}
|
||||
|
||||
System.out.println("");
|
||||
System.out.println("MultiPartArticles...");
|
||||
System.out.println("");
|
||||
|
||||
final DataCollection mpArticles = session.retrieve(
|
||||
"com.arsdigita.cms.contenttypes.MultiPartArticle");
|
||||
mpArticles.addEqualsFilter(ContentItem.VERSION, "draft");
|
||||
while (mpArticles.next()) {
|
||||
checkMpArticle(mpArticles.getDataObject(), linksToCheck);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}.run();
|
||||
|
||||
}
|
||||
|
||||
private void checkFolder(final DataObject folderObj, final Set<LinkToCheck> linksToCheck) {
|
||||
|
||||
final Folder draftFolder = new Folder(folderObj);
|
||||
final Folder liveFolder = (Folder) draftFolder.getLiveVersion();
|
||||
|
||||
if (liveFolder != null && !draftFolder.getName().equals(liveFolder.getName())) {
|
||||
System.out.printf("Problems with folder %s:/%s (id: %s):\n",
|
||||
draftFolder.getContentSection().getName(),
|
||||
draftFolder.getPath(),
|
||||
draftFolder.getID().toString());
|
||||
System.out.printf("\t Live Folder has wrong name: Is '%s' but should be '%s'.",
|
||||
liveFolder.getName(),
|
||||
draftFolder.getName());
|
||||
|
||||
linksToCheck.add(new LinkToCheck(liveFolder.getName(),
|
||||
draftFolder.getName(),
|
||||
String.format("%s:/%s",
|
||||
liveFolder.getContentSection().getName(),
|
||||
liveFolder.getPath()),
|
||||
String.format("%s:/%s",
|
||||
draftFolder.getContentSection().getName(),
|
||||
draftFolder.getPath())));
|
||||
|
||||
if (pretend) {
|
||||
System.out.print("\n\n");
|
||||
} else {
|
||||
|
||||
liveFolder.setName(draftFolder.getName());
|
||||
System.out.print(" Corrected.\n\n");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void checkBundle(final DataObject bundleObj, final Set<LinkToCheck> linksToCheck) {
|
||||
|
||||
final ContentBundle draftBundle = new ContentBundle(bundleObj);
|
||||
final ContentItem primaryDraftItem = draftBundle.getPrimaryInstance();
|
||||
|
||||
final String itemId = primaryDraftItem.getID().toString();
|
||||
final String itemPath = String.format("%s:/%s",
|
||||
primaryDraftItem.getContentSection().getName(),
|
||||
primaryDraftItem.getPath());
|
||||
|
||||
final HeaderStatus headerStatus = new HeaderStatus();
|
||||
|
||||
//This is our reference, all bundles, instances etc belonging to the item sould have this
|
||||
//name
|
||||
final String itemName = primaryDraftItem.getName();
|
||||
|
||||
if (!draftBundle.getName().equals(itemName)) {
|
||||
printItemHeaderLine(itemId, itemPath, headerStatus);
|
||||
|
||||
System.out.printf(
|
||||
"\t Draft ContentBundle has wrong name: Is '%s' but should be '%s'.",
|
||||
itemName,
|
||||
draftBundle.getName());
|
||||
|
||||
linksToCheck.add(new LinkToCheck(draftBundle.getName(),
|
||||
itemName,
|
||||
String.format("%s:/%s",
|
||||
draftBundle.getContentSection().getName(),
|
||||
draftBundle.getPath()),
|
||||
itemPath));
|
||||
|
||||
if (pretend) {
|
||||
System.out.print("\n");
|
||||
} else {
|
||||
draftBundle.setName(itemName);
|
||||
System.out.printf(" Corrected.\n");
|
||||
}
|
||||
}
|
||||
|
||||
checkInstances(draftBundle, itemName, itemId, itemPath, headerStatus, linksToCheck);
|
||||
|
||||
final ContentBundle liveBundle = (ContentBundle) draftBundle.getLiveVersion();
|
||||
if (liveBundle != null) {
|
||||
if (!liveBundle.getName().equals(itemName)) {
|
||||
printItemHeaderLine(itemId, itemPath, headerStatus);
|
||||
|
||||
System.out.printf(
|
||||
"\tLive ContentBundle has wrong name. Should be '%s' but is '%s'",
|
||||
itemName,
|
||||
liveBundle.getName());
|
||||
|
||||
linksToCheck.add(new LinkToCheck(liveBundle.getName(),
|
||||
itemName,
|
||||
String.format("%s:/%s",
|
||||
liveBundle.getContentSection()
|
||||
.getName(),
|
||||
liveBundle.getPath()),
|
||||
itemPath));
|
||||
|
||||
if (pretend) {
|
||||
System.out.print("\n");
|
||||
} else {
|
||||
liveBundle.setName(itemName);
|
||||
System.out.printf(" Corrected.\n");
|
||||
}
|
||||
}
|
||||
|
||||
checkInstances(liveBundle, itemName, itemId, itemPath, headerStatus, linksToCheck);
|
||||
}
|
||||
|
||||
if (headerStatus.isHeaderPrinted()) {
|
||||
System.out.print("\n");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void checkInstances(final ContentBundle draftBundle,
|
||||
final String itemName,
|
||||
final String itemId,
|
||||
final String itemPath,
|
||||
final HeaderStatus headerStatus,
|
||||
final Set<LinkToCheck> linksToCheck) {
|
||||
final ItemCollection instances = draftBundle.getInstances();
|
||||
ContentItem current;
|
||||
while (instances.next()) {
|
||||
current = instances.getContentItem();
|
||||
|
||||
if (!itemName.equals(current.getName())) {
|
||||
printItemHeaderLine(itemId, itemPath, headerStatus);
|
||||
System.out.printf(
|
||||
"\t%s instance %s (language: %s has wrong name. Should be '%s', but is '%s'.",
|
||||
current.getVersion(),
|
||||
current.getID().toString(),
|
||||
current.getLanguage(),
|
||||
itemName,
|
||||
current.getName());
|
||||
|
||||
linksToCheck.add(new LinkToCheck(current.getName(),
|
||||
itemName,
|
||||
String.format("%s:/%s",
|
||||
current.getContentSection().getName(),
|
||||
current.getPath()),
|
||||
itemPath));
|
||||
|
||||
if (pretend) {
|
||||
System.out.print("\n");
|
||||
} else {
|
||||
current.setName(itemName);
|
||||
System.out.printf(" Corrected.\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private class HeaderStatus {
|
||||
|
||||
private boolean headerPrinted = false;
|
||||
|
||||
public HeaderStatus() {
|
||||
//Nothing
|
||||
}
|
||||
|
||||
public boolean isHeaderPrinted() {
|
||||
return headerPrinted;
|
||||
}
|
||||
|
||||
public void setHeaderPrinted(final boolean headerPrinted) {
|
||||
this.headerPrinted = headerPrinted;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void printItemHeaderLine(final String itemId,
|
||||
final String itemPath,
|
||||
final HeaderStatus headerStatus) {
|
||||
if (!headerStatus.isHeaderPrinted()) {
|
||||
System.out.printf("Problems with item %s (id: %s):\n", itemPath, itemId);
|
||||
headerStatus.setHeaderPrinted(true);
|
||||
}
|
||||
}
|
||||
|
||||
private class LinkToCheck {
|
||||
|
||||
private String wrongName;
|
||||
private String correctName;
|
||||
private String wrongPath;
|
||||
private String correctPath;
|
||||
|
||||
public LinkToCheck() {
|
||||
//Nothing
|
||||
}
|
||||
|
||||
public LinkToCheck(final String wrongName,
|
||||
final String correctName,
|
||||
final String wrongPath,
|
||||
final String correctPath) {
|
||||
this.wrongName = wrongName;
|
||||
this.correctName = correctName;
|
||||
this.wrongPath = wrongPath;
|
||||
this.correctPath = correctPath;
|
||||
}
|
||||
|
||||
public String getWrongName() {
|
||||
return wrongName;
|
||||
}
|
||||
|
||||
public void setWrongName(final String wrongName) {
|
||||
this.wrongName = wrongName;
|
||||
}
|
||||
|
||||
public String getCorrectName() {
|
||||
return correctName;
|
||||
}
|
||||
|
||||
public void setCorrectName(final String correctName) {
|
||||
this.correctName = correctName;
|
||||
}
|
||||
|
||||
public String getWrongPath() {
|
||||
return wrongPath;
|
||||
}
|
||||
|
||||
public void setWrongPath(final String wrongPath) {
|
||||
this.wrongPath = wrongPath;
|
||||
}
|
||||
|
||||
public String getCorrectPath() {
|
||||
return correctPath;
|
||||
}
|
||||
|
||||
public void setCorrectPath(final String correctPath) {
|
||||
this.correctPath = correctPath;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int hash = 7;
|
||||
if (wrongName == null) {
|
||||
hash = 47 * hash;
|
||||
} else {
|
||||
hash = 47 * hash + wrongName.hashCode();
|
||||
}
|
||||
|
||||
if (correctName == null) {
|
||||
hash = 47 * hash;
|
||||
} else {
|
||||
hash = 47 * hash + correctName.hashCode();
|
||||
}
|
||||
|
||||
return hash;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(final Object obj) {
|
||||
if (obj == null) {
|
||||
return false;
|
||||
}
|
||||
if (getClass() != obj.getClass()) {
|
||||
return false;
|
||||
}
|
||||
final LinkToCheck other = (LinkToCheck) obj;
|
||||
if (wrongName == null && other.getWrongName() != null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (wrongName != null && other.getWrongName() == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (correctName == null && other.getCorrectName() != null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (correctName != null && other.getCorrectName() == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return ((correctName.equals(other.getCorrectName()))
|
||||
&& (wrongName.equals(other.getWrongName())));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void checkArticle(final DataObject articleObj,
|
||||
final Set<LinkToCheck> linksToCheck) {
|
||||
final GenericArticle article = new GenericArticle(articleObj);
|
||||
|
||||
final TextAsset textAsset = article.getTextAsset();
|
||||
|
||||
if (textAsset == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
final String text = textAsset.getText();
|
||||
|
||||
if (text == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (LinkToCheck linkToCheck : linksToCheck) {
|
||||
//if (text.contains(linkToCheck.getWrongName())) {
|
||||
|
||||
/*if (text.matches(String.format("^(.*)href=\"(.*)%s(.*)\"(.*)$"
|
||||
linkToCheck.getWrongName()))) {*/
|
||||
if (checkForPotentialBrockenLink(text, linkToCheck.getWrongName())) {
|
||||
System.out.printf("Found a potenially brocken link in article item %s:/%s:\n",
|
||||
article.getContentSection().getName(),
|
||||
article.getPath());
|
||||
System.out.printf("\tLook for a link containing to path '%s' and replace it with "
|
||||
+ "the stable link to the target item %s.\n\n",
|
||||
linkToCheck.getWrongPath(),
|
||||
linkToCheck.getCorrectPath());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void checkMpArticle(final DataObject mpArticleObj,
|
||||
final Set<LinkToCheck> linksToCheck) {
|
||||
final ContentItem mpItem = new ContentItem(mpArticleObj);
|
||||
final DataCollection sections = (DataCollection) mpArticleObj.get("sections");
|
||||
|
||||
while (sections.next()) {
|
||||
checkMpSection(mpItem, sections.getDataObject(), linksToCheck);
|
||||
}
|
||||
}
|
||||
|
||||
private void checkMpSection(final ContentItem mpItem,
|
||||
final DataObject sectionObj,
|
||||
final Set<LinkToCheck> linksToCheck) {
|
||||
final DataObject textAssetObj = (DataObject) sectionObj.get("text");
|
||||
|
||||
if (textAssetObj == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
final String text = (String) textAssetObj.get(TextAsset.CONTENT);
|
||||
|
||||
if (text == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (LinkToCheck linkToCheck : linksToCheck) {
|
||||
//if (text.contains(linkToCheck.getWrongName())) {
|
||||
/*if (text.matches(String.format("^(.*)href=\"(.*)%s(.*)\"(.*)$",
|
||||
linkToCheck.getWrongName()))) {*/
|
||||
if(checkForPotentialBrockenLink(text, linkToCheck.getWrongName())) {
|
||||
System.out.printf("Found a potenially brocken link in section '%s' of "
|
||||
+ "MultiPartArticle %s:/%s.\n",
|
||||
(String) sectionObj.get("title"),
|
||||
mpItem.getContentSection().getName(),
|
||||
mpItem.getPath());
|
||||
System.out.printf("\tLook for a link containing to path '%s' and replace it with "
|
||||
+ "the stable link to the target item %s.\n\n",
|
||||
linkToCheck.getWrongPath(),
|
||||
linkToCheck.getCorrectPath());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns {@code true} if a match for {@code checkFor} is found in the links of {@code text}.
|
||||
* @param text
|
||||
* @param checkFor
|
||||
* @return
|
||||
*/
|
||||
private boolean checkForPotentialBrockenLink(final String text, final String checkFor) {
|
||||
final Document document = Jsoup.parseBodyFragment(text);
|
||||
|
||||
final Elements links = document.select("a");
|
||||
boolean result = false;
|
||||
for(Element link : links) {
|
||||
result = (link.attr("href").contains(checkFor));
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -1,73 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2002-2004 Red Hat Inc. All Rights Reserved.
|
||||
*
|
||||
* 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.cms.util;
|
||||
|
||||
import com.arsdigita.globalization.Globalized;
|
||||
import com.arsdigita.globalization.GlobalizedMessage;
|
||||
|
||||
/**
|
||||
* Compilation of methods to simplify the handling of globalizing keys.
|
||||
* Basically it adds the name of package's resource bundle files to the
|
||||
* globalize methods and forwards to GlobalizedMessage, shortening the
|
||||
* method invocation in the various application classes.
|
||||
*
|
||||
* @author <a href="mailto:yon@arsdigita.com">yon@arsdigita.com</a>
|
||||
* @version $Revision: #7 $ $Date: 2004/08/17 $
|
||||
*/
|
||||
public class GlobalizationUtil implements Globalized {
|
||||
|
||||
/** Name of Java resource files to handle CMS's globalisation. */
|
||||
private static final String BUNDLE_NAME = "com.arsdigita.cms.CMSResources";
|
||||
|
||||
/**
|
||||
* Returns a globalized message using the package specific bundle,
|
||||
* provided by BUNDLE_NAME.
|
||||
* @param key
|
||||
* @return
|
||||
*/
|
||||
public static GlobalizedMessage globalize(String key) {
|
||||
return new GlobalizedMessage(key, BUNDLE_NAME);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a globalized message object, using the package specific bundle,
|
||||
* as specified by BUNDLE_NAME. Also takes in an Object[] of arguments to
|
||||
* interpolate into the retrieved message using the MessageFormat class.
|
||||
* @param key
|
||||
* @param args
|
||||
* @return
|
||||
*/
|
||||
public static GlobalizedMessage globalize(String key, Object[] args) {
|
||||
return new GlobalizedMessage(key, BUNDLE_NAME, args);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the package specific resource bundle.
|
||||
*
|
||||
* Used e.g. by com.arsdigita.cms.ui.item.ItemLanguageTable to get the
|
||||
* bundle tp pass to DataTable.
|
||||
*
|
||||
* @return Name of resource bundle as String
|
||||
*/
|
||||
public static String getBundleName() {
|
||||
return BUNDLE_NAME;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,81 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2002-2004 Red Hat Inc. All Rights Reserved.
|
||||
*
|
||||
* 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.cms.util;
|
||||
|
||||
import com.arsdigita.globalization.GlobalizedMessage;
|
||||
|
||||
|
||||
// Developers Note:
|
||||
// Counterpart to CMSResourceBundle java class.
|
||||
// No longer used because we couldn't find a way to make proper localization
|
||||
// work.
|
||||
// Retained for easy reference to further develop localization infrastructure.
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* .
|
||||
* Contains methods to simplify globalizing keys
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="mailto:yon@arsdigita.com">yon@arsdigita.com</a>
|
||||
* @version $Revision: #7 $ $Date: 2004/08/17 $
|
||||
*/
|
||||
public class GlobalizationUtilOld {
|
||||
|
||||
/** Name of the Java class to handle CMS's globalisation. */
|
||||
//public static String s_bundleName = "com.arsdigita.cms.util.CMSResourceBundle";
|
||||
public static String s_bundleName = "com.arsdigita.cms.CMSResources";
|
||||
|
||||
/**
|
||||
* This returns a globalized message using the package specific bundle,
|
||||
* provided by method getBundleName()
|
||||
*/
|
||||
public static GlobalizedMessage globalize(String key) {
|
||||
return new GlobalizedMessage(key, getBundleName());
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a globalized message object, using the package specific bundle,
|
||||
* provided by method getBundleName(). Also takes in an Object[] of
|
||||
* arguments to interpolate into the retrieved message using the
|
||||
* MessageFormat class.
|
||||
*/
|
||||
public static GlobalizedMessage globalize(String key, Object[] args) {
|
||||
return new GlobalizedMessage(key, getBundleName(), args);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the package specific resource bundle.
|
||||
* @return
|
||||
*/
|
||||
public static String getBundleName() {
|
||||
return s_bundleName;
|
||||
}
|
||||
|
||||
/*
|
||||
* Not a part of API. Otherwise it would need to be properly synchronized.
|
||||
* Only meant be used to override resource keys in CMSResources
|
||||
* by a custom application, in Initializer.
|
||||
*/
|
||||
public static void internalSetBundleName(String bundleName) {
|
||||
s_bundleName = bundleName;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,238 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2003-2004 Red Hat Inc. All Rights Reserved.
|
||||
*
|
||||
* 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.cms.util;
|
||||
|
||||
import com.arsdigita.cms.ContentBundle;
|
||||
import com.arsdigita.cms.ContentPage;
|
||||
import com.arsdigita.globalization.GlobalizationHelper;
|
||||
import com.arsdigita.globalization.GlobalizedMessage;
|
||||
import com.arsdigita.kernel.Kernel;
|
||||
import com.arsdigita.util.Assert;
|
||||
import com.arsdigita.util.Pair;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.Locale;
|
||||
import java.util.MissingResourceException;
|
||||
import java.util.ResourceBundle;
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
/**
|
||||
* Utility methods for dealing with the multilingual items.
|
||||
*
|
||||
* @author Shashin Shinde (sshinde@redhat.com)
|
||||
* @author Sören Bernstein <quasi@quasiweb.de>
|
||||
*/
|
||||
public class LanguageUtil {
|
||||
|
||||
private static org.apache.log4j.Logger s_log = org.apache.log4j.Logger.getLogger(
|
||||
LanguageUtil.class);
|
||||
private static String s_languages = null;
|
||||
private static String[] s_languagesArray = null;
|
||||
/**
|
||||
* Mapping from the ISO639-1 2-letter codes to the ISO639-2 3-letter codes
|
||||
*/
|
||||
private static final String ISO639_2LA_3LA = "com.arsdigita.cms.util.iso639rev";
|
||||
private static ResourceBundle s_lang3LA = ResourceBundle.getBundle(ISO639_2LA_3LA);
|
||||
/**
|
||||
* Mapping from the ISO639-1 2-letter codes to the full descriptive name
|
||||
*/
|
||||
private static final String ISO639_2LA_FULL = "com.arsdigita.cms.util.iso639full";
|
||||
private static ResourceBundle s_langFull = ResourceBundle.getBundle(ISO639_2LA_FULL);
|
||||
|
||||
public static GlobalizedMessage globalize(String key) {
|
||||
return new LanguageGlobalizedMessage(key);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the supported languages, eliminates all spaces and trims
|
||||
*
|
||||
* @param comma separated list of langages initialized from initializer at the server startup
|
||||
*/
|
||||
public static void setSupportedLanguages(String languages) {
|
||||
s_languages = languages.replace(" ", "").trim();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the comma separated list of all supported languages
|
||||
*/
|
||||
public static String getSupportedLanguages() {
|
||||
Assert.exists(s_languages, "supported languages not set");
|
||||
return s_languages;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the collection of all supported languages.
|
||||
*
|
||||
* @return all supported languages
|
||||
*/
|
||||
public static Collection getSupportedLanguages2LA() {
|
||||
String allLanguages = getSupportedLanguages();
|
||||
StringTokenizer tokenizer = new StringTokenizer(allLanguages, ",");
|
||||
Collection langList = new LinkedList();
|
||||
while (tokenizer.hasMoreElements()) {
|
||||
String language = tokenizer.nextToken();
|
||||
langList.add(language);
|
||||
}
|
||||
return langList;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the collection of all supported languages. Each entry is a pair of 2 letter code as
|
||||
* key and three letter code as value.
|
||||
*
|
||||
* @return all supported languages
|
||||
*/
|
||||
public static Collection getSupportedLanguages3LA() {
|
||||
String allLanguages = getSupportedLanguages();
|
||||
StringTokenizer tokenizer = new StringTokenizer(allLanguages, ",");
|
||||
Collection langList = new LinkedList();
|
||||
while (tokenizer.hasMoreElements()) {
|
||||
String language = tokenizer.nextToken();
|
||||
langList.add(new Pair(language, getLang3LA(language)));
|
||||
}
|
||||
return langList;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the collection of all supported languages. Each entry is a pair of 2 letter code as
|
||||
* key and full language name as a value.
|
||||
*
|
||||
* @return all supported languages
|
||||
*/
|
||||
public static Collection getSupportedLanguagesFull() {
|
||||
String allLanguages = getSupportedLanguages();
|
||||
StringTokenizer tokenizer = new StringTokenizer(allLanguages, ",");
|
||||
Collection langList = new LinkedList();
|
||||
while (tokenizer.hasMoreElements()) {
|
||||
String language = tokenizer.nextToken();
|
||||
langList.add(new Pair(language, getLangFull(language)));
|
||||
}
|
||||
return langList;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the List of languages in which this item can be created. Usefull on UI where we need to
|
||||
* display the list of languages in which this Item can be created.
|
||||
*/
|
||||
public static Collection getCreatableLanguages(ContentPage item) {
|
||||
ContentBundle bundle = item.getContentBundle();
|
||||
Collection allList = getSupportedLanguages2LA();
|
||||
allList.removeAll(bundle.getLanguages());
|
||||
return allList;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns three letter acronym for language code mapped from two letter code.
|
||||
*
|
||||
* @return three letter code for the two letter code. If the resource is not found then the key
|
||||
* itself is returned.
|
||||
*/
|
||||
public static String getLang3LA(String lang) {
|
||||
String threeLA;
|
||||
try {
|
||||
// Lookup 3-letter language code via java.util.Locale
|
||||
threeLA = (new Locale(lang)).getISO3Language();
|
||||
} catch (MissingResourceException mre) {
|
||||
// If there is none
|
||||
try {
|
||||
// Lookup 3-letter code via ressource bundle
|
||||
threeLA = s_lang3LA.getString(lang);
|
||||
} catch (MissingResourceException mexc) {
|
||||
// if there is still no match, log a warning and return the 2-letter code
|
||||
s_log.warn("Three letter language code for key '" + lang + "' not found: " + mexc);
|
||||
threeLA = lang;
|
||||
}
|
||||
}
|
||||
return threeLA;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the full language name mapped from the two letter acronym.
|
||||
*
|
||||
* @param lang 2 letter language code
|
||||
*
|
||||
* @return full language name for the given two letter code If the resource is not found then
|
||||
* the key itself is returned.
|
||||
*/
|
||||
public static String getLangFull(String lang) {
|
||||
// Lookup language name via java.util.Locale
|
||||
String fullName = (new Locale(lang)).getDisplayLanguage(GlobalizationHelper.
|
||||
getNegotiatedLocale());
|
||||
|
||||
if (lang.equals(fullName)) {
|
||||
// If that fails
|
||||
try {
|
||||
// Lookup language name vie ressource bundle
|
||||
fullName = s_langFull.getString(lang);
|
||||
} catch (MissingResourceException mexc) {
|
||||
// If there is still nomatch, log a warning and return 2-letter code
|
||||
s_log.warn("Full language name for key '" + lang + "' not found " + mexc);
|
||||
fullName = lang;
|
||||
}
|
||||
}
|
||||
return fullName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Takes in a list of 2 letter codes and converts into 3 letter codes. Each entry is pair of 2
|
||||
* letter code as key and 3 letter code as value.
|
||||
*/
|
||||
public static Collection convertTo3LA(Collection list) {
|
||||
Collection conList = new LinkedList();
|
||||
for (Iterator iter = list.iterator(); iter.hasNext();) {
|
||||
String lang2Code = (String) iter.next();
|
||||
conList.add(new Pair(lang2Code, getLang3LA(lang2Code)));
|
||||
}
|
||||
return conList;
|
||||
}
|
||||
|
||||
public static Collection convertToFull(Collection list) {
|
||||
Collection conList = new LinkedList();
|
||||
for (Iterator iter = list.iterator(); iter.hasNext();) {
|
||||
String lang2Code = (String) iter.next();
|
||||
conList.add(new Pair(lang2Code, getLangFull(lang2Code)));
|
||||
}
|
||||
return conList;
|
||||
}
|
||||
|
||||
public static Collection convertToG11N(Collection list) {
|
||||
Collection conList = new LinkedList();
|
||||
for (Iterator iter = list.iterator(); iter.hasNext();) {
|
||||
String lang2Code = (String) iter.next();
|
||||
conList.add(new Pair(lang2Code, globalize(lang2Code)));
|
||||
}
|
||||
return conList;
|
||||
}
|
||||
|
||||
// Special GlobalizedMessage for use with the LanguageUtil#globalize method
|
||||
private static class LanguageGlobalizedMessage extends GlobalizedMessage {
|
||||
|
||||
public LanguageGlobalizedMessage(String key) {
|
||||
super(key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object localize(Locale locale) {
|
||||
return LanguageUtil.getLangFull(this.getKey());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -1,82 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2003-2004 Red Hat Inc. All Rights Reserved.
|
||||
*
|
||||
* 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.cms.util;
|
||||
|
||||
|
||||
import org.xml.sax.helpers.DefaultHandler;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
* SAX event handler class for parsing configuration file.
|
||||
*
|
||||
* Parse URL-to-Page/Dispatcher/Servlet mappings from a file.
|
||||
*
|
||||
* Format of the file is XML:
|
||||
* <pre>
|
||||
* <dispatcher-configuration>
|
||||
* <url-mapping
|
||||
* <url>my-page</url>
|
||||
* OR <page-class>com.arsdigita.Page.class</page-class>
|
||||
* <url-mapping
|
||||
* </dispatcher-configuration>
|
||||
* </pre>
|
||||
*/
|
||||
public class PageClassConfigHandler extends DefaultHandler {
|
||||
|
||||
private Map m_map;
|
||||
private Map m_rmap;
|
||||
private StringBuffer m_buffer;
|
||||
private String m_url;
|
||||
private String m_className;
|
||||
|
||||
/**
|
||||
* @param map A map to configure (pages-> classes)
|
||||
* @param rmap A map to configure (classes-> pages)
|
||||
*
|
||||
* @pre md.m_map != null
|
||||
*/
|
||||
public PageClassConfigHandler(Map map, Map rmap) {
|
||||
m_map = map;
|
||||
// reverse map
|
||||
m_rmap = rmap;
|
||||
m_buffer = new StringBuffer();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void characters(char[] ch, int start, int len) {
|
||||
for (int i = 0; i < len; i++) {
|
||||
m_buffer.append(ch[start + i]);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endElement(String uri, String localName, String qn) {
|
||||
if ( qn.equals("url") ) {
|
||||
m_url = m_buffer.toString().trim();
|
||||
} else if ( qn.equals("page-class") ) {
|
||||
m_className = m_buffer.toString().trim();
|
||||
} else if ( qn.equals("url-mapping") ) {
|
||||
m_map.put(m_url, m_className);
|
||||
m_rmap.put(m_className, m_url);
|
||||
}
|
||||
m_buffer = new StringBuffer();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,68 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2003-2004 Red Hat Inc. All Rights Reserved.
|
||||
*
|
||||
* 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.cms.util;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* <p>Security class used for checking and granting privileges in
|
||||
* CMS.</p>
|
||||
*
|
||||
* @author Michael Pih
|
||||
* @version $Revision: #7 $ $DateTime: 2004/08/17 23:15:09 $
|
||||
* @version $Id: SecurityConstants.java 2090 2010-04-17 08:04:14Z pboy $
|
||||
*/
|
||||
public interface SecurityConstants {
|
||||
|
||||
// CMS Actions
|
||||
public final static String STAFF_ADMIN = "staff_admin";
|
||||
public final static String WORKFLOW_ADMIN = "workflow_admin";
|
||||
public final static String CATEGORY_ADMIN = "category_admin";
|
||||
public final static String LIFECYCLE_ADMIN = "lifecycle_admin";
|
||||
public final static String CONTENT_TYPE_ADMIN = "content_type_admin";
|
||||
public final static String PUBLISH = "publish";
|
||||
public final static String NEW_ITEM = "new_item";
|
||||
public final static String PUBLIC_PAGES = "public_pages";
|
||||
public final static String PREVIEW_PAGES = "preview_pages";
|
||||
public final static String ADMIN_PAGES = "admin_pages";
|
||||
public final static String EDIT_ITEM = "edit_item";
|
||||
public final static String SCHEDULE_PUBLICATION = "schedule_publication";
|
||||
public final static String DELETE_ITEM = "delete_item";
|
||||
public final static String APPLY_WORKFLOW = "apply_workflow";
|
||||
public final static String CATEGORIZE_ITEMS = "categorize_items";
|
||||
public final static String DELETE_IMAGES = "delete_images";
|
||||
public final static String APPLY_ALTERNATE_WORKFLOWS = "apply_alternate_workflows";
|
||||
|
||||
// CMS Privileges
|
||||
public final static String CMS_APPLY_ALTERNATE_WORKFLOWS = "cms_apply_alternate_workflows";
|
||||
public final static String CMS_CATEGORIZE_ITEMS = "cms_categorize_items";
|
||||
public final static String CMS_CATEGORY_ADMIN = "cms_category_admin";
|
||||
public final static String CMS_CONTENT_TYPE_ADMIN = "cms_content_type_admin";
|
||||
public final static String CMS_DELETE_ITEM = "cms_delete_item";
|
||||
public final static String CMS_EDIT_ITEM = "cms_edit_item";
|
||||
public final static String CMS_ITEM_ADMIN = "cms_item_admin";
|
||||
public final static String CMS_LIFECYCLE_ADMIN = "cms_lifecycle_admin";
|
||||
public final static String CMS_NEW_ITEM = "cms_new_item";
|
||||
public final static String CMS_PREVIEW_ITEM = "cms_preview_item";
|
||||
public final static String CMS_PUBLISH = "cms_publish";
|
||||
public final static String CMS_APPROVE_ITEM = "cms_approve_item";
|
||||
public final static String CMS_READ_ITEM = "cms_read_item";
|
||||
public final static String CMS_STAFF_ADMIN = "cms_staff_admin";
|
||||
public final static String CMS_WORKFLOW_ADMIN = "cms_workflow_admin";
|
||||
}
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2003-2004 Red Hat Inc. All Rights Reserved.
|
||||
*
|
||||
* 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.cms.util;
|
||||
|
||||
import com.arsdigita.runtime.ConfigError;
|
||||
import org.apache.oro.text.perl.Perl5Util;
|
||||
|
||||
/**
|
||||
* Utility functions for use by installer classes.
|
||||
*
|
||||
* @author Jon Orris (jorris@redhat.com)
|
||||
* @version $Revision: #6 $ $DateTime: 2004/08/17 23:15:09 $
|
||||
*/
|
||||
|
||||
public class Util {
|
||||
public static void validateURLParameter(String name, String value)
|
||||
throws ConfigError {
|
||||
|
||||
final String pattern = "/[^A-Za-z_0-9\\-]+/";
|
||||
Perl5Util util = new Perl5Util();
|
||||
if ( util.match(pattern, value) ) {
|
||||
throw new ConfigError
|
||||
("The \"" + name + "\" parameter must contain only " +
|
||||
" alpha-numeric characters, underscores, and/or hyphens.");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -280,3 +280,4 @@ cms.ui.authoring.workflow=Select a workflow
|
|||
cms.ui.create=Create
|
||||
cms.contenttypes.ui.summary=Summary
|
||||
cms.contenttypes.ui.newsitem.date\ =Release date
|
||||
cms.contenttypes.ui.event.start_date=Start date
|
||||
|
|
|
|||
|
|
@ -278,3 +278,4 @@ cms.ui.authoring.workflow=Arbeitsablauf ausw\u00e4hlen
|
|||
cms.ui.create=Anlegen
|
||||
cms.contenttypes.ui.summary=Zusammenfassung
|
||||
cms.contenttypes.ui.newsitem.date\ =Erscheinungsdatum
|
||||
cms.contenttypes.ui.event.start_date=Anfangsdatum
|
||||
|
|
|
|||
|
|
@ -237,3 +237,4 @@ cms.ui.authoring.workflow=Select a workflow
|
|||
cms.ui.create=Create
|
||||
cms.contenttypes.ui.summary=Summary
|
||||
cms.contenttypes.ui.newsitem.date\ =Release date
|
||||
cms.contenttypes.ui.event.start_date=Start date
|
||||
|
|
|
|||
Loading…
Reference in New Issue