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
ccm-docs
baka 2017-02-15 15:52:01 +00:00
parent b0a73283fa
commit 7acd696e32
8 changed files with 241 additions and 209 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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&nbsp;Purposes:
cms.ui.category.available_purposes=Available&nbsp;Purposes:
cms.ui.category.back=&nbsp;(back)&nbsp;
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

View File

@ -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&nbsp;Purposes:
cms.ui.category.available_purposes=Available&nbsp;Purposes:
cms.ui.category.back=&nbsp;(zur\u00fcck)&nbsp;
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

View File

@ -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=&nbsp;(retour)&nbsp;
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