Begin of reimplementation of CategoryLocalization
Also adds a lot of key/value pairs to the CmsResources
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4572 8810af33-2d31-482b-a856-94f89814c4df
Former-commit-id: db8725c222
pull/2/head
parent
897b014792
commit
2c5afa14bc
|
|
@ -1,131 +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.ui.category;
|
|
||||||
|
|
||||||
import com.arsdigita.bebop.FormProcessException;
|
|
||||||
import com.arsdigita.bebop.GridPanel;
|
|
||||||
import com.arsdigita.bebop.Label;
|
|
||||||
import com.arsdigita.bebop.PageState;
|
|
||||||
import com.arsdigita.bebop.SaveCancelSection;
|
|
||||||
import com.arsdigita.bebop.event.ParameterEvent;
|
|
||||||
import com.arsdigita.bebop.event.ParameterListener;
|
|
||||||
import com.arsdigita.bebop.form.FormErrorDisplay;
|
|
||||||
import com.arsdigita.bebop.form.TextArea;
|
|
||||||
import com.arsdigita.bebop.form.TextField;
|
|
||||||
import com.arsdigita.bebop.parameters.NotNullValidationListener;
|
|
||||||
import com.arsdigita.bebop.parameters.TrimmedStringParameter;
|
|
||||||
import com.arsdigita.categorization.Category;
|
|
||||||
import com.arsdigita.categorization.CategoryCollection;
|
|
||||||
import com.arsdigita.cms.ui.CMSForm;
|
|
||||||
import com.arsdigita.cms.util.GlobalizationUtil;
|
|
||||||
import com.arsdigita.globalization.GlobalizedMessage;
|
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A form which creates a new category. Extends the edit form for
|
|
||||||
* convenience.
|
|
||||||
*
|
|
||||||
* @author Michael Pih
|
|
||||||
* @author Stanislav Freidin <sfreidin@redhat.com>
|
|
||||||
* @version $Id: CategoryBaseForm.java 287 2005-02-22 00:29:02Z sskracic $
|
|
||||||
*/
|
|
||||||
class CategoryBaseForm extends CMSForm {
|
|
||||||
private static final Logger s_log =
|
|
||||||
Logger.getLogger(CategoryBaseForm.class);
|
|
||||||
|
|
||||||
final CategoryRequestLocal m_parent;
|
|
||||||
|
|
||||||
final FormErrorDisplay m_errors;
|
|
||||||
final TextField m_title;
|
|
||||||
final TextArea m_description;
|
|
||||||
final SaveCancelSection m_saveCancelSection;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor.
|
|
||||||
*/
|
|
||||||
CategoryBaseForm(final String string, final CategoryRequestLocal parent) {
|
|
||||||
super("AddSubcategories");
|
|
||||||
|
|
||||||
m_parent = parent;
|
|
||||||
|
|
||||||
// Form header
|
|
||||||
Label header = new Label(gz("cms.ui.category.add"));
|
|
||||||
add(header, GridPanel.FULL_WIDTH);
|
|
||||||
|
|
||||||
// Form errors
|
|
||||||
m_errors = new FormErrorDisplay(this);
|
|
||||||
add(m_errors, GridPanel.FULL_WIDTH);
|
|
||||||
|
|
||||||
// Name
|
|
||||||
m_title = new TextField(new TrimmedStringParameter("name"));
|
|
||||||
m_title.setSize(30);
|
|
||||||
m_title.setMaxLength(30);
|
|
||||||
m_title.addValidationListener(new NotNullValidationListener());
|
|
||||||
m_title.addValidationListener(new TitleUniqueListener());
|
|
||||||
add(new Label(gz("cms.ui.name")));
|
|
||||||
add(m_title);
|
|
||||||
|
|
||||||
// Description
|
|
||||||
m_description = new TextArea(new TrimmedStringParameter("description"));
|
|
||||||
m_description.setWrap(TextArea.SOFT);
|
|
||||||
m_description.setRows(5);
|
|
||||||
m_description.setCols(40);
|
|
||||||
m_description.addValidationListener(new NotNullValidationListener());
|
|
||||||
add(new Label(gz("cms.ui.description")));
|
|
||||||
add(m_description);
|
|
||||||
|
|
||||||
// Save and cancel buttons
|
|
||||||
m_saveCancelSection = new SaveCancelSection();
|
|
||||||
add(m_saveCancelSection, GridPanel.FULL_WIDTH | GridPanel.LEFT);
|
|
||||||
}
|
|
||||||
|
|
||||||
public final boolean isCancelled(final PageState state) {
|
|
||||||
return m_saveCancelSection.getCancelButton().isSelected(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
static GlobalizedMessage gz(final String key) {
|
|
||||||
return GlobalizationUtil.globalize(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
static String lz(final String key) {
|
|
||||||
return (String) gz(key).localize();
|
|
||||||
}
|
|
||||||
|
|
||||||
class TitleUniqueListener implements ParameterListener {
|
|
||||||
public final void validate(final ParameterEvent e)
|
|
||||||
throws FormProcessException {
|
|
||||||
|
|
||||||
final PageState state = e.getPageState();
|
|
||||||
final String title = (String) m_title.getValue(state);
|
|
||||||
|
|
||||||
final Category parent = m_parent.getCategory(state);
|
|
||||||
final CategoryCollection children = parent.getChildren();
|
|
||||||
|
|
||||||
while (children.next()) {
|
|
||||||
final Category child = children.getCategory();
|
|
||||||
|
|
||||||
if (child.getName().equalsIgnoreCase(title)) {
|
|
||||||
throw new FormProcessException
|
|
||||||
(GlobalizationUtil.globalize("cms.ui.category.name_not_unique"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -27,7 +27,6 @@ import java.util.Iterator;
|
||||||
* A {@link ListModel} that iterates over categories via an iterator
|
* A {@link ListModel} that iterates over categories via an iterator
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:yannick.buelter@yabue.de">Yannick Bülter</a>
|
* @author <a href="mailto:yannick.buelter@yabue.de">Yannick Bülter</a>
|
||||||
* @version $Id: CategoryIteratorListModel.java 2090 2010-04-17 08:04:14Z pboy $
|
|
||||||
*/
|
*/
|
||||||
public class CategoryIteratorListModel implements ListModel {
|
public class CategoryIteratorListModel implements ListModel {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ import java.util.HashSet;
|
||||||
*
|
*
|
||||||
* @author Stanislav Freidin (stas@arsdigita.com)
|
* @author Stanislav Freidin (stas@arsdigita.com)
|
||||||
* @author Michael Pih (pihman@arsdigita.com)
|
* @author Michael Pih (pihman@arsdigita.com)
|
||||||
* @version $Id: CategoryLinks.java 2140 2011-01-16 12:04:20Z pboy $
|
* @author <a href="mailto:yannick.buelter@yabue.de">Yannick Bülter</a>
|
||||||
*/
|
*/
|
||||||
public class CategoryLinks extends List {
|
public class CategoryLinks extends List {
|
||||||
public final static String SUB_CATEGORY = "sc";
|
public final static String SUB_CATEGORY = "sc";
|
||||||
|
|
@ -78,7 +78,7 @@ public class CategoryLinks extends List {
|
||||||
setEmptyView(label);
|
setEmptyView(label);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Since this part is for non default parents, but the is only one... this is not needed anymore, i guess
|
// Since this part is for non default parents, but there is only one... this is not needed anymore, i guess
|
||||||
/*
|
/*
|
||||||
private class LinkedCategoryModelBuilder extends LockableImpl
|
private class LinkedCategoryModelBuilder extends LockableImpl
|
||||||
implements ListModelBuilder {
|
implements ListModelBuilder {
|
||||||
|
|
|
||||||
|
|
@ -18,22 +18,25 @@
|
||||||
*/
|
*/
|
||||||
package com.arsdigita.cms.ui.category;
|
package com.arsdigita.cms.ui.category;
|
||||||
|
|
||||||
import com.arsdigita.bebop.FormProcessException;
|
import com.arsdigita.bebop.*;
|
||||||
import com.arsdigita.bebop.Label;
|
|
||||||
import com.arsdigita.bebop.PageState;
|
|
||||||
import com.arsdigita.bebop.event.FormInitListener;
|
import com.arsdigita.bebop.event.FormInitListener;
|
||||||
import com.arsdigita.bebop.event.FormProcessListener;
|
import com.arsdigita.bebop.event.FormProcessListener;
|
||||||
import com.arsdigita.bebop.event.FormSectionEvent;
|
import com.arsdigita.bebop.event.FormSectionEvent;
|
||||||
import com.arsdigita.bebop.form.Option;
|
import com.arsdigita.bebop.form.Option;
|
||||||
import com.arsdigita.categorization.Category;
|
import com.arsdigita.bebop.util.GlobalizationUtil;
|
||||||
import com.arsdigita.dispatcher.AccessDeniedException;
|
import com.arsdigita.dispatcher.AccessDeniedException;
|
||||||
import com.arsdigita.cms.util.GlobalizationUtil;
|
|
||||||
import com.arsdigita.kernel.Kernel;
|
|
||||||
import com.arsdigita.kernel.KernelConfig;
|
import com.arsdigita.kernel.KernelConfig;
|
||||||
import java.util.Locale;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import java.util.StringTokenizer;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
import org.libreccm.categorization.Category;
|
||||||
|
import org.libreccm.categorization.CategoryRepository;
|
||||||
|
import org.libreccm.cdi.utils.CdiUtil;
|
||||||
|
import org.libreccm.configuration.ConfigurationManager;
|
||||||
|
import org.libreccm.security.PermissionChecker;
|
||||||
|
import org.librecms.contentsection.privileges.AdminPrivileges;
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import java.util.Collection;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates a form for creating new localisations for the given category.
|
* Generates a form for creating new localisations for the given category.
|
||||||
|
|
@ -42,11 +45,12 @@ import org.apache.log4j.Logger;
|
||||||
* in order to present forms for managing the multi-language categories.
|
* in order to present forms for managing the multi-language categories.
|
||||||
*
|
*
|
||||||
* @author Sören Bernstein <quasi@quasiweb.de>
|
* @author Sören Bernstein <quasi@quasiweb.de>
|
||||||
* @version $Id: CategoryLocalizationAddForm.java 287 2005-02-22 00:29:02Z sskracic $
|
* @author <a href="mailto:yannick.buelter@yabue.de">Yannick Bülter</a>
|
||||||
*/
|
*/
|
||||||
public class CategoryLocalizationAddForm extends CategoryLocalizationForm {
|
public class CategoryLocalizationAddForm extends CategoryLocalizationForm {
|
||||||
|
|
||||||
private static final Logger s_log = Logger.getLogger(CategoryAddForm.class);
|
private static final Logger LOGGER = LogManager.getLogger(
|
||||||
|
CategoryLocalizationAddForm.class);
|
||||||
|
|
||||||
/** Creates a new instance of CategoryLocalizationAddForm */
|
/** Creates a new instance of CategoryLocalizationAddForm */
|
||||||
public CategoryLocalizationAddForm(final CategoryRequestLocal category) {
|
public CategoryLocalizationAddForm(final CategoryRequestLocal category) {
|
||||||
|
|
@ -68,6 +72,12 @@ public class CategoryLocalizationAddForm extends CategoryLocalizationForm {
|
||||||
public final void init(final FormSectionEvent e)
|
public final void init(final FormSectionEvent e)
|
||||||
throws FormProcessException {
|
throws FormProcessException {
|
||||||
|
|
||||||
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
|
final ConfigurationManager manager = cdiUtil.findBean(
|
||||||
|
ConfigurationManager.class);
|
||||||
|
final KernelConfig config = manager.findConfiguration(
|
||||||
|
KernelConfig.class);
|
||||||
|
|
||||||
final PageState state = e.getPageState();
|
final PageState state = e.getPageState();
|
||||||
final Category category = m_category.getCategory(state);
|
final Category category = m_category.getCategory(state);
|
||||||
|
|
||||||
|
|
@ -75,20 +85,11 @@ public class CategoryLocalizationAddForm extends CategoryLocalizationForm {
|
||||||
m_locale.addOption(new Option("",
|
m_locale.addOption(new Option("",
|
||||||
new Label(GlobalizationUtil.globalize(
|
new Label(GlobalizationUtil.globalize(
|
||||||
"cms.ui.select_one"))), state);
|
"cms.ui.select_one"))), state);
|
||||||
|
final Collection<String> locales = config.getSupportedLanguages();
|
||||||
// all supported languages (by registry entry)
|
if (locales != null) {
|
||||||
KernelConfig kernelConfig = Kernel.getConfig();
|
for (String locale : locales) {
|
||||||
StringTokenizer strTok = kernelConfig.getSupportedLanguagesTokenizer();
|
m_locale.addOption(new Option(locale,
|
||||||
|
new Text(new Locale(locale).getDisplayLanguage())), state);
|
||||||
while (strTok.hasMoreTokens()) {
|
|
||||||
|
|
||||||
String code = strTok.nextToken();
|
|
||||||
|
|
||||||
// If lanuage exists, remove it from the selection list
|
|
||||||
if (!category.getCategoryLocalizationCollection().
|
|
||||||
localizationExists(code)) {
|
|
||||||
m_locale.addOption(new Option(code,
|
|
||||||
new Locale(code).getDisplayLanguage()), state);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -98,29 +99,31 @@ public class CategoryLocalizationAddForm extends CategoryLocalizationForm {
|
||||||
|
|
||||||
public final void process(final FormSectionEvent e)
|
public final void process(final FormSectionEvent e)
|
||||||
throws FormProcessException {
|
throws FormProcessException {
|
||||||
s_log.debug("Adding a categoryLocalization to category " + m_category);
|
LOGGER.debug("Adding a categoryLocalization to category " + m_category);
|
||||||
|
|
||||||
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
|
final PermissionChecker permissionChecker = cdiUtil.findBean(PermissionChecker.class);
|
||||||
|
final CategoryRepository categoryRepository = cdiUtil.findBean(CategoryRepository.class);
|
||||||
|
|
||||||
final PageState state = e.getPageState();
|
final PageState state = e.getPageState();
|
||||||
|
|
||||||
final Category category = m_category.getCategory(state);
|
final Category category = m_category.getCategory(state);
|
||||||
final String locale = (String) m_locale.getValue(state);
|
final Locale locale = new Locale((String) m_locale.getValue(state));
|
||||||
final String name = (String) m_name.getValue(state);
|
final String title = (String) m_title.getValue(state);
|
||||||
final String description = (String) m_description.getValue(state);
|
final String description = (String) m_description.getValue(state);
|
||||||
final String url = (String) m_url.getValue(state);
|
final String url = (String) m_url.getValue(state);
|
||||||
final String isEnabled = (String) m_isEnabled.getValue(state);
|
final String isEnabled = (String) m_isEnabled.getValue(state);
|
||||||
|
|
||||||
// Was soll das??
|
if (LOGGER.isDebugEnabled()) {
|
||||||
//Assert.assertNotNull(parent, "Category parent");
|
LOGGER.debug("Adding localization for locale " + locale
|
||||||
|
|
||||||
if (s_log.isDebugEnabled()) {
|
|
||||||
s_log.debug("Adding localization for locale " + locale
|
|
||||||
+ " to category " + category);
|
+ " to category " + category);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (category.canEdit()) {
|
if (permissionChecker.isPermitted(AdminPrivileges.ADMINISTER_CATEGORIES, category)) {
|
||||||
category.addLanguage(locale, name, description, url);
|
category.getTitle().addValue(locale, title);
|
||||||
category.setEnabled("yes".equals(isEnabled), locale);
|
category.getDescription().addValue(locale, description);
|
||||||
category.save();
|
category.setEnabled(isEnabled.equals("yes"));
|
||||||
|
categoryRepository.save(category);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// XXX user a better exception here.
|
// XXX user a better exception here.
|
||||||
|
|
@ -39,13 +39,14 @@ import com.arsdigita.bebop.parameters.ParameterModel;
|
||||||
import com.arsdigita.bebop.parameters.StringInRangeValidationListener;
|
import com.arsdigita.bebop.parameters.StringInRangeValidationListener;
|
||||||
import com.arsdigita.bebop.parameters.StringParameter;
|
import com.arsdigita.bebop.parameters.StringParameter;
|
||||||
import com.arsdigita.bebop.parameters.TrimmedStringParameter;
|
import com.arsdigita.bebop.parameters.TrimmedStringParameter;
|
||||||
import com.arsdigita.categorization.Category;
|
import com.arsdigita.bebop.util.GlobalizationUtil;
|
||||||
import com.arsdigita.categorization.CategoryCollection;
|
|
||||||
import com.arsdigita.cms.ui.BaseForm;
|
import com.arsdigita.cms.ui.BaseForm;
|
||||||
import com.arsdigita.cms.util.GlobalizationUtil;
|
|
||||||
import com.arsdigita.globalization.GlobalizedMessage;
|
import com.arsdigita.globalization.GlobalizedMessage;
|
||||||
import com.arsdigita.web.Web;
|
import com.arsdigita.web.Web;
|
||||||
import com.arsdigita.xml.Element;
|
import com.arsdigita.xml.Element;
|
||||||
|
import org.libreccm.categorization.Category;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.TooManyListenersException;
|
import java.util.TooManyListenersException;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
@ -57,13 +58,13 @@ import java.util.logging.Logger;
|
||||||
* forms for managing the multi-language categories.
|
* forms for managing the multi-language categories.
|
||||||
*
|
*
|
||||||
* @author Sören Bernstein <quasi@quasiweb.de>
|
* @author Sören Bernstein <quasi@quasiweb.de>
|
||||||
* @version $Id: $
|
* @author <a href="mailto:yannick.buelter@yabue.de">Yannick Bülter</a>
|
||||||
*/
|
*/
|
||||||
public class CategoryLocalizationForm extends BaseForm {
|
public class CategoryLocalizationForm extends BaseForm {
|
||||||
|
|
||||||
final CategoryRequestLocal m_category;
|
final CategoryRequestLocal m_category;
|
||||||
final SingleSelect m_locale;
|
final SingleSelect m_locale;
|
||||||
final TextField m_name;
|
final TextField m_title;
|
||||||
final TextArea m_description;
|
final TextArea m_description;
|
||||||
//final TextField m_url;
|
//final TextField m_url;
|
||||||
final Hidden m_url;
|
final Hidden m_url;
|
||||||
|
|
@ -74,7 +75,7 @@ public class CategoryLocalizationForm extends BaseForm {
|
||||||
false);
|
false);
|
||||||
|
|
||||||
private final static String LOCALE = "locale";
|
private final static String LOCALE = "locale";
|
||||||
private final static String NAME = "name";
|
private final static String TITLE = "title";
|
||||||
private final static String DESCRIPTION = "description";
|
private final static String DESCRIPTION = "description";
|
||||||
private final static String URL = "url";
|
private final static String URL = "url";
|
||||||
private final static String IS_ENABLED = "isEnabled";
|
private final static String IS_ENABLED = "isEnabled";
|
||||||
|
|
@ -99,35 +100,30 @@ public class CategoryLocalizationForm extends BaseForm {
|
||||||
localeParam.addParameterListener(new StringInRangeValidationListener(0, 2));
|
localeParam.addParameterListener(new StringInRangeValidationListener(0, 2));
|
||||||
|
|
||||||
m_locale = new SingleSelect(localeParam);
|
m_locale = new SingleSelect(localeParam);
|
||||||
m_locale.addValidationListener(new ParameterListener() {
|
m_locale.addValidationListener(e -> {
|
||||||
|
|
||||||
@Override
|
// the --select one-- option is not allowed
|
||||||
public void validate(ParameterEvent e) throws FormProcessException {
|
ParameterData data = e.getParameterData();
|
||||||
|
String code = (String) data.getValue();
|
||||||
// the --select one-- option is not allowed
|
if (code == null || code.length() == 0) {
|
||||||
ParameterData data = e.getParameterData();
|
data.addError(
|
||||||
String code = (String) data.getValue();
|
GlobalizationUtil.globalize(
|
||||||
if (code == null || code.length() == 0) {
|
"cms.ui.category.localization_error_locale"));
|
||||||
data.addError(
|
|
||||||
GlobalizationUtil.globalize(
|
|
||||||
"cms.ui.category.localization_error_locale"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
addField(gz("cms.ui.category.localization_locale"), m_locale);
|
addField(gz("cms.ui.category.localization_locale"), m_locale);
|
||||||
|
|
||||||
m_name = new TextField(new TrimmedStringParameter(NAME));
|
m_title = new TextField(new TrimmedStringParameter(TITLE));
|
||||||
addField(gz("cms.ui.name"), m_name);
|
addField(gz("cms.ui.name"), m_title);
|
||||||
|
|
||||||
m_name.setSize(30);
|
m_title.setSize(30);
|
||||||
m_name.setMaxLength(200);
|
m_title.setMaxLength(200);
|
||||||
m_name.addValidationListener(new NotNullValidationListener());
|
m_title.addValidationListener(new NotNullValidationListener());
|
||||||
m_name.setOnFocus("if (this.form." + URL + ".value == '') { "
|
m_title.setOnFocus("if (this.form." + URL + ".value == '') { "
|
||||||
+ " defaulting = true; this.form." + URL
|
+ " defaulting = true; this.form." + URL
|
||||||
+ ".value = urlize(this.value); }");
|
+ ".value = urlize(this.value); }");
|
||||||
m_name.setOnKeyUp("if (defaulting) { this.form." + URL + ".value = urlize(this.value) }");
|
m_title.setOnKeyUp("if (defaulting) { this.form." + URL + ".value = urlize(this.value) }");
|
||||||
|
|
||||||
// is enabled?
|
// is enabled?
|
||||||
m_isEnabled = new RadioGroup(IS_ENABLED);
|
m_isEnabled = new RadioGroup(IS_ENABLED);
|
||||||
|
|
@ -160,7 +156,7 @@ public class CategoryLocalizationForm extends BaseForm {
|
||||||
// m_url.addValidationListener(new NotNullValidationListener());
|
// m_url.addValidationListener(new NotNullValidationListener());
|
||||||
// m_url.setOnFocus("defaulting = false");
|
// m_url.setOnFocus("defaulting = false");
|
||||||
// m_url.setOnBlur("if (this.value == '') "
|
// m_url.setOnBlur("if (this.value == '') "
|
||||||
// + "{ defaulting = true; this.value = urlize(this.form." + NAME
|
// + "{ defaulting = true; this.value = urlize(this.form." + TITLE
|
||||||
// + ".value) } " + "else { this.value = urlize(this.value); }");
|
// + ".value) } " + "else { this.value = urlize(this.value); }");
|
||||||
// addField(gz("cms.ui.category.url"), m_url);
|
// addField(gz("cms.ui.category.url"), m_url);
|
||||||
//jensp 2014-09-16: Localisation of URLs is not useful but causes problems when resolving
|
//jensp 2014-09-16: Localisation of URLs is not useful but causes problems when resolving
|
||||||
|
|
@ -178,7 +174,7 @@ public class CategoryLocalizationForm extends BaseForm {
|
||||||
|
|
||||||
final Category cat = m_category.getCategory(state);
|
final Category cat = m_category.getCategory(state);
|
||||||
|
|
||||||
target.setValue(state, cat.getURL());
|
target.setValue(state, cat.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
@ -211,11 +207,11 @@ public class CategoryLocalizationForm extends BaseForm {
|
||||||
private final CategoryRequestLocal m_category;
|
private final CategoryRequestLocal m_category;
|
||||||
private final Widget m_widget;
|
private final Widget m_widget;
|
||||||
private final int m_type;
|
private final int m_type;
|
||||||
public final static int NAME_FIELD = 1;
|
final static int NAME_FIELD = 1;
|
||||||
public final static int URL_FIELD = 2;
|
public final static int URL_FIELD = 2;
|
||||||
|
|
||||||
NameUniqueListener(final CategoryRequestLocal category) {
|
NameUniqueListener(final CategoryRequestLocal category) {
|
||||||
this(category, m_name, NAME_FIELD);
|
this(category, m_title, NAME_FIELD);
|
||||||
}
|
}
|
||||||
|
|
||||||
NameUniqueListener(final CategoryRequestLocal category,
|
NameUniqueListener(final CategoryRequestLocal category,
|
||||||
|
|
@ -242,14 +238,12 @@ public class CategoryLocalizationForm extends BaseForm {
|
||||||
|
|
||||||
final Category category = m_category.getCategory(state);
|
final Category category = m_category.getCategory(state);
|
||||||
|
|
||||||
final CategoryCollection children = category.getChildren();
|
final List<Category> children = category.getSubCategories();
|
||||||
|
|
||||||
while (children.next()) {
|
for (Category child : children) {
|
||||||
final Category child = children.getCategory();
|
String compField = child.getName();
|
||||||
String compField = (m_type == URL_FIELD) ? child.getURL() : child.getName();
|
|
||||||
if (compField.equalsIgnoreCase(title)
|
if (compField.equalsIgnoreCase(title)
|
||||||
&& (m_category == null
|
|| !m_category.getCategory(state).equals(child)) {
|
||||||
|| !m_category.getCategory(state).equals(child))) {
|
|
||||||
throw new FormProcessException(GlobalizationUtil.globalize("cms.ui.category.name_not_unique"));
|
throw new FormProcessException(GlobalizationUtil.globalize("cms.ui.category.name_not_unique"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -45,6 +45,72 @@ cms.ui.permissions.table.remove_all.header=Remove all
|
||||||
cms.ui.category.select_index_item=Select index item for category
|
cms.ui.category.select_index_item=Select index item for category
|
||||||
cms.ui.category.non_option=None
|
cms.ui.category.non_option=None
|
||||||
cms.ui.category.inherit_parent=Inherit Index from Parent Category
|
cms.ui.category.inherit_parent=Inherit Index from Parent Category
|
||||||
|
cms.ui.category.localization_add=Add localization
|
||||||
|
cms.ui.category.add=Add category
|
||||||
|
cms.ui.category.add_index_item=Set index item
|
||||||
|
cms.ui.category.add_use_context=Add Use Context
|
||||||
|
cms.ui.category.assigned_purposes=Assigned Purposes:
|
||||||
|
cms.ui.category.available_purposes=Available Purposes:
|
||||||
|
cms.ui.category.back= (back)
|
||||||
|
cms.ui.category.batch_categorized_objects=Batch Order Items in This Category
|
||||||
|
cms.ui.category.batch_order_objects_order=Priority
|
||||||
|
cms.ui.category.batch_order_objects_title=Title
|
||||||
|
cms.ui.category.categorized_objects=Order Live Objects in This Category
|
||||||
|
cms.ui.category.category_current=Current category
|
||||||
|
cms.ui.category.change_index_item=Change index item
|
||||||
|
cms.ui.category.content_item=Content Item
|
||||||
|
cms.ui.category.delete=Delete category
|
||||||
|
cms.ui.category.delete_prompt=Are you sure you want to delete this category?
|
||||||
|
cms.ui.category.descriptionn=Description:\n
|
||||||
|
cms.ui.category.details=Category details
|
||||||
|
cms.ui.category.edit=Edit category
|
||||||
|
cms.ui.category.edit_index_item=Edit index item
|
||||||
|
cms.ui.category.edit_a_category=Edit a Category
|
||||||
|
cms.ui.category.edit_purposes=Edit purposes
|
||||||
|
cms.ui.category.index_item.select=Select an index item for this category
|
||||||
|
cms.ui.category.index_item=Index item
|
||||||
|
cms.ui.category.intro=Select a category
|
||||||
|
cms.ui.category.is_abstract=Is abstract?
|
||||||
|
cms.ui.category.is_enabled=Is enabled?
|
||||||
|
cms.ui.category.is_not_abstract=Can you place objects in this category?
|
||||||
|
cms.ui.category.item.none=There are no items in this category
|
||||||
|
cms.ui.category.item=Categorized item
|
||||||
|
cms.ui.category.labeln=Label:\n
|
||||||
|
cms.ui.category.linked=Linked categories
|
||||||
|
cms.ui.category.linked_add=Add or remove linked categories
|
||||||
|
cms.ui.category.linked_none=This category has no linked categories
|
||||||
|
cms.ui.category.localizations=Category Localizations
|
||||||
|
cms.ui.category.localization_action=Action
|
||||||
|
cms.ui.category.localization_confirm_delete=Delete this localization?
|
||||||
|
cms.ui.category.localization_description=Description
|
||||||
|
cms.ui.category.localization_edit=Edit
|
||||||
|
cms.ui.category.localization_error_locale=Please select a locale
|
||||||
|
cms.ui.category.localization_locale=Language
|
||||||
|
cms.ui.category.localization_name=Name
|
||||||
|
cms.ui.category.localization_none=This category has no localizations
|
||||||
|
cms.ui.category.localization_url=URL
|
||||||
|
cms.ui.category.name_not_unique=There is already a category with this name
|
||||||
|
cms.ui.category.no_categorized_objects=There are no categorized objects
|
||||||
|
cms.ui.category.no_category_purposes=No Category Purposes
|
||||||
|
cms.ui.category.no_linked_categories=No linked categories
|
||||||
|
cms.ui.category.no_subcategories=No subcategories
|
||||||
|
cms.ui.category.purpose_add=Add or remove category purposes
|
||||||
|
cms.ui.category.purpose_assigned=Assigned purposes
|
||||||
|
cms.ui.category.purpose_available=Available purposes
|
||||||
|
cms.ui.category.purpose_none=This category has no assigned purposes
|
||||||
|
cms.ui.category.purposes=Category purposes
|
||||||
|
cms.ui.category.return=Return
|
||||||
|
cms.ui.category.subcategories=Subcategories
|
||||||
|
cms.ui.category.subcategory.none=This category has no subcategories
|
||||||
|
cms.ui.category.templates=Category templates
|
||||||
|
cms.ui.category.templates.assigned=Assigned templates
|
||||||
|
cms.ui.category.there_are_no_items_in_this_category=There are no items in this category
|
||||||
|
cms.ui.category.url=URL
|
||||||
|
cms.ui.category.use_context=Use Context
|
||||||
|
cms.ui.category.use_contexts=Use Contexts
|
||||||
|
cms.ui.category.use_context_must_be_unique=Use context must be unique within a Content Section.
|
||||||
|
cms.ui.category.view_index_item=View index item
|
||||||
|
|
||||||
cms.ui.authoring.no_types_registered=No types registered
|
cms.ui.authoring.no_types_registered=No types registered
|
||||||
cms.ui.contents_of=Contents of
|
cms.ui.contents_of=Contents of
|
||||||
cms.ui.new_folder=Create new folder
|
cms.ui.new_folder=Create new folder
|
||||||
|
|
|
||||||
|
|
@ -42,8 +42,74 @@ cms.ui.permissions.table.actions.remove_all=Alle Berechtigungen entfernen
|
||||||
cms.ui.permissions.table.actions.remove_all.confirm=Sind Sie sicher, dass Sie alle Berechtigungen f\u00fcr diese Rolle von dem aktuellen Objekt entfernen wollen?
|
cms.ui.permissions.table.actions.remove_all.confirm=Sind Sie sicher, dass Sie alle Berechtigungen f\u00fcr diese Rolle von dem aktuellen Objekt entfernen wollen?
|
||||||
cms.ui.permissions.table.remove_all.header=Alle entfernen
|
cms.ui.permissions.table.remove_all.header=Alle entfernen
|
||||||
|
|
||||||
cms.ui.category.select_index_item=Index Element f\u00fcr diese Kategorie ausw\u00e4hlen
|
|
||||||
cms.ui.category.inherit_parent=Inherit Index from Parent Category
|
cms.ui.category.inherit_parent=Inherit Index from Parent Category
|
||||||
|
cms.ui.category.add=Kategorie hinzuf\u00fcgen
|
||||||
|
cms.ui.category.add_index_item=Setze Index Element
|
||||||
|
cms.ui.category.add_use_context=Add Use Context
|
||||||
|
cms.ui.category.assigned_purposes=Assigned Purposes:
|
||||||
|
cms.ui.category.available_purposes=Available Purposes:
|
||||||
|
cms.ui.category.back= (zur\u00fcck)
|
||||||
|
cms.ui.category.batch_categorized_objects=Batch Order Items in This Category
|
||||||
|
cms.ui.category.batch_order_objects_order=Priorit\u00e4t
|
||||||
|
cms.ui.category.batch_order_objects_title=Titel
|
||||||
|
cms.ui.category.categorized_objects=Objekte in dieser Kategorie anordnen
|
||||||
|
cms.ui.category.category_current=Aktuelle Kategorie
|
||||||
|
cms.ui.category.change_index_item=\u00c4ndere Index Element
|
||||||
|
cms.ui.category.content_item=Content Item
|
||||||
|
cms.ui.category.delete=Kategorie l\u00f6schen
|
||||||
|
cms.ui.category.delete_prompt=Wollen Sie wirklich diese Kategorie l\u00f6schen?
|
||||||
|
cms.ui.category.descriptionn=Beschreibung:\n
|
||||||
|
cms.ui.category.details=Kategorie Einzelheiten
|
||||||
|
cms.ui.category.edit=Kategorie bearbeiten
|
||||||
|
cms.ui.category.edit_index_item=Index Element bearbeiten
|
||||||
|
cms.ui.category.edit_a_category=Eine Kategorie bearbeiten
|
||||||
|
cms.ui.category.edit_purposes=Edit purposes
|
||||||
|
cms.ui.category.index_item.select=Index Element f\u00fcr diese Kategorie ausw\u00e4hlen
|
||||||
|
cms.ui.category.index_item=Index Element
|
||||||
|
cms.ui.category.intro=Kategory ausw\u00e4hlen
|
||||||
|
cms.ui.category.is_abstract=Is abstract?
|
||||||
|
cms.ui.category.is_enabled=Aktiviert?
|
||||||
|
cms.ui.category.is_not_abstract=K\u00f6nnen Sie Objekte dieser Kategory zuordnen?
|
||||||
|
cms.ui.category.item.none=Es gibt keine Elemente in dieser Kategory
|
||||||
|
cms.ui.category.item=Kategorisierte Elemente
|
||||||
|
cms.ui.category.labeln=Label:\n
|
||||||
|
cms.ui.category.linked=Verkn\u00fcpfte Kategorien
|
||||||
|
cms.ui.category.linked_add=Verkn\u00fcpfte Kategorien hinzuf\u00fcgen oder entfernen
|
||||||
|
cms.ui.category.linked_none=Diese Kategorie hat keine verkn\u00fcpften Kategorien
|
||||||
|
cms.ui.category.localizations=Sprachversionen
|
||||||
|
cms.ui.category.localization_action=Aktion
|
||||||
|
cms.ui.category.localization_add=Sprachversion hinzuf\u00fcgen
|
||||||
|
cms.ui.category.localization_confirm_delete=Soll diese Sprachversion gel\u00f6scht werden?
|
||||||
|
cms.ui.category.localization_description=Beschreibung
|
||||||
|
cms.ui.category.localization_edit=Bearbeiten
|
||||||
|
cms.ui.category.localization_error_locale=Bitte w\u00e4hlen Sie eine Sprache aus
|
||||||
|
cms.ui.category.localization_locale=Sprache
|
||||||
|
cms.ui.category.localization_name=Name
|
||||||
|
cms.ui.category.localization_none=Diese Kategorie hat keine Sprachversionen
|
||||||
|
cms.ui.category.localization_url=URL
|
||||||
|
cms.ui.category.name_not_unique=Es gibt bereits eine Kategorie mit diesem Namen.
|
||||||
|
cms.ui.category.no_categorized_objects=Es gibt keine kategorisierten Objekte
|
||||||
|
cms.ui.category.no_category_purposes=No Category Purposes
|
||||||
|
cms.ui.category.no_linked_categories=Kein verkn\u00fcpften Kategorien
|
||||||
|
cms.ui.category.no_subcategories=Keine Unterkategorie vorhanden
|
||||||
|
cms.ui.category.purpose_add=Add or remove category purposes
|
||||||
|
cms.ui.category.purpose_assigned=Assigned purposes
|
||||||
|
cms.ui.category.purpose_available=Available purposes
|
||||||
|
cms.ui.category.purpose_none=This category has no assigned purposes
|
||||||
|
cms.ui.category.purposes=Category purposes
|
||||||
|
cms.ui.category.return=Zur\u00fcck
|
||||||
|
cms.ui.category.select_index_item=Index Element f\u00fcr diese Kategorie ausw\u00e4hlen
|
||||||
|
cms.ui.category.subcategories=Unterkategorie
|
||||||
|
cms.ui.category.subcategory.none=Diese Kategorie hat keine Unterkategorien
|
||||||
|
cms.ui.category.templates=Kategorievorlage
|
||||||
|
cms.ui.category.templates.assigned=Zugewiesene Vorlagen
|
||||||
|
cms.ui.category.there_are_no_items_in_this_category=Es gibt keine Elemente in dieser Kategorie
|
||||||
|
cms.ui.category.url=URL
|
||||||
|
cms.ui.category.use_context=Use Context
|
||||||
|
cms.ui.category.use_contexts=Use Contexts
|
||||||
|
cms.ui.category.use_context_must_be_unique=Use Context muss innerhalb einer Content Section unique sein.
|
||||||
|
cms.ui.category.view_index_item=Index Element anzeigen
|
||||||
|
|
||||||
cms.ui.authoring.no_types_registered=Keine Typen registiert
|
cms.ui.authoring.no_types_registered=Keine Typen registiert
|
||||||
cms.ui.contents_of=Inhalt von
|
cms.ui.contents_of=Inhalt von
|
||||||
cms.ui.new_folder=Neuen Ordner erstellen
|
cms.ui.new_folder=Neuen Ordner erstellen
|
||||||
|
|
|
||||||
|
|
@ -16,9 +16,44 @@ cms.ui.admin_center=Admin Center
|
||||||
cms.ui.contentcenter.section_hint=All documents are organized in one or more contect sections. Each content section may have its own system of permission and its own administrators, independent from each other. Select a section where you will edit a document or create a new one.
|
cms.ui.contentcenter.section_hint=All documents are organized in one or more contect sections. Each content section may have its own system of permission and its own administrators, independent from each other. Select a section where you will edit a document or create a new one.
|
||||||
cms.ui.contentcenter.location=Location
|
cms.ui.contentcenter.location=Location
|
||||||
cms.ui.contentcenter.location_hint=In Legacy mode links to public pages.
|
cms.ui.contentcenter.location_hint=In Legacy mode links to public pages.
|
||||||
cms.ui.category.select_index_item=S\u00e9lectionnez la page d'accueil de la rubrique
|
|
||||||
cms.ui.category.non_option=Aucun
|
cms.ui.category.non_option=Aucun
|
||||||
cms.ui.category.inherit_parent=Inherit Index from Parent Category
|
cms.ui.category.inherit_parent=Inherit Index from Parent Category
|
||||||
|
cms.ui.category.add_a_subcategory=Ajouter une sous-rubrique
|
||||||
|
cms.ui.category.add_index_item=Mettre la page d'accueil
|
||||||
|
cms.ui.category.assigned_purposes=Objectifs assign\u00e9s
|
||||||
|
cms.ui.category.available_purposes=Objectifs disponibles
|
||||||
|
cms.ui.category.back= (retour)
|
||||||
|
cms.ui.category.batch_categorized_objects=Groupe d'ordre des objets de cette rubrique
|
||||||
|
cms.ui.category.batch_order_objects_order=Priorit\u00e9
|
||||||
|
cms.ui.category.batch_order_objects_title=Titre
|
||||||
|
cms.ui.category.categorized_objects=Ordonner les objets de cette rubrique
|
||||||
|
cms.ui.category.category_information=Rubrique d'information
|
||||||
|
cms.ui.category.category_purposes=Objectifs de la rubrique
|
||||||
|
cms.ui.category.change_index_item=Changer la page d'accueil
|
||||||
|
cms.ui.category.content_item=El\u00e9ment de contenu
|
||||||
|
cms.ui.category.current_category=Rubrique en cours
|
||||||
|
cms.ui.category.delete_category=Effacer la rubrique
|
||||||
|
cms.ui.category.descriptionn=Description:\n
|
||||||
|
cms.ui.category.edit=Modifier
|
||||||
|
cms.ui.category.edit_a_category=Modifier une rubrique
|
||||||
|
cms.ui.category.edit_links=Modifier les liens
|
||||||
|
cms.ui.category.edit_purposes=Modifier les objectifs
|
||||||
|
cms.ui.category.extreme_actions=Actoins extr\u00eames
|
||||||
|
cms.ui.category.is_abstract=TRANSLATE THIS: Can you place objects in this category? (cms.ui.category.is_abstract)
|
||||||
|
cms.ui.category.labeln=Etiquette:\n
|
||||||
|
cms.ui.category.linked_categories=Rubriques li\u00e9es
|
||||||
|
cms.ui.category.no_categorized_objects=Il n'y a pas d'objet class\u00e9
|
||||||
|
cms.ui.category.no_category_purposes=Pas d'objectif
|
||||||
|
cms.ui.category.no_linked_categories=Pas de rubrique li\u00e9e
|
||||||
|
cms.ui.category.no_subcategories=Pas de sous-rubrique
|
||||||
|
cms.ui.category.restore_default_permissions=Remettre les droits par d\u00e9faut
|
||||||
|
cms.ui.category.return_to_category_info=Retourner \u00e0 la rubrique d'information
|
||||||
|
cms.ui.category.select_index_item=S\u00e9lectionnez la page d'accueil de la rubrique
|
||||||
|
cms.ui.category.subcategories=Sous-rubriques
|
||||||
|
cms.ui.category.there_are_no_items_in_this_category=Il n'y a pas d'\u00e9l\u00e9ment dans cette rubrique
|
||||||
|
cms.ui.category.url=URL
|
||||||
|
|
||||||
cms.ui.browse=Documents
|
cms.ui.browse=Documents
|
||||||
cms.ui.search=Search
|
cms.ui.search=Search
|
||||||
cms.ui.roles=Roles
|
cms.ui.roles=Roles
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue