diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryBaseForm.java.off b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryBaseForm.java.off
deleted file mode 100755
index fc7a4b60b..000000000
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryBaseForm.java.off
+++ /dev/null
@@ -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"));
- }
- }
- }
- }
-}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryIteratorListModel.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryIteratorListModel.java
index 9f28f91b3..f51c86ec3 100755
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryIteratorListModel.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryIteratorListModel.java
@@ -27,7 +27,6 @@ import java.util.Iterator;
* A {@link ListModel} that iterates over categories via an iterator
*
* @author Yannick Bülter
- * @version $Id: CategoryIteratorListModel.java 2090 2010-04-17 08:04:14Z pboy $
*/
public class CategoryIteratorListModel implements ListModel {
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryLinks.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryLinks.java
index d8d69c0bc..a3ef60230 100755
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryLinks.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryLinks.java
@@ -40,7 +40,7 @@ import java.util.HashSet;
*
* @author Stanislav Freidin (stas@arsdigita.com)
* @author Michael Pih (pihman@arsdigita.com)
- * @version $Id: CategoryLinks.java 2140 2011-01-16 12:04:20Z pboy $
+ * @author Yannick Bülter
*/
public class CategoryLinks extends List {
public final static String SUB_CATEGORY = "sc";
@@ -78,7 +78,7 @@ public class CategoryLinks extends List {
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
implements ListModelBuilder {
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryLocalizationAddForm.java.off b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryLocalizationAddForm.java
similarity index 60%
rename from ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryLocalizationAddForm.java.off
rename to ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryLocalizationAddForm.java
index 21199feff..869e99e9b 100755
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryLocalizationAddForm.java.off
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryLocalizationAddForm.java
@@ -18,22 +18,25 @@
*/
package com.arsdigita.cms.ui.category;
-import com.arsdigita.bebop.FormProcessException;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
+import com.arsdigita.bebop.*;
import com.arsdigita.bebop.event.FormInitListener;
import com.arsdigita.bebop.event.FormProcessListener;
import com.arsdigita.bebop.event.FormSectionEvent;
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.cms.util.GlobalizationUtil;
-import com.arsdigita.kernel.Kernel;
import com.arsdigita.kernel.KernelConfig;
-import java.util.Locale;
-import java.util.StringTokenizer;
+import org.apache.logging.log4j.LogManager;
+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.
@@ -42,11 +45,12 @@ import org.apache.log4j.Logger;
* in order to present forms for managing the multi-language categories.
*
* @author Sören Bernstein
- * @version $Id: CategoryLocalizationAddForm.java 287 2005-02-22 00:29:02Z sskracic $
+ * @author Yannick Bülter
*/
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 */
public CategoryLocalizationAddForm(final CategoryRequestLocal category) {
@@ -68,6 +72,12 @@ public class CategoryLocalizationAddForm extends CategoryLocalizationForm {
public final void init(final FormSectionEvent e)
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 Category category = m_category.getCategory(state);
@@ -75,20 +85,11 @@ public class CategoryLocalizationAddForm extends CategoryLocalizationForm {
m_locale.addOption(new Option("",
new Label(GlobalizationUtil.globalize(
"cms.ui.select_one"))), state);
-
- // all supported languages (by registry entry)
- KernelConfig kernelConfig = Kernel.getConfig();
- StringTokenizer strTok = kernelConfig.getSupportedLanguagesTokenizer();
-
- 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);
+ final Collection locales = config.getSupportedLanguages();
+ if (locales != null) {
+ for (String locale : locales) {
+ m_locale.addOption(new Option(locale,
+ new Text(new Locale(locale).getDisplayLanguage())), state);
}
}
}
@@ -98,29 +99,31 @@ public class CategoryLocalizationAddForm extends CategoryLocalizationForm {
public final void process(final FormSectionEvent e)
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 Category category = m_category.getCategory(state);
- final String locale = (String) m_locale.getValue(state);
- final String name = (String) m_name.getValue(state);
+ final Locale locale = new Locale((String) m_locale.getValue(state));
+ final String title = (String) m_title.getValue(state);
final String description = (String) m_description.getValue(state);
final String url = (String) m_url.getValue(state);
final String isEnabled = (String) m_isEnabled.getValue(state);
- // Was soll das??
- //Assert.assertNotNull(parent, "Category parent");
-
- if (s_log.isDebugEnabled()) {
- s_log.debug("Adding localization for locale " + locale
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug("Adding localization for locale " + locale
+ " to category " + category);
}
- if (category.canEdit()) {
- category.addLanguage(locale, name, description, url);
- category.setEnabled("yes".equals(isEnabled), locale);
- category.save();
+ if (permissionChecker.isPermitted(AdminPrivileges.ADMINISTER_CATEGORIES, category)) {
+ category.getTitle().addValue(locale, title);
+ category.getDescription().addValue(locale, description);
+ category.setEnabled(isEnabled.equals("yes"));
+ categoryRepository.save(category);
} else {
// XXX user a better exception here.
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryLocalizationForm.java.off b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryLocalizationForm.java
similarity index 82%
rename from ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryLocalizationForm.java.off
rename to ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryLocalizationForm.java
index 69de7d718..1c206ce0f 100755
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryLocalizationForm.java.off
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryLocalizationForm.java
@@ -39,13 +39,14 @@ import com.arsdigita.bebop.parameters.ParameterModel;
import com.arsdigita.bebop.parameters.StringInRangeValidationListener;
import com.arsdigita.bebop.parameters.StringParameter;
import com.arsdigita.bebop.parameters.TrimmedStringParameter;
-import com.arsdigita.categorization.Category;
-import com.arsdigita.categorization.CategoryCollection;
+import com.arsdigita.bebop.util.GlobalizationUtil;
import com.arsdigita.cms.ui.BaseForm;
-import com.arsdigita.cms.util.GlobalizationUtil;
import com.arsdigita.globalization.GlobalizedMessage;
import com.arsdigita.web.Web;
import com.arsdigita.xml.Element;
+import org.libreccm.categorization.Category;
+
+import java.util.List;
import java.util.TooManyListenersException;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -57,13 +58,13 @@ import java.util.logging.Logger;
* forms for managing the multi-language categories.
*
* @author Sören Bernstein
- * @version $Id: $
+ * @author Yannick Bülter
*/
public class CategoryLocalizationForm extends BaseForm {
final CategoryRequestLocal m_category;
final SingleSelect m_locale;
- final TextField m_name;
+ final TextField m_title;
final TextArea m_description;
//final TextField m_url;
final Hidden m_url;
@@ -74,7 +75,7 @@ public class CategoryLocalizationForm extends BaseForm {
false);
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 URL = "url";
private final static String IS_ENABLED = "isEnabled";
@@ -99,35 +100,30 @@ public class CategoryLocalizationForm extends BaseForm {
localeParam.addParameterListener(new StringInRangeValidationListener(0, 2));
m_locale = new SingleSelect(localeParam);
- m_locale.addValidationListener(new ParameterListener() {
+ m_locale.addValidationListener(e -> {
- @Override
- public void validate(ParameterEvent e) throws FormProcessException {
-
- // the --select one-- option is not allowed
- ParameterData data = e.getParameterData();
- String code = (String) data.getValue();
- if (code == null || code.length() == 0) {
- data.addError(
- GlobalizationUtil.globalize(
- "cms.ui.category.localization_error_locale"));
- }
+ // the --select one-- option is not allowed
+ ParameterData data = e.getParameterData();
+ String code = (String) data.getValue();
+ if (code == null || code.length() == 0) {
+ data.addError(
+ GlobalizationUtil.globalize(
+ "cms.ui.category.localization_error_locale"));
}
-
});
addField(gz("cms.ui.category.localization_locale"), m_locale);
- m_name = new TextField(new TrimmedStringParameter(NAME));
- addField(gz("cms.ui.name"), m_name);
+ m_title = new TextField(new TrimmedStringParameter(TITLE));
+ addField(gz("cms.ui.name"), m_title);
- m_name.setSize(30);
- m_name.setMaxLength(200);
- m_name.addValidationListener(new NotNullValidationListener());
- m_name.setOnFocus("if (this.form." + URL + ".value == '') { "
+ m_title.setSize(30);
+ m_title.setMaxLength(200);
+ m_title.addValidationListener(new NotNullValidationListener());
+ m_title.setOnFocus("if (this.form." + URL + ".value == '') { "
+ " defaulting = true; this.form." + URL
+ ".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?
m_isEnabled = new RadioGroup(IS_ENABLED);
@@ -160,7 +156,7 @@ public class CategoryLocalizationForm extends BaseForm {
// m_url.addValidationListener(new NotNullValidationListener());
// m_url.setOnFocus("defaulting = false");
// 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); }");
// addField(gz("cms.ui.category.url"), m_url);
//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);
- 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 Widget m_widget;
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;
NameUniqueListener(final CategoryRequestLocal category) {
- this(category, m_name, NAME_FIELD);
+ this(category, m_title, NAME_FIELD);
}
NameUniqueListener(final CategoryRequestLocal category,
@@ -242,14 +238,12 @@ public class CategoryLocalizationForm extends BaseForm {
final Category category = m_category.getCategory(state);
- final CategoryCollection children = category.getChildren();
+ final List children = category.getSubCategories();
- while (children.next()) {
- final Category child = children.getCategory();
- String compField = (m_type == URL_FIELD) ? child.getURL() : child.getName();
+ for (Category child : children) {
+ String compField = child.getName();
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"));
}
}
diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources.properties
index 0ccc980e1..8a65ceaf2 100644
--- a/ccm-cms/src/main/resources/org/librecms/CmsResources.properties
+++ b/ccm-cms/src/main/resources/org/librecms/CmsResources.properties
@@ -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.non_option=None
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.contents_of=Contents of
cms.ui.new_folder=Create new folder
diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties
index 12dec9783..4b190b1cd 100644
--- a/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties
+++ b/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties
@@ -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.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.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.contents_of=Inhalt von
cms.ui.new_folder=Neuen Ordner erstellen
diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties
index d441f3ada..c0c16d0c4 100644
--- a/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties
+++ b/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties
@@ -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.location=Location
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.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.search=Search
cms.ui.roles=Roles